summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBennett Goble <signal@lindenlab.com>2024-04-12 07:58:01 -0700
committerBennett Goble <signal@lindenlab.com>2024-04-12 07:58:01 -0700
commit36415f7aa4c437523c5dabb2f2ffc60580b520af (patch)
tree50002f7dc7e1b07fba32bacbe50e96bb619e9670
parent7f021738ef2d74f78093dbe4fa37cbfa6645e05a (diff)
parent7507abb566fe90fb96f866418d68a3635baf9806 (diff)
Merge branch 'main' into release/maint-b
-rw-r--r--.github/workflows/build.yaml71
-rw-r--r--BuildParams73
-rwxr-xr-xbuild.sh13
-rwxr-xr-xindra/fix-incredibuild.py61
-rw-r--r--indra/newview/CMakeLists.txt12
-rwxr-xr-xindra/newview/viewer_manifest.py14
6 files changed, 43 insertions, 201 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index b5be5bb00c..c61e969a02 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -13,15 +13,14 @@ jobs:
matrix:
runner: [windows-large, macos-12-xl, linux-large]
configuration: [Release, ReleaseOS]
- python-version: ["3.11"]
include:
- runner: macos-12-xl
developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer"
exclude:
- runner: macos-12-xl
configuration: ReleaseOS
- - runner: linux-large
- configuration: Release
+ - runner: windows-large
+ configuration: ReleaseOS
runs-on: ${{ matrix.runner }}
outputs:
viewer_channel: ${{ steps.build.outputs.viewer_channel }}
@@ -69,7 +68,7 @@ jobs:
- name: Setup python
uses: actions/setup-python@v5
with:
- python-version: ${{ matrix.python-version }}
+ python-version: "3.11"
- name: Checkout build variables
uses: actions/checkout@v4
@@ -118,7 +117,7 @@ jobs:
- name: Determine source branch
id: which-branch
- uses: secondlife/viewer-build-util/which-branch@v1
+ uses: secondlife/viewer-build-util/which-branch@v2
with:
token: ${{ github.token }}
@@ -247,28 +246,19 @@ jobs:
echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT
- name: Upload executable
- if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_app
- uses: actions/upload-artifact@v3
+ if: (matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_app) || runner.os == 'Linux'
+ uses: actions/upload-artifact@v4
with:
name: "${{ steps.build.outputs.artifact }}-app"
path: |
${{ steps.build.outputs.viewer_app }}
- # ND: We only have ReleaseOS builds for Linux so far, thus upload what we have
- # This steps can be deleted once "Release" is in place and makes "ReleaseOS" obsolete (for upload)
- - name: Upload Linux ReleaseOS archive
- if: matrix.configuration == 'ReleaseOS' && steps.build.outputs.viewer_app && runner.os == 'linux'
- uses: actions/upload-artifact@v3
- 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.configuration != 'ReleaseOS'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: "${{ steps.build.outputs.artifact }}-symbols"
path: |
@@ -276,7 +266,7 @@ jobs:
- name: Upload metadata
if: matrix.configuration != 'ReleaseOS'
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: "${{ steps.build.outputs.artifact }}-metadata"
# emitted by build.sh, possibly multiple lines
@@ -284,7 +274,7 @@ jobs:
${{ steps.build.outputs.metadata }}
- name: Upload physics package
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
# should only be set for viewer-private
if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.physicstpv
with:
@@ -305,7 +295,7 @@ jobs:
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@v1
+ uses: secondlife/viewer-build-util/sign-pkg-windows@v2
with:
vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}"
cert_name: "${{ env.AZURE_CERT_NAME }}"
@@ -344,7 +334,7 @@ jobs:
- 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@v1
+ uses: secondlife/viewer-build-util/sign-pkg-mac@v2
with:
channel: ${{ needs.build.outputs.viewer_channel }}
imagename: ${{ needs.build.outputs.imagename }}
@@ -364,7 +354,7 @@ jobs:
steps:
- name: Post Windows symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
- uses: secondlife/viewer-build-util/post-bugsplat-windows@v1
+ uses: secondlife/viewer-build-util/post-bugsplat-windows@v2
with:
username: ${{ env.BUGSPLAT_USER }}
password: ${{ env.BUGSPLAT_PASS }}
@@ -381,7 +371,7 @@ jobs:
steps:
- name: Post Mac symbols
if: env.BUGSPLAT_USER && env.BUGSPLAT_PASS
- uses: secondlife/viewer-build-util/post-bugsplat-mac@v1
+ uses: secondlife/viewer-build-util/post-bugsplat-mac@v2
with:
username: ${{ env.BUGSPLAT_USER }}
password: ${{ env.BUGSPLAT_PASS }}
@@ -394,31 +384,20 @@ jobs:
runs-on: ubuntu-latest
if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_')
steps:
- - uses: actions/download-artifact@v3
- with:
- name: Windows-installer
-
- - uses: actions/download-artifact@v3
+ - uses: actions/download-artifact@v4
with:
- name: macOS-installer
+ pattern: "*-installer"
- - uses: actions/download-artifact@v3
+ - uses: actions/download-artifact@v4
with:
- name: Windows-metadata
-
- - name: Rename windows metadata
- run: |
- mv autobuild-package.xml Windows-autobuild-package.xml
- mv newview/viewer_version.txt Windows-viewer_version.txt
-
- - uses: actions/download-artifact@v3
- with:
- name: macOS-metadata
-
- - name: Rename macOS metadata
+ pattern: "*-metadata"
+
+ - name: Rename metadata
run: |
- mv autobuild-package.xml macOS-autobuild-package.xml
- mv newview/viewer_version.txt macOS-viewer_version.txt
+ 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
@@ -441,8 +420,8 @@ jobs:
append_body: true
fail_on_unmatched_files: true
files: |
- *.dmg
- *.exe
+ macOS-installer/*.dmg
+ Windows-installer/*.exe
*-autobuild-package.xml
*-viewer_version.txt
diff --git a/BuildParams b/BuildParams
deleted file mode 100644
index dda25e3e63..0000000000
--- a/BuildParams
+++ /dev/null
@@ -1,73 +0,0 @@
-# BuildParams
-#
-# Please refer to:
-# https://wiki.secondlife.com/wiki/Automated_Build_System
-
-# Variants (NOTE: 'Release' must be last for uploads to work correctly)
-variants = "RelWithDebInfo Release"
-
-# Use Public Upload Locations
-public_build = true
-build_docs = true
-
-# enable Doxygen building on Linux for TeamCity (it can be done manually on any platform)
-build_Linux_Doxygen = true
-
-# Need viewer-build-variables as well as other shared repositories
-buildscripts_shared_more_NAMEs="build_secrets build_variables git_hooks"
-
-# Python 3 / SL-15742
-BUILDSCRIPTS_PY3 = "true"
-
-################################################################
-#### Examples of how to set the viewer_channel ####
-#
-# To build a Release or Release candidate in build bingo:
-# bingo.viewer_channel = "Second Life Release"
-#
-# To build a Beta for the 'Bingo' project in build bingo:
-# bingo.viewer_channel = "Second Life Beta Bingo"
-#
-# To build a Project viewer for the 'Bingo' project in build bingo:
-# bingo.viewer_channel = "Second Life Project Bingo"
-#
-# If left unset, viewer_channel defaults to 'Second Life Test',
-# which is appropriate for individual developer builds.
-#
-# All Linden Lab builds (and only Linden Lab builds)
-# should use a viewer_channel that begins with "Second Life"
-################################################################
-viewer_channel = "Second Life Test"
-
-
-################################################################
-# Special packaging parameters.
-# These parameters can be used to create additional packages
-# which identify themselves in a distinct way with either
-# a sourceid (sent to web services) or a channel name (sent to login)
-# the default sourceid should always be a null string:
-sourceid = ""
-# the additional_packages variable is a blank separated list of package prefixes:
-# additional_packages = ""
-# to set the special values for a package, create variables using each prefix:
-# additional_packages = "Foo Bar"
-# Foo_sourceid = "bingo"
-# Foo_viewer_channel_suffix = "Foo"
-# Bar_sourceid = "bongo"
-# Bar_viewer_channel_suffix = "Bar"
-# the viewer_channel_suffix is prefixed by a blank and then appended to the viewer_channel
-# for the package in a setting that overrides the compiled-in value
-################################################################
-additional_packages = "EDU"
-Linux.additional_packages = ""
-
-# The EDU package allows us to create a separate release channel whose expirations
-# are synchronized as much as possible with the academic year
-EDU_sourceid = ""
-EDU_viewer_channel_suffix = "edu"
-
-# Notifications - to configure email notices use the TeamCity parameter
-# setting screen for your project or build configuration to set the
-# environment variable 'email' to a space-separated list of email addresses
-email=""
-
diff --git a/build.sh b/build.sh
index 88dd665ba6..0edbca386d 100755
--- a/build.sh
+++ b/build.sh
@@ -6,9 +6,6 @@
# it relies on the environment that sets up, functions it provides, and
# the build result post-processing it does.
#
-# The shared buildscript build.sh invokes this because it is named 'build.sh',
-# which is the default custom build script name in buildscripts/hg/BuildParams
-#
# PLEASE NOTE:
#
# * This script is interpreted on three platforms, including windows and cygwin
@@ -85,7 +82,7 @@ installer_Linux()
{
local package_name="$1"
local package_dir="$(build_dir_Linux)/newview/"
- local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_i686\\.tar\\.bz2\$"
+ local pattern=".*$(viewer_channel_suffix ${package_name})_[0-9]+_[0-9]+_[0-9]+_[0-9]+_i686\\.tar\\.xz\$"
# since the additional packages are built after the base package,
# sorting oldest first ensures that the unqualified package is returned
# even if someone makes a qualified name that duplicates the last word of the base name
@@ -189,7 +186,7 @@ pre_build()
# This name is consumed by indra/newview/CMakeLists.txt. Make it
# absolute because we've had troubles with relative pathnames.
abs_build_dir="$(cd "$build_dir"; pwd)"
- VIEWER_SYMBOL_FILE="$(native_path "$abs_build_dir/newview/$variant/secondlife-symbols-$symplat-${AUTOBUILD_ADDRSIZE}.tar.bz2")"
+ VIEWER_SYMBOL_FILE="$(native_path "$abs_build_dir/newview/$variant/secondlife-symbols-$symplat-${AUTOBUILD_ADDRSIZE}.tar.xz")"
fi
# honor autobuild_configure_parameters same as sling-buildscripts
@@ -434,10 +431,10 @@ do
fi
if [ -d "$build_dir/doxygen/html" ]
then
- tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3 "$build_dir/doxygen/html"
- python_cmd "$helpers/codeticket.py" addoutput "Doxygen Tarball" "$build_dir/viewer-doxygen.tar.bz2" \
+ tar -cJf "$build_dir/viewer-doxygen.tar.xz" --strip-components 3 "$build_dir/doxygen/html"
+ python_cmd "$helpers/codeticket.py" addoutput "Doxygen Tarball" "$build_dir/viewer-doxygen.tar.xz" \
|| fatal "Upload of doxygen tarball failed"
- metadata+=("$build_dir/viewer-doxygen.tar.bz2")
+ metadata+=("$build_dir/viewer-doxygen.tar.xz")
fi
;;
*)
diff --git a/indra/fix-incredibuild.py b/indra/fix-incredibuild.py
deleted file mode 100755
index 678ee4329e..0000000000
--- a/indra/fix-incredibuild.py
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/usr/bin/env python3
-##
-## $LicenseInfo:firstyear=2011&license=viewerlgpl$
-## Second Life Viewer Source Code
-## Copyright (C) 2011, Linden Research, Inc.
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation;
-## version 2.1 of the License only.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with this library; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-##
-## Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-## $/LicenseInfo$
-
-import sys
-import os
-import glob
-
-def delete_file_types(path, filetypes):
- if os.path.exists(path):
- print('Cleaning: ' + path)
- orig_dir = os.getcwd();
- os.chdir(path)
- filelist = []
- for type in filetypes:
- filelist.extend(glob.glob(type))
- for file in filelist:
- os.remove(file)
- os.chdir(orig_dir)
-
-def main():
- build_types = ['*.exp','*.exe','*.pdb','*.idb',
- '*.ilk','*.lib','*.obj','*.ib_pdb_index']
- pch_types = ['*.pch']
- delete_file_types("build-vc80/newview/Release", build_types)
- delete_file_types("build-vc80/newview/secondlife-bin.dir/Release/",
- pch_types)
- delete_file_types("build-vc80/newview/RelWithDebInfo", build_types)
- delete_file_types("build-vc80/newview/secondlife-bin.dir/RelWithDebInfo/",
- pch_types)
- delete_file_types("build-vc80/newview/Debug", build_types)
- delete_file_types("build-vc80/newview/secondlife-bin.dir/Debug/",
- pch_types)
-
-
- delete_file_types("build-vc80/test/RelWithDebInfo", build_types)
- delete_file_types("build-vc80/test/test.dir/RelWithDebInfo/",
- pch_types)
-
-
-if __name__ == "__main__":
- main()
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index e6ac84d5ab..7a66bb6048 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1819,7 +1819,7 @@ if (WINDOWS)
if (PACKAGE)
add_custom_command(
- OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
@@ -1863,7 +1863,7 @@ if (WINDOWS)
)
# temporarily disable packaging of event_host until hg subrepos get
# sorted out on the parabuild cluster...
- #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2)
+ #${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.xz)
endif (PACKAGE)
elseif (DARWIN)
@@ -1983,7 +1983,7 @@ if (LINUX)
#endif (NOT USE_BUGSPLAT)
add_custom_command(
- OUTPUT ${product}.tar.bz2
+ OUTPUT ${product}.tar.xz
COMMAND ${PYTHON_EXECUTABLE}
ARGS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
@@ -2037,7 +2037,7 @@ if (LINUX)
add_custom_target(copy_l_viewer_manifest ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched)
if (PACKAGE)
- add_custom_target(llpackage ALL DEPENDS ${product}.tar.bz2)
+ add_custom_target(llpackage ALL DEPENDS ${product}.tar.xz)
# Make sure we don't run two instances of viewer_manifest.py at the same time.
add_dependencies(llpackage copy_l_viewer_manifest)
check_message_template(llpackage)
@@ -2168,12 +2168,12 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE
OUTPUT_VARIABLE PARENT_DIRECTORY_CYGWIN
OUTPUT_STRIP_TRAILING_WHITESPACE)
add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}"
- # Use of 'tar ...j' here assumes VIEWER_SYMBOL_FILE endswith .tar.bz2;
+ # Use of 'tar ...j' here assumes VIEWER_SYMBOL_FILE endswith .tar.xz;
# testing a string suffix is painful enough in CMake language that
# we'll continue assuming it until forced to generalize.
COMMAND "tar"
ARGS
- "cjf"
+ "cJf"
"${VIEWER_SYMBOL_FILE_CYGWIN}"
"-C"
"${PARENT_DIRECTORY_CYGWIN}"
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 6fae39db30..46d5c0a3ce 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -525,7 +525,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
'secondlife-bin.*',
'*_Setup.exe',
'*.bat',
- '*.tar.bz2')))
+ '*.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
@@ -1183,9 +1183,9 @@ class Darwin_x86_64_Manifest(ViewerManifest):
# causes problems, especially with frameworks: a framework's top
# level must contain symlinks into its Versions/Current, which
# must itself be a symlink to some specific Versions subdir.
- tarpath = os.path.join(RUNNER_TEMP, "viewer.tar.bz2")
+ tarpath = os.path.join(RUNNER_TEMP, "viewer.tar.xz")
print(f'Creating {tarpath} from {self.get_dst_prefix()}')
- with tarfile.open(tarpath, mode="w:bz2") as tarball:
+ with tarfile.open(tarpath, mode="w:xz") as tarball:
# Store in the tarball as just 'Second Life Mumble.app'
# instead of 'Users/someone/.../newview/Release/Second...'
# It's at this point that we rename 'Second Life Release.app'
@@ -1349,14 +1349,14 @@ class LinuxManifest(ViewerManifest):
self.run_command(['find', self.get_dst_prefix(),
'-type', 'f', '-perm', old,
'-exec', 'chmod', new, '{}', ';'])
- self.package_file = installer_name + '.tar.bz2'
+ self.package_file = installer_name + '.tar.xz'
# temporarily move directory tree so that it has the right
# name in the tarfile
realname = self.get_dst_prefix()
versionedName = self.build_path_of(installer_name)
- tarName = versionedName + ".tar.bz2"
+ tarName = versionedName + ".tar.xz"
# If using a github runner we divert packaging a little. Considering this wil be a VM/docker image
# we can just pack the final installer into RUNNER_TEMP and not into the usual stop we'd pick when
@@ -1370,11 +1370,11 @@ class LinuxManifest(ViewerManifest):
# only create tarball if it's a release build.
if self.args['buildtype'].lower() == 'release':
self.run_command(['tar', '-C', self.get_build_prefix(),
- '--numeric-owner', '-cjf',
+ '--numeric-owner', '-cJf',
tarName, installer_name])
self.set_github_output_path('viewer_app', tarName)
else:
- print("Skipping %s.tar.bz2 for non-Release build (%s)" % \
+ print("Skipping %s.tar.xz for non-Release build (%s)" % \
(installer_name, self.args['buildtype']))
finally:
self.run_command(["mv", versionedName, realname])