From afd726979aa544571addc94226155d6ab4e6c5ed Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Sat, 11 May 2024 09:58:22 -0400
Subject: Turn on GH Windows ReleaseOS build

---
 .github/workflows/build.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 4785273b78..1a2b914e9a 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -16,6 +16,9 @@ jobs:
         include:
           - runner: macos-12-xl
             developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer"
+        include:
+          - runner: windows-large
+            configuration: ReleaseOS
     runs-on: ${{ matrix.runner }}
     outputs:
       viewer_channel: ${{ steps.build.outputs.viewer_channel }}
-- 
cgit v1.2.3


From 4f70946048def860e54117ce03f4e9e57c415491 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Sat, 11 May 2024 10:14:49 -0400
Subject: Fix syntax error in build.yaml to enable Windows ReleaseOS

---
 .github/workflows/build.yaml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 1a2b914e9a..c500b3592d 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -16,7 +16,6 @@ jobs:
         include:
           - runner: macos-12-xl
             developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer"
-        include:
           - runner: windows-large
             configuration: ReleaseOS
     runs-on: ${{ matrix.runner }}
-- 
cgit v1.2.3


From a4d2574df2af19f5baa57bf27b5c5f888b765ede Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Mon, 13 May 2024 13:46:42 -0400
Subject: Run ReleaseOS builds, but only when a release page is requested.

---
 .github/workflows/build.yaml | 35 ++++++++++++++++++++++++++---------
 1 file changed, 26 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index c500b3592d..3bf7964ba2 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -7,17 +7,24 @@ on:
     branches: ["main", "release/*", "project/*"]
     tags: ["Second_Life*"]
 
+env:
+  # Build with a tag like "Second_Life#abcdef0" to generate a release page
+  # (used for builds we are planning to deploy).
+  RELEASE_RUN: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') && 'Y' }}
+
 jobs:
   build:
     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 }}
@@ -39,7 +46,10 @@ jobs:
       AUTOBUILD_VSVER: "170"
       DEVELOPER_DIR: ${{ matrix.developer_dir }}
       # Ensure that Linden viewer builds engage Bugsplat.
-      BUGSPLAT_DB: ${{ matrix.configuration != 'ReleaseOS' && 'SecondLife_Viewer_2018' || '' }}
+      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 || env.RELEASE_RUN) && 'Y' || '' }}
       build_coverity: false
       build_log_dir: ${{ github.workspace }}/.logs
       build_viewer: true
@@ -58,16 +68,19 @@ jobs:
       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
@@ -75,17 +88,20 @@ jobs:
           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
-        uses: actions/cache@v4
         id: cache-installables
+        if: env.BUILD
+        uses: actions/cache@v4
         with:
           path: .autobuild-installables
           key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }}
@@ -94,17 +110,19 @@ jobs:
             ${{ runner.os }}-64-
 
       - name: Install windows dependencies
-        if: runner.os == 'Windows'
+        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 }}
@@ -227,7 +245,7 @@ jobs:
           echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT
 
       - name: Upload executable
-        if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_app
+        if: matrix.Linden && steps.build.outputs.viewer_app
         uses: actions/upload-artifact@v4
         with:
           name: "${{ steps.build.outputs.artifact }}-app"
@@ -237,7 +255,7 @@ jobs:
       # The other upload of nontrivial size is the symbol file. Use a distinct
       # artifact for that too.
       - name: Upload symbol file
-        if: matrix.configuration != 'ReleaseOS'
+        if: matrix.Linden
         uses: actions/upload-artifact@v4
         with:
           name: "${{ steps.build.outputs.artifact }}-symbols"
@@ -245,7 +263,7 @@ jobs:
             ${{ steps.build.outputs.symbolfile }}
 
       - name: Upload metadata
-        if: matrix.configuration != 'ReleaseOS'
+        if: matrix.Linden
         uses: actions/upload-artifact@v4
         with:
           name: "${{ steps.build.outputs.artifact }}-metadata"
@@ -256,7 +274,7 @@ jobs:
       - name: Upload physics package
         uses: actions/upload-artifact@v4
         # should only be set for viewer-private
