summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/lib/python/indra/util/llmanifest.py2
-rw-r--r--indra/newview/CMakeLists.txt41
-rwxr-xr-xindra/newview/viewer_manifest.py52
3 files changed, 70 insertions, 25 deletions
diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py
index 38de9c7cf1..1bd65eb57d 100755
--- a/indra/lib/python/indra/util/llmanifest.py
+++ b/indra/lib/python/indra/util/llmanifest.py
@@ -637,7 +637,7 @@ class LLManifest(object, metaclass=LLManifestRegistry):
'vers':'_'.join(self.args['version'])}
print("Creating unpacked file:", unpacked_file_name)
# could add a gz here but that doubles the time it takes to do this step
- tf = tarfile.open(self.src_path_of(unpacked_file_name), 'w:')
+ tf = tarfile.open(self.build_path_of(unpacked_file_name), 'w:')
# add the entire installation package, at the very top level
tf.add(self.get_dst_prefix(), "")
tf.close()
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 859ccbd4cd..5bcfddfe25 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1799,6 +1799,47 @@ if (WINDOWS)
add_dependencies(${VIEWER_BINARY_NAME} stage_third_party_libs llcommon llwebrtc copy_w_viewer_manifest)
+ # Useful for remote debugging or profiling if set to target a shared drive. for example, brad sets it to "dist/secondlife" to deploy under
+ # the build tree (and then I share that directory) or "f:/dist/secondlife" to deploy to a network mounted drive (although this can be slow).
+ # this will also create an "unpacked" tarball at build-<platform>/newview/unpacked_<platform>_7_1_11_<build num>.tar
+ set(LOCAL_DIST_DIR "" CACHE PATH "Path for 'local' unpacked copy of viewer distribution to be deployed to.")
+ set(product SecondLife-${ARCH}-${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION})
+ if(IS_DIRECTORY ${LOCAL_DIST_DIR})
+ add_custom_command(
+ OUTPUT ${LOCAL_DIST_DIR}/.${product}.copy_touched
+ COMMAND ${PYTHON_EXECUTABLE}
+ ARGS
+ ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+ "--actions=\"copy package unpacked\""
+ --arch=${ARCH}
+ --artwork=${ARTWORK_DIR}
+ "--bugsplat=${BUGSPLAT_DB}"
+ "--openal=${USE_OPENAL}"
+ "--tracy=${USE_TRACY}"
+ --build=${CMAKE_CURRENT_BINARY_DIR}
+ --buildtype=$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,${CMAKE_BUILD_TYPE}>
+ "--channel=${VIEWER_CHANNEL}"
+ --configuration=$<CONFIG>
+ --dest=${LOCAL_DIST_DIR}
+ --grid=${GRID}
+ --source=${CMAKE_CURRENT_SOURCE_DIR}
+ --versionfile=${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
+ --touch=${LOCAL_DIST_DIR}/.${product}.copy_touched
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
+ stage_third_party_libs
+ llwebrtc
+ ${CMAKE_CURRENT_BINARY_DIR}/viewer_version.txt
+ ${COPY_INPUT_DEPENDENCIES}
+ ${VIEWER_BINARY_NAME}
+ COMMENT "Performing viewer_manifest local dist copy"
+ )
+
+ add_custom_target(copy_local_dist_viewer_manifest ALL DEPENDS ${LOCAL_DIST_DIR}/.${product}.copy_touched)
+ elseif (NOT LOCAL_DIST_DIR STREQUAL "")
+ message(FATAL_ERROR "LOCAL_DIST_DIR ${LOCAL_DIST_DIR} specified but is not valid target directory to copy viewer distribution into. Please create the directory and try again")
+ endif () # IS_DIRECTORY ${LOCAL_DIST_DIR}
+
if (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)
add_dependencies(${VIEWER_BINARY_NAME} copy_win_scripts)
endif (EXISTS ${CMAKE_SOURCE_DIR}/copy_win_scripts)
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index b2f9654eb3..f9aaeabbfb 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -502,30 +502,34 @@ class Windows_x86_64_Manifest(ViewerManifest):
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 the whole app image as one of the GitHub step outputs. We
- # want the whole app -- but NOT the extraneous build products that
- # get tossed into the same directory, such as the installer and
- # the symbols tarball, so add exclusions. When we feed
- # upload-artifact multiple absolute pathnames, even just for
- # exclusion, it ends up creating several extraneous directory
- # levels within the artifact -- so try using only relative paths.
- # One problem: as of right now, our current directory os.getcwd()
- # is not the same as the initial working directory for this job
- # step, meaning paths relative to our os.getcwd() won't work for
- # the subsequent upload-artifact step. We're a couple directory
- # levels down. Try adjusting for those when specifying the base
- # for self.relpath().
- appbase = self.relpath(
- self.get_dst_prefix(),
- base=os.path.join(os.getcwd(), os.pardir, os.pardir))
- self.set_github_output('viewer_app', appbase,
- # except for this stuff
- *(('!' + os.path.join(appbase, pattern))
- for pattern in (
- 'secondlife-bin.*',
- '*_Setup.exe',
- '*.bat',
- '*.tar.xz')))
+
+ GITHUB_OUTPUT = os.getenv('GITHUB_OUTPUT')
+ if GITHUB_OUTPUT:
+ # Emit the whole app image as one of the GitHub step outputs. We
+ # want the whole app -- but NOT the extraneous build products that
+ # get tossed into the same directory, such as the installer and
+ # the symbols tarball, so add exclusions. When we feed
+ # upload-artifact multiple absolute pathnames, even just for
+ # exclusion, it ends up creating several extraneous directory
+ # levels within the artifact -- so try using only relative paths.
+ # One problem: as of right now, our current directory os.getcwd()
+ # is not the same as the initial working directory for this job
+ # step, meaning paths relative to our os.getcwd() won't work for
+ # the subsequent upload-artifact step. We're a couple directory
+ # levels down. Try adjusting for those when specifying the base
+ # for self.relpath().
+ appbase = self.relpath(
+ self.get_dst_prefix(),
+ base=os.path.join(os.getcwd(), os.pardir, os.pardir),
+ symlink=True)
+ self.set_github_output('viewer_app', appbase,
+ # except for this stuff
+ *(('!' + os.path.join(appbase, pattern))
+ for pattern in (
+ 'secondlife-bin.*',
+ '*_Setup.exe',
+ '*.bat',
+ '*.tar.xz')))
with self.prefix(src=os.path.join(pkgdir, "VMP")):
# include the compiled launcher scripts so that it gets included in the file_list