Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • alchemy/viewer
  • Miezhiko/alchemy-next
  • JennaHuntsman/xdg-integration
  • logue/alchemy-next
  • FelixWolf/alchemy-viewer
  • XenHat/xdg-integration
6 results
Show changes
Commits on Source (7078)
Showing
with 2243 additions and 1250 deletions
root = true
[*]
charset = utf-8
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[Makefile]
indent_style = tab
[*.{yml,yaml}]
indent_size = 2
name: Bug report
description: Viewer bug report
title: "[Bug]: "
labels: [bug, triage]
body:
- type: markdown
attributes:
value: |
- Write a descriptive bug title above.
- Search [open](https://github.com/AlchemyViewer/Alchemy/issues?q=is%3Aopen+label%3Abug+is%3Aissue) bugs to ensure that the issue has not already been identified.
- type: textarea
attributes:
label: Environment
description: About Alchemy Text
placeholder: ex. Alchemy Test 7.1.3.240191747 (64bit) ...
validations:
required: true
- type: textarea
attributes:
label: Description
description: Explain the problem.
validations:
required: true
- type: textarea
attributes:
label: Reproduction steps
description: Steps to reproduce this bug
placeholder: |
1. First step
2. Second step
Expected: ...
Actual: ...
validations:
required: true
name: Enhancement
description: New feature or enhancement
title: "[New Feature]: "
labels: [enhancement, triage]
body:
- type: markdown
attributes:
value: |
- Write a descriptive feature/enhancement title above.
- Search [open](https://github.com/AlchemyViewer/Alchemy/issues?q=is%3Aopen+label%3Aenhancement+is%3Aissue) feature/enhancement requests to ensure that the feature has not already been requested.
- type: textarea
attributes:
label: Environment
description: About Alchemy Text
placeholder: ex. Alchemy Test 7.1.3.240191747 (64bit) ...
validations:
required: true
- type: textarea
attributes:
label: Description
description: What does this feature/enhancement do? Why is it needed? Include screenshots to illustrate how it should function if possible!
validations:
required: true
name: Blank Issue
description: Don’t see your issue here? Open a blank issue.
labels: [triage]
body:
- type: textarea
attributes:
label: Description
description: Please describe your issue.
validations:
required: true
blank_issues_enabled: false
contact_links:
- name: 💬 Alchemy Viewer Discord
url: https://discordapp.com/invite/KugCgs6
about: Space for discussing and reviewing user-impacting bug reports and feature requests.
llappearance:
- indra/llappearance/**/*
llaudio:
- indra/llaudio/**/*
llcharacter:
- indra/llcharacter/**/*
llcommon:
- indra/llcommon/**/*
llcorehttp:
- indra/llcorehttp/**/*
llcrashlogger:
- indra/llcrashlogger/**/*
llfilesystem:
- indra/llfilesystem/**/*
llimage:
- indra/llimage/**/*
llimagej2coj:
- indra/llimagej2coj/**/*
llinventory:
- indra/llinventory/**/*
llkdu:
- indra/llkdu/**/*
llmath:
- indra/llmath/**/*
llmeshoptimizer:
- indra/llmeshoptimizer/**/*
llmessage:
- indra/llmessage/**/*
llplugin:
- indra/llplugin/**/*
llprimitive:
- indra/llprimitive/**/*
llrender:
- indra/llrender/**/*
llui:
- indra/llui/**/*
llwindow:
- indra/llwindow/**/*
llxml:
- indra/llxml/**/*
cmake:
- '**/*.cmake'
- '**/*/cmake/*'
- '**/CMakeLists.txt'
python:
- '**/*.py'
c/cpp:
- '**/*.c'
- '**/*.cpp'
- '**/*.cxx'
- '**/*.h'
- '**/*.hpp'
- '**/*.hxx'
- '**/*.i'
- '**/*.inl'
- '**/*.y'
name: Build
on:
workflow_dispatch:
inputs:
release_run:
type: boolean
description: Do a release of this build
default: false
pull_request:
push:
branches: ["main", "release/*", "project/*"]
tags: ["Second_Life*"]
jobs:
# The whole point of the setvar job is that we want to set a variable once
# that will be consumed by multiple subsequent jobs. We tried setting it in
# the global env, but a job.env can't directly reference the global env
# context.
setvar:
runs-on: ubuntu-latest
outputs:
release_run: ${{ steps.setvar.outputs.release_run }}
env:
# Build with a tag like "Second_Life#abcdef0" to generate a release page
# (used for builds we are planning to deploy).
# When you want to use a string variable as a workflow YAML boolean, it's
# important to ensure it's the empty string when false. If you omit || '',
# its value when false is "false", which is interpreted as true.
RELEASE_RUN: ${{ (github.event.inputs.release_run || github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life')) && 'Y' || '' }}
steps:
- name: Set Variable
id: setvar
shell: bash
run: |
echo "release_run=$RELEASE_RUN" >> "$GITHUB_OUTPUT"
build:
needs: setvar
strategy:
matrix:
runner: [windows-large, macos-12-xl]
configuration: [Release]
Linden: [true]
include:
- runner: macos-12-xl
developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer"
- runner: windows-large
configuration: ReleaseOS
Linden: false
runs-on: ${{ matrix.runner }}
outputs:
viewer_channel: ${{ steps.build.outputs.viewer_channel }}
viewer_version: ${{ steps.build.outputs.viewer_version }}
viewer_branch: ${{ steps.which-branch.outputs.branch }}
relnotes: ${{ steps.which-branch.outputs.relnotes }}
imagename: ${{ steps.build.outputs.imagename }}
env:
AUTOBUILD_ADDRSIZE: 64
AUTOBUILD_BUILD_ID: ${{ github.run_id }}
AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }}
# authorizes fetching private constituent packages
AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }}
AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables
AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables
# Direct autobuild to store vcs_url, vcs_branch and vcs_revision in
# autobuild-package.xml.
AUTOBUILD_VCS_INFO: "true"
AUTOBUILD_VSVER: "170"
DEVELOPER_DIR: ${{ matrix.developer_dir }}
# Ensure that Linden viewer builds engage Bugsplat.
BUGSPLAT_DB: ${{ matrix.Linden && 'SecondLife_Viewer_2018' || '' }}
# Run BUILD steps for Release configuration.
# Run BUILD steps for ReleaseOS configuration only for release runs.
BUILD: ${{ (matrix.Linden || needs.setvar.outputs.release_run) && 'Y' || '' }}
build_coverity: false
build_log_dir: ${{ github.workspace }}/.logs
build_viewer: true
BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared
# extracted and committed to viewer repo
BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/buildscripts_support_functions
GIT_REF: ${{ github.head_ref || github.ref }}
LL_SKIP_REQUIRE_SYSROOT: 1
# Setting this variable directs Linden's TUT test driver code to capture
# test-program log output at the specified level, but to display it only if
# the individual test fails.
LOGFAIL: DEBUG
master_message_template_checkout: ${{ github.workspace }}/.master-message-template
# Only set variants to the one configuration: don't let build.sh loop
# over variants, let GitHub distribute variants over multiple hosts.
variants: ${{ matrix.configuration }}
steps:
- name: Checkout code
if: env.BUILD
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Setup python
if: env.BUILD
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Checkout build variables
if: env.BUILD
uses: actions/checkout@v4
with:
repository: secondlife/build-variables
ref: master
path: .build-variables
- name: Checkout master-message-template
if: env.BUILD
uses: actions/checkout@v4
with:
repository: secondlife/master-message-template
path: .master-message-template
- name: Install autobuild and python dependencies
if: env.BUILD
run: pip3 install autobuild llsd
- name: Cache autobuild packages
id: cache-installables
if: env.BUILD
uses: actions/cache@v4
with:
path: .autobuild-installables
key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }}
restore-keys: |
${{ runner.os }}-64-${{ matrix.configuration }}-
${{ runner.os }}-64-
- name: Install windows dependencies
if: env.BUILD && runner.os == 'Windows'
run: choco install nsis-unicode
- name: Determine source branch
id: which-branch
if: env.BUILD
uses: secondlife/viewer-build-util/which-branch@v2
with:
token: ${{ github.token }}
- name: Build
id: build
if: env.BUILD
shell: bash
env:
AUTOBUILD_VCS_BRANCH: ${{ steps.which-branch.outputs.branch }}
RUNNER_OS: ${{ runner.os }}
run: |
# set up things the viewer's build.sh script expects
set -x
mkdir -p "$build_log_dir"
mkdir -p "$BUILDSCRIPTS_SHARED/packages/lib/python"
source "$BUILDSCRIPTS_SUPPORT_FUNCTIONS"
if [[ "$OSTYPE" =~ cygwin|msys ]]
then
native_path() { cygpath --windows "$1"; }
shell_path() { cygpath --unix "$1"; }
else
native_path() { echo "$1"; }
shell_path() { echo "$1"; }
fi
finalize()
{
case "$1" in
true|0)
record_success "Build Succeeded"
;;
*)
record_failure "Build Failed with $1"
;;
esac
}
initialize_build()
{
echo "initialize_build"
}
initialize_version()
{
export revision="$AUTOBUILD_BUILD_ID"
}
python_cmd()
{
if [[ "x${1:0:1}" == "x-" ]] # -m, -c, etc.
then # if $1 is a switch, don't try to twiddle paths
"$(shell_path "$PYTHON_COMMAND")" "$@"
elif [[ "$(basename "$1")" == "codeticket.py" ]]
then # ignore any attempt to contact codeticket
echo "## $@"
else # running a script at an explicit path: fix path for Python
local script="$1"
shift
"$(shell_path "$PYTHON_COMMAND")" "$(native_path "$script")" "$@"
fi
}
repo_branch()
{
echo "$AUTOBUILD_VCS_BRANCH"
}
record_dependencies_graph()
{
echo "TODO: generate and post dependency graph"
}
# Since we're not uploading to codeticket, DO NOT sleep for minutes.
sleep()
{
echo "Not sleeping for $1 seconds"
}
export -f native_path shell_path finalize initialize_build initialize_version
export -f python_cmd repo_branch record_dependencies_graph sleep
## Useful for diagnosing Windows LLProcess/LLLeap test failures
##export APR_LOG="${RUNNER_TEMP}/apr.log"
export arch=$(uname | cut -b-6)
# Surprise! GH Windows runner's MINGW6 is a $arch value we've never
# seen before, so numerous tests don't know about it.
[[ "$arch" == "MINGW6" ]] && arch=CYGWIN
export AUTOBUILD="$(which autobuild)"
# determine the viewer channel from the branch name
branch=$AUTOBUILD_VCS_BRANCH
IFS='/' read -ra ba <<< "$branch"
prefix=${ba[0]}
if [ "$prefix" == "project" ]; then
IFS='_' read -ra prj <<< "${ba[1]}"
# uppercase first letter of each word
export viewer_channel="Second Life Project ${prj[*]^}"
elif [[ "$prefix" == "release" || "$prefix" == "main" ]];
then
export viewer_channel="Second Life Release"
else
export viewer_channel="Second Life Test"
fi
echo "viewer_channel=$viewer_channel" >> "$GITHUB_OUTPUT"
# On windows we need to point the build to the correct python
# as neither CMake's FindPython nor our custom Python.cmake module
# will resolve the correct interpreter location.
if [[ "$RUNNER_OS" == "Windows" ]]; then
export PYTHON="$(native_path "$(which python)")"
echo "Python location: $PYTHON"
export PYTHON_COMMAND="$PYTHON"
else
export PYTHON_COMMAND="python3"
fi
export PYTHON_COMMAND_NATIVE="$(native_path "$PYTHON_COMMAND")"
./build.sh
# Each artifact is downloaded as a distinct .zip file. Multiple jobs
# (per the matrix above) writing the same filepath to the same
# artifact name will *overwrite* that file. Moreover, they can
# interfere with each other, causing the upload to fail.
# https://github.com/actions/upload-artifact#uploading-to-the-same-artifact
# Given the size of our installers, and the fact that we typically
# only want to download just one instead of a single zip containing
# several, generate a distinct artifact name for each installer.
# If the matrix above can run multiple builds on the same
# platform, we must disambiguate on more than the platform name.
# e.g. if we were still running Windows 32-bit builds, we'd need to
# qualify the artifact with bit width.
if [[ "$AUTOBUILD_CONFIGURATION" == "ReleaseOS" ]]
then cfg_suffix='OS'
else cfg_suffix=''
fi
echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT
- name: Upload executable
if: matrix.Linden && steps.build.outputs.viewer_app
uses: actions/upload-artifact@v4
with:
name: "${{ steps.build.outputs.artifact }}-app"
path: |
${{ steps.build.outputs.viewer_app }}
# The other upload of nontrivial size is the symbol file. Use a distinct
# artifact for that too.
- name: Upload symbol file
if: matrix.Linden
uses: actions/upload-artifact@v4
with:
name: "${{ steps.build.outputs.artifact }}-symbols"
path: |
${{ steps.build.outputs.symbolfile }}
- name: Upload metadata
if: matrix.Linden
uses: actions/upload-artifact@v4
with:
name: "${{ steps.build.outputs.artifact }}-metadata"
# emitted by build.sh, possibly multiple lines
path: |
${{ steps.build.outputs.metadata }}
- name: Upload physics package
uses: actions/upload-artifact@v4
# should only be set for viewer-private
if: matrix.Linden && steps.build.outputs.physicstpv
with:
name: "${{ steps.build.outputs.artifact }}-physics"
# emitted by build.sh, zero or one lines
path: |
${{ steps.build.outputs.physicstpv }}
sign-and-package-windows:
env:
AZURE_KEY_VAULT_URI: ${{ secrets.AZURE_KEY_VAULT_URI }}
AZURE_CERT_NAME: ${{ secrets.AZURE_CERT_NAME }}
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
needs: build
runs-on: windows-large
steps:
- name: Sign and package Windows viewer
if: env.AZURE_KEY_VAULT_URI && env.AZURE_CERT_NAME && env.AZURE_CLIENT_ID && env.AZURE_CLIENT_SECRET && env.AZURE_TENANT_ID
uses: secondlife/viewer-build-util/sign-pkg-windows@v2
with:
vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}"
cert_name: "${{ env.AZURE_CERT_NAME }}"
client_id: "${{ env.AZURE_CLIENT_ID }}"
client_secret: "${{ env.AZURE_CLIENT_SECRET }}"
tenant_id: "${{ env.AZURE_TENANT_ID }}"
sign-and-package-mac:
env:
NOTARIZE_CREDS_MACOS: ${{ secrets.NOTARIZE_CREDS_MACOS }}
SIGNING_CERT_MACOS: ${{ secrets.SIGNING_CERT_MACOS }}
SIGNING_CERT_MACOS_IDENTITY: ${{ secrets.SIGNING_CERT_MACOS_IDENTITY }}
SIGNING_CERT_MACOS_PASSWORD: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }}
needs: build
runs-on: macos-latest
steps:
- name: Unpack Mac notarization credentials
if: env.NOTARIZE_CREDS_MACOS
id: note-creds
shell: bash
run: |
# In NOTARIZE_CREDS_MACOS we expect to find:
# USERNAME="..."
# PASSWORD="..."
# TEAM_ID="..."
eval "${{ env.NOTARIZE_CREDS_MACOS }}"
echo "::add-mask::$USERNAME"
echo "::add-mask::$PASSWORD"
echo "::add-mask::$TEAM_ID"
echo "note_user=$USERNAME" >> "$GITHUB_OUTPUT"
echo "note_pass=$PASSWORD" >> "$GITHUB_OUTPUT"
echo "note_team=$TEAM_ID" >> "$GITHUB_OUTPUT"
# If we didn't manage to retrieve all of these credentials, better
# find out sooner than later.
[[ -n "$USERNAME" && -n "$PASSWORD" && -n "$TEAM_ID" ]]
- name: Sign and package Mac viewer
if: env.SIGNING_CERT_MACOS && env.SIGNING_CERT_MACOS_IDENTITY && env.SIGNING_CERT_MACOS_PASSWORD && steps.note-creds.outputs.note_user && steps.note-creds.outputs.note_pass && steps.note-creds.outputs.note_team
uses: secondlife/viewer-build-util/sign-pkg-mac@v2
with:
channel: ${{ needs.build.outputs.viewer_channel }}
imagename: ${{ needs.build.outputs.imagename }}
cert_base64: ${{ env.SIGNING_CERT_MACOS }}
cert_name: ${{ env.SIGNING_CERT_MACOS_IDENTITY }}
cert_pass: ${{ env.SIGNING_CERT_MACOS_PASSWORD }}
note_user: ${{ steps.note-creds.outputs.note_user }}
note_pass: ${{ steps.note-creds.outputs.note_pass }}
note_team: ${{ steps.note-creds.outputs.note_team }}
post-windows-symbols:
env:
BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }}
BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }}
needs: build
runs-on: ubuntu-latest
steps:
- name: Download viewer exe
uses: actions/download-artifact@v4
with:
name: Windows-app
path: _artifacts
- name: Download Windows Symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
uses: actions/download-artifact@v4
with:
name: Windows-symbols
- name: Extract viewer pdb
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
shell: bash
run: |
tar -xJf "${{ needs.build.outputs.viewer_channel }}.sym.tar.xz" -C _artifacts
- name: Post Windows symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
uses: secondlife-3p/symbol-upload@v10
with:
username: ${{ env.BUGSPLAT_USER }}
password: ${{ env.BUGSPLAT_PASS }}
database: "SecondLife_Viewer_2018"
application: ${{ needs.build.outputs.viewer_channel }}
version: ${{ needs.build.outputs.viewer_version }}
directory: _artifacts
files: "**/{SecondLifeViewer.exe,llwebrtc.dll,*.pdb}"
post-mac-symbols:
env:
BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }}
BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }}
needs: build
runs-on: ubuntu-latest
steps:
- name: Download Mac Symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
uses: actions/download-artifact@v4
with:
name: macOS-symbols
- name: Post Mac symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
uses: secondlife-3p/symbol-upload@v10
with:
username: ${{ env.BUGSPLAT_USER }}
password: ${{ env.BUGSPLAT_PASS }}
database: "SecondLife_Viewer_2018"
application: ${{ needs.build.outputs.viewer_channel }}
version: ${{ needs.build.outputs.viewer_version }}
directory: .
files: "**/*.xcarchive.zip"
release:
needs: [setvar, build, sign-and-package-windows, sign-and-package-mac]
runs-on: ubuntu-latest
if: needs.setvar.outputs.release_run
steps:
- uses: actions/download-artifact@v4
with:
pattern: "*-installer"
- uses: actions/download-artifact@v4
with:
pattern: "*-metadata"
- name: Rename metadata
run: |
cp Windows-metadata/autobuild-package.xml Windows-autobuild-package.xml
cp Windows-metadata/newview/viewer_version.txt Windows-viewer_version.txt
cp macOS-metadata/autobuild-package.xml macOS-autobuild-package.xml
cp macOS-metadata/newview/viewer_version.txt macOS-viewer_version.txt
# forked from softprops/action-gh-release
- name: Create GitHub release
id: release
uses: secondlife-3p/action-gh-release@v1
with:
# name the release page for the branch
name: "${{ needs.build.outputs.viewer_branch }}"
# SL-20546: want the channel and version to be visible on the
# release page
body: |
Build ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
${{ needs.build.outputs.viewer_channel }}
${{ needs.build.outputs.viewer_version }}
${{ needs.build.outputs.relnotes }}
prerelease: true
generate_release_notes: true
target_commitish: ${{ github.sha }}
previous_tag: release
append_body: true
fail_on_unmatched_files: true
files: |
macOS-installer/*.dmg
Windows-installer/*.exe
*-autobuild-package.xml
*-viewer_version.txt
- name: post release URL
run: |
echo "::notice::Release ${{ steps.release.outputs.url }}"
name: Check CLA
on:
issue_comment:
types: [created]
pull_request_target:
types: [opened, closed, synchronize]
jobs:
cla:
name: Check CLA
runs-on: ubuntu-latest
steps:
- name: CLA Assistant
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
uses: secondlife-3p/contributor-assistant@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.SHARED_CLA_TOKEN }}
with:
branch: main
path-to-document: https://github.com/secondlife/cla/blob/master/CLA.md
path-to-signatures: signatures.json
remote-organization-name: secondlife
remote-repository-name: cla-signatures
name: Pull Request Labeler
on:
- pull_request_target
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
with:
configuration-path: .github/labeler.yaml
repo-token: "${{ secrets.GITHUB_TOKEN }}"
name: Stale PRs
on:
workflow_dispatch:
schedule:
- cron: 0 0 * * *
permissions:
issues: write
pull-requests: write
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v6
id: stale
with:
stale-pr-message: This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or it will be closed in 7 days
days-before-stale: 30
days-before-close: 7
days-before-issue-close: -1
exempt-pr-labels: blocked,must,should,keep
stale-pr-label: stale
- name: Print outputs
run: echo ${{ join(steps.stale.outputs.*, ',') }}
......@@ -7,15 +7,28 @@
*.pyc
*.rej
*.swp
*.vcxproj
*.filters
*.sln
*.depend
*.stamp
*.rc
*~
# Specific paths and/or names
.venv
CMakeCache.txt
cmake_install.cmake
LICENSES
build-*
debian/files
debian/secondlife-appearance-utility*
debian/secondlife-viewer*
indra/.distcc
indra/out/*
indra/packages/*
indra/CMakeFiles
indra/build-vc[0-9]*
indra/lib/mono/1.0/*.dll
......@@ -37,7 +50,8 @@ indra/newview/dbghelp.dll
indra/newview/filters.xml
indra/newview/fmod.dll
indra/newview/fmod.log
indra/newview/installers/windows/*
indra/newview/fonts
indra/newview/installers/windows/*.ico
indra/newview/mozilla-theme
indra/newview/mozilla-universal-darwin.tgz
indra/newview/pilot.txt
......@@ -49,6 +63,7 @@ indra/newview/teleport_history.txt
indra/newview/typed_locations.txt
indra/newview/vivox-runtime
indra/newview/skins/default/html/common/equirectangular/js
emoji_characters.xml
indra/server-linux-*
indra/temp
indra/test/linden_file.dat
......@@ -69,3 +84,5 @@ web/config.*
web/locale.*
web/secondlife.com.*
/Pipfile.lock
.env
.vscode
......@@ -21,12 +21,36 @@ variables:
- "FALSE"
- "TRUE"
description: "Are package registry uploads public?. Set to 'TRUE' by default"
ENABLE_TESTS:
value: "TRUE"
options:
- "FALSE"
- "TRUE"
description: "Enable Sentry crash reporting. Set to 'TRUE' by default."
description: "Enable Discord integrations. Set to 'TRUE' by default."
ENABLE_LTO:
value: "TRUE"
options:
- "FALSE"
- "TRUE"
description: "Enable Link Time Optimization. Set to 'TRUE' by default."
USE_HAVOK:
value: "TRUE"
options:
- "FALSE"
- "TRUE"
description: "Enable Havok integrations. Set to 'TRUE' by default."
USE_SENTRY:
value: "TRUE"
options:
- "FALSE"
- "TRUE"
description: "Enable sentry crash reporting module. Set to 'TRUE' by default."
description: "Enable Sentry crash reporting. Set to 'TRUE' by default."
USE_DISCORD:
value: "TRUE"
options:
- "FALSE"
- "TRUE"
AUTOBUILD_BUILD_ID: $CI_PIPELINE_ID
AUTOBUILD_GITLAB_TOKEN: $CI_JOB_TOKEN
AUTOBUILD_INSTALLABLE_CACHE: "$CI_PROJECT_DIR/.cache/autobuild"
......@@ -49,24 +73,18 @@ variables:
before_script:
- python -m venv .venv
- .\.venv\Scripts\Activate.ps1
- pip install --upgrade llbase autobuild certifi
- pip install --upgrade llbase autobuild certifi sentry-cli cmake
script:
- autobuild configure -c Release -- -DUSE_LTO=ON -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE -DENABLE_DELTA_GEN=ON
- autobuild configure -c Release -- -DUSE_LTO="${ENABLE_LTO}" -DHAVOK_TPV="${USE_HAVOK}" -DLL_TESTS="${ENABLE_TESTS}" -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE
- autobuild build -c Release --no-configure
- autobuild graph -c Release --graph-file alchemy-windows${AUTOBUILD_ADDRSIZE}-dependencies.svg build-vc-64/autobuild-package.xml
- $AlchemyPdbPath = Resolve-Path build-vc-*/newview/Release/Alchemy*.pdb
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli difutil bundle-sources $AlchemyPdbPath }
- autobuild graph -c Release --graph-file "alchemy-windows${AUTOBUILD_ADDRSIZE}-dependencies.svg" "build-vc-${AUTOBUILD_ADDRSIZE}/autobuild-package.xml"
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli debug-files upload --include-sources (Get-Item .\build-vc-${AUTOBUILD_ADDRSIZE}\newview\Release\alchemy-bin.*).FullName (Get-Item .\build-vc-64\newview\Release\*.dll).FullName }
artifacts:
name: "$env:CI_COMMIT_REF_NAME-$env:CI_COMMIT_SHORT_SHA"
expire_in: 1 week
paths:
- build-vc-*/packages/lib/release/*.pdb
- build-vc-*/newview/Release/build_data.json
- build-vc-*/newview/Release/Alchemy*.exe
- build-vc-*/newview/Release/Alchemy*.pdb
- build-vc-*/newview/Release/Alchemy*.src.zip
- build-vc-*/newview/Release/*.dll
- build-vc-*/newview/Deploy/*
- build-vc-*/newview/Release/Alchemy_*_Setup.exe
- alchemy-*-dependencies.svg
.mac_build:
......@@ -89,33 +107,23 @@ variables:
before_script:
- python3 -m venv .venv
- source .venv/bin/activate
- pip3 install --upgrade llbase autobuild dmgbuild certifi
- pip3 install --upgrade llbase autobuild dmgbuild certifi sentry-cli cmake
script:
- autobuild configure -c Release -- -DENABLE_SIGNING=ON -DUSE_LTO=ON -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE
- autobuild configure -c Release -- -DENABLE_SIGNING=ON -DUSE_LTO="${ENABLE_LTO}" -DHAVOK_TPV=${USE_HAVOK} -DLL_TESTS="${ENABLE_TESTS}" -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE
- autobuild build -c Release --no-configure
- autobuild graph -c Release --graph-file alchemy-darwin${AUTOBUILD_ADDRSIZE}-dependencies.svg build-darwin-64/autobuild-package.xml
- if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli difutil bundle-sources build-darwin-*/newview/Release/*.app.dSYM/Contents/Resources/DWARF/*; fi
- if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli debug-files upload --include-sources build-darwin-64/newview/Release/*.app.dSYM build-darwin-64/newview/Release/*.app/Contents/MacOS/ build-darwin-64/newview/Release/*.app/Contents/Frameworks/ build-darwin-*/packages/lib/release/*.dSYM; fi
artifacts:
name: "$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"
expire_in: 1 week
paths:
- build-darwin-*/build_data.json
- build-darwin-*/packages/lib/release/discord_game_sdk.dylib
- build-darwin-*/packages/lib/release/libalut*.dylib
- build-darwin-*/packages/lib/release/libfmod*.dylib
- build-darwin-*/packages/lib/release/libndofdev*.dylib
- build-darwin-*/packages/lib/release/libopenal*.dylib
- build-darwin-*/packages/lib/release/Sentry.framework
- build-darwin-*/packages/lib/release/*.dSYM
- build-darwin-*/newview/Alchemy_*.dmg
- build-darwin-*/newview/Release/*.app/Contents/MacOS/*
- build-darwin-*/newview/Release/*.dSYM
- build-darwin-*/newview/Release/*.src.zip
- alchemy-*-dependencies.svg
.linux_build:
stage: build
image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-llvm
image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-jammy
tags:
- linux
- docker
......@@ -131,27 +139,18 @@ variables:
before_script:
- python3 -m venv .venv
- source .venv/bin/activate
- pip3 install --upgrade llbase autobuild certifi
- pip3 install --upgrade llbase autobuild certifi sentry-cli cmake ninja
script:
- autobuild configure -c Release -- -DUSE_LTO=ON -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE
- autobuild configure -c Release -- -DUSE_LTO="${ENABLE_LTO}" -DLL_TESTS="${ENABLE_TESTS}" -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE -DCOMPRESS_DEBUG=ON
- autobuild build -c Release --no-configure
- autobuild graph -c Release --graph-file alchemy-linuxs${AUTOBUILD_ADDRSIZE}-dependencies.svg build-linux-${AUTOBUILD_ADDRSIZE}/autobuild-package.xml
- if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli difutil bundle-sources build-linux-*/newview/alchemy-bin; fi
- if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli debug-files upload --include-sources build-linux-64/newview/*.debug build-linux-64/newview/packaged/alchemy-bin build-linux-64/llwebrtc/*.so build-linux-64/packages/lib/release/*.so*; fi
artifacts:
name: "$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"
expire_in: 1 week
paths:
- build-linux-*/build_data.json
- build-linux-*/packages/lib/release/libalut.so*
- build-linux-*/packages/lib/release/libdiscord_game_sdk.so*
- build-linux-*/packages/lib/release/libfmod*.so*
- build-linux-*/packages/lib/release/libjpeg.so*
- build-linux-*/packages/lib/release/libopenal.so*
- build-linux-*/packages/lib/release/libopenjp2.so*
- build-linux-*/packages/lib/release/libSDL2*.so*
- build-linux-*/newview/Alchemy_*.tar.*
- build-linux-*/newview/alchemy-bin
- build-linux-*/newview/alchemy-bin.src.zip
- alchemy-*-dependencies.svg
coverity_scan:
......@@ -176,7 +175,7 @@ coverity_scan:
before_script:
- python -m venv .venv
- source .venv/bin/activate
- pip3 install --upgrade autobuild
- pip3 install --upgrade llbase autobuild cmake ninja
script:
- cov-configure --template --comptype clangcc --compiler clang-12
- cov-configure --template --comptype clangcxx --compiler clang++-12
......@@ -238,6 +237,7 @@ coverity_scan:
# when: delayed
# start_in: '12 hours'
variables:
USE_SENTRY: "FALSE"
VIEWER_CHANNEL_TYPE: Test
VIEWER_USE_CRASHPAD: "FALSE"
......@@ -349,6 +349,10 @@ build:release:windows64:
- pwsh
- docker
allow_failure: false
before_script:
- python3 -m venv .venv
- ./.venv/bin/Activate.ps1
- pip3 install --upgrade sentry-cli
script:
- $BuildData = Get-Content ./build-vc-64/newview/Release/build_data.json | ConvertFrom-Json
- $BuildChannelVersion = $BuildData.Channel + ' ' + $BuildData.Version
......@@ -376,10 +380,9 @@ build:release:windows64:
- $LnxFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.tar.*
- $LnxFileHash = (Get-FileHash .\$LnxFileName -a sha256).Hash
- $LnxPackageUrl = "${UploadDestURL}/${LnxFileName}"
- $LnxUploadResult = Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$LnxFileName -Uri "${LnxPackageUrl}${DestStatus}" | ConvertFrom-Json
- $LnxUploadResult = Invoke-WebRequest @UploadParams -InFile ./$LnxFileName -Uri "${LnxPackageUrl}${DestStatus}" -MaximumRetryCount 5 -RetryIntervalSec 30 | ConvertFrom-Json
- If ($LnxFileHash -ne $LnxUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($LnxUploadResult.file_sha256)" && Exit 1 }
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli upload-dif newview/alchemy-bin newview/alchemy-bin.src.zip packages/ }
- Pop-Location
- Push-Location ./build-darwin-64/
......@@ -387,33 +390,22 @@ build:release:windows64:
- $MacFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.dmg
- $MacFileHash = (Get-FileHash .\$MacFileName -a sha256).Hash
- $MacPackageUrl = "${UploadDestURL}/${MacFileName}"
- $MacUploadResult = Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$MacFileName -Uri "${MacPackageUrl}${DestStatus}" | ConvertFrom-Json
- $MacUploadResult = Invoke-WebRequest @UploadParams -InFile ./$MacFileName -Uri "${MacPackageUrl}${DestStatus}" -MaximumRetryCount 5 -RetryIntervalSec 30 | ConvertFrom-Json
- If ($MacFileHash -ne $MacUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($MacUploadResult.file_sha256)" && Exit 1 }
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli upload-dif newview/Release/ packages/ }
- Pop-Location
- Push-Location ./build-vc-64/
- Push-Location ./newview/Deploy/
- Push-Location ./newview/Release/
- $WinFileName = Get-ChildItem -Path . -Name -Include Alchemy_*_Setup.exe
- $WinFileHash = (Get-FileHash .\$WinFileName -a sha256).Hash
- $WinPackageUrl = "${UploadDestURL}/${WinFileName}"
- $WinUploadResult = Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$WinFileName -Uri "${WinPackageUrl}${DestStatus}" | ConvertFrom-Json
- $WinUploadResult = Invoke-WebRequest @UploadParams -InFile ./$WinFileName -Uri "${WinPackageUrl}${DestStatus}" -MaximumRetryCount 5 -RetryIntervalSec 30 | ConvertFrom-Json
- If ($WinFileHash -ne $WinUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($WinUploadResult.file_sha256)" && Exit 1 }
- $WinUpdateDeployURL = "${UpdateDeployDestURL}/win-x64"
- $FullUpdatePkg = Get-ChildItem -Path . -Name -Include Alchemy*-full.nupkg
- if (Test-Path -Path ./Alchemy*-full.nupkg) { Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$FullUpdatePkg -Uri "${WinUpdateDeployURL}/${FullUpdatePkg}" }
- $DeltaUpdatePkg = Get-ChildItem -Path . -Name -Include Alchemy*-delta.nupkg
- if (Test-Path -Path ./Alchemy*-delta.nupkg) { Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$DeltaUpdatePkg -Uri "${WinUpdateDeployURL}/${DeltaUpdatePkg}" }
- $ReleaseFile = Get-ChildItem -Path . -Name -Include RELEASES
- if (Test-Path -Path ./RELEASES) { Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$ReleaseFile -Uri "${WinUpdateDeployURL}/${ReleaseFile}" }
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli upload-dif newview/Release/ packages/ }
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli releases finalize $BuildChannelVersion }
- Write-Output "Deploy Success!"
- Write-Output "Package Listing > https://git.alchemyviewer.org/alchemy/alchemy-next/-/packages/$($WinUploadResult.package_id)"
- Write-Output "Windows Package > ${WinPackageUrl}"
- Write-Output "macOS Package > ${MacPackageUrl}"
......
## Environment
```
(Please open `Help->About Alchemy` and click Copy to Clipboard then paste the About information here.)
```
## Summary
(Summarize the bug encountered concisely)
(Summarize the bug encountered concisely.)
## Steps to reproduce
(How one can reproduce the issue - this is very important)
## What is the expected correct behavior?
(What you should see instead)
(What you should see or what should happen instead)
## Environment
## Relevant logs and/or screenshots
```
(Please open `Help->About Alchemy` and click Copy to Clipboard then paste its contents here)
(Attach or paste any relevant logs)
```
## Relevant logs and/or screenshots
(Attach or paste any relevant logs - please use code blocks (```) to format console output,
logs, and code as it's very hard to read otherwise.)
/label ~Type::Bug ~Status::Awaiting-Investigation
## Summary
(Summarize the requested improvement concisely.)
## Why is this improvement important to you? How would it benefit the community?
(Provide reasoning as to why the improvement is important to you, and ways it could benefit the larger Alchemy Viewer community.)
## Screenshots, Mockups, etc
(Attach or paste any relevant screenshots or mockups.)
/label ~Type::Improvement ~Status::Awaiting-Investigation
\ No newline at end of file
## Summary
(Summarize the requested feature concisely.)
## How would you like the feature to work?
(Describe how the feature should function in as much detail as possible.)
## Why is this feature important to you? How would it benefit the community?
(Provide reasoning as to why the feature is important to you, and ways it could benefit the larger Alchemy Viewer community.)
## Screenshots, Mockups, etc
(Attach or paste any relevant screenshots or mockups.)
/label ~Type::New Feature ~Status::Awaiting-Investigation
\ No newline at end of file
ci:
autofix_prs: false
repos:
- repo: https://bitbucket.org/lindenlab/git-hooks.git
rev: v1.0.0-beta2
- repo: https://github.com/secondlife/git-hooks.git
rev: v1.0.2
hooks:
- id: opensource-license
- id: jira-issue
- id: llsd
- id: no-trigraphs
- id: copyright
- id: end-of-file
files: \.(cpp|c|h|py|glsl|cmake|txt)$
exclude: language.txt
- id: indent-with-spaces
files: \.(cpp|c|h|inl|py|glsl|cmake)$
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
rev: v5.0.0
hooks:
- id: check-xml
- id: mixed-line-ending
# Contributor guidelines
Thanks for your interest in contributing to Alchemy Viewer! This document
summarizes some of the most important points for people looking to contribute
to the project especially those looking to provide bug reports and code
changes.
## Table of contents
- [Contributor guidelines](#contributor-guidelines)
- [Table of contents](#table-of-contents)
- [Communication](#communication)
- [Reporting Bugs and Requesting Features](#reporting-bugs-and-requesting-features)
- [Importance of Your Feedback](#importance-of-your-feedback)
- [Our Relationship with Linden Lab and Code Inheritance](#our-relationship-with-linden-lab-and-code-inheritance)
- [Reporting Bugs to Linden Lab](#reporting-bugs-to-linden-lab)
- [Submitting Feedback to Alchemy Viewer](#submitting-feedback-to-alchemy-viewer)
- [Contributing pull requests](#contributing-pull-requests)
## Communication
Alchemy Viewer has multiple channels for communication. Some of these channels are
more end-user focused while others are more tailored for developer-to-developer or support.
- [Our Discord][discord] is the primary community engagement platform for the project.
This is where we announce our releases, answer questions from the community,
and provide support to users. This is also a great place for developers to interact
with the Alchemy users to determine if their feature is interesting to them.
- [Github issues][] provide a means for developers and contributors to organize
their work and collaborate with other developers. By default most user-facing
discussions should happen on [the Discord][discord] so that they are
visible to more people, and can build consensus.
## Reporting Bugs and Requesting Features
### Importance of Your Feedback
We value your feedback and invite you to help us identify bugs and suggest new features for Alchemy Viewer.
Your input is crucial in shaping the future of our project.
Your cooperation with these guidelines will help us improve Alchemy Viewer,
and ensures that Linden Lab can address broader issues within their codebase.
### Our Relationship with Linden Lab and Code Inheritance
It's important to note that while we are not affiliated with or endorsed by Linden Lab,
the creators of Second Life, our viewer incorporates a significant amount of code from them.
This shared codebase means some issues may originate from the Linden Lab viewer,
and addressing these effectively benefits both viewers.
### Reporting Bugs to Linden Lab
If you encounter defects or unwanted behavior that are inherited from the official Second Life viewer,
please report these issues directly to Linden Lab.
Before submitting a bug report to Alchemy Viewer, kindly check the [official Second Life viewer][lindenviewer]
to determine if the defect exists there as well.
Reporting it to Linden Lab, if it hasn't already been reported, will ensure they are aware of the issue.
If you are unsure, you are encouraged to share your findings with an Alchemy team member to receive guidance.
Linden Lab's page for submitting bug reports can be found on [feedback.secondlife.com/bug-reports][lindenbugs].
### Submitting Feedback to Alchemy Viewer
If the defect is unique to Alchemy Viewer or pertains to features exclusive to our viewer, please proceed to submit your bug report to us on Github. Provide as much detail as possible, including steps to reproduce the issue, logs, and screenshots if available. This information will help us diagnose and address the problem more efficiently.
## Contributing pull requests
If you wish to contribute a new pull request, please ensure that:
- You talk to other developers about how best to implement the work.
- The functionality is desired. Be sure to talk to users and members of the Alchemy
team to ensure the work is a good idea and will be accepted.
- The work is high quality and the PR follows [PR etiquette][]
- You have tested the work locally
The [Git Style Guide](https://github.com/agis/git-style-guide) is also a good
reference for best git practices.
[PR etiquette]: https://gist.github.com/mikepea/863f63d6e37281e329f8
[Github issues]: https://github.com/AlchemyViewer/Alchemy/issues
[discord]: https://discordapp.com/invite/KugCgs6
[lindenviewer]: https://releasenotes.secondlife.com/viewer.html
[lindenbugs]: https://feedback.secondlife.com/bug-reports
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[dev-packages]
[packages]
llbase = "*"
certifi = "*"
autobuild = "*"
[requires]
python_version = "3.4"
[![Alchemy Logo](https://www.alchemyviewer.org/images/banner.png)](https://www.alchemyviewer.org)
[![Alchemy Logo](https://alchemyviewer.org/assets/images/banner-4bed76df9322897136b74485a58ae2d7.webp)](https://www.alchemyviewer.org)
[![Alchemy License](https://img.shields.io/badge/license-LGPL%202.1-blue.svg)](https://git.alchemyviewer.org/alchemy/alchemy-next/-/blob/master/LICENSE.md)
[![pipeline status](https://git.alchemyviewer.org/alchemy/alchemy-next/badges/master/pipeline.svg)](https://git.alchemyviewer.org/alchemy/alchemy-next/-/commits/master)
[Alchemy Viewer](https://www.alchemyviewer.org) is a third-party client for Second Life. Our focus is on creating a cohesive and modern experience, with carefully considered default behaviors and settings while maintaining a bleeding-edge approach to adopting new features and developments from the Second Life platform.
## About
[Alchemy](https://www.alchemyviewer.org) Viewer is a client for Second Life and OpenMetaverse protocol simulators. We focus on creating a smooth and easy to use experience with secure and sane defaults.
## Download
Most people use a pre-built release of Alchemy Viewer. Windows macOS, and Linux builds are published as [releases on Github][releasesgh]. More experimental releases, such as release candidates and project viewers, are typically announced on our [Discord server][discord].
## Build Instructions
[Windows](https://alchemyviewer.org/docs/build/Windows)
Mac (todo)
[Linux](https://alchemyviewer.org/docs/build/Linux)
## Contribute
Help improve Alchemy Viewer! You can get involved with improvements by filing bugs, suggesting enhancements, submitting pull requests and more. See [CONTRIBUTING][] for details.
## Resources
* [Alchemy Website](http://www.alchemyviewer.org)
* [Downloads](https://alchemyviewer.org/pages/downloads.html)
* [Issue Tracker](https://git.alchemyviewer.org/alchemy/alchemy/issues)
* [Wiki](https://git.alchemyviewer.org/alchemy/alchemy/wikis/home)
* [Downloads](https://alchemyviewer.org/downloads)
* [Issue Tracker](https://github.com/AlchemyViewer/Alchemy/issues)
[contributing]: https://github.com/alchemyviewer/alchemy/blob/main/CONTRIBUTING.md
[releasesgh]: https://github.com/AlchemyViewer/Alchemy/releases
[discord]: https://discordapp.com/invite/KugCgs6
This diff is collapsed.