@@ -3,7 +3,7 @@ name: Build
33on :
44 pull_request :
55 push :
6- branches : ["main", "release/*", "project/*"]
6+ branches : ["develop", " main", "release/*", "project/*"]
77 tags : ["Second_Life*"]
88
99jobs :
@@ -13,11 +13,15 @@ jobs:
1313 runs-on : ubuntu-latest
1414 outputs :
1515 release_run : ${{ steps.setvar.outputs.release_run }}
16- configurations : ${{ steps.setvar.outputs.configurations }}
16+ config : ${{ steps.setvar.outputs.config }}
1717 bugsplat_db : ${{ steps.setvar.outputs.bugsplat_db }}
1818 env :
1919 # Build with a tag like "Second_Life#abcdef0" to generate a release page
2020 # (used for builds we are planning to deploy).
21+ # Even though inputs.release_run is specified with type boolean, which
22+ # correctly presents a checkbox, its *value* is a GH workflow string
23+ # 'true' or 'false'. If you simply test github.event.inputs.release_run,
24+ # it always evaluates as true because it's a non-empty string either way.
2125 # When you want to use a string variable as a workflow YAML boolean, it's
2226 # important to ensure it's the empty string when false. If you omit || '',
2327 # its value when false is "false", which is interpreted as true.
@@ -32,30 +36,34 @@ jobs:
3236
3337 if [[ "$FROM_FORK" == "true" ]]; then
3438 # PR from fork; don't build with Bugsplat, proprietary libs
35- echo 'configurations=[" ReleaseOS"] ' >> $GITHUB_OUTPUT
39+ echo 'config= ReleaseOS' >> $GITHUB_OUTPUT
3640 echo "bugsplat_db=" >> $GITHUB_OUTPUT
3741 else
38- echo 'configurations=[" Release"] ' >> $GITHUB_OUTPUT
42+ echo 'config= Release' >> $GITHUB_OUTPUT
3943 echo "bugsplat_db=SecondLife_Viewer_2018" >> $GITHUB_OUTPUT
4044 fi
4145 build :
4246 needs : setup
47+ continue-on-error : ${{ matrix.experimental }}
4348 strategy :
4449 matrix :
45- runner : [windows-large, macos-12-xl]
46- configuration : ${{ fromJSON(needs.setup.outputs.configurations) }}
50+ runner : [windows-large, macos-15-xlarge]
51+ experimental : [false]
52+ include :
53+ - runner : linux-large
54+ experimental : true
4755 runs-on : ${{ matrix.runner }}
4856 outputs :
4957 viewer_channel : ${{ steps.build.outputs.viewer_channel }}
5058 viewer_version : ${{ steps.build.outputs.viewer_version }}
5159 viewer_branch : ${{ steps.which-branch.outputs.branch }}
5260 relnotes : ${{ steps.which-branch.outputs.relnotes }}
5361 imagename : ${{ steps.build.outputs.imagename }}
54- configuration : ${{ matrix.configuration }}
62+ config : ${{ needs.setup.outputs.config }}
5563 env :
5664 AUTOBUILD_ADDRSIZE : 64
5765 AUTOBUILD_BUILD_ID : ${{ github.run_id }}
58- AUTOBUILD_CONFIGURATION : ${{ matrix.configuration }}
66+ AUTOBUILD_CONFIGURATION : ${{ needs.setup.outputs.config }}
5967 # authorizes fetching private constituent packages
6068 AUTOBUILD_GITHUB_TOKEN : ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }}
6169 AUTOBUILD_INSTALLABLE_CACHE : ${{ github.workspace }}/.autobuild-installables
6472 # autobuild-package.xml.
6573 AUTOBUILD_VCS_INFO : " true"
6674 AUTOBUILD_VSVER : " 170"
67- DEVELOPER_DIR : " /Applications/Xcode_14.0 .1.app/Contents/Developer"
75+ DEVELOPER_DIR : " /Applications/Xcode_16 .1.app/Contents/Developer"
6876 # Ensure that Linden viewer builds engage Bugsplat.
6977 BUGSPLAT_DB : ${{ needs.setup.outputs.bugsplat_db }}
7078 build_coverity : false
8290 master_message_template_checkout : ${{ github.workspace }}/.master-message-template
8391 # Only set variants to the one configuration: don't let build.sh loop
8492 # over variants, let GitHub distribute variants over multiple hosts.
85- variants : ${{ matrix.configuration }}
93+ variants : ${{ needs.setup.outputs.config }}
8694 steps :
8795 - name : Checkout code
8896 uses : actions/checkout@v4
@@ -115,11 +123,29 @@ jobs:
115123 uses : actions/cache@v4
116124 with :
117125 path : .autobuild-installables
118- key : ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }}
126+ key : ${{ runner.os }}-64-${{ needs.setup.outputs.config }}-${{ hashFiles('autobuild.xml') }}
119127 restore-keys : |
120- ${{ runner.os }}-64-${{ matrix.configuration }}-
128+ ${{ runner.os }}-64-${{ needs.setup.outputs.config }}-
121129 ${{ runner.os }}-64-
122130
131+ - name : Install Linux dependencies
132+ if : runner.os == 'Linux'
133+ run : |
134+ sudo apt update
135+ sudo apt install -y \
136+ libpulse-dev libunwind-dev \
137+ libgl1-mesa-dev libglu1-mesa-dev libxinerama-dev \
138+ libxcursor-dev libxfixes-dev libgstreamer1.0-dev \
139+ libgstreamer-plugins-base1.0-dev ninja-build libxft-dev \
140+ llvm mold libpipewire-0.3-dev libosmesa6-dev libdbus-1-dev
141+ sudo locale-gen en_US.UTF-8
142+ sudo locale-gen en_GB.UTF-8
143+ sudo locale-gen fr_FR.UTF-8
144+
145+ - name : Install windows dependencies
146+ if : runner.os == 'Windows'
147+ run : choco install nsis-unicode
148+
123149 - name : Determine source branch
124150 id : which-branch
125151 uses : secondlife/viewer-build-util/which-branch@v2
@@ -227,7 +253,7 @@ jobs:
227253 export viewer_channel="Second Life Test"
228254 fi
229255 fi
230- echo "viewer_channel=$viewer_channel"
256+ echo "::notice::$RUNNER_OS viewer_channel=$viewer_channel"
231257 echo "viewer_channel=$viewer_channel" >> "$GITHUB_OUTPUT"
232258 # On windows we need to point the build to the correct python
233259 # as neither CMake's FindPython nor our custom Python.cmake module
@@ -269,6 +295,7 @@ jobs:
269295 path : |
270296 ${{ steps.build.outputs.viewer_app }}
271297
298+
272299 # The other upload of nontrivial size is the symbol file. Use a distinct
273300 # artifact for that too.
274301 - name : Upload symbol file
@@ -289,7 +316,7 @@ jobs:
289316 - name : Upload physics package
290317 uses : actions/upload-artifact@v4
291318 # should only be set for viewer-private
292- if : matrix.configuration == 'Release' && steps.build.outputs.physicstpv
319+ if : needs.setup.outputs.config == 'Release' && steps.build.outputs.physicstpv
293320 with :
294321 name : " ${{ steps.build.outputs.artifact }}-physics"
295322 # emitted by build.sh, zero or one lines
@@ -363,7 +390,7 @@ jobs:
363390 BUGSPLAT_USER : ${{ secrets.BUGSPLAT_USER }}
364391 BUGSPLAT_PASS : ${{ secrets.BUGSPLAT_PASS }}
365392 needs : build
366- if : needs.build.outputs.configuration == 'Release'
393+ if : needs.build.outputs.config == 'Release'
367394 runs-on : ubuntu-latest
368395 steps :
369396 - name : Download viewer exe
@@ -398,7 +425,7 @@ jobs:
398425 BUGSPLAT_USER : ${{ secrets.BUGSPLAT_USER }}
399426 BUGSPLAT_PASS : ${{ secrets.BUGSPLAT_PASS }}
400427 needs : build
401- if : needs.build.outputs.configuration == 'Release'
428+ if : needs.build.outputs.config == 'Release'
402429 runs-on : ubuntu-latest
403430 steps :
404431 - name : Download Mac Symbols
@@ -431,12 +458,18 @@ jobs:
431458 with :
432459 pattern : " *-metadata"
433460
461+ - uses : actions/download-artifact@v4
462+ with :
463+ pattern : " Linux-app"
464+
434465 - name : Rename metadata
435466 run : |
436467 cp Windows-metadata/autobuild-package.xml Windows-autobuild-package.xml
437468 cp Windows-metadata/newview/viewer_version.txt Windows-viewer_version.txt
438469 cp macOS-metadata/autobuild-package.xml macOS-autobuild-package.xml
439470 cp macOS-metadata/newview/viewer_version.txt macOS-viewer_version.txt
471+ cp Linux-metadata/autobuild-package.xml Linux-autobuild-package.xml
472+ cp Linux-metadata/newview/viewer_version.txt Linux-viewer_version.txt
440473
441474 # forked from softprops/action-gh-release
442475 - name : Create GitHub release
@@ -451,7 +484,7 @@ jobs:
451484 Build ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
452485 ${{ needs.build.outputs.viewer_channel }}
453486 ${{ needs.build.outputs.viewer_version }}
454- ${{ needs.build .outputs.relnotes }}
487+ ${{ needs.setvar .outputs.relnotes }}
455488 prerelease : true
456489 generate_release_notes : true
457490 target_commitish : ${{ github.sha }}
@@ -461,6 +494,7 @@ jobs:
461494 files : |
462495 macOS-installer/*.dmg
463496 Windows-installer/*.exe
497+ Linux-app/*.tar.xz
464498 *-autobuild-package.xml
465499 *-viewer_version.txt
466500
0 commit comments