summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yaml24
-rw-r--r--.github/workflows/build_linux.yaml47
-rw-r--r--autobuild.xml11
-rwxr-xr-xbuild.sh30
-rwxr-xr-xindra/newview/viewer_manifest.py50
5 files changed, 82 insertions, 80 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index c7a758bd0f..3ac470b5ed 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -11,7 +11,7 @@ jobs:
build:
strategy:
matrix:
- runner: [windows-large, macos-12-xl]
+ runner: [windows-large, macos-12-xl, linux-large]
configuration: [Release, ReleaseOS]
python-version: ["3.11"]
include:
@@ -20,6 +20,8 @@ jobs:
exclude:
- runner: macos-12-xl
configuration: ReleaseOS
+ - runner: linux-large
+ configuration: Release
runs-on: ${{ matrix.runner }}
outputs:
viewer_channel: ${{ steps.build.outputs.viewer_channel }}
@@ -95,6 +97,10 @@ jobs:
${{ runner.os }}-64-${{ matrix.configuration }}-
${{ runner.os }}-64-
+ - name: Install Linux dependencies
+ if: runner.os == 'linux'
+ run: sudo apt update && sudo apt install -y libfltk1.3-dev libunwind-dev libgl1-mesa-dev libglu1-mesa-dev libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxext-dev libxrender-dev libxfixes-dev libxxf86vm-dev libxss-dev libdbus-1-dev libudev-dev libssl-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libfreetype6-dev ninja-build libxft-dev
+
- name: Install windows dependencies
if: runner.os == 'Windows'
run: choco install nsis-unicode
@@ -230,6 +236,16 @@ jobs:
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 && matrix.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
@@ -372,7 +388,7 @@ jobs:
with:
name: Windows-metadata
- - name: Rename windows metadata
+ - name: Rename windows metadata
run: |
mv autobuild-package.xml Windows-autobuild-package.xml
mv newview/viewer_version.txt Windows-viewer_version.txt
@@ -381,7 +397,7 @@ jobs:
with:
name: macOS-metadata
- - name: Rename macOS metadata
+ - name: Rename macOS metadata
run: |
mv autobuild-package.xml macOS-autobuild-package.xml
mv newview/viewer_version.txt macOS-viewer_version.txt
@@ -407,7 +423,7 @@ jobs:
append_body: true
fail_on_unmatched_files: true
files: |
- *.dmg
+ *.dmg
*.exe
*-autobuild-package.xml
*-viewer_version.txt
diff --git a/.github/workflows/build_linux.yaml b/.github/workflows/build_linux.yaml
deleted file mode 100644
index 005284e984..0000000000
--- a/.github/workflows/build_linux.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-name: Linux build example
-on:
- workflow_dispatch:
- push:
-jobs:
- build:
- runs-on: ubuntu-22.04
- env:
- AUTOBUILD_ADDRSIZE: 64
- AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- ref: ${{ github.event.pull_request.head.sha || github.sha }}
-
- - name: Setup python
- uses: actions/setup-python@v5
- with:
- python-version: ${{ matrix.python-version }}
-
- - name: Checkout build variables
- uses: actions/checkout@v4
- with:
- repository: secondlife/build-variables
- ref: viewer
- path: .build-variables
-
- - name: Checkout master-message-template
- uses: actions/checkout@v4
- with:
- repository: secondlife/master-message-template
- path: .master-message-template
-
- - name: Install autobuild and python dependencies
- run: pip3 install autobuild llsd
-
- - name: Install Linux dependencies
- if: runner.os == 'linux'
- run: sudo apt update && sudo apt install -y libfltk1.3-dev libunwind-dev libgl1-mesa-dev libglu1-mesa-dev libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libxext-dev libxrender-dev libxfixes-dev libxxf86vm-dev libxss-dev libdbus-1-dev libudev-dev libssl-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libfreetype6-dev ninja-build libxft-dev
-
- - name: Build
- id: build
- shell: bash
- run: |
- autobuild configure -c ReleaseOS -A64
- cd build-linux-x86_64 && ninja -k0
diff --git a/autobuild.xml b/autobuild.xml
index e95eb13a6b..ca774fc769 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -954,9 +954,13 @@
<key>archive</key>
<map>
<key>hash</key>
- <string>00d0333936a67059a43a6ec8ac38d564</string>
+ <string>ebfb82b6143874e7938b9d1e8a70d0a2e28aa818</string>
+ <key>hash_algorithm</key>
+ <string>sha1</string>
<key>url</key>
- <string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/748/1563/havok_source-2012.1-2-linux64-500739.tar.bz2</string>
+ <string>https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108912599</string>
+ <key>creds</key>
+ <string>github</string>
</map>
<key>name</key>
<string>linux64</string>
@@ -3386,7 +3390,8 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<string>-G</string>
<string>Ninja</string>
<string>-DLL_TESTS=Off</string>
-</array>
+ <string>-DUSE_OPENAL=On</string>
+ </array>
</map>
<key>build</key>
<map>
diff --git a/build.sh b/build.sh
index f7b3632ee8..653a95271f 100755
--- a/build.sh
+++ b/build.sh
@@ -48,7 +48,7 @@ build_dir_Darwin()
build_dir_Linux()
{
- echo build-linux-i686
+ echo build-linux-x86_64
}
build_dir_CYGWIN()
@@ -156,6 +156,22 @@ pre_build()
"-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.")
fi
+ if [[ "$arch" == "Linux" ]]
+ then
+ # RELEASE_CRASH_REPORTING is tuned on unconditionaly, this is fine but not for Linux as of now (due to missing breakpad/crashpad support)
+ RELEASE_CRASH_REPORTING=OFF
+
+ # Builds turn on HAVOK even when config is ReleaseOS.
+ # This needs AUTOBUILD_GITHUB_TOKEN to be set in the environment. But this is not set for PRs apparently.
+ # Still this seemlingy works on Windows and Mac, why not on the Linux runner? Mystery to be solved elsewhere.
+
+
+ if [[ "$variant" == "ReleaseOS" ]]
+ then
+ HAVOK=OFF
+ fi
+ fi
+
if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ]
then
case "$arch" in
@@ -200,14 +216,14 @@ package_llphysicsextensions_tpv()
tpv_status=0
# nat 2016-12-21: without HAVOK, can't build PhysicsExtensions_TPV.
if [ "$variant" = "Release" -a "${HAVOK:-}" != "OFF" ]
- then
+ then
tpvconfig="$build_dir/packages/llphysicsextensions/autobuild-tpv.xml"
test -r "$tpvconfig" || fatal "No llphysicsextensions_tpv autobuild configuration found"
# SL-19942: autobuild ignores -c switch if AUTOBUILD_CONFIGURATION set
unset AUTOBUILD_CONFIGURATION
"$autobuild" build --quiet --config-file "$(native_path "$tpvconfig")" -c Tpv \
|| fatal "failed to build llphysicsextensions_tpv"
-
+
# capture the package file name for use in upload later...
PKGTMP=`mktemp -t pgktpv.XXXXXX`
cleanup="$cleanup ; rm $PKGTMP* 2>/dev/null"
@@ -240,7 +256,7 @@ build()
|| fatal "failed building $variant"
echo true >"$build_dir"/build_ok
end_section "autobuild $variant"
-
+
begin_section "extensions $variant"
# Run build extensions
if [ -d ${build_dir}/packages/build-extensions ]
@@ -313,7 +329,7 @@ begin_section "select viewer channel"
# Look for a branch-specific viewer_channel setting
# changeset_branch is set in the sling-buildscripts
viewer_build_branch=$(echo -n "${changeset_branch:-$(repo_branch ${BUILDSCRIPTS_SRC:-$(pwd)})}" | tr -Cs 'A-Za-z0-9_' '_' | sed -E 's/^_+//; s/_+$//')
-if [ -n "$viewer_build_branch" ]
+if [ -n "$viewer_build_branch" ]
then
branch_viewer_channel_var="${viewer_build_branch}_viewer_channel"
if [ -n "${!branch_viewer_channel_var}" ]
@@ -435,7 +451,7 @@ do
record_event "configure for $variant failed: build skipped"
fi
- if ! $succeeded
+ if ! $succeeded
then
record_event "remaining variants skipped due to $variant failure"
break
@@ -500,7 +516,7 @@ then
fi
done
end_section "Upload Debian Repository"
-
+
else
record_event "debian build not enabled"
fi
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 3de57c6bf4..c97d421504 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -59,7 +59,7 @@ class ViewerManifest(LLManifest):
# files during the build (see copy_w_viewer_manifest
# and copy_l_viewer_manifest targets)
return 'package' in self.args['actions']
-
+
def construct(self):
super(ViewerManifest, self).construct()
self.path(src="../../scripts/messages/message_template.msg", dst="app_settings/message_template.msg")
@@ -87,7 +87,7 @@ class ViewerManifest(LLManifest):
# ... and the entire image filters directory
self.path("filters")
-
+
# ... and the included spell checking dictionaries
pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
with self.prefix(src=pkgdir):
@@ -260,14 +260,14 @@ class ViewerManifest(LLManifest):
def app_name_oneword(self):
return ''.join(self.app_name().split())
-
+
def icon_path(self):
return "icons/" + self.channel_type()
def extract_names(self,src):
"""Extract contributor names from source file, returns string"""
try:
- with open(src, 'r') as contrib_file:
+ with open(src, 'r') as contrib_file:
lines = contrib_file.readlines()
except IOError:
print("Failed to open '%s'" % src)
@@ -491,7 +491,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
raise Exception("Directories are not supported by test_CRT_and_copy_action()")
else:
print("Doesn't exist:", src)
-
+
def construct(self):
super().construct()
@@ -543,7 +543,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
self.path2basename(os.path.join(os.pardir,
'llplugin', 'slplugin', self.args['configuration']),
"slplugin.exe")
-
+
# Get shared libs from the shared libs staging directory
with self.prefix(src=os.path.join(self.args['build'], os.pardir,
'sharedlibs', self.args['buildtype'])):
@@ -582,7 +582,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
# Vivox libraries
self.path("vivoxsdk_x64.dll")
self.path("ortp_x64.dll")
-
+
# OpenSSL
self.path("libcrypto-1_1-x64.dll")
self.path("libssl-1_1-x64.dll")
@@ -709,7 +709,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
self.path("plugins/")
if not self.is_packaging_viewer():
- self.package_file = "copied_deps"
+ self.package_file = "copied_deps"
def nsi_file_commands(self, install=True):
def INSTDIR(path):
@@ -768,7 +768,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
installer_file = self.installer_base_name() + '_Setup.exe'
substitution_strings['installer_file'] = installer_file
-
+
version_vars = """
!define INSTEXE "SLVersionChecker.exe"
!define VERSION "%(version_short)s"
@@ -777,7 +777,7 @@ class Windows_x86_64_Manifest(ViewerManifest):
!define VERSION_REGISTRY "%(version_registry)s"
!define VIEWER_EXE "%(final_exe)s"
""" % substitution_strings
-
+
if self.channel_type() == 'release':
substitution_strings['caption'] = CHANNEL_VENDOR_BASE
else:
@@ -908,7 +908,7 @@ class Darwin_x86_64_Manifest(ViewerManifest):
# yields a slightly smaller binary but makes crash
# logs mostly useless. This may be desirable for the
# final release. Or not.
- if ("package" in self.args['actions'] or
+ if ("package" in self.args['actions'] or
"unpacked" in self.args['actions']):
self.run_command(
['strip', '-S', executable])
@@ -933,7 +933,7 @@ class Darwin_x86_64_Manifest(ViewerManifest):
with self.prefix(src=relpkgdir, dst=""):
self.path("libndofdev.dylib")
- self.path("libhunspell-*.dylib")
+ self.path("libhunspell-*.dylib")
with self.prefix(src_dst="cursors_mac"):
self.path("*.tif")
@@ -1204,7 +1204,7 @@ class LinuxManifest(ViewerManifest):
pkgdir = os.path.join(self.args['build'], os.pardir, 'packages')
if "package_dir" in self.args:
pkgdir = self.args['package_dir']
-
+
relpkgdir = os.path.join(pkgdir, "lib", "release")
debpkgdir = os.path.join(pkgdir, "lib", "debug")
@@ -1343,6 +1343,9 @@ class LinuxManifest(ViewerManifest):
def package_finish(self):
installer_name = self.installer_base_name()
+ # When running as a GitHub Action job, RUNNER_TEMP is defined as the tmp dir
+ RUNNER_TEMP = os.getenv('RUNNER_TEMP')
+
self.strip_binaries()
# Fix access permissions
@@ -1357,21 +1360,30 @@ class LinuxManifest(ViewerManifest):
# temporarily move directory tree so that it has the right
# name in the tarfile
realname = self.get_dst_prefix()
- tempname = self.build_path_of(installer_name)
- self.run_command(["mv", realname, tempname])
+ versionedName = self.build_path_of(installer_name)
+
+ tarName = versionedName + ".tar.bz2"
+
+ # 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
+ # not building a GHA release
+ if RUNNER_TEMP:
+ tarName = os.path.join(RUNNER_TEMP, self.package_file)
+
+ self.run_command(["mv", realname, versionedName])
+
try:
# only create tarball if it's a release build.
if self.args['buildtype'].lower() == 'release':
- # --numeric-owner hides the username of the builder for
- # security etc.
self.run_command(['tar', '-C', self.get_build_prefix(),
'--numeric-owner', '-cjf',
- tempname + '.tar.bz2', installer_name])
+ tarName, installer_name])
+ self.set_github_output_path('viewer_app', tarName)
else:
print("Skipping %s.tar.bz2 for non-Release build (%s)" % \
(installer_name, self.args['buildtype']))
finally:
- self.run_command(["mv", tempname, realname])
+ self.run_command(["mv", versionedName, realname])
def strip_binaries(self):
doStrip = False