From 2d04cc14d3805df982d51d96d2e3d180f5ef0b34 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Fri, 8 Sep 2023 17:01:46 -0400
Subject: [PATCH] SL-19242: Post -app artifact, not -exe, with entire install
 image.

Previously we posted Windows-exe, macOS-exe artifacts that were a little
inconsistent: Windows-exe contained just the Windows executable, whereas
macOS-exe contained the whole .app tree (but without the .app directory).

Change to post Windows-app, macOS-app artifacts that each contain the whole
viewer install image, including the top-level application name directory. This
is what we'll need to codesign and notarize.
---
 .github/workflows/build.yaml     | 11 ++++++++---
 indra/newview/viewer_manifest.py | 12 ++++++++----
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 7e3d2b68de1..8146db36ee7 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -223,11 +223,16 @@ jobs:
             ${{ steps.build.outputs.installer }}
 
       - name: Upload executable
-        if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_exe
+        if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_app
         uses: actions/upload-artifact@v3
         with:
-          name: "${{ steps.build.outputs.artifact }}-exe"
-          path: ${{ steps.build.outputs.viewer_exe }}
+          name: "${{ steps.build.outputs.artifact }}-app"
+          # The directory specified as viewer_app contains the directory
+          # containing the application image. Strip out any other build
+          # detritus from the artifact.
+          path: |
+            ${{ steps.build.outputs.viewer_app }}
+            "!${{ steps.build.outputs.viewer_app }}/*.bat"
 
       # The other upload of nontrivial size is the symbol file. Use a distinct
       # artifact for that too.
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index f6282743bb0..679a3441b90 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -489,8 +489,11 @@ def construct(self):
         if self.is_packaging_viewer():
             # Find secondlife-bin.exe in the 'configuration' dir, then rename it to the result of final_exe.
             self.path(src='%s/secondlife-bin.exe' % self.args['configuration'], dst=self.final_exe())
-            # emit that as one of the GitHub step outputs
-            self.set_github_output_path('viewer_exe', self.final_exe())
+            # Emit the whole app image as one of the GitHub step outputs. The
+            # current get_dst_prefix() is the top-level contents of the app
+            # directory -- so hop outward to the directory containing the app
+            # name.
+            self.set_github_output_path('viewer_app', os.pardir)
 
             with self.prefix(src=os.path.join(pkgdir, "VMP")):
                 # include the compiled launcher scripts so that it gets included in the file_list
@@ -853,8 +856,9 @@ def is_rearranging(self):
     def construct(self):
         # copy over the build result (this is a no-op if run within the xcode script)
         self.path(os.path.join(self.args['configuration'], self.channel()+".app"), dst="")
-        # capture the entire destination app bundle
-        self.set_github_output_path('viewer_exe', '')
+        # capture the entire destination app bundle, including the containing
+        # .app directory
+        self.set_github_output_path('viewer_app', os.pardir)
 
         pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
         relpkgdir = os.path.join(pkgdir, "lib", "release")
-- 
GitLab