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 (43213)
Showing
with 1438 additions and 346 deletions
---
# clang-format version 10.0.0+
Language: Cpp
# BasedOnStyle: Microsoft
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveMacros: true
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: Always
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
BinPackArguments: true
BinPackParameters: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Allman
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
BreakConstructorInitializers: AfterColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 140
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: true
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
SortPriority: 0
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
- Regex: '.*'
Priority: 1
SortPriority: 0
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentCaseLabels: true
IndentGotoLabels: true
IndentPPDirectives: None
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 1000
PointerAlignment: Left
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
Standard: Latest
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: Never
...
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
* text eol=lf
# Sources
*.cpp text diff=cpp
*.h text diff=cpp
*.py text diff=python
indra/newview/llimprocessing.cpp -text
# Visual Studio
*.sln text eol=crlf
*.vcproj text eol=crlf
*.vcxproj text eol=crlf
# Documents
*.txt text
*.xml text
indra/tools/vstool/README.txt -text
indra/newview/installers/windows/FILES_ARE_UNICODE_UTF-16LE.txt -text
# Graphics
*.png binary diff=exif
*.jpg binary diff=exif
*.jpeg binary diff=exif
*.gif binary diff=exif
*.tif binary
*.tiff binary
*.ico binary
*.svg text
*.eps binary
*.tga binary
*.j2k binary
*.j2c binary
*.icns binary
*.bmp binary
*.BMP binary
# Scripts
*.sh text eol=lf
*.bat text eol=crlf
# Viewer Files
*.db2 binary
*.llm binary
# Fonts
*.ttf binary
*.otf binary
# Mac
*.nib binary
*.exe binary
# Exclude files from exporting
.gitattributes export-ignore
.gitignore export-ignore
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.
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: 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.*, ',') }}
# By extension
*.DS_Store
*.bak
*.diff
*.orig
*.patch
*.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
indra/lib/mono/indra/*.dll
indra/lib/mono/indra/*.exe
indra/lib/mono/indra/*.pdb
indra/lib/python/eventlet/
indra/lib/python/mulib.*
indra/llwindow/glh/glh_linear.h
indra/newview/app_settings/dictionaries
indra/newview/app_settings/mozilla
indra/newview/app_settings/mozilla-runtime-*
indra/newview/app_settings/mozilla_debug
indra/newview/app_settings/static_*.db2
indra/newview/avatar_icons_cache.txt
indra/newview/avatar_lad.log
indra/newview/browser_profile
indra/newview/dbghelp.dll
indra/newview/filters.xml
indra/newview/fmod.dll
indra/newview/fmod.log
indra/newview/fonts
indra/newview/installers/windows/*.ico
indra/newview/mozilla-theme
indra/newview/mozilla-universal-darwin.tgz
indra/newview/pilot.txt
indra/newview/pilot.xml
indra/newview/res-sdl/ll_icon.*
indra/newview/res/ll_icon.*
indra/newview/search_history.txt
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
indra/test_apps/llmediatest/dependencies/i686-win32
indra/test_apps/terrain_mule/*.dll
indra/viewer-linux-*
indra/web/dataservice/lib/shared/vault.*
indra/web/dataservice/locale.*
indra/web/dataservice/vendor.*
indra/web/doc/asset-upload/plugins/lsl_compiler/lslc
indra/web/doc/asset-upload/plugins/verify-notecard
indra/web/doc/asset-upload/plugins/verify-texture
installed.xml
libraries
tarfile_tmp
trivial_change_force_build
web/config.*
web/locale.*
web/secondlife.com.*
/Pipfile.lock
.env
.vscode
stages:
- build
- upload
default:
interruptible: true
timeout: 4h
variables:
BUILD_CHANNEL:
value: "Test"
options:
- "Release"
- "Beta"
- "Project"
- "Test"
description: "The deployment channel target. Set to 'Test' by default."
PUBLIC_BUILD:
value: "FALSE"
options:
- "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. 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"
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
.win_build:
stage: build
tags:
- autobuild
- windows
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
before_script:
- python -m venv .venv
- .\.venv\Scripts\Activate.ps1
- pip install --upgrade llbase autobuild certifi sentry-cli cmake
script:
- 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-${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-*/newview/Release/build_data.json
- build-vc-*/newview/Release/Alchemy_*_Setup.exe
- alchemy-*-dependencies.svg
.mac_build:
stage: build
tags:
- mac
- m1
- bash
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
variables:
VIEWER_SIGNING_IDENTITY: $APPLE_SIGNATURE
before_script:
- python3 -m venv .venv
- source .venv/bin/activate
- pip3 install --upgrade llbase autobuild dmgbuild certifi sentry-cli cmake
script:
- 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 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-*/newview/Alchemy_*.dmg
- alchemy-*-dependencies.svg
.linux_build:
stage: build
image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-jammy
tags:
- linux
- docker
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
before_script:
- python3 -m venv .venv
- source .venv/bin/activate
- pip3 install --upgrade llbase autobuild certifi sentry-cli cmake ninja
script:
- 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 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-*/newview/Alchemy_*.tar.*
- alchemy-*-dependencies.svg
coverity_scan:
stage: build
image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-llvm-coverity
tags:
- linux
- docker
rules:
- if: '$CI_COMMIT_BRANCH == "coverity"'
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
variables:
AUTOBUILD_ADDRSIZE: 64
before_script:
- python -m venv .venv
- source .venv/bin/activate
- pip3 install --upgrade llbase autobuild cmake ninja
script:
- cov-configure --template --comptype clangcc --compiler clang-12
- cov-configure --template --comptype clangcxx --compiler clang++-12
- autobuild configure -c Coverity -- -DLL_TESTS=OFF -DUSE_FMODSTUDIO=ON -DUSE_NVAPI=ON -DUSE_LTO=OFF -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE -DUSE_PRECOMPILED_HEADERS=OFF
- autobuild build -c Coverity --no-configure
- pushd "build-linux-64"
- tar caf alchemyviewer.xz cov-int
- curl --header "JOB-TOKEN:$CI_JOB_TOKEN" --upload-file alchemyviewer.xz "${CI_API_V4_URL}/projects/165/packages/generic/coverity/0.0.$CI_PIPELINE_ID/alchemyviewer.xz"
- popd
.win32_build:
extends: .win_build
variables:
AUTOBUILD_ADDRSIZE: 32
cache:
key:
prefix: windows32
.win64_build:
extends: .win_build
variables:
AUTOBUILD_ADDRSIZE: 64
cache:
key:
prefix: windows64
.mac64_build:
extends: .mac_build
variables:
AUTOBUILD_ADDRSIZE: 64
cache:
key:
prefix: darwin64
.linux32_build:
extends: .linux_build
variables:
AUTOBUILD_ADDRSIZE: 32
cache:
key:
prefix: linux32
.linux64_build:
extends: .linux_build
variables:
AUTOBUILD_ADDRSIZE: 64
cache:
key:
prefix: linux64
.dev_rules:
rules:
- if: $BUILD_CHANNEL != "Test" || $CI_COMMIT_TAG
when: never
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "schedule"'
#- if: '$CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"'
# when: delayed
# start_in: '12 hours'
variables:
USE_SENTRY: "FALSE"
VIEWER_CHANNEL_TYPE: Test
VIEWER_USE_CRASHPAD: "FALSE"
.project_rules:
rules:
- if: '$BUILD_CHANNEL == "Project" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
- if: '$CI_COMMIT_TAG =~ /.*-project/'
variables:
VIEWER_CHANNEL_TYPE: Project
.beta_rules:
rules:
- if: '$BUILD_CHANNEL == "Beta" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
- if: '$CI_COMMIT_TAG =~ /.*-beta/'
variables:
VIEWER_CHANNEL_TYPE: Beta
.release_rules:
rules:
- if: '$BUILD_CHANNEL == "Release" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
- if: '$CI_COMMIT_TAG =~ /.*-release/'
variables:
VIEWER_CHANNEL_TYPE: Release
build:dev:linux64:
extends:
- .linux64_build
- .dev_rules
build:dev:mac64:
extends:
- .mac64_build
- .dev_rules
.build:dev:windows32:
extends:
- .win32_build
- .dev_rules
build:dev:windows64:
extends:
- .win64_build
- .dev_rules
build:project:linux64:
extends:
- .linux64_build
- .project_rules
build:project:mac64:
extends:
- .mac64_build
- .project_rules
.build:project:windows64:
extends:
- .win32_build
- .project_rules
build:project:windows64:
extends:
- .win64_build
- .project_rules
build:beta:linux64:
extends:
- .linux64_build
- .beta_rules
build:beta:mac64:
extends:
- .mac64_build
- .beta_rules
.build:beta:windows32:
extends:
- .win32_build
- .beta_rules
build:beta:windows64:
extends:
- .win64_build
- .beta_rules
build:release:linux64:
extends:
- .linux64_build
- .release_rules
build:release:mac64:
extends:
- .mac64_build
- .release_rules
.build:release:windows32:
extends:
- .win32_build
- .release_rules
build:release:windows64:
extends:
- .win64_build
- .release_rules
.upload_template:
stage: upload
image: r.alchemyviewer.org/alchemy/infrastructure/viewer-deploy-image:latest
tags:
- 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
- $BuildChannelOneword = $BuildData.Channel.Replace(" ", "")
- $PkgName = $BuildData.Channel.Replace(" ", "_")
- $PkgVer = $BuildData.Version
- $SetupUploadProjectID = "${CI_PROJECT_ID}"
- If ($env:PUBLIC_BUILD -eq 'FALSE') { $SetupUploadProjectID = "200" }
- $UploadDestURL = "${CI_API_V4_URL}/projects/${SetupUploadProjectID}/packages/generic/${PkgName}/${PkgVer}"
- $UpdateDeployDestURL = "${CI_API_V4_URL}/projects/198/packages/generic/${BuildChannelOneword}"
- >
$UploadParams = @{
Method = "PUT";
Headers = @{
"JOB-TOKEN" = "${CI_JOB_TOKEN}"; };
Verbose = $false;
};
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli releases new $BuildChannelVersion && sentry-cli releases set-commits --auto $BuildChannelVersion }
- $DestStatus = "?select=package_file&status=default"
- Push-Location ./build-linux-64/
- Push-Location ./newview/
- $LnxFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.tar.*
- $LnxFileHash = (Get-FileHash .\$LnxFileName -a sha256).Hash
- $LnxPackageUrl = "${UploadDestURL}/${LnxFileName}"
- $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
- Pop-Location
- Push-Location ./build-darwin-64/
- Push-Location ./newview/
- $MacFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.dmg
- $MacFileHash = (Get-FileHash .\$MacFileName -a sha256).Hash
- $MacPackageUrl = "${UploadDestURL}/${MacFileName}"
- $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
- Pop-Location
- Push-Location ./build-vc-64/
- 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 @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 }
- Pop-Location
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli releases finalize $BuildChannelVersion }
- 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}"
- Write-Output "Linux Package > ${LnxPackageUrl}"
upload:project:
extends:
- .upload_template
rules:
- if: '$BUILD_CHANNEL == "Project" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
when: manual
- if: '$CI_COMMIT_TAG =~ /.*-project/'
when: manual
environment:
name: qa
upload:beta:
extends:
- .upload_template
rules:
- if: '$BUILD_CHANNEL == "Beta" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
when: manual
- if: '$CI_COMMIT_TAG =~ /.*-beta/'
when: manual
environment:
name: beta
upload:release:
extends:
- .upload_template
rules:
- if: '$BUILD_CHANNEL == "Release" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
when: manual
- if: '$CI_COMMIT_TAG =~ /.*-release/'
when: manual
environment:
name: release
terminal:
image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-llvm
script: sleep 60
\ No newline at end of file
## Environment
```
(Please open `Help->About Alchemy` and click Copy to Clipboard then paste the About information here.)
```
## Summary
(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 or what should happen instead)
## Relevant logs and/or screenshots
```
(Attach or paste any relevant logs)
```
/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
syntax: glob
# WinMerge temp files
*.bak
# Compiled python bytecode
*.pyc
# Emacs temp files
*~
.*.swp
#OSX image cache file
*.DS_Store
LICENSES
indra/.distcc
build-darwin-*
build-vc80/
indra/build-vc[0-9]*
indra/CMakeFiles
indra/lib/mono/1.0/*.dll
indra/lib/mono/indra/*.dll
indra/lib/mono/indra/*.exe
indra/lib/mono/indra/*.pdb
indra/lib/python/eventlet/
indra/llwindow/glh/glh_linear.h
indra/newview/app_settings/mozilla
indra/newview/app_settings/mozilla-runtime-*
indra/newview/app_settings/mozilla_debug
indra/newview/app_settings/static_*.db2
indra/newview/browser_profile
indra/newview/character
indra/newview/fmod.dll
indra/newview/mozilla-theme
indra/newview/mozilla-universal-darwin.tgz
indra/newview/res-sdl
indra/newview/vivox-runtime
indra/server-linux-*
indra/temp
indra/test/linden_file.dat
indra/test_apps/llmediatest/dependencies/i686-win32
indra/test_apps/terrain_mule/*.dll
indra/viewer-linux-*
indra/web/doc/asset-upload/plugins/lsl_compiler/lslc
indra/web/doc/asset-upload/plugins/verify-notecard
indra/web/doc/asset-upload/plugins/verify-texture
installed.xml
libraries
tarfile_tmp
^indra/lib/python/mulib.*
^web/locale.*
^web/secondlife.com.*
^web/config.*
^indra/web/dataservice/locale.*
^indra/web/dataservice/lib/shared/vault.*
^indra/web/dataservice/vendor.*
glob:indra/newview/dbghelp.dll
glob:*.cpp.orig
glob:*.cpp.bak
glob:*.h.bak
glob:*.h.orig
glob:indra/newview/typed_locations.txt
glob:indra/newview/teleport_history.txt
glob:indra/newview/search_history.txt
glob:indra/newview/filters.xml
glob:indra/newview/avatar_icons_cache.txt
glob:indra/newview/avatar_lad.log
bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2.1.1-release
003dd9461bfa479049afcc34545ab3431b147c7c v2start
08398e650c222336bb2b6de0cd3bba944aef11b4 2-1rn1
0962101bfa7df0643a6e625786025fe7f8a6dc97 2-1-beta-2
12769e547e30067d494a6c01479a18107366ce2f beta-5
17fc2908e9a1ef34a9f53a41a393caf5c3cac390 beta-3-5
19547b909b404552593be5ec7c18241e062a6d65 2-1-1-beta-1
1e2b517adc2ecb342cd3c865f2a6ccf82a3cf8d7 2-1-beta-3
3469d90a115b900f8f250e137bbd9b684130f5d2 beta-4
3e4b947f79d88c385e8218cbc0731cef0e42cfc4 2-1-beta-1
46002088d9a4489e323b8d56131c680eaa21258c viewer-2-1-0-start
4f777ffb99fefdc6497c61385c22688ff149c659 viewer-2-0-0
52d96ad3d39be29147c5b2181b3bb46af6164f0e alpha-3
668851b2ef0f8cf8df07a0fba429e4a6c1e70abb viewer-2-0-1
6e3b2e13906ba8ff22d3c8490b02d518adb2c907 2-1-1-beta-2
7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f alpha-4
7f16e79826d377f5f9f5b33dc721ab56d0d7dc8f fork to viewer-20qa
80bc6cff515118a36108967af49d3f8105c95bc9 viewer-2-0-2-start
b03065d018b8a2e28b7de85b293a4c992cb4c12d 2-1-release
b8419565906e4feb434426d8d9b17dd1458e24b2 alpha-6
bb38ff1a763738609e1b3cada6d15fa61e5e84b9 2-1-1-release
c6969fe44e58c542bfc6f1bd6c0be2fa860929ac 2-1-beta-4
d2382d374139850efa5bb6adfb229e3e656cfc40 howard-demo
d40ac9dd949cba6dab1cc386da6a2027690c2519 alpha-5
d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0
c6e6324f5be1401f077ad18a4a0f6b46451c2f7b last_sprint
7076e22f9f43f479a4ea75eac447a36364bead5a beta_2.1.3
7076e22f9f43f479a4ea75eac447a36364bead5a 2.2.0-beta1
9822eb3e25f7fe0c28ffd8aba45c507caa383cbc 2.2.0-beta2
b0cd7e150009809a0b5b0a9d5785cd4bb230413a 2.2.0-beta3
00a831292231faad7e44c69f76cb96f175b8dfad 2.2.0-beta4
98e0d6df638429fd2f0476667504bd5a6b298def 2.3.0-beta1
1415e6538d54fd5d568ee88343424d57c6803c2c 2.2.0-release
98e0d6df638429fd2f0476667504bd5a6b298def 2.3.0-start
a3c12342b1af0951b8aa3b828aacef17fcea8178 2.3.0-beta1
db0fe9bb65187f365e58a717dd23d0f4754a9c1d 2.3.0-beta2
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-beta3
6ad3d6fa35a4e320e9ce442fce2bf9c7fc852556 2.3.0-release
dbc206fc61d89ff4cfe15aade0bf0c7bc7fee1c9 2.4.0-start
dc6483491b4af559060bccaef8e9045a303212dd 2.4.0-beta1
dc6483491b4af559060bccaef8e9045a303212dd 2.4.0-beta1
3bc1f50a72e117f4d4ad8d555f0c785ea8cc201e 2.4.0-beta1
25bd6007e3d2fc15db9326ed4b18a24a5969a46a 2.4.0-beta2
1ed382c6a08ba3850b6ce9061bc551ddece0ea07 2.4.0-release
a82e5b1e22c7f90e3c7977d146b80588f004ed0d 2.5.0-start
ci:
autofix_prs: false
repos:
- repo: https://github.com/secondlife/git-hooks.git
rev: v1.0.2
hooks:
- id: llsd
- id: no-trigraphs
- 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: v5.0.0
hooks:
- id: check-xml
- id: mixed-line-ending
# BuildParams
#
# Please refer to:
# https://wiki.secondlife.com/wiki/Automated_Build_System
# Global setting for now...
Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2"
CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2"
Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2"
# Use Public Upload Locations
public_build = true
# Update Public Inworld Build Status Indicators
email_status_this_is_os = true
# Limit extent of codeticket updates to revisions after...
codeticket_since = 2.2.0-release
# ========================================
# Viewer Development
# ========================================
# Report changes since...
viewer-development.show_changes_since = last_sprint
# Build Settings
viewer-development_coverity.coverity_product = viewer
viewer-development.build_debug_release_separately = true
# Notifications - to configure email notices, add a setting like this:
# <username>_<reponame>.email = <email-address>
# =================================================================
# Viewer Development (snowstorm canonical build owned by Oz Linden)
# =================================================================
snowstorm_viewer-development.viewer_channel = "Second Life Development"
snowstorm_viewer-development.login_channel = "Second Life Development"
snowstorm_viewer-development.build_viewer_update_version_manager = false
snowstorm_viewer-development.email = viewer-development-builds@lists.secondlife.com
# ========================================
# Viewer Beta
# ========================================
viewer-beta.viewer_channel = "Second Life Beta Viewer"
viewer-beta.login_channel = "Second Life Beta Viewer"
viewer-beta.build_debug_release_separately = true
viewer-beta.build_viewer_update_version_manager = true
# ========================================
# Viewer Release
# ========================================
viewer-release.viewer_channel = "Second Life Release"
viewer-release.login_channel = "Second Life Release"
viewer-release.build_debug_release_separately = true
viewer-release.build_viewer_update_version_manager = true
viewer-release.release-viewer.jira = DRTVWR-13
# ========================================
# aimee
# ========================================
viewer-development-import.build_debug_release_separately = true
viewer-development-fixes.build_debug_release_separately = true
viewer-development-tweaks.build_debug_release_separately = true
# =======================================
# brad
# ========================================
debug-halting.email = cg@lindenlab.com
debug-halting.build_server = false
debug-halting.build_server_tests = false
debug-halting.build_Darwin = false
debug-halting.build_Linux = false
debug-halting.build_CYGWIN_Debug = false
debug-halting.build_CYGWIN_RelWithDebInfo = false
# ========================================
# brad
# ========================================
brad-parabuild.email = brad@lindenlab.com
brad-parabuild.build_server = false
brad-parabuild.build_server_tests = false
# ========================================
# CG
# ========================================
cg_viewer-development_lenny.collect_metrics = true
cg_viewer-development_lenny.show_changes_since = 4b140ce7839d
cg_viewer-development_lenny.email = cg@lindenlab.com
# ========================================
# gooey
# ========================================
#gooey.email = james@lindenlab.com
gooey.build_Debug = false
gooey.build_RelWithDebInfo = false
gooey.build_server = false
gooey.build_server_tests = false
gooey.viewer_channel = "Second Life Alpha"
gooey.login_channel = "Second Life Alpha"
gooey.viewer_grid = agni
gooey.build_viewer_update_version_manager = false
# ========================================
# Display Names project
# ========================================
#viewer-identity-evolution.email = leyla@lindenlab.com
viewer-identity.build_Debug = false
viewer-identity.build_RelWithDebInfo = false
viewer-identity.build_viewer = true
viewer-identity.build_server = false
viewer-identity.build_server_tests = false
viewer-identity.build_Linux = true
viewer-identity.build_hg_bundle = true
viewer-identity.bulld_docs = true
viewer-identity.viewer_channel = "Second Life Project Viewer"
viewer-identity.login_channel = "Second Life Project Viewer"
viewer-identity.viewer_grid = aditi
viewer-identity.build_viewer_update_version_manager = false
# ========================================
# palange
# ========================================
palange_viewer-2-0.email = palange@lindenlab.com
palange_viewer-2-0.build_server = false
palange_viewer-2-0.build_server_tests = false
palange_viewer-2-0.build_CYGWIN_Debug = false
# ========================================
# media
# ========================================
media.email = skolb@lindenlab.com
media.build_server = false
media.build_server_tests = false
media.viewer_channel = "Second Life Alpha"
media.login_channel = "Second Life Alpha"
media.viewer_grid = agni
media.build_viewer_update_version_manager = false
# ================
# oz
# ================
oz_viewer-review1_coverity.coverity_product = viewer
oz_viewer-review1.build_Linux = true
oz_viewer-review1_debug.build_Linux = false
oz_viewer-review1_coverity.build_Linux = false
oz_viewer-review1.build_Darwin = true
oz_viewer-review1_debug.build_Darwin = false
oz_viewer-review1_coverity.build_Darwin = false
oz_viewer-review1.build_CYGWIN = true
oz_viewer-review1.build_CYGWIN_Debug = false
oz_viewer-review1.build_CYGWIN_RelWithDebInfo = false
oz_viewer-review1.build_CYGWIN_Release = true
oz_viewer-review1_debug.build_CYGWIN_Debug = true
oz_viewer-review1_debug.build_CYGWIN_RelWithDebInfo = true
oz_viewer-review1_debug.build_CYGWIN_Release = false
oz_viewer-review1_coverity.build_coverity = true
oz_viewer-review1_coverity.build_CYGWIN_Debug = false
oz_viewer-review1_coverity.build_CYGWIN_RelWithDebInfo = false
oz_viewer-review1_coverity.build_CYGWIN_Release = false
oz_viewer-review2_coverity.coverity_product = viewer
oz_viewer-review2.build_Linux = true
oz_viewer-review2_debug.build_Linux = false
oz_viewer-review2_coverity.build_Linux = false
oz_viewer-review2.build_Darwin = true
oz_viewer-review2_debug.build_Darwin = false
oz_viewer-review2_coverity.build_Darwin = false
oz_viewer-review2.build_CYGWIN = true
oz_viewer-review2.build_CYGWIN_Debug = false
oz_viewer-review2.build_CYGWIN_RelWithDebInfo = false
oz_viewer-review2.build_CYGWIN_Release = true
oz_viewer-review2_debug.build_CYGWIN_Debug = true
oz_viewer-review2_debug.build_CYGWIN_RelWithDebInfo = true
oz_viewer-review2_debug.build_CYGWIN_Release = false
oz_viewer-review2_coverity.build_coverity = true
oz_viewer-review2_coverity.build_CYGWIN_Debug = false
oz_viewer-review2_coverity.build_CYGWIN_RelWithDebInfo = false
oz_viewer-review2_coverity.build_CYGWIN_Release = false
# ========================================
# tofu
# ========================================
tofu_viewer-development-staging.email = tofu.linden@lindenlab.com
# ========================================
# enus
# ========================================
viewer-tut-teamcity.email = enus@lindenlab.com
viewer-tut-teamcity.build_server = false
viewer-tut-teamcity.build_server_tests = false
# ========================================
# experience
# ========================================
viewer-experience.public_build = false
viewer-experience.viewer_channel = "Second Life SkyLight Viewer"
viewer-experience.login_channel = "Second Life SkyLight Viewer"
# =================================================================
# asset delivery 2010 projects
# =================================================================
viewer-asset-delivery.viewer_channel = "Second Life Development"
viewer-asset-delivery.login_channel = "Second Life Development"
viewer-asset-delivery.build_viewer_update_version_manager = false
viewer-asset-delivery.email = monty@lindenlab.com
viewer-asset-delivery.build_server = false
viewer-asset-delivery.build_server_tests = false
viewer-asset-delivery-metrics.viewer_channel = "Second Life Development"
viewer-asset-delivery-metrics.login_channel = "Second Life Development"
viewer-asset-delivery-metrics.build_viewer_update_version_manager = false
viewer-asset-delivery-metrics.email = monty@lindenlab.com
viewer-asset-delivery-metrics.build_server = false
viewer-asset-delivery-metrics.build_server_tests = false
# eof
# Protect sensitive files
.gitlab-ci.yml @rye
\ No newline at end of file
# 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