-        if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.physicstpv
+        if: matrix.Linden && steps.build.outputs.physicstpv
         with:
           name: "${{ steps.build.outputs.artifact }}-physics"
           # emitted by build.sh, zero or one lines
@@ -362,8 +380,7 @@ jobs:
   release:
     needs: [build, sign-and-package-windows, sign-and-package-mac]
     runs-on: ubuntu-latest
-      # Build with a tag like "Second_Life#abcdef0" to generate a release page (used for builds we are planning to deploy).
-    if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life')
+    if: env.RELEASE_RUN
     steps:
       - uses: actions/download-artifact@v4
         with:
-- 
cgit v1.2.3


From 9d30040dfe161e750a897065c16450478e740aa9 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 15 May 2024 15:57:50 -0400
Subject: Try to work around workflow YAML env setting limitation.

---
 .github/workflows/build.yaml | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 3bf7964ba2..afac61cb1b 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -13,7 +13,22 @@ env:
   RELEASE_RUN: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') && 'Y' }}
 
 jobs:
+  # The whole point of the setvar job is that we want to reference global
+  # env.RELEASE_RUN in build.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 }}
+    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]
@@ -49,7 +64,7 @@ jobs:
       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 || env.RELEASE_RUN) && 'Y' || '' }}
+      BUILD: ${{ (matrix.Linden || needs.setvar.outputs.release_run) && 'Y' || '' }}
       build_coverity: false
       build_log_dir: ${{ github.workspace }}/.logs
       build_viewer: true
-- 
cgit v1.2.3


From 18c1458409fbb4ab3a734bd80673a7726fee107f Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 15 May 2024 16:01:26 -0400
Subject: Can't reference global env in job.if either.

---
 .github/workflows/build.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index afac61cb1b..07499f768c 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -393,9 +393,9 @@ jobs:
           version: ${{ needs.build.outputs.viewer_version }}
 
   release:
-    needs: [build, sign-and-package-windows, sign-and-package-mac]
+    needs: [setvar, build, sign-and-package-windows, sign-and-package-mac]
     runs-on: ubuntu-latest
-    if: env.RELEASE_RUN
+    if: needs.setvar.outputs.release_run
     steps:
       - uses: actions/download-artifact@v4
         with:
-- 
cgit v1.2.3


From f822193974af363fa4bb0208dc02848be6c983a2 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 15 May 2024 16:08:54 -0400
Subject: Make env.RELEASE_RUN the empty string if false

not the string "false", which is true.
---
 .github/workflows/build.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 07499f768c..47f612f028 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -10,7 +10,7 @@ on:
 env:
   # Build with a tag like "Second_Life#abcdef0" to generate a release page
   # (used for builds we are planning to deploy).
-  RELEASE_RUN: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') && 'Y' }}
+  RELEASE_RUN: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') && 'Y' || '' }}
 
 jobs:
   # The whole point of the setvar job is that we want to reference global
-- 
cgit v1.2.3


From 1f0b80f709dd3b263e88ca6e3db027a1406ec240 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 15 May 2024 17:15:25 -0400
Subject: Streamline the new workflow `RELEASE_RUN` logic a little.

Since downstream jobs reference the output of the new `setvar` job, instead of
directly referencing global `env.RELEASE_RUN`, no need to set `RELEASE_RUN` in
the global environment.
---
 .github/workflows/build.yaml | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 47f612f028..94bd13f4af 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -7,19 +7,22 @@ on:
     branches: ["main", "release/*", "project/*"]
     tags: ["Second_Life*"]
 
-env:
-  # Build with a tag like "Second_Life#abcdef0" to generate a release page
-  # (used for builds we are planning to deploy).
-  RELEASE_RUN: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') && 'Y' || '' }}
-
 jobs:
-  # The whole point of the setvar job is that we want to reference global
-  # env.RELEASE_RUN in build.env, but a job.env can't directly reference the
-  # global env context.
+  # 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.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') && 'Y' || '' }}
     steps:
       - name: Set Variable
         id: setvar
-- 
cgit v1.2.3