From 5b4846046bb0700d749f017916e1d34294d830e0 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 09:33:04 -0700 Subject: Add build action --- .github/workflows/build.yaml | 53 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/build.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000000..7ba97b6d53 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,53 @@ +name: Build + +on: + workflow_dispatch: + pull_request: + push: + branches: ["actions"] + +jobs: + build: + strategy: + matrix: + os: [windows-2019, macos-11] + configuration: [RelWithDebInfoOS] + arch: [64] + include: + - os: windows-2019 + configuration: RelWithDebInfoOS + arch: 32 + runs-on: ${{ matrix.os }} + env: + AUTOBUILD_ADDRSIZE: ${{ matrix.arch }} + AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables + AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables + steps: + - uses: actions/checkout@v3 + + - uses: actions/checkout@v3 + with: + repository: secondlife/build-variables + ref: viewer + token: ${{ secrets.SHARED_GITHUB_TOKEN }} + path: .build-variables + + - uses: actions/setup-python@v4 + with: + python-version: 3.x + + - name: Install autobuild + run: pip install autobuild<4 + + - uses: actions/cache@v3 + id: cache-installables + with: + path: .autobuild-installables + key: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + + - name: Build + shell: bash + run: | + autobuild install + autobuild configure -c ${{ matrix.configuration }} + autobuild build --no-configure -- cgit v1.2.3 From 28ec3a63b8f9c5f97b1024f18036af72f9d3b281 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 09:35:04 -0700 Subject: Pip install autobuild --- .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 7ba97b6d53..3fce1da35f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -37,7 +37,7 @@ jobs: python-version: 3.x - name: Install autobuild - run: pip install autobuild<4 + run: pip install autobuild - uses: actions/cache@v3 id: cache-installables -- cgit v1.2.3 From 9a84b3923db0653f01ab7d8541645007347c4db4 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 09:40:32 -0700 Subject: Separate autobuild install from build --- .github/workflows/build.yaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3fce1da35f..16c794cde5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -12,14 +12,15 @@ jobs: matrix: os: [windows-2019, macos-11] configuration: [RelWithDebInfoOS] - arch: [64] + addrsize: [64] include: - os: windows-2019 configuration: RelWithDebInfoOS - arch: 32 + addrsize: 32 runs-on: ${{ matrix.os }} env: - AUTOBUILD_ADDRSIZE: ${{ matrix.arch }} + AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} + AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables steps: @@ -45,9 +46,10 @@ jobs: path: .autobuild-installables key: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + - name: Install autobuild packages + run: autobuild install + - name: Build - shell: bash run: | - autobuild install autobuild configure -c ${{ matrix.configuration }} autobuild build --no-configure -- cgit v1.2.3 From 7da93ab373a145392e51af0d3fdf7b61dd55ce0b Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 09:45:17 -0700 Subject: Force RelWithDebInfoOS configuration --- .github/workflows/build.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 16c794cde5..8a13ac0374 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,7 +30,6 @@ jobs: with: repository: secondlife/build-variables ref: viewer - token: ${{ secrets.SHARED_GITHUB_TOKEN }} path: .build-variables - uses: actions/setup-python@v4 @@ -47,7 +46,7 @@ jobs: key: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - name: Install autobuild packages - run: autobuild install + run: autobuild install -c ${{ matrix.configuration }} - name: Build run: | -- cgit v1.2.3 From 6b137c7fd65b50cdba69b789e3ead1728fc1f000 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 09:50:40 -0700 Subject: Allow CMAKE to run autobuild install --- .github/workflows/build.yaml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 8a13ac0374..3d66c02e75 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,31 +24,32 @@ jobs: AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables steps: - - uses: actions/checkout@v3 + - name: Checkout code + uses: actions/checkout@v3 - - uses: actions/checkout@v3 + - name: Checkout build variables + uses: actions/checkout@v3 with: repository: secondlife/build-variables ref: viewer path: .build-variables - - uses: actions/setup-python@v4 + - name: Install python + uses: actions/setup-python@v4 with: python-version: 3.x - name: Install autobuild run: pip install autobuild - - uses: actions/cache@v3 + - name: Cache autobuild packages + uses: actions/cache@v3 id: cache-installables with: path: .autobuild-installables key: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - - name: Install autobuild packages - run: autobuild install -c ${{ matrix.configuration }} - - name: Build run: | - autobuild configure -c ${{ matrix.configuration }} + autobuild configure autobuild build --no-configure -- cgit v1.2.3 From f2f9b32e753972d83087b9201a0073e208a0dd75 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 09:57:29 -0700 Subject: Use pre-installed python --- .github/workflows/build.yaml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3d66c02e75..bb0fb2efd8 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -33,21 +33,16 @@ jobs: repository: secondlife/build-variables ref: viewer path: .build-variables - - - name: Install python - uses: actions/setup-python@v4 - with: - python-version: 3.x - name: Install autobuild - run: pip install autobuild + run: pip3 install autobuild - name: Cache autobuild packages uses: actions/cache@v3 id: cache-installables with: path: .autobuild-installables - key: ${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + key: ${{ matrix.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - name: Build run: | -- cgit v1.2.3 From 7dc98ef96a871eed413a3fd5a578e3d8b143026d Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 10:01:27 -0700 Subject: Build with VS2k22 --- .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 bb0fb2efd8..b58d426966 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - os: [windows-2019, macos-11] + os: [windows-2022, macos-11] configuration: [RelWithDebInfoOS] addrsize: [64] include: @@ -46,5 +46,5 @@ jobs: - name: Build run: | - autobuild configure + autobuild configure -c ${{ matrix.configuration }} autobuild build --no-configure -- cgit v1.2.3 From 5fadc18c6c4d80f0338265b7e3361960c28b00d4 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 10:02:12 -0700 Subject: Also build win32 with VS2k22 --- .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 b58d426966..39e5d1597d 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -14,7 +14,7 @@ jobs: configuration: [RelWithDebInfoOS] addrsize: [64] include: - - os: windows-2019 + - os: windows-2022 configuration: RelWithDebInfoOS addrsize: 32 runs-on: ${{ matrix.os }} -- cgit v1.2.3 From 1f8671f3ac46f268dbf043753aad34489778b673 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 10:18:21 -0700 Subject: Perform source_environment --- .github/workflows/build.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 39e5d1597d..80a1498fce 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -45,6 +45,10 @@ jobs: key: ${{ matrix.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - name: Build + shell: bash run: | - autobuild configure -c ${{ matrix.configuration }} + autobuild --quiet source_environment > .env + source .env + + autobuild configure autobuild build --no-configure -- cgit v1.2.3 From 2e53204e774a24483653d8a4d4c31bff2d7a5f97 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 10:28:04 -0700 Subject: Explicitly set AUTOBUILD_VSVER --- .github/workflows/build.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 80a1498fce..e2abb3ce7c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -23,6 +23,7 @@ jobs: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables + AUTOBUILD_VSVER: "170" steps: - name: Checkout code uses: actions/checkout@v3 -- cgit v1.2.3 From 82d76fc0a36d62ba34ce2b38b9e14a105c899066 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 10:44:04 -0700 Subject: Use cygwin --- .github/workflows/build.yaml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e2abb3ce7c..06aac0c8ab 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -35,6 +35,22 @@ jobs: ref: viewer path: .build-variables + - name: Install cygwin + if: runner.os == 'Windows' + uses: secondlife/setup-cygwin@v1 + + - name: Determine shell + id: shell + shell: bash + env: + WINDOWS: ${{ runner.os == 'Windows' }} + run: | + if [[ $WINDOWS == 'true' ]]; then + echo "::set-output name=shell::C:\cygwin64\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'" + else + echo '::set-output name=shell::bash' + fi + - name: Install autobuild run: pip3 install autobuild @@ -46,8 +62,12 @@ jobs: key: ${{ matrix.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - name: Build - shell: bash + shell: ${{ steps.shell.outputs.shell }} + env: + WORKSPACE: ${{ github.workspace }} run: | + cd "$WORKSPACE" + autobuild --quiet source_environment > .env source .env -- cgit v1.2.3 From a05c7312c52c7261c2473a8163bf2a4b99b8b059 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 10:54:13 -0700 Subject: Call load_vsvars --- .github/workflows/build.yaml | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 06aac0c8ab..10b02783bc 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -35,22 +35,6 @@ jobs: ref: viewer path: .build-variables - - name: Install cygwin - if: runner.os == 'Windows' - uses: secondlife/setup-cygwin@v1 - - - name: Determine shell - id: shell - shell: bash - env: - WINDOWS: ${{ runner.os == 'Windows' }} - run: | - if [[ $WINDOWS == 'true' ]]; then - echo "::set-output name=shell::C:\cygwin64\bin\bash.exe --login --norc -eo pipefail -o igncr '{0}'" - else - echo '::set-output name=shell::bash' - fi - - name: Install autobuild run: pip3 install autobuild @@ -62,14 +46,15 @@ jobs: key: ${{ matrix.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - name: Build - shell: ${{ steps.shell.outputs.shell }} + shell: bash env: - WORKSPACE: ${{ github.workspace }} + WINDOWS: ${{ runner.os == 'Windows' }} run: | - cd "$WORKSPACE" - autobuild --quiet source_environment > .env source .env + if [[ "$WINDOWS" == "true" ]]; then + load_vsvars + fi autobuild configure autobuild build --no-configure -- cgit v1.2.3 From 271e6e367e8a44b33e3dd1e77c2972774a1c1de9 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Mon, 10 Oct 2022 11:23:05 -0700 Subject: Remove cygwin artifacts --- .github/workflows/build.yaml | 8 -------- .gitignore | 4 +++- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 10b02783bc..66ee864a77 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -47,14 +47,6 @@ jobs: - name: Build shell: bash - env: - WINDOWS: ${{ runner.os == 'Windows' }} run: | - autobuild --quiet source_environment > .env - source .env - if [[ "$WINDOWS" == "true" ]]; then - load_vsvars - fi - autobuild configure autobuild build --no-configure diff --git a/.gitignore b/.gitignore index 80eca667df..f0b5f86211 100755 --- a/.gitignore +++ b/.gitignore @@ -73,4 +73,6 @@ tarfile_tmp trivial_change_force_build web/config.* web/locale.* -web/secondlife.com.* \ No newline at end of file +web/secondlife.com.* + +.env -- cgit v1.2.3 From 67512f0ddbb997a52d2606570baef7ebacf766d5 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Tue, 11 Oct 2022 12:13:33 -0700 Subject: Remove hard-coded toolsversion from autobuild.xml build command --- autobuild.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 96f6918a99..954299d1f3 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3261,7 +3261,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /t:Build /p:useenv=true /verbosity:minimal - /toolsversion:4.0 /p:VCBuildAdditionalOptions= /incremental @@ -3335,7 +3334,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /t:Build /p:useenv=true /verbosity:minimal - /toolsversion:4.0 /p:VCBuildAdditionalOptions= /incremental -- cgit v1.2.3 From 13ab3e3f0658a26ae8345a1b8916240bafae302b Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Tue, 11 Oct 2022 14:17:57 -0700 Subject: Omit macOS until I have a mac laptop --- .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 66ee864a77..f2bba6dc45 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - os: [windows-2022, macos-11] + os: [windows-2022] configuration: [RelWithDebInfoOS] addrsize: [64] include: -- cgit v1.2.3 From 8d7cde22c31a59d0503230334b1d68e858364c9a Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Tue, 11 Oct 2022 15:10:04 -0700 Subject: Replace llbase with llsd module --- .github/workflows/build.yaml | 3 ++- indra/llcommon/tests/llleap_test.cpp | 2 +- indra/llcommon/tests/llsdserialize_test.cpp | 2 +- indra/llcorehttp/tests/test_llcorehttp_peer.py | 3 +-- indra/llmessage/tests/test_llsdmessage_peer.py | 3 +-- indra/newview/viewer_manifest.py | 2 +- scripts/metrics/slp_conv.py | 2 +- scripts/metrics/viewer_asset_logs.py | 2 +- scripts/metrics/viewerstats.py | 2 +- 9 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f2bba6dc45..91788c4076 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - os: [windows-2022] + os: [windows-2022, macos-11] configuration: [RelWithDebInfoOS] addrsize: [64] include: @@ -48,5 +48,6 @@ jobs: - name: Build shell: bash run: | + pip install llsd # Required by viewer tests autobuild configure autobuild build --no-configure diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 7ee36a9ea6..60005fc6a9 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -109,7 +109,7 @@ namespace tut "import os\n" "import sys\n" "\n" - "from llbase import llsd\n" + "import llsd\n" "\n" "class ProtocolError(Exception):\n" " def __init__(self, msg, data):\n" diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index c246f5ee56..be7ec12094 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -1706,7 +1706,7 @@ namespace tut // scanner. import_llsd("import os.path\n" "import sys\n" - "from llbase import llsd\n") + "import llsd\n") {} ~TestPythonCompatible() {} diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py index 778de90962..b9992538ba 100755 --- a/indra/llcorehttp/tests/test_llcorehttp_peer.py +++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py @@ -38,8 +38,7 @@ from io import StringIO from http.server import HTTPServer, BaseHTTPRequestHandler -from llbase.fastest_elementtree import parse as xml_parse -from llbase import llsd +import llsd # we're in llcorehttp/tests ; testrunner.py is found in llmessage/tests sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py index 5ba0749e31..ff8f40a144 100755 --- a/indra/llmessage/tests/test_llsdmessage_peer.py +++ b/indra/llmessage/tests/test_llsdmessage_peer.py @@ -33,8 +33,7 @@ import os import sys from http.server import HTTPServer, BaseHTTPRequestHandler -from llbase.fastest_elementtree import parse as xml_parse -from llbase import llsd +import llsd from testrunner import freeport, run, debug, VERBOSE import time diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 3327ecfb56..30b0d23a93 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -49,7 +49,7 @@ viewer_dir = os.path.dirname(__file__) # indra.util.llmanifest under their system Python! sys.path.insert(0, os.path.join(viewer_dir, os.pardir, "lib", "python")) from indra.util.llmanifest import LLManifest, main, path_ancestors, CHANNEL_VENDOR_BASE, RELEASE_CHANNEL, ManifestError, MissingError -from llbase import llsd +import llsd class ViewerManifest(LLManifest): def is_packaging_viewer(self): diff --git a/scripts/metrics/slp_conv.py b/scripts/metrics/slp_conv.py index 27f922b74a..25f9a8c060 100644 --- a/scripts/metrics/slp_conv.py +++ b/scripts/metrics/slp_conv.py @@ -29,7 +29,7 @@ Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA $/LicenseInfo$ """ -from llbase import llsd +import llsd import argparse parser = argparse.ArgumentParser( diff --git a/scripts/metrics/viewer_asset_logs.py b/scripts/metrics/viewer_asset_logs.py index 0365936188..bd996dff79 100644 --- a/scripts/metrics/viewer_asset_logs.py +++ b/scripts/metrics/viewer_asset_logs.py @@ -28,7 +28,7 @@ $/LicenseInfo$ import argparse from lxml import etree -from llbase import llsd +import llsd def get_metrics_record(infiles): for filename in args.infiles: diff --git a/scripts/metrics/viewerstats.py b/scripts/metrics/viewerstats.py index 7e19539e15..e64343329c 100755 --- a/scripts/metrics/viewerstats.py +++ b/scripts/metrics/viewerstats.py @@ -31,7 +31,7 @@ import numpy as np import pandas as pd import json from collections import Counter, defaultdict -from llbase import llsd +import llsd import io import re import os -- cgit v1.2.3 From 6112e92b61c334d3c0656bacdea92690cea1a76b Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 11:49:47 -0700 Subject: Upload installer, build Release, use large runner --- .github/workflows/build.yaml | 27 +++++++++++++---- .../installers/windows/installer_template.nsi | 1 - indra/newview/viewer_manifest.py | 34 ++++++---------------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 91788c4076..d6916a4808 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,14 +10,14 @@ jobs: build: strategy: matrix: - os: [windows-2022, macos-11] - configuration: [RelWithDebInfoOS] + runner: [windows_2022_public] + configuration: [ReleaseOS] addrsize: [64] include: - - os: windows-2022 - configuration: RelWithDebInfoOS + - runner: windows_2022_public + configuration: ReleaseOS addrsize: 32 - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.runner }} env: AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} @@ -45,9 +45,26 @@ jobs: path: .autobuild-installables key: ${{ matrix.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + - name: Install windows dependencies + if: runner.os == 'Windows' + run: choco install nsis-unicode + - name: Build + id: build shell: bash run: | pip install llsd # Required by viewer tests autobuild configure autobuild build --no-configure + + installer_path=$(find ./build-*/newview/ | grep '_Setup\.exe') + installer_name="$(basename $installer_path)" + echo "::set-output name=installer_path::$installer_path" + echo "::set-output name=installer_name::$installer_name" + + - name: Upload installer + if: runner.os == 'Windows' + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.build.outputs.installer_name }} + path: ${{ steps.build.outputs.installer_path }} diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 7513908cb4..f7908b059c 100644 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -26,7 +26,6 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Compiler flags ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Unicode true SetOverwrite on # Overwrite files SetCompress auto # Compress if saves space SetCompressor /solid lzma # Compress whole installer as one block diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 30b0d23a93..eec8e84a2d 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -28,7 +28,6 @@ $/LicenseInfo$ """ import errno import glob -import itertools import json import os import os.path @@ -36,12 +35,9 @@ import plistlib import random import re import shutil -import stat import subprocess import sys -import tarfile import time -import zipfile viewer_dir = os.path.dirname(__file__) # Add indra/lib/python to our path so we don't have to muck with PYTHONPATH. @@ -789,27 +785,15 @@ class WindowsManifest(ViewerManifest): # Check two paths, one for Program Files, and one for Program Files (x86). # Yay 64bit windows. - for ProgramFiles in 'ProgramFiles', 'ProgramFiles(x86)': - NSIS_path = os.path.expandvars(r'${%s}\NSIS\makensis.exe' % ProgramFiles) - if os.path.exists(NSIS_path): - break - installer_created=False - nsis_attempts=3 - nsis_retry_wait=15 - for attempt in range(nsis_attempts): - try: - self.run_command([NSIS_path, '/V2', self.dst_path_of(tempfile)]) - except ManifestError as err: - if attempt+1 < nsis_attempts: - print("nsis failed, waiting %d seconds before retrying" % nsis_retry_wait, file=sys.stderr) - time.sleep(nsis_retry_wait) - nsis_retry_wait*=2 - else: - # NSIS worked! Done! - break - else: - print("Maximum nsis attempts exceeded; giving up", file=sys.stderr) - raise + nsis_path = "makensis.exe" + for program_files in '${programfiles}', '${programfiles(x86)}': + for nesis_path in 'NSIS', 'NSIS\\Unicode': + possible_path = os.path.expandvars(f"{program_files}\\{nesis_path}\\makensis.exe") + if os.path.exists(possible_path): + nsis_path = possible_path + break + + self.run_command([possible_path, '/V2', self.dst_path_of(tempfile)]) self.sign(installer_file) self.created_path(self.dst_path_of(installer_file)) -- cgit v1.2.3 From efb987f595d6749d42e3148bf0e071f5bafce450 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 12:59:12 -0700 Subject: Run on windows-2022-large --- .github/workflows/build.yaml | 8 ++++---- indra/cmake/00-Common.cmake | 9 --------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d6916a4808..e90448425b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,14 +10,14 @@ jobs: build: strategy: matrix: - runner: [windows_2022_public] + runner: [windows-2022-large] configuration: [ReleaseOS] addrsize: [64] include: - - runner: windows_2022_public + - runner: windows-2022-large configuration: ReleaseOS addrsize: 32 - runs-on: ${{ matrix.runner }} + runs-on: [${{ matrix.runner }}] env: AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} @@ -43,7 +43,7 @@ jobs: id: cache-installables with: path: .autobuild-installables - key: ${{ matrix.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + key: ${{ matrix.runner }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - name: Install windows dependencies if: runner.os == 'Windows' diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index c848d00710..bf5a107c73 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -55,15 +55,6 @@ if (WINDOWS) # http://www.cmake.org/pipermail/cmake/2009-September/032143.html string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - # Without PreferredToolArchitecture=x64, as of 2020-06-26 the 32-bit - # compiler on our TeamCity build hosts has started running out of virtual - # memory for the precompiled header file. - # CP changed to only append the flag for 32bit builds - on 64bit builds, - # locally at least, the build output is spammed with 1000s of 'D9002' - # warnings about this switch being ignored. - if( ADDRESS_SIZE EQUAL 32 ) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /p:PreferredToolArchitecture=x64") - endif() # zlib has assembly-language object files incompatible with SAFESEH add_link_options(/LARGEADDRESSAWARE /SAFESEH:NO -- cgit v1.2.3 From 97f84f7051a318e8beb8abf02505a2b423ba9c72 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 13:15:18 -0700 Subject: Fix YAML syntax --- .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 e90448425b..1dc58a404a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,7 +17,7 @@ jobs: - runner: windows-2022-large configuration: ReleaseOS addrsize: 32 - runs-on: [${{ matrix.runner }}] + runs-on: ${{ matrix.runner }} env: AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} -- cgit v1.2.3 From f85120e0bfc2ea8f94eb2b99e7ce262e9f29fd9e Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 14:00:59 -0700 Subject: Consistently use msbuild not devenv in autobuild.xml --- autobuild.xml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 954299d1f3..288def254b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3218,11 +3218,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors SecondLife.sln command - devenv + msbuild.exe options - /build - RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + /p:Configuration=RelWithDebInfo + /p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + /t:Build + /p:useenv=true + /verbosity:minimal + /p:VCBuildAdditionalOptions= /incremental + /m:${AUTOBUILD_CPU_COUNT} configure @@ -3262,6 +3267,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental + /m:${AUTOBUILD_CPU_COUNT} configure @@ -3293,11 +3299,16 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors SecondLife.sln command - devenv + msbuild.exe options - /build - Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + /p:Configuration=Release + /p:Platform=${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + /t:Build + /p:useenv=true + /verbosity:minimal + /p:VCBuildAdditionalOptions= /incremental + /m:${AUTOBUILD_CPU_COUNT} configure @@ -3335,6 +3346,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental + /m:${AUTOBUILD_CPU_COUNT} configure -- cgit v1.2.3 From aa85ed00f8536b7bbe66545576d2e1d96bee9d4e Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 14:55:42 -0700 Subject: Run build with default runner --- .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 1dc58a404a..893bdfe3ca 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,11 +10,11 @@ jobs: build: strategy: matrix: - runner: [windows-2022-large] + runner: [windows-2022] configuration: [ReleaseOS] addrsize: [64] include: - - runner: windows-2022-large + - runner: windows-2022 configuration: ReleaseOS addrsize: 32 runs-on: ${{ matrix.runner }} -- cgit v1.2.3 From 937495863cd90f3f031a9c6d1d03fe02e70332e1 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 15:02:02 -0700 Subject: Build on 16-core machine --- .github/workflows/build.yaml | 2 +- autobuild.xml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 893bdfe3ca..6fa57b6d7c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,7 +10,7 @@ jobs: build: strategy: matrix: - runner: [windows-2022] + runner: [windows-2022-public-002] configuration: [ReleaseOS] addrsize: [64] include: diff --git a/autobuild.xml b/autobuild.xml index 288def254b..962d82a3f8 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3099,6 +3099,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration RelWithDebInfo + -parallelizeTargets + -jobs + ${AUTOBUILD_CPU_COUNT} -project SecondLife.xcodeproj @@ -3130,6 +3133,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration RelWithDebInfo + -parallelizeTargets + -jobs + ${AUTOBUILD_CPU_COUNT} -project SecondLife.xcodeproj @@ -3155,6 +3161,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration Release + -parallelizeTargets + -jobs + ${AUTOBUILD_CPU_COUNT} -project SecondLife.xcodeproj @@ -3184,6 +3193,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -configuration Release + -parallelizeTargets + -jobs + ${AUTOBUILD_CPU_COUNT} -project SecondLife.xcodeproj -- cgit v1.2.3 From 75499351dc0480bd62bf9fab5366fa3c668443da Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 15:05:11 -0700 Subject: Build on 8-core machine --- .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 6fa57b6d7c..cef0d32519 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,11 +10,11 @@ jobs: build: strategy: matrix: - runner: [windows-2022-public-002] + runner: [windows-2022-public-003] configuration: [ReleaseOS] addrsize: [64] include: - - runner: windows-2022 + - runner: windows-2022-public-003 configuration: ReleaseOS addrsize: 32 runs-on: ${{ matrix.runner }} -- cgit v1.2.3 From 7c4a1668462a4c655f5c3875fcff863b96565c49 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 15:08:00 -0700 Subject: Add macOS build back --- .github/workflows/build.yaml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cef0d32519..57018823aa 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,11 +10,11 @@ jobs: build: strategy: matrix: - runner: [windows-2022-public-003] + runner: [windows-2022, macos-11] configuration: [ReleaseOS] addrsize: [64] include: - - runner: windows-2022-public-003 + - runner: windows-2022 configuration: ReleaseOS addrsize: 32 runs-on: ${{ matrix.runner }} @@ -52,15 +52,19 @@ jobs: - name: Build id: build shell: bash + env: + RUNNER_OS: ${{ runner.os }} run: | pip install llsd # Required by viewer tests autobuild configure autobuild build --no-configure - installer_path=$(find ./build-*/newview/ | grep '_Setup\.exe') - installer_name="$(basename $installer_path)" - echo "::set-output name=installer_path::$installer_path" - echo "::set-output name=installer_name::$installer_name" + if [[ "$RUNNER_OS" == "Windows" ]]; then + installer_path=$(find ./build-*/newview/ | grep '_Setup\.exe') + installer_name="$(basename $installer_path)" + echo "::set-output name=installer_path::$installer_path" + echo "::set-output name=installer_name::$installer_name" + fi - name: Upload installer if: runner.os == 'Windows' -- cgit v1.2.3 From d842eb988302bd4ea25433d6ce305360a0402b75 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 15:35:28 -0700 Subject: Build on 64-core machine --- .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 57018823aa..e6771e422b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,11 +10,11 @@ jobs: build: strategy: matrix: - runner: [windows-2022, macos-11] + runner: [windows-2022-public-005] configuration: [ReleaseOS] addrsize: [64] include: - - runner: windows-2022 + - runner: windows-2022-public-005 configuration: ReleaseOS addrsize: 32 runs-on: ${{ matrix.runner }} -- cgit v1.2.3 From 3afde25ba81734b48cc557a257d91c7b9cc830f2 Mon Sep 17 00:00:00 2001 From: Signal Linden Date: Wed, 12 Oct 2022 16:04:04 -0700 Subject: Upload macos installer --- .github/workflows/build.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e6771e422b..adaa7bbff7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,11 +10,11 @@ jobs: build: strategy: matrix: - runner: [windows-2022-public-005] + runner: [windows-2022, macos-11] configuration: [ReleaseOS] addrsize: [64] include: - - runner: windows-2022-public-005 + - runner: windows-2022 configuration: ReleaseOS addrsize: 32 runs-on: ${{ matrix.runner }} @@ -43,7 +43,7 @@ jobs: id: cache-installables with: path: .autobuild-installables - key: ${{ matrix.runner }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + key: ${{ runner.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} - name: Install windows dependencies if: runner.os == 'Windows' @@ -62,12 +62,14 @@ jobs: if [[ "$RUNNER_OS" == "Windows" ]]; then installer_path=$(find ./build-*/newview/ | grep '_Setup\.exe') installer_name="$(basename $installer_path)" - echo "::set-output name=installer_path::$installer_path" - echo "::set-output name=installer_name::$installer_name" + elif [[ "$RUNNER_OS" == "macOS" ]]; then + installer_path=$(find ./build-*/newview/ | grep '\.dmg') + installer_name="$(basename $installer_path)" fi + echo "::set-output name=installer_path::$installer_path" + echo "::set-output name=installer_name::$installer_name" - name: Upload installer - if: runner.os == 'Windows' uses: actions/upload-artifact@v3 with: name: ${{ steps.build.outputs.installer_name }} -- cgit v1.2.3 From 8871e8d732f6210c3c1b8ba0ca63d5ad816be4bf Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 24 Mar 2023 12:02:57 -0400 Subject: SL-18837: Try building Release viewer config on GH. --- .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 adaa7bbff7..b18e4bd9ca 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -11,11 +11,11 @@ jobs: strategy: matrix: runner: [windows-2022, macos-11] - configuration: [ReleaseOS] + configuration: [Release] addrsize: [64] include: - runner: windows-2022 - configuration: ReleaseOS + configuration: Release addrsize: 32 runs-on: ${{ matrix.runner }} env: -- cgit v1.2.3 From 1eb55b3d8e3d64f8f02bc18685e46ff42ca77cec Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 15 May 2023 09:19:19 -0400 Subject: SL-18837: Update apr_suite to release v1.7.2.91ae6ee. --- autobuild.xml | 210 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 107 insertions(+), 103 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 962d82a3f8..1674f5abf5 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1,6 +1,5 @@ - - + installables SDL @@ -52,9 +51,11 @@ archive hash - b6357ef3a0ec37877a5831820f25094e + 7af1ce4afdc42a5e2811015ad8588c93fe9774c0 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/80557/759704/apr_suite-1.4.5.558565-darwin64-558565.tar.bz2 + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.91ae6ee/apr_suite-1.7.2.91ae6ee-darwin64-91ae6ee.tar.zst name darwin64 @@ -76,9 +77,11 @@ archive hash - cb48ac069440f6dcd564cfa9fd02a4c2 + 670cc1b5f5e1864afa5ac34493ac2df4b8e84645 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/80556/759710/apr_suite-1.4.5.558565-windows-558565.tar.bz2 + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.91ae6ee/apr_suite-1.7.2.91ae6ee-windows-91ae6ee.tar.zst name windows @@ -88,16 +91,18 @@ archive hash - 646dc3828d9c39fb1e77c4eec44ed739 + 05b9134a602fc6d9262c767cca6165ce45ba7773 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/80555/759709/apr_suite-1.4.5.558565-windows64-558565.tar.bz2 + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.91ae6ee/apr_suite-1.7.2.91ae6ee-windows64-91ae6ee.tar.zst name windows64 version - 1.4.5.558565 + 1.7.2.91ae6ee boost @@ -307,31 +312,29 @@ name darwin64 - windows + linux64 archive hash - b5ea7097ae10037024b0c2b3df9812b5 + ac54672e0b38f52726f5c99047c913e4 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89307/815434/cubemaptoequirectangular-1.1.0-windows-564841.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2 - name - windows - windows64 + windows archive hash - ac54672e0b38f52726f5c99047c913e4 + b5ea7097ae10037024b0c2b3df9812b5 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89307/815434/cubemaptoequirectangular-1.1.0-windows-564841.tar.bz2 name - windows64 + windows - linux64 + windows64 archive @@ -340,6 +343,8 @@ url https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2 + name + windows64 version @@ -1063,31 +1068,29 @@ name darwin64 - windows + linux64 archive hash - 0a376676dbb43fdd0c81ffdfbc5e6f81 + e70898903475d8ac2e81ff33278fc987 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89308/815432/jpegencoderbasic-1.0-windows-564842.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2 - name - windows - windows64 + windows archive hash - e70898903475d8ac2e81ff33278fc987 + 0a376676dbb43fdd0c81ffdfbc5e6f81 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89308/815432/jpegencoderbasic-1.0-windows-564842.tar.bz2 name - windows64 + windows - linux64 + windows64 archive @@ -1096,6 +1099,8 @@ url https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2 + name + windows64 version @@ -2484,31 +2489,29 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name darwin64 - windows + linux64 archive hash - e1303fb9f2242a79aee5fd9f97726ace + 46edf0f55417f8ef0d33a5c007bc3644 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89311/815452/threejs-0.132.2-windows-564843.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2 - name - windows - windows64 + windows archive hash - 46edf0f55417f8ef0d33a5c007bc3644 + e1303fb9f2242a79aee5fd9f97726ace url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2 + https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89311/815452/threejs-0.132.2-windows-564843.tar.bz2 name - windows64 + windows - linux64 + windows64 archive @@ -2517,6 +2520,8 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors url https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2 + name + windows64 version @@ -3021,68 +3026,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name common - linux64 - - build_directory - build-linux-x86_64 - configurations - - Release - - build - - command - ninja - - configure - - arguments - - ../indra - - options - - -G - Ninja - -DLL_TESTS=Off - - - default - True - name - Release - - ReleaseOS - - build - - command - ninja - - configure - - options - - -G - Ninja - -DLL_TESTS=Off - - - name - ReleaseOS - - default - - build - - - name - default - - - name - linux64 - darwin64 build_directory @@ -3215,6 +3158,68 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name darwin64 + linux64 + + build_directory + build-linux-x86_64 + configurations + + Release + + build + + command + ninja + + configure + + arguments + + ../indra + + options + + -G + Ninja + -DLL_TESTS=Off + + + default + True + name + Release + + ReleaseOS + + build + + command + ninja + + configure + + options + + -G + Ninja + -DLL_TESTS=Off + + + name + ReleaseOS + + default + + build + + + name + default + + + name + linux64 + windows build_directory @@ -3394,5 +3399,4 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors autobuild version 1.3 - - + -- cgit v1.2.3 From 1bdea0b46f5ef02535ac7fbaeb18c626df8a58ff Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 15 May 2023 11:36:08 -0400 Subject: SL-18837: AUTOBUILD_GITHUB_TOKEN to authenticate private packages. --- .github/workflows/build.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b18e4bd9ca..b64f9b709f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -21,6 +21,8 @@ jobs: env: AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} + # authorizes fetching private constituent packages + AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" -- cgit v1.2.3 From 72d303e765304c840220c7682b4cb7def30f087b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 15 May 2023 16:00:28 -0400 Subject: SL-18837: Update havok-source to release v2012.1-2-b101b57. --- autobuild.xml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 1674f5abf5..c8a64a41e5 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -996,10 +996,14 @@ archive + creds + github hash - ba229348c1d9d58519cd854ff9d8ef3d + a32d7a0bae6d0f07f6e45d98cc2d3cf9837603c9 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55213/512968/havok_source-2012.1-2-darwin64-539117.tar.bz2 + https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108288925 name darwin64 @@ -1020,10 +1024,14 @@ archive + creds + github hash - 4ff2af85106907acb171bb1e38a3757e + 05bb597393ec0a47b0654a46ddaeca367c606b0e + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55214/512993/havok_source-2012.1-2-windows-539117.tar.bz2 + https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108288933 name windows @@ -1032,10 +1040,14 @@ archive + creds + github hash - bcaf4631ea10f7d09eecb73e8f5bef6c + a1acc90afbd497b7eac549b906b2a711399a312f + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55212/512962/havok_source-2012.1-2-windows64-539117.tar.bz2 + https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108288929 name windows64 -- cgit v1.2.3 From 95fa0ae50640aedfc7ece7494c00da17b8fed4c8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 15 May 2023 16:26:28 -0400 Subject: SL-18837: Update fmodstudio, kdu, slvoice Update fmodstudio to release v2.02.06.c0dea14. Update kdu to release v7.10.4.2dc3b89. Update slvoice to release v4.10.0000.32327.5fc3fe7c.db0dc68. --- autobuild.xml | 66 +++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 22 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index c8a64a41e5..5e8070a3f9 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -617,9 +617,11 @@ archive hash - 2c619c1bef969dc42b4f44a4651b314e + e85e29bb4924ca7333e387acc29bf5445aa33f4e + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/98369/869141/fmodstudio-2.02.06.570913-darwin64-570913.tar.bz2 + https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-darwin64-c0dea14.tar.zst name darwin64 @@ -629,9 +631,11 @@ archive hash - 24b86630ccdfb5b3221f90ca7a9704f6 + 4c165679be285584dae7613706a725c613cac343 + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/89682/818423/fmodstudio-2.02.03.565082-linux-565082.tar.bz2 + https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-linux64-c0dea14.tar.zst name linux64 @@ -641,9 +645,11 @@ archive hash - 875ccd8c1feec8ff03438d453371044b + d51f1b31c5dfa45cfbc6cfb57d5dd11147cd36a6 + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/98371/869153/fmodstudio-2.02.06.570913-windows-570913.tar.bz2 + https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-windows-c0dea14.tar.zst name windows @@ -653,9 +659,11 @@ archive hash - 5e402f4828741bce942e2ced318cd02a + 1627152b815b7c2048e7781ab9c99c4bc49c524b + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/98372/869154/fmodstudio-2.02.06.570913-windows64-570913.tar.bz2 + https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-windows64-c0dea14.tar.zst name windows64 @@ -1269,9 +1277,11 @@ archive hash - ccfd8eacd1ebe92715944094064ba2e4 + e5b1a93e09a0ce5ba4082953e8f08245224c807c + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55187/512570/kdu-7.10.4.539108-darwin64-539108.tar.bz2 + https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-darwin64-2dc3b89.tar.zst name darwin64 @@ -1281,9 +1291,11 @@ archive hash - a705a665810a71e7b0114a97ae9a2224 + 72c9ffff1d08d3e4aa6b367e6c9fcbbc9709b145 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/15256/98457/kdu-7.10.4.513518-linux64-513518.tar.bz2 + https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-linux64-2dc3b89.tar.zst name linux64 @@ -1293,9 +1305,11 @@ archive hash - 38574fbcb6c94c42745ef48748002e58 + 9e0a42db2ee1abe11485ee42232f8bde362c98f6 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55189/512583/kdu-7.10.4.539108-windows-539108.tar.bz2 + https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-windows-2dc3b89.tar.zst name windows @@ -1305,9 +1319,11 @@ archive hash - 3dfeb869c781a766874f0aedc7d4fcef + 45e7b349a655e47c7bffb667a163b2038dadd4d0 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55188/512576/kdu-7.10.4.539108-windows64-539108.tar.bz2 + https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-windows64-2dc3b89.tar.zst name windows64 @@ -2430,9 +2446,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b583668b28fde0490e6953f10e93e4ab + 983e4c92f07b87a2d1f5d9b003992dac0652ce87 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98681/871545/slvoice-4.10.0000.32327.5fc3fe7c.571099-darwin64-571099.tar.bz2 + https://github.com/secondlife/3p-slvoice/releases/download/v4.10.0000.32327.5fc3fe7c.db0dc68/slvoice-4.10.0000.32327.5fc3fe7c.db0dc68-darwin64-db0dc68.tar.zst name darwin64 @@ -2454,9 +2472,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 6e0ed41653955afe8eeb8945776cf07b + 13107396b48c20663175c131b86164f3868bfa17 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98683/871560/slvoice-4.10.0000.32327.5fc3fe7c.571099-windows-571099.tar.bz2 + https://github.com/secondlife/3p-slvoice/releases/download/v4.10.0000.32327.5fc3fe7c.db0dc68/slvoice-4.10.0000.32327.5fc3fe7c.db0dc68-windows-db0dc68.tar.zst name windows @@ -2466,9 +2486,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - c39735851fd05c194d0be09b8f9e8cb7 + 6a3745e02a8c83352bec77e0e34e5e990138bc41 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98682/871552/slvoice-4.10.0000.32327.5fc3fe7c.571099-windows64-571099.tar.bz2 + https://github.com/secondlife/3p-slvoice/releases/download/v4.10.0000.32327.5fc3fe7c.db0dc68/slvoice-4.10.0000.32327.5fc3fe7c.db0dc68-windows64-db0dc68.tar.zst name windows64 -- cgit v1.2.3 From 8ccfd45d33a99f0249203246d08277aebfebad57 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 15 May 2023 17:39:32 -0400 Subject: SL-18837: Update llphysicsextensions_source, fmodstudio, kdu, slvoice Update llphysicsextensions_source to release v1.0.d3192c1. Update fmodstudio to release v2.02.06.8f8fce1. Update kdu to release v7.10.4.9e770ae. Update slvoice to release v4.10.0000.32327.5fc3fe7c.399bd0e. --- autobuild.xml | 106 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 78 insertions(+), 28 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 5e8070a3f9..1a96c01163 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -616,12 +616,14 @@ archive + creds + github hash - e85e29bb4924ca7333e387acc29bf5445aa33f4e + 0a637eed8c841e29fc12459d8e122d188f27177f hash_algorithm sha1 url - https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-darwin64-c0dea14.tar.zst + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108297245 name darwin64 @@ -630,12 +632,14 @@ archive + creds + github hash - 4c165679be285584dae7613706a725c613cac343 + 68fb759ee1f99e4d4df97354b228a82b7bbfc5b4 hash_algorithm sha1 url - https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-linux64-c0dea14.tar.zst + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108297247 name linux64 @@ -644,12 +648,14 @@ archive + creds + github hash - d51f1b31c5dfa45cfbc6cfb57d5dd11147cd36a6 + fb13595a59f31aa2730723499cabd0397e5f1b18 hash_algorithm sha1 url - https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-windows-c0dea14.tar.zst + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108297259 name windows @@ -658,12 +664,14 @@ archive + creds + github hash - 1627152b815b7c2048e7781ab9c99c4bc49c524b + 02790e0e9bd904eaa8b15bf9bedb4fabfa80ad64 hash_algorithm sha1 url - https://github.com/secondlife/3p-fmodstudio/releases/download/v2.02.06.c0dea14/fmodstudio-2.02.06.c0dea14-windows64-c0dea14.tar.zst + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108297256 name windows64 @@ -1276,12 +1284,14 @@ archive + creds + github hash - e5b1a93e09a0ce5ba4082953e8f08245224c807c + bcc7e2c34896fc9cbc41828dee8a4ddf54f10453 hash_algorithm sha1 url - https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-darwin64-2dc3b89.tar.zst + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298968 name darwin64 @@ -1290,12 +1300,14 @@ archive + creds + github hash - 72c9ffff1d08d3e4aa6b367e6c9fcbbc9709b145 + 9de772df2ed12e9c742df6c90670c7cbbb9c93a6 hash_algorithm sha1 url - https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-linux64-2dc3b89.tar.zst + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298969 name linux64 @@ -1304,12 +1316,14 @@ archive + creds + github hash - 9e0a42db2ee1abe11485ee42232f8bde362c98f6 + 3513764294c0c3e4fa669f57bb26454c91e79692 hash_algorithm sha1 url - https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-windows-2dc3b89.tar.zst + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298972 name windows @@ -1318,12 +1332,14 @@ archive + creds + github hash - 45e7b349a655e47c7bffb667a163b2038dadd4d0 + 92533ff0f8c1881ad85e75800f9072c413ccf7b7 hash_algorithm sha1 url - https://github.com/secondlife/3p-kdu/releases/download/v7.10.4.2dc3b89/kdu-7.10.4.2dc3b89-windows64-2dc3b89.tar.zst + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298970 name windows64 @@ -1691,10 +1707,14 @@ archive + creds + github hash - e51c6f5dfd76eb148348a44ff57e66c2 + 2cd9ebe73cefb04cc4b3a13109a0cd8750d35dcd + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/104810/918016/llphysicsextensions_source-1.0.575107-darwin64-575107.tar.bz2 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108297119 name darwin64 @@ -1703,10 +1723,14 @@ archive + creds + github hash - c1b43e99c5ddccc18b0e9cb288bf75e1 + 0f1b99fc7f79830f32268a3a7f6035e1934fdd5e + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/4721/14828/llphysicsextensions_source-1.0.504710-linux64-504710.tar.bz2 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108297120 name linux64 @@ -1715,14 +1739,34 @@ archive + creds + github hash - dbbe4cc568ac149d862e421cdda4dd48 + 306fcd760120cad597f2580265ec550655b4232a + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/104809/918011/llphysicsextensions_source-1.0.575107-windows-575107.tar.bz2 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108297126 name windows + windows64 + + archive + + creds + github + hash + 0d10dddd2d125496405e9843a64ba87c89c27559 + hash_algorithm + sha1 + url + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108297122 + + name + windows64 + version 1.0.565768 @@ -2445,12 +2489,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive + creds + github hash - 983e4c92f07b87a2d1f5d9b003992dac0652ce87 + cc7c5bf53f83cff81d874ad66394df0991bd432c hash_algorithm sha1 url - https://github.com/secondlife/3p-slvoice/releases/download/v4.10.0000.32327.5fc3fe7c.db0dc68/slvoice-4.10.0000.32327.5fc3fe7c.db0dc68-darwin64-db0dc68.tar.zst + https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299352 name darwin64 @@ -2471,12 +2517,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive + creds + github hash - 13107396b48c20663175c131b86164f3868bfa17 + 3a3dedc5ac1c19c6af40673908a3cc0c1f75c52c hash_algorithm sha1 url - https://github.com/secondlife/3p-slvoice/releases/download/v4.10.0000.32327.5fc3fe7c.db0dc68/slvoice-4.10.0000.32327.5fc3fe7c.db0dc68-windows-db0dc68.tar.zst + https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299354 name windows @@ -2485,12 +2533,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive + creds + github hash - 6a3745e02a8c83352bec77e0e34e5e990138bc41 + 0c205371bb1731a9812b00556037729fdc057cbc hash_algorithm sha1 url - https://github.com/secondlife/3p-slvoice/releases/download/v4.10.0000.32327.5fc3fe7c.db0dc68/slvoice-4.10.0000.32327.5fc3fe7c.db0dc68-windows64-db0dc68.tar.zst + https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299356 name windows64 -- cgit v1.2.3 From ffca94c0b89d9734fa16fde7751bd0e5785e5ea2 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 19 May 2023 08:24:59 -0400 Subject: SL-18837: Update most packages with GitHub Actions builds. Not colladadom: a GHA build of something upstream of it produced Mac link errors seemingly related to zst. Not xxhash: 3p-xxhash is a private repo, needing the 'public: false' switch in its build.yaml. --- autobuild.xml | 772 +++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 527 insertions(+), 245 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 1a96c01163..97a8e051a5 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -51,11 +51,11 @@ archive hash - 7af1ce4afdc42a5e2811015ad8588c93fe9774c0 + adf2a55a8596a5d2b8357c8816e32f17307bfff8 hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.91ae6ee/apr_suite-1.7.2.91ae6ee-darwin64-91ae6ee.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-darwin64-6312917.tar.zst name darwin64 @@ -77,11 +77,11 @@ archive hash - 670cc1b5f5e1864afa5ac34493ac2df4b8e84645 + b55acee452f79cc13f241e57be5fabef19ec8bb0 hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.91ae6ee/apr_suite-1.7.2.91ae6ee-windows-91ae6ee.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-windows-6312917.tar.zst name windows @@ -91,18 +91,18 @@ archive hash - 05b9134a602fc6d9262c767cca6165ce45ba7773 + 3460bacbf5c806bbf7d1fef3c510ed2a7ba4ad6e hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.91ae6ee/apr_suite-1.7.2.91ae6ee-windows64-91ae6ee.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-windows64-6312917.tar.zst name windows64 version - 1.7.2.91ae6ee + 1.7.2.6312917 boost @@ -123,9 +123,11 @@ archive hash - fedc8d63856f534b6098102e059dc548 + d40ade5b3d1c08dff90c9a88bd6cf4c2fe399866 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87776/805857/boost-1.72-darwin64-563847.tar.bz2 + https://github.com/secondlife/3p-boost/releases/download/v1.72.0-dev22.gc16e420ec4-c16e420/boost-darwin64-None.tar.zst name darwin64 @@ -147,9 +149,11 @@ archive hash - 6cc9fb4ca21365c4470a3e516544ba71 + a44377f5aab03918cc2c39219e9edaa81fa4a671 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87784/805850/boost-1.72-windows-563847.tar.bz2 + https://github.com/secondlife/3p-boost/releases/download/v1.72.0-dev22.gc16e420ec4-c16e420/boost-windows-None.tar.zst name windows @@ -159,16 +163,18 @@ archive hash - 0c526efc3f8825cd25cdf635e238fab3 + c99a3f7786ed27eb566e9be2ebd538c248d135cf + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87783/805851/boost-1.72-windows64-563847.tar.bz2 + https://github.com/secondlife/3p-boost/releases/download/v1.72.0-dev22.gc16e420ec4-c16e420/boost-windows64-None.tar.zst name windows64 version - 1.72 + None bugsplat @@ -189,9 +195,11 @@ archive hash - ae90d19cdcddf539f6d0b41cab12f918 + 933433cb71206a04b13849d1ac63611099cbb0c1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/72773/702861/bugsplat-1.0.7.552580-darwin64-552580.tar.bz2 + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.0f3de04/bugsplat-1.0.7.0f3de04-darwin64-0f3de04.tar.zst name darwin64 @@ -201,9 +209,11 @@ archive hash - f5936eceb6a33ff0f1cc31996a40f29c + 9032f04797c96ee8f0d2dfe69194fa1f18d9ec26 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/72774/702905/bugsplat-3.6.0.8.552580-windows-552580.tar.bz2 + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.0f3de04/bugsplat-3.6.0.8.0f3de04-windows-0f3de04.tar.zst name windows @@ -213,16 +223,18 @@ archive hash - 9cd940754e53e0670030b3da5ba8f373 + 9893c24bf7f0702890fc089c2b9295f0825f89ef + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/72775/702906/bugsplat-3.6.0.8.552580-windows64-552580.tar.bz2 + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.0f3de04/bugsplat-3.6.0.8.0f3de04-windows64-0f3de04.tar.zst name windows64 version - 3.6.0.8.552580 + 3.6.0.8.0f3de04 colladadom @@ -305,9 +317,11 @@ archive hash - 7e4622b497bc465b01ff6d3e7e0b4214 + d5fb3832a338bbe4891b823c64fdb4806706568e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89303/815402/cubemaptoequirectangular-1.1.0-darwin64-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-darwin64-d7afe27.tar.zst name darwin64 @@ -317,9 +331,11 @@ archive hash - ac54672e0b38f52726f5c99047c913e4 + 77c53daf558f51aec6e9f4bd9e930a103630ee7d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-linux64-d7afe27.tar.zst windows @@ -327,9 +343,11 @@ archive hash - b5ea7097ae10037024b0c2b3df9812b5 + e53a8268474e0272f0252097873d52de7205351e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89307/815434/cubemaptoequirectangular-1.1.0-windows-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-windows-d7afe27.tar.zst name windows @@ -339,9 +357,11 @@ archive hash - ac54672e0b38f52726f5c99047c913e4 + 6c51855bcf3a8628289881fdaea08c25cf7b1b90 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-windows64-d7afe27.tar.zst name windows64 @@ -369,9 +389,11 @@ archive hash - 44d801e05811269d1bed7dbc75d85843 + d4d5f27008de1ff7e86ae852841c68849b02eaea + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87786/805905/curl-7.54.1.563852-darwin64-563852.tar.bz2 + https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-darwin64-5a4a82d.tar.zst name darwin64 @@ -393,11 +415,11 @@ archive hash - 676f624d4ebdc2189caa43ef6dd8266d + a1ff1cea3b6171e4ed9f29249e72111866334615 hash_algorithm - md5 + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87790/805917/curl-7.54.1.563852-windows-563852.tar.bz2 + https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-windows-5a4a82d.tar.zst name windows @@ -407,16 +429,18 @@ archive hash - b3db5a2cdf275c1af7758fbe2d14544a + 07423f41d1320ea405f493869f6460cf8c45def5 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87789/805918/curl-7.54.1.563852-windows64-563852.tar.bz2 + https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-windows64-5a4a82d.tar.zst name windows64 version - 7.54.1.563852 + 7.54.1-5a4a82d dbus_glib @@ -467,16 +491,18 @@ archive hash - d778c6a3475bc35ee8b9615dfc38b4a9 + f6835c4d7745cd1cadfbce47b40331d08affb532 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55025/511964/dictionaries-1.538984-common-538984.tar.bz2 + https://github.com/secondlife/3p-dictionaries/releases/download/v1.0.1-dev2.gf887629-f887629/dictionaries-common-None.tar.zst name common version - 1.538984 + None dullahan @@ -497,9 +523,11 @@ archive hash - 439d92ec73f0500ba1671faad2bd8090 + 26302518fa132a8a9da7eddee53ee583ab7581b3 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104637/916643/dullahan-1.12.4.202209142017_91.1.21_g9dd45fe_chromium-91.0.4472.114-darwin64-575005.tar.bz2 + https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180020_113.1.5_ge452d82_chromium-113.0.5672.93-darwin64-1758b1b.tar.zst name darwin64 @@ -509,9 +537,11 @@ archive hash - 2a7c01da15de77bc1fd1863327174d5e + f682df99c1acc5279a9161f2f13f446001e7871d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104638/916654/dullahan-1.12.4.202209142021_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows-575005.tar.bz2 + https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93-windows-1758b1b.tar.zst name windows @@ -521,16 +551,18 @@ archive hash - d06bee9b2517fbb09ba1a65e6d675361 + f29e543a6f85aa5b5093d2f4db0b192e28da601a + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104639/916659/dullahan-1.12.4.202209142021_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows64-575005.tar.bz2 + https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93-windows64-1758b1b.tar.zst name windows64 version - 1.12.4.202209142021_91.1.21_g9dd45fe_chromium-91.0.4472.114 + 1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93 expat @@ -551,9 +583,11 @@ archive hash - f4e80e0dfcab713a3da90cd8f7f23e7b + b85526ca80b6a7e73c7870285cf68d568f742095 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76341/727265/expat-2.1.1.555519-darwin64-555519.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-darwin64-1f36d02.tar.zst name darwin64 @@ -563,9 +597,11 @@ archive hash - 5e1f025d1cebd12db542080aa755257f + 4cd82e2dec06ddff19e9b3dc0254f2593ec80452 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/380/943/expat-2.1.1.500375-linux64-500375.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-linux64-1f36d02.tar.zst name linux64 @@ -575,9 +611,11 @@ archive hash - cd4fe03473076c324d80ae3bd91a85bb + f663242ab6c7aa1601a96907202cfd04fee03720 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76343/727273/expat-2.1.1.555519-windows-555519.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-windows-1f36d02.tar.zst name windows @@ -587,16 +625,18 @@ archive hash - d2d74d73b914150982b1883a3b96e60b + 47c01a89bc32c5740efe51be43e459ffd9b7cd34 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76344/727279/expat-2.1.1.555519-windows64-555519.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-windows64-1f36d02.tar.zst name windows64 version - 2.1.1.555519 + 2.1.1.1f36d02 fmodstudio @@ -729,9 +769,11 @@ archive hash - 8865739d8e530199dacb3c3042c1bc01 + 912d122aae996483ba814fe8e569394ddca0d42e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87777/805782/freetype-2.4.4.563848-darwin64-563848.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-darwin64-4f739fa.tar.zst name darwin64 @@ -741,9 +783,11 @@ archive hash - 94cf61dfdbc86aae5bbaf0b5cb8a366c + 14f57822f0cedef957a50a03a7b5372075cf8e1c + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/874/1914/freetype-2.4.4.500865-linux64-500865.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-linux64-4f739fa.tar.zst name linux64 @@ -753,9 +797,11 @@ archive hash - c0b3601e997553931cadc7d7ee94168b + bb3c4f11b1c9f14e271c5ab16ca1ae743f1e3493 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87779/805814/freetype-2.4.4.563848-windows-563848.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-windows-4f739fa.tar.zst name windows @@ -765,16 +811,18 @@ archive hash - e98e1e088cdcd20442e05e9abecdadf9 + d175b39257b691a957724e655c6cffe0b5a7b104 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87778/805815/freetype-2.4.4.563848-windows64-563848.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-windows64-4f739fa.tar.zst name windows64 version - 2.4.4.563848 + 2.4.4.4f739fa glext @@ -790,6 +838,20 @@ glext platforms + common + + archive + + hash + 34af0a90a3015b7e7ec2486090bc4ce6ee5be758 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-glext/releases/download/v68-af397ee/glext-68-common-af397ee.tar.zst + + name + common + darwin64 archive @@ -861,16 +923,18 @@ archive hash - dce3f3c01fddb400cb143c3283fe9259 + 6604c1cca515d287e697997a8d5593d1cae172a9 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/82754/775367/glh_linear-0.0.0-common-560278.tar.bz2 + https://github.com/secondlife/3p-glh_linear/releases/download/v1.0.1-dev2.g3253ed7-3253ed7/glh_linear-common-None.tar.zst name common version - 0.0.0 + None googlemock @@ -891,9 +955,11 @@ archive hash - 11d0794582e91a57f6524ad345f2399d + b7390b1b0ea846550017bdba79a9c4955a00be7d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87791/805924/googlemock-1.7.0.563853-darwin64-563853.tar.bz2 + https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.9339dda/googlemock-1.7.0.9339dda-darwin64-9339dda.tar.zst name darwin64 @@ -915,9 +981,11 @@ archive hash - 7d267050970ec6e28749178597bc8af0 + 5d6917ca87ad1a3e97758af1988ca9055e7e4267 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87793/805930/googlemock-1.7.0.563853-windows-563853.tar.bz2 + https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.9339dda/googlemock-1.7.0.9339dda-windows-9339dda.tar.zst name windows @@ -927,16 +995,18 @@ archive hash - 27638c692f0ec6121e54bf75f2d45e49 + 4504efff4d0fa444bab6dc18a1826444140150ee + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87792/805936/googlemock-1.7.0.563853-windows64-563853.tar.bz2 + https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.9339dda/googlemock-1.7.0.9339dda-windows64-9339dda.tar.zst name windows64 version - 1.7.0.563853 + 1.7.0.9339dda gstreamer @@ -1089,9 +1159,11 @@ archive hash - c3c9e60bdc12b35e0e3d6b67d5635f60 + f271809c0d4244128fb52a71226a4d7674e14e0a + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89304/815407/jpegencoderbasic-1.0-darwin64-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-darwin64-9165e47.tar.zst name darwin64 @@ -1101,9 +1173,11 @@ archive hash - e70898903475d8ac2e81ff33278fc987 + 35d6a617444fde9c8a5e998ef29dc43b95747637 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-linux64-9165e47.tar.zst windows @@ -1111,9 +1185,11 @@ archive hash - 0a376676dbb43fdd0c81ffdfbc5e6f81 + 27a5ae2b7fb299685df499515b42342cab4d0973 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89308/815432/jpegencoderbasic-1.0-windows-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-windows-9165e47.tar.zst name windows @@ -1123,9 +1199,11 @@ archive hash - e70898903475d8ac2e81ff33278fc987 + 8ec22e9fc8734ba3d1826f4b88171a6017cc8676 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-windows64-9165e47.tar.zst name windows64 @@ -1153,9 +1231,11 @@ archive hash - 3f2e34e3a2dac8eea957cad143a71dc5 + 776d114aa1e3455bb13deaacd756deb07b53ecbe + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54847/510113/jpeglib-8c.538977-darwin64-538977.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-darwin64-7846234.tar.zst name darwin64 @@ -1165,9 +1245,11 @@ archive hash - ba9c62863ec338a049de83c24639f57c + b4b2278bd2fcae85619e2145a243cca388d760d7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3151/7568/jpeglib-8c.503140-linux64-503140.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-linux64-7846234.tar.zst name linux64 @@ -1177,9 +1259,11 @@ archive hash - c8dee00ef13af40ec68becc25830e195 + 4a78122a6130d9f647a17b1dd488ebe8c98f8b82 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54992/511854/jpeglib-8c.538977-windows-538977.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-windows-7846234.tar.zst name windows @@ -1189,16 +1273,18 @@ archive hash - 6f40620e86f3c9b91b6b5fe3c81776fc + d50fcac69eeb9404638da07db96ee3e1191ecf93 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54991/511847/jpeglib-8c.538977-windows64-538977.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-windows64-7846234.tar.zst name windows64 version - 8c.538977 + 8c.7846234 jsoncpp @@ -1219,9 +1305,11 @@ archive hash - 87d32aaac4183590c96edd0b6d9bf3e4 + 07761ab01e61d5d6b40d303ffafd85ec055ec9f7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54846/510106/jsoncpp-0.5.0.538976-darwin64-538976.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-darwin64-bc46e62.tar.zst name darwin64 @@ -1231,9 +1319,11 @@ archive hash - 9a658ae561c75e60bd9c0cee56731d21 + 97e268754808cb2fbd682c4d3beafd2c598e1ba7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1475/3274/jsoncpp-0.5.0.501464-linux64-501464.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-linux64-bc46e62.tar.zst name linux64 @@ -1243,9 +1333,11 @@ archive hash - b73d9addab278eacc100bd312ab6ec5c + 866fd5106369a58bdab8193914ff20cf6f0d96ae + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54990/511840/jsoncpp-0.5.0.538976-windows-538976.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-windows-bc46e62.tar.zst name windows @@ -1255,16 +1347,18 @@ archive hash - 1b9ac5708cc526d2c5358ef0a427109d + 500e455b210d6bc4985185cef2472987ed3034bf + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54989/511833/jsoncpp-0.5.0.538976-windows64-538976.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-windows64-bc46e62.tar.zst name windows64 version - 0.5.0.538976 + 0.5.0.bc46e62 kdu @@ -1367,9 +1461,11 @@ archive hash - 2021ea3a19b81c82993e733709683303 + 18390940fa8c04964cc6a81a140249dae88be4a2 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76371/727419/libhunspell-1.3.2.555528-darwin64-555528.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.1f01e6e/libhunspell-1.3.2.1f01e6e-darwin64-1f01e6e.tar.zst name darwin64 @@ -1379,9 +1475,11 @@ archive hash - ffbdd109356d66ddfefd8a5d57f63f1f + b646de1ca06b0acaed26a5690913ed5b54452f9b + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/533/1144/libhunspell-1.3.2.500526-linux64-500526.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.1f01e6e/libhunspell-1.3.2.1f01e6e-linux64-1f01e6e.tar.zst name linux64 @@ -1391,9 +1489,11 @@ archive hash - 2253ec09136cc7c208481030d78d9dd7 + 46770f7739ee04ad201c3ef973ba13270e89c03c + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76369/727412/libhunspell-1.3.2.555528-windows-555528.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.1f01e6e/libhunspell-1.3.2.1f01e6e-windows-1f01e6e.tar.zst name windows @@ -1403,16 +1503,18 @@ archive hash - 858d1708f6b3a74738a3d57a5387e20f + ec6e196298da0d69868d314ec0c89d4bd824a6c1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76370/727413/libhunspell-1.3.2.555528-windows64-555528.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.1f01e6e/libhunspell-1.3.2.1f01e6e-windows64-1f01e6e.tar.zst name windows64 version - 1.3.2.555528 + 1.3.2.1f01e6e libndofdev @@ -1433,9 +1535,11 @@ archive hash - a487fff84208a45844602c4a1f68c974 + e3dd320c90e67e0c80caf4d4df23257b0196dfb6 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76356/727333/libndofdev-0.1.555523-darwin64-555523.tar.bz2 + https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-darwin64-8e9edc7.tar.zst name darwin64 @@ -1445,9 +1549,11 @@ archive hash - 4c839555bf0ed9ae60ffc3f8a7c96f9b + 1d8fce18cfd19af6c10fb5575beb95953d9dd12d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76354/727340/libndofdev-0.1.555523-windows-555523.tar.bz2 + https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-windows-8e9edc7.tar.zst name windows @@ -1457,16 +1563,18 @@ archive hash - cbc033ae3b034b992b59f6de1034247c + ae9d554e8839f42230b8ed6c850445d54654a38f + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76355/727341/libndofdev-0.1.555523-windows64-555523.tar.bz2 + https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-windows64-8e9edc7.tar.zst name windows64 version - 0.1.555523 + 0.1.8e9edc7 libpng @@ -1487,9 +1595,11 @@ archive hash - c1c9e32e21f3c34d91ed045b2ca91f24 + 18a300f0d4ad73c2d035d350ed667a5fac85f28b + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87781/805801/libpng-1.6.8.563850-darwin64-563850.tar.bz2 + https://github.com/secondlife/3p-libpng/releases/download/v1.6.9-dev3.ge495c04-e495c04/libpng-darwin64-None.tar.zst name darwin64 @@ -1499,9 +1609,11 @@ archive hash - 13de93ea11544051b69f238eeb644fd3 + 4849f8a20f17e556620540d6f184c6c03e37255b + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/882/1946/libpng-1.6.8.500873-linux64-500873.tar.bz2 + https://github.com/secondlife/3p-libpng/releases/download/v1.6.9-dev3.ge495c04-e495c04/libpng-linux64-None.tar.zst name linux64 @@ -1511,9 +1623,11 @@ archive hash - 642e9cf95c8ccd0eb34f6d7a40df585a + 1d44a2414021f09c8bb89b2cee6dfb7c910b81be + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87782/805831/libpng-1.6.8.563850-windows-563850.tar.bz2 + https://github.com/secondlife/3p-libpng/releases/download/v1.6.9-dev3.ge495c04-e495c04/libpng-windows-None.tar.zst name windows @@ -1523,16 +1637,18 @@ archive hash - ce46aa0f171d97626c4a3940347cecd7 + f200276fa8486224b63cfe613378983ed162b72a + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87780/805832/libpng-1.6.8.563850-windows64-563850.tar.bz2 + https://github.com/secondlife/3p-libpng/releases/download/v1.6.9-dev3.ge495c04-e495c04/libpng-windows64-None.tar.zst name windows64 version - 1.6.8.563850 + None libuuid @@ -1583,9 +1699,11 @@ archive hash - 6f37dd6c4a5174f358b6cc5d953f121b + 996b6dc851531b9f2b8b6a84a30ec1b4bf547a5f + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87768/805766/libxml2-2.9.4.563845-darwin64-563845.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-darwin64-dfc418f.tar.zst name darwin64 @@ -1595,9 +1713,11 @@ archive hash - 740fc93f195c77b3a0c0800b31878ecb + db3abe85e569a7ceaa1c352d8e0f6d1987357671 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/890/1968/libxml2-2.9.4.500877-linux64-500877.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-linux64-dfc418f.tar.zst name linux64 @@ -1607,9 +1727,11 @@ archive hash - fd85d3aa13fbdfd1f1ace587e95ef151 + db18550ad820dca5e8d382cbc735b68e4fa681d6 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87773/805797/libxml2-2.9.4.563845-windows-563845.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-windows-dfc418f.tar.zst name windows @@ -1619,16 +1741,18 @@ archive hash - d231d36c3b8942e0259aa2d9fcaa3b7e + b21aa35f1423d2aa490336f66312118fb3fc7de1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87772/805795/libxml2-2.9.4.563845-windows64-563845.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-windows64-dfc418f.tar.zst name windows64 version - 2.9.4.563845 + 2.9.4.dfc418f llappearance_utility @@ -1678,18 +1802,18 @@ archive hash - d6e7ab8483c348f223fd24028e27a52f + 3a45d167f60ed26dc1f8467b93ec64676cc7fe34 hash_algorithm - md5 + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/93933/844890/llca-202202010217.567974-common-567974.tar.bz2 + https://github.com/secondlife/llca/releases/download/v202305121625.0-efdf149/llca-202305160024.0-common-efdf149.tar.zst name common version - 202202010217.567974 + 202305160024.0 llphysicsextensions_source @@ -1934,9 +2058,11 @@ archive hash - 30bc37db57bbd87c4b5f62634964242a + c9d4e1264fde2bbfcc8d3463f73bfe4ef18766e5 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/84218/784918/meshoptimizer-0.16.561408-darwin64-561408.tar.bz2 + https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-2ac0a00/meshoptimizer-160-darwin64-2ac0a00.tar.zst name darwin64 @@ -1946,9 +2072,11 @@ archive hash - ca3684bcf0447746cd2844e94f6d1fc7 + 3b11968ccba312be53d22a85fb76dcf4cb9822ad + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/84219/784924/meshoptimizer-0.16.561408-windows-561408.tar.bz2 + https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-2ac0a00/meshoptimizer-160-windows-2ac0a00.tar.zst name windows @@ -1958,16 +2086,18 @@ archive hash - aef28c089d20f69d13c9c3e113fb3895 + c8c8218f2eeae3dc5d0fff023a494baff87d1a75 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/84220/784931/meshoptimizer-0.16.561408-windows64-561408.tar.bz2 + https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-2ac0a00/meshoptimizer-160-windows64-2ac0a00.tar.zst name windows64 version - 0.16.561408 + 160 minizip-ng @@ -1990,21 +2120,39 @@ archive hash - 843587a078102d86d90054d03354684d + 8b2da95c58944ee15d9e6eff9e0043c494cb2571 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/95876/856095/minizip_ng-3.0.2.569217-darwin64-569217.tar.bz2 + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-darwin64-298f1f2.tar.zst name darwin64 + linux64 + + archive + + hash + 3b0a7ebe15eb1c8bb072f4b90c7f4165c894f42f + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-linux64-298f1f2.tar.zst + + name + linux64 + windows archive hash - 26dc254f443ca9c5509547d7fbd9d8e5 + 689d17ca2e2c7659651764831dfe739241f7a9c1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/95878/856107/minizip_ng-3.0.2.569217-windows-569217.tar.bz2 + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-windows-298f1f2.tar.zst name windows @@ -2014,16 +2162,18 @@ archive hash - e9241fa325f4014995b62193321e7a1c + 3579072a96643ffeed73a829909d9d647c1b977c + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/95877/856106/minizip_ng-3.0.2.569217-windows64-569217.tar.bz2 + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-windows64-298f1f2.tar.zst name windows64 version - 3.0.2.569217 + 3.0.2.298f1f2 nghttp2 @@ -2045,9 +2195,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e4f784d8a035c51921a1562ca7a1bab6 + fff611030a34e78b3a88168f64e4e33aef117bc3 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76357/727350/nghttp2-1.40.0.555524-darwin64-555524.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-darwin64-b1526c6.tar.zst name darwin64 @@ -2057,9 +2209,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - c3c5ff7d2f7ac1143ef8d888192d4a53 + 5798b5f6c8579ad44f211a873c072ee8d3fd8c93 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/9257/41579/nghttp2-1.25.0.509246-linux64-509246.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-linux64-b1526c6.tar.zst name linux64 @@ -2069,9 +2223,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - af05aa2994c9845308fecd094b7b2d25 + ea16c2b825b69af75c3a64df9e3c24a9021026ca + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76359/727360/nghttp2-1.40.0.555524-windows-555524.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-windows-b1526c6.tar.zst name windows @@ -2081,9 +2237,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 5a55cede40eef16b9d1e47c418a2b77a + 05aad7759519719a54a6100fddd35b69e57f2386 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76358/727359/nghttp2-1.40.0.555524-windows64-555524.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-windows64-b1526c6.tar.zst name windows64 @@ -2092,7 +2250,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 1.40.0.555524 + 1.40.0.b1526c6 nvapi @@ -2113,9 +2271,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 4305515ad326c911a390388366a9107b + 0a4752a250abd3df3c92ea4205c93598f88a1ecf + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54947/511704/nvapi-352.539058-windows-539058.tar.bz2 + https://github.com/secondlife/3p-nvapi/releases/download/v352.aac0e19/nvapi-352.aac0e19-windows-aac0e19.tar.zst name windows @@ -2125,16 +2285,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 25c8ac919f24b8952653d38ec43640e5 + 1ebe715fc1096198e343c41d50654c11509cdbba + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54945/511697/nvapi-352.539058-windows64-539058.tar.bz2 + https://github.com/secondlife/3p-nvapi/releases/download/v352.aac0e19/nvapi-352.aac0e19-windows64-aac0e19.tar.zst name windows64 version - 352.539058 + 352.aac0e19 ogg_vorbis @@ -2155,9 +2317,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - a066f1d12caee1d87fc72f48169f9677 + ad0dd0f608b868cc44c225ee48e114239fca2807 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54841/510071/ogg_vorbis-1.3.3-1.3.6.538971-darwin64-538971.tar.bz2 + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-darwin64-e4101b6.tar.zst name darwin64 @@ -2179,9 +2343,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - d4b8ed3fd679a2b484d2d1a66c063908 + 9fc1cc518c17929cb66d9b07f92b2751fda80371 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54981/511789/ogg_vorbis-1.3.3-1.3.6.538971-windows-538971.tar.bz2 + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-windows-e4101b6.tar.zst name windows @@ -2191,16 +2357,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ec4a657fe639bb458ee5132062146a7a + 2e73a0a5659c9a09eba2f94619aa5c23c7cc3937 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54980/511782/ogg_vorbis-1.3.3-1.3.6.538971-windows64-538971.tar.bz2 + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-windows64-e4101b6.tar.zst name windows64 version - 1.3.3-1.3.6.538971 + 1.3.3-1.3.6.e4101b6 open-libndofdev @@ -2292,9 +2460,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 5abf2d9c0b250821c59cc60cd94fd8af + c16deaf773cb2a5d001732122ee3ec74db1dceeb + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54840/510064/openjpeg-1.5.1.538970-darwin64-538970.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-darwin64-ea12248.tar.zst name darwin64 @@ -2304,9 +2474,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ac66f3197010b1549a5e4467aebbc27d + 8c277dde6076fb682cb07264dd70f6f2298b633f + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1113/2571/openjpeg-1.5.1.501102-linux64-501102.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-linux64-ea12248.tar.zst name linux64 @@ -2316,9 +2488,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 222a406ecb4071a9cc9635353afa337e + f16bd2fe43901e510b53e57396b308f659443547 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54977/511775/openjpeg-1.5.1.538970-windows-538970.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-windows-ea12248.tar.zst name windows @@ -2328,16 +2502,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 5b5c80807fa8161f3480be3d89fe9516 + 2abf9535adf21ebdf2295f8a680300432abe6280 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54974/511767/openjpeg-1.5.1.538970-windows64-538970.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-windows64-ea12248.tar.zst name windows64 version - 1.5.1.538970 + 2.5.0.ea12248 openssl @@ -2358,9 +2534,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 142d0ad85d0ee4fbb673c9f9e414fbdd + b286e4a10cf6b1b2710b85ff96ffc0e41fd5fde8 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87769/805772/openssl-1.1.1l.563846-darwin64-563846.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-darwin64-de53f55.tar.zst name darwin64 @@ -2370,9 +2548,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - d50ccfbf0c1d249392919e2c46ad8d5c + 5f6953db991ef6badb0525ecc98daf28d368e9e7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/8339/33495/openssl-1.0.2l.508328-linux64-508328.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-linux64-de53f55.tar.zst name linux64 @@ -2382,9 +2562,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 55bd833166d03f1467e2c7f24fa9143e + dbf2f69a7d73821dbe12288097298924e866e606 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87775/805841/openssl-1.1.1l.563846-windows-563846.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-windows-de53f55.tar.zst name windows @@ -2394,16 +2576,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 6fefc60f68882fc6b246521b696497ab + 8bd3dea6d81de5e469b241a1b79e61efce6ecc05 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87774/805833/openssl-1.1.1l.563846-windows64-563846.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-windows64-de53f55.tar.zst name windows64 version - 1.1.1l.563846 + 1.1.1q.de53f55 pcre @@ -2424,9 +2608,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - d8c0f97fe5abef43e72b6f84aba698b2 + b372d37596474043a62568e569b0ce155192f484 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54856/510176/pcre-8.35.538986-darwin64-538986.tar.bz2 + https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-darwin64-979fd86.tar.zst name darwin64 @@ -2448,9 +2634,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 3660db45793df3050b63920bfb7d8479 + 5e93602abcd5130c21a6d554dc088390326e68e7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55041/512002/pcre-8.35.538986-windows-538986.tar.bz2 + https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-windows-979fd86.tar.zst name windows @@ -2460,16 +2648,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - cdee8e8b48a66266550bf279c40abc22 + 166564afb60a7536a038fae80e2fc9a41d6dbccb + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55038/511992/pcre-8.35.538986-windows64-538986.tar.bz2 + https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-windows64-979fd86.tar.zst name windows64 version - 8.35.538986 + 8.35.979fd86 slvoice @@ -2566,9 +2756,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 24440e8219e59d81423b68d3be381fef + cfed00d8ea7265c035c2d86a234b28efb0b23756 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89305/815412/threejs-0.132.2-darwin64-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-darwin64-b8f6746.tar.zst name darwin64 @@ -2578,9 +2770,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 46edf0f55417f8ef0d33a5c007bc3644 + 9de1295b157c9913c28be81ff933c73493ecc132 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-linux64-b8f6746.tar.zst windows @@ -2588,9 +2782,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e1303fb9f2242a79aee5fd9f97726ace + 31bd892de74f171644ea67ac57e0391d2c7081b1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89311/815452/threejs-0.132.2-windows-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows-b8f6746.tar.zst name windows @@ -2600,9 +2796,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 46edf0f55417f8ef0d33a5c007bc3644 + 4141710fccbd1ea2b3b53d00e189bdfa2ee9d441 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows64-b8f6746.tar.zst name windows64 @@ -2694,9 +2892,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 64e1c979aea2f74fe9c2d9d04573336d + 9f0bf4545f08df5381e0f39ccce3a57c6ec4b0f4 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55001/511871/tut-2008.11.30-common-539059.tar.bz2 + https://github.com/secondlife/3p-tut/releases/download/v2008.11.30-409bce5/tut-2008.11.30-common-409bce5.tar.zst name common @@ -2724,9 +2924,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b97d0f6570104277de92d0d3f2d1111d + 4b6ee5113b1368ec9ff5b59e195adde370b9f585 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89474/816487/uriparser-0.9.4-darwin64-564957.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-darwin64-8fff38a.tar.zst name darwin64 @@ -2736,9 +2938,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 087375378f104cdac0cb0fe0ca43dd4d + 44dc74ec73e37c56bef6317d12a29d0435cb4bbb + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/346/880/uriparser-0.8.0.1-linux64-500342.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-linux64-8fff38a.tar.zst name linux64 @@ -2748,9 +2952,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e2600c798e220cc98c1cc77341aee00d + c07e234e5fbf1f92167ea5dd296a0fc7feb67199 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89476/816496/uriparser-0.9.4-windows-564957.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-windows-8fff38a.tar.zst name windows @@ -2760,9 +2966,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 50d857117d31844fc8b84b07b795fd00 + e8b20edfc624f1d09bc83480932a9c844d47fc13 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89475/816497/uriparser-0.9.4-windows64-564957.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-windows64-8fff38a.tar.zst name windows64 @@ -2790,13 +2998,29 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 1dda5fb3bb649b0ab5a93f22df7cb11e + d8bc8720846cfa31e23e7e1008e32ba6ad4a8322 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/96998/862110/viewer_manager-3.0.569958-darwin64-569958.tar.bz2 + https://github.com/secondlife/viewer-manager/releases/download/v3.0.cc7ea1e/viewer_manager-3.0.cc7ea1e-darwin64-cc7ea1e.tar.zst name darwin64 + linux64 + + archive + + hash + 228fae4ee0ce12b9d1d1b0a8ebb0bdf58ee521eb + hash_algorithm + sha1 + url + https://github.com/secondlife/viewer-manager/releases/download/v3.0.cc7ea1e/viewer_manager-3.0.cc7ea1e-linux64-cc7ea1e.tar.zst + + name + linux64 + windows archive @@ -2809,13 +3033,27 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name windows + windows64 + + archive + + hash + ca6999b64d96d45952fe872b381db9b2abc0248c + hash_algorithm + sha1 + url + https://github.com/secondlife/viewer-manager/releases/download/v3.0.cc7ea1e/viewer_manager-3.0.cc7ea1e-windows64-cc7ea1e.tar.zst + + name + windows64 + source https://bitbucket.org/lindenlab/vmp-standalone source_type hg version - 3.0.569958 + 3.0.cc7ea1e vlc-bin @@ -2834,9 +3072,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 738688816ebd76958e49772712a6b972 + a26b47ab01a7e2c0add4c236886162c1135b3b79 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/90004/820701/vlc_bin-3.0.16.565299-darwin64-565299.tar.bz2 + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-darwin64-c219a5d.tar.zst name darwin64 @@ -2846,9 +3086,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 6801f91f3f27e626898bab90d40fc1c3 + 712f25fe4780a089193fc4f23ed7dc9340d72994 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/90005/820712/vlc_bin-3.0.16.565299-windows-565299.tar.bz2 + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-windows-c219a5d.tar.zst name windows @@ -2858,16 +3100,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 7f66982d6edf3c38f3493e28826d58e8 + d56002da7435bab166c88d59eeaf69fd87cd897d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/90006/820713/vlc_bin-3.0.16.565299-windows64-565299.tar.bz2 + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-windows64-c219a5d.tar.zst name windows64 version - 3.0.16.565299 + 3.0.16.c219a5d xmlrpc-epi @@ -2888,9 +3132,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 922a0dea32266897ed1911200438e1e1 + aa12611374876196b3ebb6bda8d419a697217b8b + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76372/727426/xmlrpc_epi-0.54.1.555529-darwin64-555529.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-darwin64-8a05acf.tar.zst name darwin64 @@ -2900,9 +3146,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 35df17c3eb673030dea4bde9191aa506 + ad0c8b41ee4b4de216382bec46ee1c25962a3f12 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/727/1489/xmlrpc_epi-0.54.1.500719-linux64-500719.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-linux64-8a05acf.tar.zst name linux64 @@ -2912,9 +3160,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 34b847e6b280048465fe7c6ce67fe05c + db122f53b03334d4f192ee7a5f12899ba4658003 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76374/727436/xmlrpc_epi-0.54.1.555529-windows-555529.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-windows-8a05acf.tar.zst name windows @@ -2924,16 +3174,40 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 8fbe7c4ea22bb7f23a93c73884ebb34c + e53fd38c14b8c47c7c84dead8a1b211bb8be170c + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76373/727435/xmlrpc_epi-0.54.1.555529-windows64-555529.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-windows64-8a05acf.tar.zst name windows64 version - 0.54.1.555529 + 0.54.1.8a05acf + + xxhash + + name + xxhash + platforms + + darwin64 + + archive + + hash + d0344bbe9fdbd7cd0b00e9105f58f7e23737d203 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-xxhash/releases/download/v0.8.1.8baecc1/xxhash-0.8.1.8baecc1-darwin64-8baecc1.tar.zst + + name + darwin64 + + zlib-ng @@ -2956,9 +3230,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - bf306e38bf81c6095e0967bdef6a2445 + dacc5f3fb307c4d1292ed1ffb1d595d83599062d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87759/805718/zlib_ng-2.0.5.563838-darwin64-563838.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-darwin64-32fd361.tar.zst name darwin64 @@ -2968,9 +3244,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - dab6be8b0596c1e3354f2b6d41335131 + fba88375e12454ae19f4528e11ffc7ddf7d879ec + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/866/1898/zlib-1.2.8.500857-linux64-500857.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-linux64-32fd361.tar.zst name linux64 @@ -2980,9 +3258,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 8ffce5bd00e3d5afa8cb39b855237c4a + 2b5a50b0a3d31a07bc74cb77871ad195eb97c550 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87761/805730/zlib_ng-2.0.5.563838-windows-563838.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-windows-32fd361.tar.zst name windows @@ -2992,16 +3272,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - bd103a9129e57f7ea35886bc7750f8a6 + ccfca9451063e2d0e95baa73b1ad2054d3e38907 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87760/805729/zlib_ng-2.0.5.563838-windows64-563838.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-windows64-32fd361.tar.zst name windows64 version - 2.0.5.563838 + 1.2.11.zlib-ng.32fd361 package_description -- cgit v1.2.3 From ff995bbba43b7127ddec441ec8e21c1e3919e96a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 19 May 2023 15:08:23 -0400 Subject: SL-18837: Next batch of GitHub actions build updates --- autobuild.xml | 926 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 659 insertions(+), 267 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index b1cfe79275..9db4fb880d 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -51,9 +51,11 @@ archive hash - 178b16ee9ff67986c8c14413ee68218e + adf2a55a8596a5d2b8357c8816e32f17307bfff8 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/107593/938535/apr_suite-1.4.5.576669-darwin64-576669.tar.bz2 + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-darwin64-6312917.tar.zst name darwin64 @@ -75,9 +77,11 @@ archive hash - d2997cad03dbd0d70a060276b5671480 + b55acee452f79cc13f241e57be5fabef19ec8bb0 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/107594/938548/apr_suite-1.4.5.576669-windows-576669.tar.bz2 + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-windows-6312917.tar.zst name windows @@ -87,16 +91,18 @@ archive hash - ec24f5945faa8f13807b83eeaeb994f8 + 3460bacbf5c806bbf7d1fef3c510ed2a7ba4ad6e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/107592/938547/apr_suite-1.4.5.576669-windows64-576669.tar.bz2 + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-windows64-6312917.tar.zst name windows64 version - 1.4.5.576669 + 1.7.2.6312917 boost @@ -183,9 +189,11 @@ archive hash - 02b569ac2bd71f201e3dd86ade7b3eeb + 4490a7d3986a4e04d6569fea7ae9e618735d5a6f + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/113876/983684/bugsplat-1.0.7.579696-darwin64-579696.tar.bz2 + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.108c9b7/bugsplat-1.0.7.108c9b7-darwin64-108c9b7.tar.zst name darwin64 @@ -195,9 +203,11 @@ archive hash - 5b32c47ae8e8cf0d4106f08e8db18044 + 029d087004f3f59f39376a0dea60d3d4a4e77610 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/113878/983697/bugsplat-4.0.3.0.579696-windows-579696.tar.bz2 + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.108c9b7/bugsplat-4.0.3.0.108c9b7-windows-108c9b7.tar.zst name windows @@ -207,16 +217,18 @@ archive hash - 79c005fd8a660f8551b3c9ede64fa4ef + 56163ae7aa5fa2e0b2e77d0fc63205452bc16351 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/113879/983696/bugsplat-4.0.3.0.579696-windows64-579696.tar.bz2 + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.108c9b7/bugsplat-4.0.3.0.108c9b7-windows64-108c9b7.tar.zst name windows64 version - 4.0.3.0.579696 + 4.0.3.0.108c9b7 colladadom @@ -299,9 +311,11 @@ archive hash - 7e4622b497bc465b01ff6d3e7e0b4214 + d5fb3832a338bbe4891b823c64fdb4806706568e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89303/815402/cubemaptoequirectangular-1.1.0-darwin64-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-darwin64-d7afe27.tar.zst name darwin64 @@ -311,9 +325,11 @@ archive hash - ac54672e0b38f52726f5c99047c913e4 + 77c53daf558f51aec6e9f4bd9e930a103630ee7d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-linux64-d7afe27.tar.zst windows @@ -321,9 +337,11 @@ archive hash - b5ea7097ae10037024b0c2b3df9812b5 + e53a8268474e0272f0252097873d52de7205351e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89307/815434/cubemaptoequirectangular-1.1.0-windows-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-windows-d7afe27.tar.zst name windows @@ -333,9 +351,11 @@ archive hash - ac54672e0b38f52726f5c99047c913e4 + 6c51855bcf3a8628289881fdaea08c25cf7b1b90 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89306/815431/cubemaptoequirectangular-1.1.0-windows64-564841.tar.bz2 + https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-windows64-d7afe27.tar.zst name windows64 @@ -363,9 +383,11 @@ archive hash - 44d801e05811269d1bed7dbc75d85843 + d4d5f27008de1ff7e86ae852841c68849b02eaea + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87786/805905/curl-7.54.1.563852-darwin64-563852.tar.bz2 + https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-darwin64-5a4a82d.tar.zst name darwin64 @@ -387,11 +409,11 @@ archive hash - 676f624d4ebdc2189caa43ef6dd8266d + a1ff1cea3b6171e4ed9f29249e72111866334615 hash_algorithm - md5 + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87790/805917/curl-7.54.1.563852-windows-563852.tar.bz2 + https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-windows-5a4a82d.tar.zst name windows @@ -401,16 +423,18 @@ archive hash - b3db5a2cdf275c1af7758fbe2d14544a + 07423f41d1320ea405f493869f6460cf8c45def5 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87789/805918/curl-7.54.1.563852-windows64-563852.tar.bz2 + https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-windows64-5a4a82d.tar.zst name windows64 version - 7.54.1.563852 + 7.54.1-5a4a82d dbus_glib @@ -461,16 +485,18 @@ archive hash - d778c6a3475bc35ee8b9615dfc38b4a9 + f6835c4d7745cd1cadfbce47b40331d08affb532 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55025/511964/dictionaries-1.538984-common-538984.tar.bz2 + https://github.com/secondlife/3p-dictionaries/releases/download/v1.0.1-dev2.gf887629-f887629/dictionaries-common-None.tar.zst name common version - 1.538984 + None dullahan @@ -491,9 +517,11 @@ archive hash - 439d92ec73f0500ba1671faad2bd8090 + 26302518fa132a8a9da7eddee53ee583ab7581b3 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104637/916643/dullahan-1.12.4.202209142017_91.1.21_g9dd45fe_chromium-91.0.4472.114-darwin64-575005.tar.bz2 + https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180020_113.1.5_ge452d82_chromium-113.0.5672.93-darwin64-1758b1b.tar.zst name darwin64 @@ -503,9 +531,11 @@ archive hash - 2a7c01da15de77bc1fd1863327174d5e + f682df99c1acc5279a9161f2f13f446001e7871d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104638/916654/dullahan-1.12.4.202209142021_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows-575005.tar.bz2 + https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93-windows-1758b1b.tar.zst name windows @@ -515,16 +545,18 @@ archive hash - d06bee9b2517fbb09ba1a65e6d675361 + f29e543a6f85aa5b5093d2f4db0b192e28da601a + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104639/916659/dullahan-1.12.4.202209142021_91.1.21_g9dd45fe_chromium-91.0.4472.114-windows64-575005.tar.bz2 + https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93-windows64-1758b1b.tar.zst name windows64 version - 1.12.4.202209142021_91.1.21_g9dd45fe_chromium-91.0.4472.114 + 1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93 expat @@ -545,9 +577,11 @@ archive hash - f4e80e0dfcab713a3da90cd8f7f23e7b + b85526ca80b6a7e73c7870285cf68d568f742095 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76341/727265/expat-2.1.1.555519-darwin64-555519.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-darwin64-1f36d02.tar.zst name darwin64 @@ -557,9 +591,11 @@ archive hash - 5e1f025d1cebd12db542080aa755257f + 4cd82e2dec06ddff19e9b3dc0254f2593ec80452 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/380/943/expat-2.1.1.500375-linux64-500375.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-linux64-1f36d02.tar.zst name linux64 @@ -569,9 +605,11 @@ archive hash - cd4fe03473076c324d80ae3bd91a85bb + f663242ab6c7aa1601a96907202cfd04fee03720 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76343/727273/expat-2.1.1.555519-windows-555519.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-windows-1f36d02.tar.zst name windows @@ -581,16 +619,18 @@ archive hash - d2d74d73b914150982b1883a3b96e60b + 47c01a89bc32c5740efe51be43e459ffd9b7cd34 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76344/727279/expat-2.1.1.555519-windows64-555519.tar.bz2 + https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-windows64-1f36d02.tar.zst name windows64 version - 2.1.1.555519 + 2.1.1.1f36d02 fmodstudio @@ -610,10 +650,14 @@ archive + creds + github hash - 5a1d52ec3981292855a179be86988a02 + fb6797ff93b6e881b060d2a8b396d8d7477834ee + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/112152/972159/fmodstudio-2.02.13.578928-darwin64-578928.tar.bz2 + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108908444 name darwin64 @@ -622,10 +666,14 @@ archive + creds + github hash - 24b86630ccdfb5b3221f90ca7a9704f6 + a378bd1604aa97ca763140911f9f4e463ced85c0 + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/89682/818423/fmodstudio-2.02.03.565082-linux-565082.tar.bz2 + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108908446 name linux64 @@ -634,10 +682,14 @@ archive + creds + github hash - 8594ec180b73be42d37b6f93ac59ab4a + bbf3cfeb245ca73ce4fc6ac494c33b2071bfeb7b + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/112153/972171/fmodstudio-2.02.13.578928-windows-578928.tar.bz2 + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108908454 name windows @@ -646,10 +698,14 @@ archive + creds + github hash - 46941a2610f83c353e551d300e536c54 + 72304491d86bd797b840999b255358f195b06609 + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/112154/972170/fmodstudio-2.02.13.578928-windows64-578928.tar.bz2 + https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108908456 name windows64 @@ -707,9 +763,11 @@ archive hash - 8865739d8e530199dacb3c3042c1bc01 + 912d122aae996483ba814fe8e569394ddca0d42e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87777/805782/freetype-2.4.4.563848-darwin64-563848.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-darwin64-4f739fa.tar.zst name darwin64 @@ -719,9 +777,11 @@ archive hash - 94cf61dfdbc86aae5bbaf0b5cb8a366c + 14f57822f0cedef957a50a03a7b5372075cf8e1c + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/874/1914/freetype-2.4.4.500865-linux64-500865.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-linux64-4f739fa.tar.zst name linux64 @@ -731,9 +791,11 @@ archive hash - c0b3601e997553931cadc7d7ee94168b + bb3c4f11b1c9f14e271c5ab16ca1ae743f1e3493 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87779/805814/freetype-2.4.4.563848-windows-563848.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-windows-4f739fa.tar.zst name windows @@ -743,16 +805,18 @@ archive hash - e98e1e088cdcd20442e05e9abecdadf9 + d175b39257b691a957724e655c6cffe0b5a7b104 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87778/805815/freetype-2.4.4.563848-windows64-563848.tar.bz2 + https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-windows64-4f739fa.tar.zst name windows64 version - 2.4.4.563848 + 2.4.4.4f739fa glext @@ -768,6 +832,20 @@ glext platforms + common + + archive + + hash + 34af0a90a3015b7e7ec2486090bc4ce6ee5be758 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-glext/releases/download/v68-af397ee/glext-68-common-af397ee.tar.zst + + name + common + darwin64 archive @@ -839,16 +917,18 @@ archive hash - dce3f3c01fddb400cb143c3283fe9259 + 6604c1cca515d287e697997a8d5593d1cae172a9 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/82754/775367/glh_linear-0.0.0-common-560278.tar.bz2 + https://github.com/secondlife/3p-glh_linear/releases/download/v1.0.1-dev2.g3253ed7-3253ed7/glh_linear-common-None.tar.zst name common version - 0.0.0 + None googlemock @@ -990,10 +1070,14 @@ archive + creds + github hash - ba229348c1d9d58519cd854ff9d8ef3d + a193ff65d6db48626d65d96c6124c6efca85e8ec + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55213/512968/havok_source-2012.1-2-darwin64-539117.tar.bz2 + https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108912596 name darwin64 @@ -1014,10 +1098,14 @@ archive + creds + github hash - 4ff2af85106907acb171bb1e38a3757e + a28190162382667985fa8d105ba62fd1effbf65a + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55214/512993/havok_source-2012.1-2-windows-539117.tar.bz2 + https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108912601 name windows @@ -1026,10 +1114,14 @@ archive + creds + github hash - bcaf4631ea10f7d09eecb73e8f5bef6c + ebfb82b6143874e7938b9d1e8a70d0a2e28aa818 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55212/512962/havok_source-2012.1-2-windows64-539117.tar.bz2 + https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108912599 name windows64 @@ -1055,9 +1147,11 @@ archive hash - c3c9e60bdc12b35e0e3d6b67d5635f60 + f271809c0d4244128fb52a71226a4d7674e14e0a + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89304/815407/jpegencoderbasic-1.0-darwin64-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-darwin64-9165e47.tar.zst name darwin64 @@ -1067,9 +1161,11 @@ archive hash - e70898903475d8ac2e81ff33278fc987 + 35d6a617444fde9c8a5e998ef29dc43b95747637 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-linux64-9165e47.tar.zst windows @@ -1077,9 +1173,11 @@ archive hash - 0a376676dbb43fdd0c81ffdfbc5e6f81 + 27a5ae2b7fb299685df499515b42342cab4d0973 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89308/815432/jpegencoderbasic-1.0-windows-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-windows-9165e47.tar.zst name windows @@ -1089,9 +1187,11 @@ archive hash - e70898903475d8ac2e81ff33278fc987 + 8ec22e9fc8734ba3d1826f4b88171a6017cc8676 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89309/815433/jpegencoderbasic-1.0-windows64-564842.tar.bz2 + https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-windows64-9165e47.tar.zst name windows64 @@ -1119,9 +1219,11 @@ archive hash - 3f2e34e3a2dac8eea957cad143a71dc5 + 776d114aa1e3455bb13deaacd756deb07b53ecbe + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54847/510113/jpeglib-8c.538977-darwin64-538977.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-darwin64-7846234.tar.zst name darwin64 @@ -1131,9 +1233,11 @@ archive hash - ba9c62863ec338a049de83c24639f57c + b4b2278bd2fcae85619e2145a243cca388d760d7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/3151/7568/jpeglib-8c.503140-linux64-503140.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-linux64-7846234.tar.zst name linux64 @@ -1143,9 +1247,11 @@ archive hash - c8dee00ef13af40ec68becc25830e195 + 4a78122a6130d9f647a17b1dd488ebe8c98f8b82 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54992/511854/jpeglib-8c.538977-windows-538977.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-windows-7846234.tar.zst name windows @@ -1155,16 +1261,18 @@ archive hash - 6f40620e86f3c9b91b6b5fe3c81776fc + d50fcac69eeb9404638da07db96ee3e1191ecf93 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54991/511847/jpeglib-8c.538977-windows64-538977.tar.bz2 + https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-windows64-7846234.tar.zst name windows64 version - 8c.538977 + 8c.7846234 jsoncpp @@ -1185,9 +1293,11 @@ archive hash - 87d32aaac4183590c96edd0b6d9bf3e4 + 07761ab01e61d5d6b40d303ffafd85ec055ec9f7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54846/510106/jsoncpp-0.5.0.538976-darwin64-538976.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-darwin64-bc46e62.tar.zst name darwin64 @@ -1197,9 +1307,11 @@ archive hash - 9a658ae561c75e60bd9c0cee56731d21 + 97e268754808cb2fbd682c4d3beafd2c598e1ba7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1475/3274/jsoncpp-0.5.0.501464-linux64-501464.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-linux64-bc46e62.tar.zst name linux64 @@ -1209,9 +1321,11 @@ archive hash - b73d9addab278eacc100bd312ab6ec5c + 866fd5106369a58bdab8193914ff20cf6f0d96ae + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54990/511840/jsoncpp-0.5.0.538976-windows-538976.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-windows-bc46e62.tar.zst name windows @@ -1221,16 +1335,18 @@ archive hash - 1b9ac5708cc526d2c5358ef0a427109d + 500e455b210d6bc4985185cef2472987ed3034bf + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54989/511833/jsoncpp-0.5.0.538976-windows64-538976.tar.bz2 + https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-windows64-bc46e62.tar.zst name windows64 version - 0.5.0.538976 + 0.5.0.bc46e62 kdu @@ -1250,10 +1366,14 @@ archive + creds + github hash - ccfd8eacd1ebe92715944094064ba2e4 + bcc7e2c34896fc9cbc41828dee8a4ddf54f10453 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55187/512570/kdu-7.10.4.539108-darwin64-539108.tar.bz2 + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298968 name darwin64 @@ -1262,10 +1382,14 @@ archive + creds + github hash - a705a665810a71e7b0114a97ae9a2224 + 9de772df2ed12e9c742df6c90670c7cbbb9c93a6 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/15256/98457/kdu-7.10.4.513518-linux64-513518.tar.bz2 + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298969 name linux64 @@ -1274,10 +1398,14 @@ archive + creds + github hash - 38574fbcb6c94c42745ef48748002e58 + 3513764294c0c3e4fa669f57bb26454c91e79692 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55189/512583/kdu-7.10.4.539108-windows-539108.tar.bz2 + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298972 name windows @@ -1286,10 +1414,14 @@ archive + creds + github hash - 3dfeb869c781a766874f0aedc7d4fcef + 92533ff0f8c1881ad85e75800f9072c413ccf7b7 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/55188/512576/kdu-7.10.4.539108-windows64-539108.tar.bz2 + https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298970 name windows64 @@ -1317,9 +1449,11 @@ archive hash - 2021ea3a19b81c82993e733709683303 + d5757ab84d934fa358f299ab91e2e297beaa3dac + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76371/727419/libhunspell-1.3.2.555528-darwin64-555528.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-darwin64-650fb94.tar.zst name darwin64 @@ -1329,9 +1463,11 @@ archive hash - ffbdd109356d66ddfefd8a5d57f63f1f + 6413d3bd4cd50c2a6b7f949eb4bd6f0c94feb984 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/533/1144/libhunspell-1.3.2.500526-linux64-500526.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-linux64-650fb94.tar.zst name linux64 @@ -1341,9 +1477,11 @@ archive hash - 2253ec09136cc7c208481030d78d9dd7 + 305444c28da48c809ead766d99926309531b52b4 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76369/727412/libhunspell-1.3.2.555528-windows-555528.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-windows-650fb94.tar.zst name windows @@ -1353,16 +1491,18 @@ archive hash - 858d1708f6b3a74738a3d57a5387e20f + c1be4a79b20435030b2e0e01b582c61b462c8376 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76370/727413/libhunspell-1.3.2.555528-windows64-555528.tar.bz2 + https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-windows64-650fb94.tar.zst name windows64 version - 1.3.2.555528 + 1.3.2.650fb94 libndofdev @@ -1383,9 +1523,11 @@ archive hash - a487fff84208a45844602c4a1f68c974 + e3dd320c90e67e0c80caf4d4df23257b0196dfb6 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76356/727333/libndofdev-0.1.555523-darwin64-555523.tar.bz2 + https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-darwin64-8e9edc7.tar.zst name darwin64 @@ -1395,9 +1537,11 @@ archive hash - 4c839555bf0ed9ae60ffc3f8a7c96f9b + 1d8fce18cfd19af6c10fb5575beb95953d9dd12d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76354/727340/libndofdev-0.1.555523-windows-555523.tar.bz2 + https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-windows-8e9edc7.tar.zst name windows @@ -1407,16 +1551,18 @@ archive hash - cbc033ae3b034b992b59f6de1034247c + ae9d554e8839f42230b8ed6c850445d54654a38f + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76355/727341/libndofdev-0.1.555523-windows64-555523.tar.bz2 + https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-windows64-8e9edc7.tar.zst name windows64 version - 0.1.555523 + 0.1.8e9edc7 libpng @@ -1437,9 +1583,11 @@ archive hash - 7a0059748d0b8733f2f9ce434cf604b8 + fea8f0684a4ed0a73343651948b13049a135a92a + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/107514/937867/libpng-1.6.38.576621-darwin64-576621.tar.bz2 + https://github.com/secondlife/3p-libpng/releases/download/v1.6.38-ca06e99/libpng-1.6.38-ca06e99-darwin64-ca06e99.tar.zst name darwin64 @@ -1461,9 +1609,11 @@ archive hash - 3112013186ad60b0fc270a398d4dd499 + c0c487d4dc8ed42b7e9834babb9697bdbf57c534 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/107513/937823/libpng-1.6.38.576621-windows-576621.tar.bz2 + https://github.com/secondlife/3p-libpng/releases/download/v1.6.38-ca06e99/libpng-1.6.38-ca06e99-windows-ca06e99.tar.zst name windows @@ -1473,16 +1623,18 @@ archive hash - 7c6bfcdb0d6162587cdbc436f595dd02 + b91c116a1fda2377954355e56517634db0137699 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/107512/937822/libpng-1.6.38.576621-windows64-576621.tar.bz2 + https://github.com/secondlife/3p-libpng/releases/download/v1.6.38-ca06e99/libpng-1.6.38-ca06e99-windows64-ca06e99.tar.zst name windows64 version - 1.6.38.576621 + 1.6.38-ca06e99 libuuid @@ -1533,9 +1685,11 @@ archive hash - 6f37dd6c4a5174f358b6cc5d953f121b + 996b6dc851531b9f2b8b6a84a30ec1b4bf547a5f + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87768/805766/libxml2-2.9.4.563845-darwin64-563845.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-darwin64-dfc418f.tar.zst name darwin64 @@ -1545,9 +1699,11 @@ archive hash - 740fc93f195c77b3a0c0800b31878ecb + db3abe85e569a7ceaa1c352d8e0f6d1987357671 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/890/1968/libxml2-2.9.4.500877-linux64-500877.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-linux64-dfc418f.tar.zst name linux64 @@ -1557,9 +1713,11 @@ archive hash - fd85d3aa13fbdfd1f1ace587e95ef151 + db18550ad820dca5e8d382cbc735b68e4fa681d6 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87773/805797/libxml2-2.9.4.563845-windows-563845.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-windows-dfc418f.tar.zst name windows @@ -1569,16 +1727,18 @@ archive hash - d231d36c3b8942e0259aa2d9fcaa3b7e + b21aa35f1423d2aa490336f66312118fb3fc7de1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87772/805795/libxml2-2.9.4.563845-windows64-563845.tar.bz2 + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-windows64-dfc418f.tar.zst name windows64 version - 2.9.4.563845 + 2.9.4.dfc418f llappearance_utility @@ -1628,18 +1788,18 @@ archive hash - d6e7ab8483c348f223fd24028e27a52f + 3a45d167f60ed26dc1f8467b93ec64676cc7fe34 hash_algorithm - md5 + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/93933/844890/llca-202202010217.567974-common-567974.tar.bz2 + https://github.com/secondlife/llca/releases/download/v202305121625.0-efdf149/llca-202305160024.0-common-efdf149.tar.zst name common version - 202202010217.567974 + 202305160024.0 llphysicsextensions_source @@ -1657,10 +1817,14 @@ archive + creds + github hash - e51c6f5dfd76eb148348a44ff57e66c2 + 2d0ba3d6c0f4c73f603bc7d61135079ef281686d + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/104810/918016/llphysicsextensions_source-1.0.575107-darwin64-575107.tar.bz2 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908515 name darwin64 @@ -1669,10 +1833,14 @@ archive + creds + github hash - c1b43e99c5ddccc18b0e9cb288bf75e1 + 90b1d01ab2fe93dd584de87df8cb42d1ec35f109 + hash_algorithm + sha1 url - http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/4721/14828/llphysicsextensions_source-1.0.504710-linux64-504710.tar.bz2 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908517 name linux64 @@ -1681,14 +1849,34 @@ archive + creds + github hash - dbbe4cc568ac149d862e421cdda4dd48 + 397daeb397719448858eabae6061c795d127b8fb + hash_algorithm + sha1 url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/104809/918011/llphysicsextensions_source-1.0.575107-windows-575107.tar.bz2 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908521 name windows + windows64 + + archive + + creds + github + hash + 475d0d49a28bcc04b3af8c9d5e8b0dbafa542db9 + hash_algorithm + sha1 + url + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908518 + + name + windows64 + version 1.0.565768 @@ -1856,9 +2044,11 @@ archive hash - 30bc37db57bbd87c4b5f62634964242a + 3bf88febd23656327a4ee2a3ebe99cae4b15573e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/84218/784918/meshoptimizer-0.16.561408-darwin64-561408.tar.bz2 + https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-darwin64-032f20a.tar.zst name darwin64 @@ -1868,9 +2058,11 @@ archive hash - ca3684bcf0447746cd2844e94f6d1fc7 + 92af48f406d8f48b62005f319daad9c1751a6f5b + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/84219/784924/meshoptimizer-0.16.561408-windows-561408.tar.bz2 + https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-windows-032f20a.tar.zst name windows @@ -1880,16 +2072,18 @@ archive hash - aef28c089d20f69d13c9c3e113fb3895 + 13c0a33d9c49cc07b354527c7ef992d33f854c59 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/84220/784931/meshoptimizer-0.16.561408-windows64-561408.tar.bz2 + https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-windows64-032f20a.tar.zst name windows64 version - 0.16.561408 + 160 minizip-ng @@ -1912,21 +2106,39 @@ archive hash - 843587a078102d86d90054d03354684d + 8b2da95c58944ee15d9e6eff9e0043c494cb2571 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/95876/856095/minizip_ng-3.0.2.569217-darwin64-569217.tar.bz2 + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-darwin64-298f1f2.tar.zst name darwin64 + linux64 + + archive + + hash + 3b0a7ebe15eb1c8bb072f4b90c7f4165c894f42f + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-linux64-298f1f2.tar.zst + + name + linux64 + windows archive hash - 26dc254f443ca9c5509547d7fbd9d8e5 + 689d17ca2e2c7659651764831dfe739241f7a9c1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/95878/856107/minizip_ng-3.0.2.569217-windows-569217.tar.bz2 + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-windows-298f1f2.tar.zst name windows @@ -1936,16 +2148,18 @@ archive hash - e9241fa325f4014995b62193321e7a1c + 3579072a96643ffeed73a829909d9d647c1b977c + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/95877/856106/minizip_ng-3.0.2.569217-windows64-569217.tar.bz2 + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-windows64-298f1f2.tar.zst name windows64 version - 3.0.2.569217 + 3.0.2.298f1f2 nghttp2 @@ -1967,9 +2181,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e4f784d8a035c51921a1562ca7a1bab6 + fff611030a34e78b3a88168f64e4e33aef117bc3 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76357/727350/nghttp2-1.40.0.555524-darwin64-555524.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-darwin64-b1526c6.tar.zst name darwin64 @@ -1979,9 +2195,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - c3c5ff7d2f7ac1143ef8d888192d4a53 + 5798b5f6c8579ad44f211a873c072ee8d3fd8c93 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/9257/41579/nghttp2-1.25.0.509246-linux64-509246.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-linux64-b1526c6.tar.zst name linux64 @@ -1991,9 +2209,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - af05aa2994c9845308fecd094b7b2d25 + ea16c2b825b69af75c3a64df9e3c24a9021026ca + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76359/727360/nghttp2-1.40.0.555524-windows-555524.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-windows-b1526c6.tar.zst name windows @@ -2003,9 +2223,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 5a55cede40eef16b9d1e47c418a2b77a + 05aad7759519719a54a6100fddd35b69e57f2386 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76358/727359/nghttp2-1.40.0.555524-windows64-555524.tar.bz2 + https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-windows64-b1526c6.tar.zst name windows64 @@ -2014,7 +2236,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors source_type hg version - 1.40.0.555524 + 1.40.0.b1526c6 nvapi @@ -2035,9 +2257,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 4305515ad326c911a390388366a9107b + 0a4752a250abd3df3c92ea4205c93598f88a1ecf + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54947/511704/nvapi-352.539058-windows-539058.tar.bz2 + https://github.com/secondlife/3p-nvapi/releases/download/v352.aac0e19/nvapi-352.aac0e19-windows-aac0e19.tar.zst name windows @@ -2047,16 +2271,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 25c8ac919f24b8952653d38ec43640e5 + 1ebe715fc1096198e343c41d50654c11509cdbba + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54945/511697/nvapi-352.539058-windows64-539058.tar.bz2 + https://github.com/secondlife/3p-nvapi/releases/download/v352.aac0e19/nvapi-352.aac0e19-windows64-aac0e19.tar.zst name windows64 version - 352.539058 + 352.aac0e19 ogg_vorbis @@ -2077,9 +2303,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - a066f1d12caee1d87fc72f48169f9677 + ad0dd0f608b868cc44c225ee48e114239fca2807 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54841/510071/ogg_vorbis-1.3.3-1.3.6.538971-darwin64-538971.tar.bz2 + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-darwin64-e4101b6.tar.zst name darwin64 @@ -2101,9 +2329,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - d4b8ed3fd679a2b484d2d1a66c063908 + 9fc1cc518c17929cb66d9b07f92b2751fda80371 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54981/511789/ogg_vorbis-1.3.3-1.3.6.538971-windows-538971.tar.bz2 + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-windows-e4101b6.tar.zst name windows @@ -2113,16 +2343,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ec4a657fe639bb458ee5132062146a7a + 2e73a0a5659c9a09eba2f94619aa5c23c7cc3937 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54980/511782/ogg_vorbis-1.3.3-1.3.6.538971-windows64-538971.tar.bz2 + https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-windows64-e4101b6.tar.zst name windows64 version - 1.3.3-1.3.6.538971 + 1.3.3-1.3.6.e4101b6 open-libndofdev @@ -2214,9 +2446,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 8114c6a7e499ea20d325db0de08ce30a + c16deaf773cb2a5d001732122ee3ec74db1dceeb + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/105469/923024/openjpeg-2.5.0.575496-darwin64-575496.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-darwin64-ea12248.tar.zst name darwin64 @@ -2226,9 +2460,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - ac66f3197010b1549a5e4467aebbc27d + 8c277dde6076fb682cb07264dd70f6f2298b633f + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/1113/2571/openjpeg-1.5.1.501102-linux64-501102.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-linux64-ea12248.tar.zst name linux64 @@ -2238,9 +2474,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - edc9388870d951632a6d595792293e05 + f16bd2fe43901e510b53e57396b308f659443547 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/105472/923036/openjpeg-2.5.0.575496-windows-575496.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-windows-ea12248.tar.zst name windows @@ -2250,16 +2488,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b95f0732f2388ebb0ddf33d4a30e0ff1 + 2abf9535adf21ebdf2295f8a680300432abe6280 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/105471/923037/openjpeg-2.5.0.575496-windows64-575496.tar.bz2 + https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-windows64-ea12248.tar.zst name windows64 version - 2.5.0.575496 + 2.5.0.ea12248 openssl @@ -2280,9 +2520,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 142d0ad85d0ee4fbb673c9f9e414fbdd + b286e4a10cf6b1b2710b85ff96ffc0e41fd5fde8 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87769/805772/openssl-1.1.1l.563846-darwin64-563846.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-darwin64-de53f55.tar.zst name darwin64 @@ -2292,9 +2534,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - d50ccfbf0c1d249392919e2c46ad8d5c + 5f6953db991ef6badb0525ecc98daf28d368e9e7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/8339/33495/openssl-1.0.2l.508328-linux64-508328.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-linux64-de53f55.tar.zst name linux64 @@ -2304,9 +2548,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 55bd833166d03f1467e2c7f24fa9143e + dbf2f69a7d73821dbe12288097298924e866e606 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87775/805841/openssl-1.1.1l.563846-windows-563846.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-windows-de53f55.tar.zst name windows @@ -2316,16 +2562,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 6fefc60f68882fc6b246521b696497ab + 8bd3dea6d81de5e469b241a1b79e61efce6ecc05 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87774/805833/openssl-1.1.1l.563846-windows64-563846.tar.bz2 + https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-windows64-de53f55.tar.zst name windows64 version - 1.1.1l.563846 + 1.1.1q.de53f55 pcre @@ -2346,9 +2594,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - d8c0f97fe5abef43e72b6f84aba698b2 + b372d37596474043a62568e569b0ce155192f484 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54856/510176/pcre-8.35.538986-darwin64-538986.tar.bz2 + https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-darwin64-979fd86.tar.zst name darwin64 @@ -2370,9 +2620,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 3660db45793df3050b63920bfb7d8479 + 5e93602abcd5130c21a6d554dc088390326e68e7 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55041/512002/pcre-8.35.538986-windows-538986.tar.bz2 + https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-windows-979fd86.tar.zst name windows @@ -2382,16 +2634,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - cdee8e8b48a66266550bf279c40abc22 + 166564afb60a7536a038fae80e2fc9a41d6dbccb + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55038/511992/pcre-8.35.538986-windows64-538986.tar.bz2 + https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-windows64-979fd86.tar.zst name windows64 version - 8.35.538986 + 8.35.979fd86 slvoice @@ -2411,10 +2665,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive + creds + github hash - b583668b28fde0490e6953f10e93e4ab + cc7c5bf53f83cff81d874ad66394df0991bd432c + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98681/871545/slvoice-4.10.0000.32327.5fc3fe7c.571099-darwin64-571099.tar.bz2 + https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299352 name darwin64 @@ -2435,10 +2693,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive + creds + github hash - 6e0ed41653955afe8eeb8945776cf07b + 3a3dedc5ac1c19c6af40673908a3cc0c1f75c52c + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98683/871560/slvoice-4.10.0000.32327.5fc3fe7c.571099-windows-571099.tar.bz2 + https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299354 name windows @@ -2447,10 +2709,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive + creds + github hash - c39735851fd05c194d0be09b8f9e8cb7 + 0c205371bb1731a9812b00556037729fdc057cbc + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/98682/871552/slvoice-4.10.0000.32327.5fc3fe7c.571099-windows64-571099.tar.bz2 + https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299356 name windows64 @@ -2476,9 +2742,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 24440e8219e59d81423b68d3be381fef + cfed00d8ea7265c035c2d86a234b28efb0b23756 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89305/815412/threejs-0.132.2-darwin64-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-darwin64-b8f6746.tar.zst name darwin64 @@ -2488,9 +2756,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 46edf0f55417f8ef0d33a5c007bc3644 + 9de1295b157c9913c28be81ff933c73493ecc132 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-linux64-b8f6746.tar.zst windows @@ -2498,9 +2768,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e1303fb9f2242a79aee5fd9f97726ace + 31bd892de74f171644ea67ac57e0391d2c7081b1 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89311/815452/threejs-0.132.2-windows-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows-b8f6746.tar.zst name windows @@ -2510,9 +2782,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 46edf0f55417f8ef0d33a5c007bc3644 + 4141710fccbd1ea2b3b53d00e189bdfa2ee9d441 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89310/815451/threejs-0.132.2-windows64-564843.tar.bz2 + https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows64-b8f6746.tar.zst name windows64 @@ -2604,9 +2878,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 64e1c979aea2f74fe9c2d9d04573336d + 9f0bf4545f08df5381e0f39ccce3a57c6ec4b0f4 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/55001/511871/tut-2008.11.30-common-539059.tar.bz2 + https://github.com/secondlife/3p-tut/releases/download/v2008.11.30-409bce5/tut-2008.11.30-common-409bce5.tar.zst name common @@ -2634,9 +2910,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b97d0f6570104277de92d0d3f2d1111d + 4b6ee5113b1368ec9ff5b59e195adde370b9f585 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89474/816487/uriparser-0.9.4-darwin64-564957.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-darwin64-8fff38a.tar.zst name darwin64 @@ -2646,9 +2924,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 087375378f104cdac0cb0fe0ca43dd4d + 44dc74ec73e37c56bef6317d12a29d0435cb4bbb + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/346/880/uriparser-0.8.0.1-linux64-500342.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-linux64-8fff38a.tar.zst name linux64 @@ -2658,9 +2938,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e2600c798e220cc98c1cc77341aee00d + c07e234e5fbf1f92167ea5dd296a0fc7feb67199 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89476/816496/uriparser-0.9.4-windows-564957.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-windows-8fff38a.tar.zst name windows @@ -2670,9 +2952,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 50d857117d31844fc8b84b07b795fd00 + e8b20edfc624f1d09bc83480932a9c844d47fc13 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/89475/816497/uriparser-0.9.4-windows64-564957.tar.bz2 + https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-windows64-8fff38a.tar.zst name windows64 @@ -2700,13 +2984,29 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 9e1b5515ab59b4e9cfeef6626d65d03d + d8bc8720846cfa31e23e7e1008e32ba6ad4a8322 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/108609/945996/viewer_manager-3.0.577252-darwin64-577252.tar.bz2 + https://github.com/secondlife/viewer-manager/releases/download/v3.0.cc7ea1e/viewer_manager-3.0.cc7ea1e-darwin64-cc7ea1e.tar.zst name darwin64 + linux64 + + archive + + hash + 228fae4ee0ce12b9d1d1b0a8ebb0bdf58ee521eb + hash_algorithm + sha1 + url + https://github.com/secondlife/viewer-manager/releases/download/v3.0.cc7ea1e/viewer_manager-3.0.cc7ea1e-linux64-cc7ea1e.tar.zst + + name + linux64 + windows archive @@ -2719,13 +3019,27 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name windows + windows64 + + archive + + hash + ca6999b64d96d45952fe872b381db9b2abc0248c + hash_algorithm + sha1 + url + https://github.com/secondlife/viewer-manager/releases/download/v3.0.cc7ea1e/viewer_manager-3.0.cc7ea1e-windows64-cc7ea1e.tar.zst + + name + windows64 + source https://bitbucket.org/lindenlab/vmp-standalone source_type hg version - 3.0.577252 + 3.0.cc7ea1e vlc-bin @@ -2744,9 +3058,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 738688816ebd76958e49772712a6b972 + a26b47ab01a7e2c0add4c236886162c1135b3b79 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/90004/820701/vlc_bin-3.0.16.565299-darwin64-565299.tar.bz2 + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-darwin64-c219a5d.tar.zst name darwin64 @@ -2756,9 +3072,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 6801f91f3f27e626898bab90d40fc1c3 + 712f25fe4780a089193fc4f23ed7dc9340d72994 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/90005/820712/vlc_bin-3.0.16.565299-windows-565299.tar.bz2 + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-windows-c219a5d.tar.zst name windows @@ -2768,16 +3086,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 7f66982d6edf3c38f3493e28826d58e8 + d56002da7435bab166c88d59eeaf69fd87cd897d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/90006/820713/vlc_bin-3.0.16.565299-windows64-565299.tar.bz2 + https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-windows64-c219a5d.tar.zst name windows64 version - 3.0.16.565299 + 3.0.16.c219a5d xmlrpc-epi @@ -2798,9 +3118,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 922a0dea32266897ed1911200438e1e1 + aa12611374876196b3ebb6bda8d419a697217b8b + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76372/727426/xmlrpc_epi-0.54.1.555529-darwin64-555529.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-darwin64-8a05acf.tar.zst name darwin64 @@ -2810,9 +3132,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 35df17c3eb673030dea4bde9191aa506 + ad0c8b41ee4b4de216382bec46ee1c25962a3f12 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/727/1489/xmlrpc_epi-0.54.1.500719-linux64-500719.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-linux64-8a05acf.tar.zst name linux64 @@ -2822,9 +3146,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 34b847e6b280048465fe7c6ce67fe05c + db122f53b03334d4f192ee7a5f12899ba4658003 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76374/727436/xmlrpc_epi-0.54.1.555529-windows-555529.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-windows-8a05acf.tar.zst name windows @@ -2834,25 +3160,27 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 8fbe7c4ea22bb7f23a93c73884ebb34c + e53fd38c14b8c47c7c84dead8a1b211bb8be170c + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/76373/727435/xmlrpc_epi-0.54.1.555529-windows64-555529.tar.bz2 + https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-windows64-8a05acf.tar.zst name windows64 version - 0.54.1.555529 + 0.54.1.8a05acf xxhash copyright - Copyright 2012-2020 Yann Collet + Copyright (c) 2012-2021 Yann Collet description - xxHash Extremely fast hash algorithm + xxHash Library license - bsd + xxhash license_file LICENSES/xxhash.txt name @@ -2871,9 +3199,65 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name common + darwin64 + + archive + + hash + fdcc803a76a3359bb426db7dac161406676d51e7 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-xxhash/releases/download/v0.8.1.7501c90/xxhash-0.8.1.7501c90-darwin64-7501c90.tar.zst + + name + darwin64 + + linux64 + + archive + + hash + 7acb3f94a549fbb9bd7bc16604e34f33c5365a9b + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-xxhash/releases/download/v0.8.1.7501c90/xxhash-0.8.1.7501c90-linux64-7501c90.tar.zst + + name + linux64 + + windows + + archive + + hash + 8ac856ef69a7395c3b70c3fcc1edb7f3f4194f92 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-xxhash/releases/download/v0.8.1.7501c90/xxhash-0.8.1.7501c90-windows-7501c90.tar.zst + + name + windows + + windows64 + + archive + + hash + 4522d075ea4703ef4b527c3039864ef735ea7953 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-xxhash/releases/download/v0.8.1.7501c90/xxhash-0.8.1.7501c90-windows64-7501c90.tar.zst + + name + windows64 + version - 0.8.1 + 0.8.1.7501c90 zlib-ng @@ -2896,9 +3280,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - bf306e38bf81c6095e0967bdef6a2445 + dacc5f3fb307c4d1292ed1ffb1d595d83599062d + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87759/805718/zlib_ng-2.0.5.563838-darwin64-563838.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-darwin64-32fd361.tar.zst name darwin64 @@ -2908,9 +3294,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - dab6be8b0596c1e3354f2b6d41335131 + fba88375e12454ae19f4528e11ffc7ddf7d879ec + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/866/1898/zlib-1.2.8.500857-linux64-500857.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-linux64-32fd361.tar.zst name linux64 @@ -2920,9 +3308,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 8ffce5bd00e3d5afa8cb39b855237c4a + 2b5a50b0a3d31a07bc74cb77871ad195eb97c550 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87761/805730/zlib_ng-2.0.5.563838-windows-563838.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-windows-32fd361.tar.zst name windows @@ -2932,16 +3322,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - bd103a9129e57f7ea35886bc7750f8a6 + ccfca9451063e2d0e95baa73b1ad2054d3e38907 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87760/805729/zlib_ng-2.0.5.563838-windows64-563838.tar.bz2 + https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-windows64-32fd361.tar.zst name windows64 version - 2.0.5.563838 + 1.2.11.zlib-ng.32fd361 package_description -- cgit v1.2.3 From 3ff43893dadbbb247d3f647284ce774c0c7cf26a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 19 May 2023 17:08:35 -0400 Subject: SL-18837: Update boost, googlemock Update boost to release v1.81-90bb2df. Update googlemock to release v1.7.0.77bba00. --- autobuild.xml | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 9db4fb880d..c5aa7b5de7 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -123,9 +123,11 @@ archive hash - fedc8d63856f534b6098102e059dc548 + 59c1827cab82516504a2eb31e0aa7e38035b5085 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87776/805857/boost-1.72-darwin64-563847.tar.bz2 + https://github.com/secondlife/3p-boost/releases/download/v1.81-90bb2df/boost-1.81-darwin64-90bb2df.tar.zst name darwin64 @@ -147,9 +149,11 @@ archive hash - 6cc9fb4ca21365c4470a3e516544ba71 + 401f576f99e8a72850061c885072278e3e886434 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87784/805850/boost-1.72-windows-563847.tar.bz2 + https://github.com/secondlife/3p-boost/releases/download/v1.81-90bb2df/boost-1.81-windows-90bb2df.tar.zst name windows @@ -159,16 +163,18 @@ archive hash - 0c526efc3f8825cd25cdf635e238fab3 + 26214a33c568929ffeeb3463ce183f2888ce4fe4 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87783/805851/boost-1.72-windows64-563847.tar.bz2 + https://github.com/secondlife/3p-boost/releases/download/v1.81-90bb2df/boost-1.81-windows64-90bb2df.tar.zst name windows64 version - 1.72 + 1.81 bugsplat @@ -949,9 +955,11 @@ archive hash - 11d0794582e91a57f6524ad345f2399d + c016d7333a3ded88c060119b4e3a5847015a8711 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87791/805924/googlemock-1.7.0.563853-darwin64-563853.tar.bz2 + https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.77bba00/googlemock-1.7.0.77bba00-darwin64-77bba00.tar.zst name darwin64 @@ -973,9 +981,11 @@ archive hash - 7d267050970ec6e28749178597bc8af0 + 588ceffc4e30ff699694a9f70b9de81994e2c19f + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87793/805930/googlemock-1.7.0.563853-windows-563853.tar.bz2 + https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.77bba00/googlemock-1.7.0.77bba00-windows-77bba00.tar.zst name windows @@ -985,16 +995,18 @@ archive hash - 27638c692f0ec6121e54bf75f2d45e49 + df51dff9a820fc96c18c2bc00b64467e541633a5 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/87792/805936/googlemock-1.7.0.563853-windows64-563853.tar.bz2 + https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.77bba00/googlemock-1.7.0.77bba00-windows64-77bba00.tar.zst name windows64 version - 1.7.0.563853 + 1.7.0.77bba00 gstreamer -- cgit v1.2.3 From 1d43352652bc404cc8e1e16707a8202520709bbc Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 2 Jun 2023 13:18:35 -0400 Subject: SL-18837: Update libxml2, minizip-ng, colladadom Update libxml2 to release v2.9.4.7476681. Update minizip-ng to release v3.0.2.3e9876e. Update colladadom to release v2.3.d1ef72a. --- autobuild.xml | 56 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index c5aa7b5de7..d44a709bea 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -253,9 +253,11 @@ archive hash - a880dfc15fcb330baf548a85324cd88a + 7f447d30d7add80270a55cf3c53000392821a1cb + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104133/913090/colladadom-2.3.574693-darwin64-574693.tar.bz2 + https://github.com/secondlife/3p-colladadom/releases/download/v2.3.d1ef72a/colladadom-2.3.d1ef72a-darwin64-d1ef72a.tar.zst name darwin64 @@ -277,9 +279,11 @@ archive hash - 7e84441d9c7cf019a7bdc7b818b16c27 + 48f27593701c1a72bee1e0feef559eb8e209f26e + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104112/912957/colladadom-2.3.574693-windows-574693.tar.bz2 + https://github.com/secondlife/3p-colladadom/releases/download/v2.3.d1ef72a/colladadom-2.3.d1ef72a-windows-d1ef72a.tar.zst name windows @@ -289,16 +293,18 @@ archive hash - 2eaffbb8a93b03a732d3c47055a8efcb + b32294a2f31f5b4ca49928e66832aad1bb4a88ac + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/104135/913103/colladadom-2.3.574693-windows64-574693.tar.bz2 + https://github.com/secondlife/3p-colladadom/releases/download/v2.3.d1ef72a/colladadom-2.3.d1ef72a-windows64-d1ef72a.tar.zst name windows64 version - 2.3.574693 + 2.3.d1ef72a cubemaptoequirectangular @@ -1697,11 +1703,11 @@ archive hash - 996b6dc851531b9f2b8b6a84a30ec1b4bf547a5f + 2c46547d9dc83c47f41eacc7e5092affa72f3eee hash_algorithm sha1 url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-darwin64-dfc418f.tar.zst + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-darwin64-7476681.tar.zst name darwin64 @@ -1711,11 +1717,11 @@ archive hash - db3abe85e569a7ceaa1c352d8e0f6d1987357671 + 4cda464277bfa6756ce4663a91cd724f3f45b8d8 hash_algorithm sha1 url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-linux64-dfc418f.tar.zst + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-linux64-7476681.tar.zst name linux64 @@ -1725,11 +1731,11 @@ archive hash - db18550ad820dca5e8d382cbc735b68e4fa681d6 + 7446cbaed41c26b67122c203c556161893b5b425 hash_algorithm sha1 url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-windows-dfc418f.tar.zst + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-windows-7476681.tar.zst name windows @@ -1739,18 +1745,18 @@ archive hash - b21aa35f1423d2aa490336f66312118fb3fc7de1 + 7e506d26f8cb6f205146e41d74095e7e27087e84 hash_algorithm sha1 url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.dfc418f/libxml2-2.9.4.dfc418f-windows64-dfc418f.tar.zst + https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-windows64-7476681.tar.zst name windows64 version - 2.9.4.dfc418f + 2.9.4.7476681 llappearance_utility @@ -2118,11 +2124,11 @@ archive hash - 8b2da95c58944ee15d9e6eff9e0043c494cb2571 + 303fa93a0fd6c636a65fd9d5d53beceb84752b0e hash_algorithm sha1 url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-darwin64-298f1f2.tar.zst + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-darwin64-3e9876e.tar.zst name darwin64 @@ -2132,11 +2138,11 @@ archive hash - 3b0a7ebe15eb1c8bb072f4b90c7f4165c894f42f + d4f35ebcea53ab6e9f2e6cbc0d680b10d10b9c53 hash_algorithm sha1 url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-linux64-298f1f2.tar.zst + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-linux64-3e9876e.tar.zst name linux64 @@ -2146,11 +2152,11 @@ archive hash - 689d17ca2e2c7659651764831dfe739241f7a9c1 + ff191c1d6515234d8c671360215c52c5974988b1 hash_algorithm sha1 url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-windows-298f1f2.tar.zst + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-windows-3e9876e.tar.zst name windows @@ -2160,18 +2166,18 @@ archive hash - 3579072a96643ffeed73a829909d9d647c1b977c + 5dc469172ba4c6015d5b771e516bc88a65d769eb hash_algorithm sha1 url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.298f1f2/minizip_ng-3.0.2.298f1f2-windows64-298f1f2.tar.zst + https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-windows64-3e9876e.tar.zst name windows64 version - 3.0.2.298f1f2 + 3.0.2.3e9876e nghttp2 -- cgit v1.2.3 From 659af42ff86ce750d1fc7caaa5631d6dde9444db Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 2 Jun 2023 16:05:36 -0400 Subject: SL-18837: Update apr_suite to release v1.7.2-fb873f5. --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index d44a709bea..b232ad21d9 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -51,11 +51,11 @@ archive hash - adf2a55a8596a5d2b8357c8816e32f17307bfff8 + d0d6dff5e242a93a00cac1e3d9d3d4eef8c1cfa7 hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-darwin64-6312917.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-fb873f5/apr_suite-1.7.2-fb873f5-darwin64-fb873f5.tar.zst name darwin64 @@ -77,11 +77,11 @@ archive hash - b55acee452f79cc13f241e57be5fabef19ec8bb0 + dec807118bb2f2e8b2b44b3aea8c490589f6565b hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-windows-6312917.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-fb873f5/apr_suite-1.7.2-fb873f5-windows-fb873f5.tar.zst name windows @@ -91,18 +91,18 @@ archive hash - 3460bacbf5c806bbf7d1fef3c510ed2a7ba4ad6e + 082faa1384a5e0f7e3af7ad125544731a590d710 hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2.6312917/apr_suite-1.7.2.6312917-windows64-6312917.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-fb873f5/apr_suite-1.7.2-fb873f5-windows64-fb873f5.tar.zst name windows64 version - 1.7.2.6312917 + 1.7.2-fb873f5 boost -- cgit v1.2.3 From 53c89d9723b816d06516ae59d7e0f0d12e477ec9 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 2 Jun 2023 16:30:28 -0400 Subject: SL-18837: Don't try to copy long, specific libnghttp2.14.19.0.dylib. The package doesn't include that any more. --- indra/cmake/Copy3rdPartyLibs.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index d43cc30706..e4d06d6ba2 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -172,7 +172,6 @@ elseif(DARWIN) libndofdev.dylib libnghttp2.dylib libnghttp2.14.dylib - libnghttp2.14.19.0.dylib liburiparser.dylib liburiparser.1.dylib liburiparser.1.0.27.dylib -- cgit v1.2.3 From 6d2d0c8ee59eed641937b19cf19a1ff08762cbfa Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 2 Jun 2023 17:27:57 -0400 Subject: SL-18837: Boost.Bind _1, _2 placeholders are no longer global. This was a longstanding complaint: that Boost shouldn't dump the (somewhat mysterious) _1, _2 et al. names into the global namespace. Recent Boost has fixed that, requiring 'using namespace boost::placeholders;' if you want to use them unqualified. --- indra/llinventory/llsettingsbase.cpp | 4 ++++ indra/llinventory/llsettingssky.cpp | 4 ++++ indra/llinventory/llsettingswater.cpp | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/indra/llinventory/llsettingsbase.cpp b/indra/llinventory/llsettingsbase.cpp index 936b166409..ba338dbbee 100644 --- a/indra/llinventory/llsettingsbase.cpp +++ b/indra/llinventory/llsettingsbase.cpp @@ -31,6 +31,10 @@ #include #include "llsdserialize.h" +#include + +// allow unqualified _1, _2 et al. to mean boost::bind placeholders +using namespace boost::placeholders; //========================================================================= namespace diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp index a129f0a6f0..0244b2585e 100644 --- a/indra/llinventory/llsettingssky.cpp +++ b/indra/llinventory/llsettingssky.cpp @@ -31,6 +31,10 @@ #include "lltrace.h" #include "llfasttimer.h" #include "v3colorutil.h" +#include + +// allow unqualified _1, _2 et al. to mean boost::bind placeholders +using namespace boost::placeholders; //========================================================================= namespace diff --git a/indra/llinventory/llsettingswater.cpp b/indra/llinventory/llsettingswater.cpp index d732032a6c..bc53a46255 100644 --- a/indra/llinventory/llsettingswater.cpp +++ b/indra/llinventory/llsettingswater.cpp @@ -32,6 +32,10 @@ #include "llfasttimer.h" #include "v3colorutil.h" #include "indra_constants.h" +#include + +// allow unqualified _1, _2 et al. to mean boost::bind placeholders +using namespace boost::placeholders; const std::string LLSettingsWater::SETTING_BLUR_MULTIPLIER("blur_multiplier"); const std::string LLSettingsWater::SETTING_FOG_COLOR("water_fog_color"); -- cgit v1.2.3 From 42c69448da85b06caf9edabb4dd3f5f4ae926ea7 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 2 Jun 2023 17:32:31 -0400 Subject: SL-18837: Don't include a version-specific Boost.Regex header. Let the umbrella header make that decision. --- indra/newview/lllogchat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index ba82ff0b0f..8c03292361 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -41,7 +41,7 @@ #include #include -#include +#include #include #if LL_MSVC -- cgit v1.2.3 From a4a68c4f5e2e411ba636d25e6b07129ca5de2bb9 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 10:39:34 -0400 Subject: SL-18837: We no longer build Windows apr-iconv -- don't reference. With VS 2022 on Windows GitHub Actions runners, we can't build apr_suite at all with the upstream .sln / .vcxproj files, so we had to switch to "experimental" CMake support. However there's no CMakeLists.txt file for apr-iconv, so the Windows package omits that library. --- indra/cmake/APR.cmake | 2 -- indra/cmake/Copy3rdPartyLibs.cmake | 1 - 2 files changed, 3 deletions(-) diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index 8a0939c92c..21139319c3 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -16,7 +16,6 @@ if (WINDOWS) endif (LLCOMMON_LINK_SHARED) target_link_libraries( ll::apr INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apr-1.lib - ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}apriconv-1.lib ${ARCH_PREBUILT_DIRS_RELEASE}/${APR_selector}aprutil-1.lib ) elseif (DARWIN) @@ -37,7 +36,6 @@ else (WINDOWS) target_link_libraries( ll::apr INTERFACE apr-1 aprutil-1 - iconv uuid rt ) diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index e4d06d6ba2..a3db02372d 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -57,7 +57,6 @@ if(WINDOWS) openjp2.dll libapr-1.dll libaprutil-1.dll - libapriconv-1.dll nghttp2.dll libhunspell.dll uriparser.dll -- cgit v1.2.3 From 524f3b2af08c4e2a856a70d4505391c6f56d76df Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 10:43:16 -0400 Subject: SL-18837: #include in several sources that need it. It seems we're no longer implicitly inheriting from some other [set of] header file[s]. Where we use std::array, bring it in explicitly. --- indra/llaudio/llaudioengine.h | 1 + indra/newview/llenvironment.h | 2 ++ indra/newview/llimview.cpp | 2 ++ 3 files changed, 5 insertions(+) diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h index 0fe8b3d756..cf694cfaf4 100755 --- a/indra/llaudio/llaudioengine.h +++ b/indra/llaudio/llaudioengine.h @@ -30,6 +30,7 @@ #include #include +#include #include "v3math.h" #include "v3dmath.h" diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h index 64fd170e43..1c8a68ae02 100644 --- a/indra/newview/llenvironment.h +++ b/indra/newview/llenvironment.h @@ -42,6 +42,8 @@ #include +#include + //------------------------------------------------------------------------- class LLViewerCamera; class LLParcel; diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 6880cf2171..61a01d7418 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -72,6 +72,8 @@ #include "llcorehttputil.h" #include "lluiusage.h" +#include + const static std::string ADHOC_NAME_SUFFIX(" Conference"); const static std::string NEARBY_P2P_BY_OTHER("nearby_P2P_by_other"); -- cgit v1.2.3 From 6503c0b2b8bcde78d990391f07d3527123f11fb3 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 10:53:14 -0400 Subject: SL-18837: Update apr_suite to release v1.7.2-4d6fcb2. --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index b232ad21d9..31ab78c79b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -51,11 +51,11 @@ archive hash - d0d6dff5e242a93a00cac1e3d9d3d4eef8c1cfa7 + 20efce94a857d97ba9b947bcf802136175815d5b hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-fb873f5/apr_suite-1.7.2-fb873f5-darwin64-fb873f5.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-4d6fcb2/apr_suite-1.7.2-4d6fcb2-darwin64-4d6fcb2.tar.zst name darwin64 @@ -77,11 +77,11 @@ archive hash - dec807118bb2f2e8b2b44b3aea8c490589f6565b + 0421edc009fb19747bc8affaaeb6826f31e29909 hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-fb873f5/apr_suite-1.7.2-fb873f5-windows-fb873f5.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-4d6fcb2/apr_suite-1.7.2-4d6fcb2-windows-4d6fcb2.tar.zst name windows @@ -91,18 +91,18 @@ archive hash - 082faa1384a5e0f7e3af7ad125544731a590d710 + a1fe8589dcaafa6bc3ea29a02617468e2d2a23c0 hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-fb873f5/apr_suite-1.7.2-fb873f5-windows64-fb873f5.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-4d6fcb2/apr_suite-1.7.2-4d6fcb2-windows64-4d6fcb2.tar.zst name windows64 version - 1.7.2-fb873f5 + 1.7.2-4d6fcb2 boost -- cgit v1.2.3 From 045342ba29aae186e13c711bd4dd84377d4a7e43 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 11:28:41 -0400 Subject: SL-18837: Bump the granularity of WorkQueue timing tests. On a low-powered GitHub Mac runner, the system doesn't wake up as soon as it should, and we get spurious "too late" errors. Try a bigger time increment. --- indra/llcommon/tests/workqueue_test.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/tests/workqueue_test.cpp b/indra/llcommon/tests/workqueue_test.cpp index 1d73f7aa0d..7655a7aa1f 100644 --- a/indra/llcommon/tests/workqueue_test.cpp +++ b/indra/llcommon/tests/workqueue_test.cpp @@ -83,7 +83,11 @@ namespace tut // signal the work item that it can quit; consider LLOneShotCond. LLCond data; auto start = WorkQueue::TimePoint::clock::now(); - auto interval = 100ms; + // 2s seems like a long time to wait, since it directly impacts the + // duration of this test program. Unfortunately GitHub's Mac runners + // are pretty wimpy, and we're getting spurious "too late" errors just + // because the thread doesn't wake up as soon as we want. + auto interval = 2s; queue.postEvery( interval, [&data, count = 0] -- cgit v1.2.3 From b5e1484c00880bfd8001cd1418f3eb96fc38b89e Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 12:22:28 -0400 Subject: SL-18837: Windows APR 1.7.2 requires MS rpcrt4.dll. --- indra/cmake/Linking.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake index 4a501f420b..1ce21c11f9 100644 --- a/indra/cmake/Linking.cmake +++ b/indra/cmake/Linking.cmake @@ -62,6 +62,7 @@ elseif (WINDOWS) user32 ole32 dbghelp + rpcrt4.lib legacy_stdio_definitions ) else() -- cgit v1.2.3 From 19e9e8cf419c18b527bc19c5da1ab2cdf040dd0a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 12:32:10 -0400 Subject: SL-18837: Try to silence cascade of Boost.Bind warning messages. --- indra/cmake/00-Common.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index bf5a107c73..dc9ccd356a 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -26,6 +26,11 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} $ENV{LL_BUILD}") # Portable compilation flags. add_compile_definitions( ADDRESS_SIZE=${ADDRESS_SIZE}) +# Because older versions of Boost.Bind dumped placeholders _1, _2 et al. into +# the global namespace, Boost now requires either BOOST_BIND_NO_PLACEHOLDERS +# to avoid that or BOOST_BIND_GLOBAL_PLACEHOLDERS to state that we require it +# -- which we do. Without one or the other, we get a ton of Boost warnings. +add_compile_definitions(BOOST_BIND_GLOBAL_PLACEHOLDERS) # Configure crash reporting set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds") -- cgit v1.2.3 From 7a7af9a3993dad65d2574d1408a4b64d2b1778d8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 14:35:10 -0400 Subject: SL-18837: pip install llsd as well as autobuild. The Python child processes used by llprocess_test.cpp and llleap_test.cpp need the Python llsd module to communicate with the C++ parent process. Also set LOGFAIL and BUGSPLAT_DB environment variables. --- .github/workflows/build.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b64f9b709f..f7062d83dc 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -26,6 +26,12 @@ jobs: AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" + # Setting this variable directs Linden's TUT test driver code to capture + # test-program log output at the specified level, but to display it only if + # the individual test fails. + LOGFAIL: DEBUG + # Ensure that viewer builds engage Bugsplat. + BUGSPLAT_DB: "SecondLife_Viewer_2018" steps: - name: Checkout code uses: actions/checkout@v3 @@ -38,7 +44,7 @@ jobs: path: .build-variables - name: Install autobuild - run: pip3 install autobuild + run: pip3 install autobuild llsd - name: Cache autobuild packages uses: actions/cache@v3 -- cgit v1.2.3 From ddc6d219585251ea6246f56bfa5aba6b3e2fd4f0 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 21:47:52 -0400 Subject: SL-18837: Followup to 19e9e8c: global Boost.Bind placeholders do not need 'using' directive, given BOOST_BIND_GLOBAL_PLACEHOLDERS. --- indra/llinventory/llsettingsbase.cpp | 3 --- indra/llinventory/llsettingssky.cpp | 3 --- indra/llinventory/llsettingswater.cpp | 3 --- 3 files changed, 9 deletions(-) diff --git a/indra/llinventory/llsettingsbase.cpp b/indra/llinventory/llsettingsbase.cpp index ba338dbbee..6ea93e045d 100644 --- a/indra/llinventory/llsettingsbase.cpp +++ b/indra/llinventory/llsettingsbase.cpp @@ -33,9 +33,6 @@ #include "llsdserialize.h" #include -// allow unqualified _1, _2 et al. to mean boost::bind placeholders -using namespace boost::placeholders; - //========================================================================= namespace { diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp index 0244b2585e..51fca76518 100644 --- a/indra/llinventory/llsettingssky.cpp +++ b/indra/llinventory/llsettingssky.cpp @@ -33,9 +33,6 @@ #include "v3colorutil.h" #include -// allow unqualified _1, _2 et al. to mean boost::bind placeholders -using namespace boost::placeholders; - //========================================================================= namespace { diff --git a/indra/llinventory/llsettingswater.cpp b/indra/llinventory/llsettingswater.cpp index bc53a46255..89156000b0 100644 --- a/indra/llinventory/llsettingswater.cpp +++ b/indra/llinventory/llsettingswater.cpp @@ -34,9 +34,6 @@ #include "indra_constants.h" #include -// allow unqualified _1, _2 et al. to mean boost::bind placeholders -using namespace boost::placeholders; - const std::string LLSettingsWater::SETTING_BLUR_MULTIPLIER("blur_multiplier"); const std::string LLSettingsWater::SETTING_FOG_COLOR("water_fog_color"); const std::string LLSettingsWater::SETTING_FOG_DENSITY("water_fog_density"); -- cgit v1.2.3 From 6914ff6113f1667308293fe37e1ba4a4dcba850f Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 21:51:28 -0400 Subject: SL-18837: Use Boost.Filesystem for NamedTempFile, instead of APR. --- indra/test/namedtempfile.h | 136 +++++++++++---------------------------------- indra/test/test.cpp | 10 ++-- 2 files changed, 38 insertions(+), 108 deletions(-) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 7d59cad32c..927e2b4fd9 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -13,15 +13,15 @@ #define LL_NAMEDTEMPFILE_H #include "llerror.h" -#include "llapr.h" -#include "apr_file_io.h" +#include "stringize.h" #include -#include -#include -#include #include +#include +#include +#include #include #include +#include /** * Create a text file with specified content "somewhere in the @@ -31,41 +31,36 @@ class NamedTempFile: public boost::noncopyable { LOG_CLASS(NamedTempFile); public: - NamedTempFile(const std::string& pfx, const std::string& content, apr_pool_t* pool=gAPRPoolp): - mPool(pool) + NamedTempFile(const std::string_view& pfx, + const std::string_view& content, + const std::string_view& sfx=std::string_view("")) { - createFile(pfx, boost::phoenix::placeholders::arg1 << content); - } - - // Disambiguate when passing string literal - NamedTempFile(const std::string& pfx, const char* content, apr_pool_t* pool=gAPRPoolp): - mPool(pool) - { - createFile(pfx, boost::phoenix::placeholders::arg1 << content); + createFile(pfx, [&content](std::ostream& out){ out << content; }, sfx); } // Function that accepts an ostream ref and (presumably) writes stuff to // it, e.g.: // (boost::phoenix::placeholders::arg1 << "the value is " << 17 << '\n') - typedef boost::function Streamer; + typedef std::function Streamer; - NamedTempFile(const std::string& pfx, const Streamer& func, apr_pool_t* pool=gAPRPoolp): - mPool(pool) + NamedTempFile(const std::string_view& pfx, + const Streamer& func, + const std::string_view& sfx=std::string_view("")) { - createFile(pfx, func); + createFile(pfx, func, sfx); } virtual ~NamedTempFile() { - ll_apr_assert_status(apr_file_remove(mPath.c_str(), mPool)); + boost::filesystem::remove(mPath); } - virtual std::string getName() const { return mPath; } + virtual std::string getName() const { return mPath.native(); } void peep() { std::cout << "File '" << mPath << "' contains:\n"; - std::ifstream reader(mPath.c_str()); + boost::filesystem::ifstream reader(mPath); std::string line; while (std::getline(reader, line)) std::cout << line << '\n'; @@ -73,92 +68,40 @@ public: } protected: - void createFile(const std::string& pfx, const Streamer& func) + void createFile(const std::string_view& pfx, + const Streamer& func, + const std::string_view& sfx) { // Create file in a temporary place. - const char* tempdir = NULL; - ll_apr_assert_status(apr_temp_dir_get(&tempdir, mPool)); - - // Construct a temp filename template in that directory. - char *tempname = NULL; - ll_apr_assert_status(apr_filepath_merge(&tempname, - tempdir, - (pfx + "XXXXXX").c_str(), - 0, - mPool)); - - // Create a temp file from that template. - apr_file_t* fp = NULL; - ll_apr_assert_status(apr_file_mktemp(&fp, - tempname, - APR_CREATE | APR_WRITE | APR_EXCL, - mPool)); - // apr_file_mktemp() alters tempname with the actual name. Not until - // now is it valid to capture as our mPath. - mPath = tempname; + boost::filesystem::path tempname{ boost::filesystem::temp_directory_path() }; + // unique_path() recommended model + tempname += stringize(pfx, "%%%%-%%%%-%%%%-%%%%", sfx); + mPath = boost::filesystem::unique_path(tempname); + boost::filesystem::ofstream out{ mPath }; // Write desired content. - std::ostringstream out; - // Stream stuff to it. func(out); - - std::string data(out.str()); - apr_size_t writelen(data.length()); - ll_apr_assert_status(apr_file_write(fp, data.c_str(), &writelen)); - ll_apr_assert_status(apr_file_close(fp)); - llassert_always(writelen == data.length()); } - std::string mPath; - apr_pool_t* mPool; + boost::filesystem::path mPath; }; /** * Create a NamedTempFile with a specified filename extension. This is useful * when, for instance, you must be able to use the file in a Python import * statement. - * - * A NamedExtTempFile actually has two different names. We retain the original - * no-extension name as a placeholder in the temp directory to ensure - * uniqueness; to that we link the name plus the desired extension. Naturally, - * both must be removed on destruction. */ class NamedExtTempFile: public NamedTempFile { LOG_CLASS(NamedExtTempFile); public: - NamedExtTempFile(const std::string& ext, const std::string& content, apr_pool_t* pool=gAPRPoolp): - NamedTempFile(remove_dot(ext), content, pool), - mLink(mPath + ensure_dot(ext)) - { - linkto(mLink); - } + NamedExtTempFile(const std::string& ext, const std::string_view& content): + NamedTempFile(remove_dot(ext), content, ensure_dot(ext)) + {} - // Disambiguate when passing string literal - NamedExtTempFile(const std::string& ext, const char* content, apr_pool_t* pool=gAPRPoolp): - NamedTempFile(remove_dot(ext), content, pool), - mLink(mPath + ensure_dot(ext)) - { - linkto(mLink); - } - - NamedExtTempFile(const std::string& ext, const Streamer& func, apr_pool_t* pool=gAPRPoolp): - NamedTempFile(remove_dot(ext), func, pool), - mLink(mPath + ensure_dot(ext)) - { - linkto(mLink); - } - - virtual ~NamedExtTempFile() - { - ll_apr_assert_status(apr_file_remove(mLink.c_str(), mPool)); - } - - // Since the caller has gone to the trouble to create the name with the - // extension, that should be the name we return. In this class, mPath is - // just a placeholder to ensure that future createFile() calls won't - // collide. - virtual std::string getName() const { return mLink; } + NamedExtTempFile(const std::string& ext, const Streamer& func): + NamedTempFile(remove_dot(ext), func, ensure_dot(ext)) + {} static std::string ensure_dot(const std::string& ext) { @@ -175,7 +118,7 @@ public: { return ext; } - return std::string(".") + ext; + return "." + ext; } static std::string remove_dot(const std::string& ext) @@ -187,19 +130,6 @@ public: } return ext.substr(found); } - -private: - void linkto(const std::string& path) - { - // This method assumes that since mPath (without extension) is - // guaranteed by apr_file_mktemp() to be unique, then (mPath + any - // extension) is also unique. This is likely, though not guaranteed: - // files could be created in the same temp directory other than by - // this class. - ll_apr_assert_status(apr_file_link(mPath.c_str(), path.c_str())); - } - - std::string mLink; }; #endif /* ! defined(LL_NAMEDTEMPFILE_H) */ diff --git a/indra/test/test.cpp b/indra/test/test.cpp index bb48216b2b..04f32831b7 100644 --- a/indra/test/test.cpp +++ b/indra/test/test.cpp @@ -97,10 +97,10 @@ public: class RecordToTempFile : public LLError::Recorder, public boost::noncopyable { public: - RecordToTempFile(apr_pool_t* pPool) + RecordToTempFile() : LLError::Recorder(), boost::noncopyable(), - mTempFile("log", "", pPool), + mTempFile("log", ""), mFile(mTempFile.getName().c_str()) { } @@ -141,11 +141,11 @@ private: class LLReplayLogReal: public LLReplayLog, public boost::noncopyable { public: - LLReplayLogReal(LLError::ELevel level, apr_pool_t* pool) + LLReplayLogReal(LLError::ELevel level) : LLReplayLog(), boost::noncopyable(), mOldSettings(LLError::saveAndResetSettings()), - mRecorder(new RecordToTempFile(pool)) + mRecorder(new RecordToTempFile()) { LLError::setFatalFunction(wouldHaveCrashed); LLError::setDefaultLevel(level); @@ -624,7 +624,7 @@ int main(int argc, char **argv) if (LOGFAIL && *LOGFAIL) { LLError::ELevel level = LLError::decodeLevel(LOGFAIL); - replayer.reset(new LLReplayLogReal(level, gAPRPoolp)); + replayer.reset(new LLReplayLogReal(level)); } } LLError::setFatalFunction(wouldHaveCrashed); -- cgit v1.2.3 From ca510f6c299335c8db27c65c10a8553801c06023 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 22:08:26 -0400 Subject: SL-18837: Try giving temp Python scripts a .py extension. On GitHub Windows Actions runners, we're getting permissions errors trying to tell the Python interpreter to run a NamedTempFile script. Try using NamedExtTempFile to give each such script a .py extension. --- indra/llcommon/tests/llleap_test.cpp | 222 ++++++++++++++++---------------- indra/llcommon/tests/llprocess_test.cpp | 4 +- 2 files changed, 113 insertions(+), 113 deletions(-) diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 60005fc6a9..99fd073dd2 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -213,9 +213,9 @@ namespace tut void object::test<1>() { set_test_name("multiple LLLeap instances"); - NamedTempFile script("py", - "import time\n" - "time.sleep(1)\n"); + NamedExtTempFile script("py", + "import time\n" + "time.sleep(1)\n"); LLLeapVector instances; instances.push_back(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName())))->getWeak()); @@ -231,10 +231,10 @@ namespace tut void object::test<2>() { set_test_name("stderr to log"); - NamedTempFile script("py", - "import sys\n" - "sys.stderr.write('''Hello from Python!\n" - "note partial line''')\n"); + NamedExtTempFile script("py", + "import sys\n" + "sys.stderr.write('''Hello from Python!\n" + "note partial line''')\n"); StringVec vcommand{ PYTHON, script.getName() }; CaptureLog log(LLError::LEVEL_INFO); waitfor(LLLeap::create(get_test_name(), vcommand)); @@ -246,8 +246,8 @@ namespace tut void object::test<3>() { set_test_name("bad stdout protocol"); - NamedTempFile script("py", - "print('Hello from Python!')\n"); + NamedExtTempFile script("py", + "print('Hello from Python!')\n"); CaptureLog log(LLError::LEVEL_WARN); waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName())))); @@ -259,10 +259,10 @@ namespace tut void object::test<4>() { set_test_name("leftover stdout"); - NamedTempFile script("py", - "import sys\n" - // note lack of newline - "sys.stdout.write('Hello from Python!')\n"); + NamedExtTempFile script("py", + "import sys\n" + // note lack of newline + "sys.stdout.write('Hello from Python!')\n"); CaptureLog log(LLError::LEVEL_WARN); waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName())))); @@ -274,9 +274,9 @@ namespace tut void object::test<5>() { set_test_name("bad stdout len prefix"); - NamedTempFile script("py", - "import sys\n" - "sys.stdout.write('5a2:something')\n"); + NamedExtTempFile script("py", + "import sys\n" + "sys.stdout.write('5a2:something')\n"); CaptureLog log(LLError::LEVEL_WARN); waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName())))); @@ -381,16 +381,16 @@ namespace tut set_test_name("round trip"); AckAPI api; Result result; - NamedTempFile script("py", - boost::phoenix::placeholders::arg1 << - "from " << reader_module << " import *\n" - // make a request on our little API - "request(pump='" << api.getName() << "', data={})\n" - // wait for its response - "resp = get()\n" - "result = '' if resp == dict(pump=replypump(), data='ack')\\\n" - " else 'bad: ' + str(resp)\n" - "send(pump='" << result.getName() << "', data=result)\n"); + NamedExtTempFile script("py", + boost::phoenix::placeholders::arg1 << + "from " << reader_module << " import *\n" + // make a request on our little API + "request(pump='" << api.getName() << "', data={})\n" + // wait for its response + "resp = get()\n" + "result = '' if resp == dict(pump=replypump(), data='ack')\\\n" + " else 'bad: ' + str(resp)\n" + "send(pump='" << result.getName() << "', data=result)\n"); waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName())))); result.ensure(); } @@ -419,37 +419,37 @@ namespace tut // iterations etc. in OS pipes and the LLLeap/LLProcess implementation. ReqIDAPI api; Result result; - NamedTempFile script("py", - boost::phoenix::placeholders::arg1 << - "import sys\n" - "from " << reader_module << " import *\n" - // Note that since reader imports llsd, this - // 'import *' gets us llsd too. - "sample = llsd.format_notation(dict(pump='" << - api.getName() << "', data=dict(reqid=999999, reply=replypump())))\n" - // The whole packet has length prefix too: "len:data" - "samplen = len(str(len(sample))) + 1 + len(sample)\n" - // guess how many messages it will take to - // accumulate BUFFERED_LENGTH - "count = int(" << BUFFERED_LENGTH << "/samplen)\n" - "print('Sending %s requests' % count, file=sys.stderr)\n" - "for i in range(count):\n" - " request('" << api.getName() << "', dict(reqid=i))\n" - // The assumption in this specific test that - // replies will arrive in the same order as - // requests is ONLY valid because the API we're - // invoking sends replies instantly. If the API - // had to wait for some external event before - // sending its reply, replies could arrive in - // arbitrary order, and we'd have to tick them - // off from a set. - "result = ''\n" - "for i in range(count):\n" - " resp = get()\n" - " if resp['data']['reqid'] != i:\n" - " result = 'expected reqid=%s in %s' % (i, resp)\n" - " break\n" - "send(pump='" << result.getName() << "', data=result)\n"); + NamedExtTempFile script("py", + boost::phoenix::placeholders::arg1 << + "import sys\n" + "from " << reader_module << " import *\n" + // Note that since reader imports llsd, this + // 'import *' gets us llsd too. + "sample = llsd.format_notation(dict(pump='" << + api.getName() << "', data=dict(reqid=999999, reply=replypump())))\n" + // The whole packet has length prefix too: "len:data" + "samplen = len(str(len(sample))) + 1 + len(sample)\n" + // guess how many messages it will take to + // accumulate BUFFERED_LENGTH + "count = int(" << BUFFERED_LENGTH << "/samplen)\n" + "print('Sending %s requests' % count, file=sys.stderr)\n" + "for i in range(count):\n" + " request('" << api.getName() << "', dict(reqid=i))\n" + // The assumption in this specific test that + // replies will arrive in the same order as + // requests is ONLY valid because the API we're + // invoking sends replies instantly. If the API + // had to wait for some external event before + // sending its reply, replies could arrive in + // arbitrary order, and we'd have to tick them + // off from a set. + "result = ''\n" + "for i in range(count):\n" + " resp = get()\n" + " if resp['data']['reqid'] != i:\n" + " result = 'expected reqid=%s in %s' % (i, resp)\n" + " break\n" + "send(pump='" << result.getName() << "', data=result)\n"); waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName()))), 300); // needs more realtime than most tests result.ensure(); @@ -462,60 +462,60 @@ namespace tut { ReqIDAPI api; Result result; - NamedTempFile script("py", - boost::phoenix::placeholders::arg1 << - "import sys\n" - "from " << reader_module << " import *\n" - // Generate a very large string value. - "desired = int(sys.argv[1])\n" - // 7 chars per item: 6 digits, 1 comma - "count = int((desired - 50)/7)\n" - "large = ''.join('%06d,' % i for i in range(count))\n" - // Pass 'large' as reqid because we know the API - // will echo reqid, and we want to receive it back. - "request('" << api.getName() << "', dict(reqid=large))\n" - "try:\n" - " resp = get()\n" - "except ParseError as e:\n" - " # try to find where e.data diverges from expectation\n" - // Normally we'd expect a 'pump' key in there, - // too, with value replypump(). But Python - // serializes keys in a different order than C++, - // so incoming data start with 'data'. - // Truthfully, though, if we get as far as 'pump' - // before we find a difference, something's very - // strange. - " expect = llsd.format_notation(dict(data=dict(reqid=large)))\n" - " chunk = 40\n" - " for offset in range(0, max(len(e.data), len(expect)), chunk):\n" - " if e.data[offset:offset+chunk] != \\\n" - " expect[offset:offset+chunk]:\n" - " print('Offset %06d: expect %r,\\n'\\\n" - " ' get %r' %\\\n" - " (offset,\n" - " expect[offset:offset+chunk],\n" - " e.data[offset:offset+chunk]),\n" - " file=sys.stderr)\n" - " break\n" - " else:\n" - " print('incoming data matches expect?!', file=sys.stderr)\n" - " send('" << result.getName() << "', '%s: %s' % (e.__class__.__name__, e))\n" - " sys.exit(1)\n" - "\n" - "echoed = resp['data']['reqid']\n" - "if echoed == large:\n" - " send('" << result.getName() << "', '')\n" - " sys.exit(0)\n" - // Here we know echoed did NOT match; try to find where - "for i in range(count):\n" - " start = 7*i\n" - " end = 7*(i+1)\n" - " if end > len(echoed)\\\n" - " or echoed[start:end] != large[start:end]:\n" - " send('" << result.getName() << "',\n" - " 'at offset %s, expected %r but got %r' %\n" - " (start, large[start:end], echoed[start:end]))\n" - "sys.exit(1)\n"); + NamedExtTempFile script("py", + boost::phoenix::placeholders::arg1 << + "import sys\n" + "from " << reader_module << " import *\n" + // Generate a very large string value. + "desired = int(sys.argv[1])\n" + // 7 chars per item: 6 digits, 1 comma + "count = int((desired - 50)/7)\n" + "large = ''.join('%06d,' % i for i in range(count))\n" + // Pass 'large' as reqid because we know the API + // will echo reqid, and we want to receive it back. + "request('" << api.getName() << "', dict(reqid=large))\n" + "try:\n" + " resp = get()\n" + "except ParseError as e:\n" + " # try to find where e.data diverges from expectation\n" + // Normally we'd expect a 'pump' key in there, + // too, with value replypump(). But Python + // serializes keys in a different order than C++, + // so incoming data start with 'data'. + // Truthfully, though, if we get as far as 'pump' + // before we find a difference, something's very + // strange. + " expect = llsd.format_notation(dict(data=dict(reqid=large)))\n" + " chunk = 40\n" + " for offset in range(0, max(len(e.data), len(expect)), chunk):\n" + " if e.data[offset:offset+chunk] != \\\n" + " expect[offset:offset+chunk]:\n" + " print('Offset %06d: expect %r,\\n'\\\n" + " ' get %r' %\\\n" + " (offset,\n" + " expect[offset:offset+chunk],\n" + " e.data[offset:offset+chunk]),\n" + " file=sys.stderr)\n" + " break\n" + " else:\n" + " print('incoming data matches expect?!', file=sys.stderr)\n" + " send('" << result.getName() << "', '%s: %s' % (e.__class__.__name__, e))\n" + " sys.exit(1)\n" + "\n" + "echoed = resp['data']['reqid']\n" + "if echoed == large:\n" + " send('" << result.getName() << "', '')\n" + " sys.exit(0)\n" + // Here we know echoed did NOT match; try to find where + "for i in range(count):\n" + " start = 7*i\n" + " end = 7*(i+1)\n" + " if end > len(echoed)\\\n" + " or echoed[start:end] != large[start:end]:\n" + " send('" << result.getName() << "',\n" + " 'at offset %s, expected %r but got %r' %\n" + " (start, large[start:end], echoed[start:end]))\n" + "sys.exit(1)\n"); waitfor(LLLeap::create(test_name, sv(list_of (PYTHON) diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 81449b4a42..4adb8d872a 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -191,7 +191,7 @@ struct PythonProcessLauncher LLProcess::Params mParams; LLProcessPtr mPy; std::string mDesc; - NamedTempFile mScript; + NamedExtTempFile mScript; }; /// convenience function for PythonProcessLauncher::run() @@ -355,7 +355,7 @@ namespace tut set_test_name("raw APR nonblocking I/O"); // Create a script file in a temporary place. - NamedTempFile script("py", + NamedExtTempFile script("py", "from __future__ import print_function" EOL "import sys" EOL "import time" EOL -- cgit v1.2.3 From aab769e9d7a9b11256572f8adb69d586d9ff8d3d Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 23:24:34 -0400 Subject: SL-18837: Make NamedTempFile revert to boost::function from std::function, since some consumers still use (e.g.) boost::phoenix::placeholders::arg1 to generate an inline callable. --- indra/test/namedtempfile.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 927e2b4fd9..df7495fc13 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -15,10 +15,10 @@ #include "llerror.h" #include "stringize.h" #include -#include +#include #include #include -#include +#include #include #include #include @@ -41,7 +41,7 @@ public: // Function that accepts an ostream ref and (presumably) writes stuff to // it, e.g.: // (boost::phoenix::placeholders::arg1 << "the value is " << 17 << '\n') - typedef std::function Streamer; + typedef boost::function Streamer; NamedTempFile(const std::string_view& pfx, const Streamer& func, -- cgit v1.2.3 From 26ca3e14d623e4094dde76ad88e3da2a209483b5 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 5 Jun 2023 23:46:43 -0400 Subject: SL-18837: NamedTempFile must still disambiguate string literals. --- indra/test/namedtempfile.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index df7495fc13..acfc048b7a 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -38,6 +38,15 @@ public: createFile(pfx, [&content](std::ostream& out){ out << content; }, sfx); } + // Disambiguate when passing string literal -- unclear why a string + // literal should be ambiguous wrt std::string_view and Streamer + NamedTempFile(const std::string_view& pfx, + const char* content, + const std::string_view& sfx=std::string_view("")) + { + createFile(pfx, [&content](std::ostream& out){ out << content; }, sfx); + } + // Function that accepts an ostream ref and (presumably) writes stuff to // it, e.g.: // (boost::phoenix::placeholders::arg1 << "the value is " << 17 << '\n') @@ -99,6 +108,11 @@ public: NamedTempFile(remove_dot(ext), content, ensure_dot(ext)) {} + // Disambiguate when passing string literal + NamedExtTempFile(const std::string& ext, const char* content): + NamedTempFile(remove_dot(ext), content, ensure_dot(ext)) + {} + NamedExtTempFile(const std::string& ext, const Streamer& func): NamedTempFile(remove_dot(ext), func, ensure_dot(ext)) {} -- cgit v1.2.3 From 6516c9d07db42beba5ba9c0c41a33925794a249c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Jun 2023 07:44:42 -0400 Subject: SL-18837: NamedTempFile back to std::function, use boost::phoenix << It seems the problem addressed by aab769e wasn't some synergy between Boost.Phoenix and Boost.Function, but rather the lack of a Phoenix header file introducing operator<<(). --- indra/llcommon/tests/llleap_test.cpp | 1 + indra/llcommon/tests/llsdserialize_test.cpp | 1 + indra/test/namedtempfile.h | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 99fd073dd2..0c91db3e24 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -19,6 +19,7 @@ // external library headers #include #include +#include // operator<<() // other Linden headers #include "../test/lltut.h" #include "../test/namedtempfile.h" diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index d7c11c5021..a0b8519508 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -50,6 +50,7 @@ typedef U32 uint32_t; #include "boost/bind.hpp" #include "boost/phoenix/bind/bind_function.hpp" #include "boost/phoenix/core/argument.hpp" +#include using namespace boost::phoenix; #include "../llsd.h" diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index acfc048b7a..84b62a0945 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -15,10 +15,10 @@ #include "llerror.h" #include "stringize.h" #include -#include #include #include #include +#include #include #include #include @@ -50,7 +50,7 @@ public: // Function that accepts an ostream ref and (presumably) writes stuff to // it, e.g.: // (boost::phoenix::placeholders::arg1 << "the value is " << 17 << '\n') - typedef boost::function Streamer; + typedef std::function Streamer; NamedTempFile(const std::string_view& pfx, const Streamer& func, -- cgit v1.2.3 From 1db7ac7139adf505be12308fd7ba2920f5beecde Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Jun 2023 10:02:57 -0400 Subject: SL-18837: Make NamedTempFile name template compatible with Python. The recommended template uses hyphens; change to underscores to be valid Python temp module names. --- indra/test/namedtempfile.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 84b62a0945..8cd6c990dc 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -83,8 +83,9 @@ protected: { // Create file in a temporary place. boost::filesystem::path tempname{ boost::filesystem::temp_directory_path() }; - // unique_path() recommended model - tempname += stringize(pfx, "%%%%-%%%%-%%%%-%%%%", sfx); + // unique_path() recommended template, but with underscores instead of + // hyphens: some use cases involve temporary Python scripts + tempname += stringize(pfx, "%%%%_%%%%_%%%%_%%%%", sfx); mPath = boost::filesystem::unique_path(tempname); boost::filesystem::ofstream out{ mPath }; -- cgit v1.2.3 From c4366378b61cacb9d87eb2917302fa17e9207491 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Jun 2023 10:04:26 -0400 Subject: SL-18837: Ditch Boost.Phoenix implicit lambda syntax. It's cool to be able to write 'arg1 << "stuff" << var ...;' for a lambda accepting a std::ostream reference, but cascading compile errors mean it's no longer worth trying to make that work -- given actual C++ lambdas. Also clean up a lingering BOOST_FOREACH() and a boost::bind() while at it. --- indra/llcommon/tests/llleap_test.cpp | 18 ++++++++---------- indra/llcommon/tests/llsdserialize_test.cpp | 21 +++++++-------------- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 0c91db3e24..0fc741d9e1 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -18,8 +18,6 @@ #include // external library headers #include -#include -#include // operator<<() // other Linden headers #include "../test/lltut.h" #include "../test/namedtempfile.h" @@ -105,7 +103,7 @@ namespace tut llleap_data(): reader(".py", // This logic is adapted from vita.viewerclient.receiveEvent() - boost::phoenix::placeholders::arg1 << + [](std::ostream& out){ out << "import re\n" "import os\n" "import sys\n" @@ -189,7 +187,7 @@ namespace tut "def request(pump, data):\n" " # we expect 'data' is a dict\n" " data['reply'] = _reply\n" - " send(pump, data)\n"), + " send(pump, data)\n";}), // Get the actual pathname of the NamedExtTempFile and trim off // the ".py" extension. (We could cache reader.getName() in a // separate member variable, but I happen to know getName() just @@ -383,7 +381,7 @@ namespace tut AckAPI api; Result result; NamedExtTempFile script("py", - boost::phoenix::placeholders::arg1 << + [&](std::ostream& out){ out << "from " << reader_module << " import *\n" // make a request on our little API "request(pump='" << api.getName() << "', data={})\n" @@ -391,7 +389,7 @@ namespace tut "resp = get()\n" "result = '' if resp == dict(pump=replypump(), data='ack')\\\n" " else 'bad: ' + str(resp)\n" - "send(pump='" << result.getName() << "', data=result)\n"); + "send(pump='" << result.getName() << "', data=result)\n";}); waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName())))); result.ensure(); } @@ -421,7 +419,7 @@ namespace tut ReqIDAPI api; Result result; NamedExtTempFile script("py", - boost::phoenix::placeholders::arg1 << + [&](std::ostream& out){ out << "import sys\n" "from " << reader_module << " import *\n" // Note that since reader imports llsd, this @@ -450,7 +448,7 @@ namespace tut " if resp['data']['reqid'] != i:\n" " result = 'expected reqid=%s in %s' % (i, resp)\n" " break\n" - "send(pump='" << result.getName() << "', data=result)\n"); + "send(pump='" << result.getName() << "', data=result)\n";}); waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName()))), 300); // needs more realtime than most tests result.ensure(); @@ -464,7 +462,7 @@ namespace tut ReqIDAPI api; Result result; NamedExtTempFile script("py", - boost::phoenix::placeholders::arg1 << + [&](std::ostream& out){ out << "import sys\n" "from " << reader_module << " import *\n" // Generate a very large string value. @@ -516,7 +514,7 @@ namespace tut " send('" << result.getName() << "',\n" " 'at offset %s, expected %r but got %r' %\n" " (start, large[start:end], echoed[start:end]))\n" - "sys.exit(1)\n"); + "sys.exit(1)\n";}); waitfor(LLLeap::create(test_name, sv(list_of (PYTHON) diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index a0b8519508..08bf7fbc51 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -45,13 +45,6 @@ typedef U32 uint32_t; #endif #include "boost/range.hpp" -#include "boost/foreach.hpp" -#include "boost/function.hpp" -#include "boost/bind.hpp" -#include "boost/phoenix/bind/bind_function.hpp" -#include "boost/phoenix/core/argument.hpp" -#include -using namespace boost::phoenix; #include "../llsd.h" #include "../llsdserialize.h" @@ -1802,7 +1795,7 @@ namespace tut // helper for test<3> static void writeLLSDArray(std::ostream& out, const LLSD& array) { - BOOST_FOREACH(LLSD item, llsd::inArray(array)) + for (const LLSD& item: llsd::inArray(array)) { LLSDSerialize::toNotation(item, out); // It's important to separate with newlines because Python's llsd @@ -1842,21 +1835,21 @@ namespace tut // Create an llsdXXXXXX file containing 'data' serialized to // notation. NamedTempFile file("llsd", - // NamedTempFile's boost::function constructor + // NamedTempFile's function constructor // takes a callable. To this callable it passes the // std::ostream with which it's writing the // NamedTempFile. - boost::bind(writeLLSDArray, _1, cdata)); + [&](std::ostream& out){ writeLLSDArray(out, cdata); }); python("read C++ notation", - placeholders::arg1 << + [&](std::ostream& out){ out << import_llsd << "def parse_each(iterable):\n" " for item in iterable:\n" " yield llsd.parse(item)\n" << pydata << // Don't forget raw-string syntax for Windows pathnames. - "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n"); + "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n";}); } template<> template<> @@ -1870,7 +1863,7 @@ namespace tut NamedTempFile file("llsd", ""); python("write Python notation", - placeholders::arg1 << + [&](std::ostream& out){ out << import_llsd << "DATA = [\n" " 17,\n" @@ -1884,7 +1877,7 @@ namespace tut // N.B. Using 'print' implicitly adds newlines. "with open(r'" << file.getName() << "', 'w') as f:\n" " for item in DATA:\n" - " print(llsd.format_notation(item).decode(), file=f)\n"); + " print(llsd.format_notation(item).decode(), file=f)\n";}); std::ifstream inf(file.getName().c_str()); LLSD item; -- cgit v1.2.3 From e63c571d1336e3c521e1fc3a5e27bb77fc667790 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Jun 2023 13:34:01 -0400 Subject: SL-18837: On Windows, NamedTempFile must convert from wstring --- indra/test/namedtempfile.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 8cd6c990dc..da4fec97c8 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -13,6 +13,7 @@ #define LL_NAMEDTEMPFILE_H #include "llerror.h" +#include "llstring.h" #include "stringize.h" #include #include @@ -64,7 +65,8 @@ public: boost::filesystem::remove(mPath); } - virtual std::string getName() const { return mPath.native(); } + // On Windows, path::native() returns a wstring + std::string getName() const { return ll_convert(mPath.native()); } void peep() { -- cgit v1.2.3 From 004150a5305d0df06c52a51a0df3ac26dd4a63cd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Jun 2023 16:27:43 -0400 Subject: SL-18837: Concat path part with / rather than +=. Using concatenation appends the intended filename to the parent directory name, instead of putting the filename in the parent directory. --- indra/test/namedtempfile.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index da4fec97c8..c215c50f3f 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -84,10 +84,12 @@ protected: const std::string_view& sfx) { // Create file in a temporary place. - boost::filesystem::path tempname{ boost::filesystem::temp_directory_path() }; - // unique_path() recommended template, but with underscores instead of - // hyphens: some use cases involve temporary Python scripts - tempname += stringize(pfx, "%%%%_%%%%_%%%%_%%%%", sfx); + boost::filesystem::path tempname{ + boost::filesystem::temp_directory_path() / + // unique_path() recommended template, but with underscores + // instead of hyphens: some use cases involve temporary Python + // scripts + stringize(pfx, "%%%%_%%%%_%%%%_%%%%", sfx) }; mPath = boost::filesystem::unique_path(tempname); boost::filesystem::ofstream out{ mPath }; -- cgit v1.2.3 From 996ea03d874c714f312c1bfbafda3dddc2172a39 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Jun 2023 09:31:10 -0400 Subject: SL-18837: On Windows, try using py.exe Python stub. --- autobuild.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/autobuild.xml b/autobuild.xml index 31ab78c79b..9c8bf57f60 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3676,6 +3676,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + -DPYTHON_EXECUTABLE=C:\Windows\py.exe default @@ -3719,6 +3720,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON + -DPYTHON_EXECUTABLE=C:\Windows\py.exe name @@ -3752,6 +3754,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + -DPYTHON_EXECUTABLE=C:\Windows\py.exe name @@ -3794,6 +3797,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON + -DPYTHON_EXECUTABLE=C:\Windows\py.exe name -- cgit v1.2.3 From aa906a9b7f8dbb24c97ba09852284f093cc4e525 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Jun 2023 12:17:15 -0400 Subject: SL-18837: Try setting PY_PYTHON and PYLAUNCHER_DEBUG which should only affect Windows unit tests, but should hopefully improve our chances that Windows unit tests will succeed. --- .github/workflows/build.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f7062d83dc..955493dd24 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -19,19 +19,24 @@ jobs: addrsize: 32 runs-on: ${{ matrix.runner }} env: - AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} + AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} # authorizes fetching private constituent packages AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" + # Ensure that viewer builds engage Bugsplat. + BUGSPLAT_DB: "SecondLife_Viewer_2018" # Setting this variable directs Linden's TUT test driver code to capture # test-program log output at the specified level, but to display it only if # the individual test fails. LOGFAIL: DEBUG - # Ensure that viewer builds engage Bugsplat. - BUGSPLAT_DB: "SecondLife_Viewer_2018" + # Force py.exe to select python3 rather than plain python (2) + PY_PYTHON: 3 + # but if unit tests fail to import llsd (i.e. wrong Python interpreter), + # make py.exe enumerate the possibilities and explain its choice + PYLAUNCHER_DEBUG: 1 steps: - name: Checkout code uses: actions/checkout@v3 -- cgit v1.2.3 From da72e958fe0c2ee88d39139f93c4d73897f711ee Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Jun 2023 12:30:46 -0400 Subject: SL-18837: Quote integers used for environment variables --- .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 955493dd24..7df15f0668 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -33,10 +33,10 @@ jobs: # the individual test fails. LOGFAIL: DEBUG # Force py.exe to select python3 rather than plain python (2) - PY_PYTHON: 3 + PY_PYTHON: "3" # but if unit tests fail to import llsd (i.e. wrong Python interpreter), # make py.exe enumerate the possibilities and explain its choice - PYLAUNCHER_DEBUG: 1 + PYLAUNCHER_DEBUG: "1" steps: - name: Checkout code uses: actions/checkout@v3 -- cgit v1.2.3 From 104ae678a60a09df1e500f3ded920b5d515ee99a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Jun 2023 14:54:56 -0400 Subject: SL-18837: Tell py.exe to use Python 3.9 instead of 3.11 --- .github/workflows/build.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 7df15f0668..0d7943ec4a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -32,8 +32,9 @@ jobs: # test-program log output at the specified level, but to display it only if # the individual test fails. LOGFAIL: DEBUG - # Force py.exe to select python3 rather than plain python (2) - PY_PYTHON: "3" + # Force py.exe to select python3.9 rather than the newest install 3.11, + # since the 'pip3' command below seems to be associated with Python 3.9 + PY_PYTHON: "3.9" # but if unit tests fail to import llsd (i.e. wrong Python interpreter), # make py.exe enumerate the possibilities and explain its choice PYLAUNCHER_DEBUG: "1" -- cgit v1.2.3 From 8140dd050e8eddcb8c513200fdca3adfa566853a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Jun 2023 16:31:11 -0400 Subject: SL-18837: Try to install llsd in the Python used by py.exe --- .github/workflows/build.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0d7943ec4a..4c668d5e99 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -32,10 +32,7 @@ jobs: # test-program log output at the specified level, but to display it only if # the individual test fails. LOGFAIL: DEBUG - # Force py.exe to select python3.9 rather than the newest install 3.11, - # since the 'pip3' command below seems to be associated with Python 3.9 - PY_PYTHON: "3.9" - # but if unit tests fail to import llsd (i.e. wrong Python interpreter), + # if unit tests fail to import llsd (i.e. wrong Python interpreter), # make py.exe enumerate the possibilities and explain its choice PYLAUNCHER_DEBUG: "1" steps: @@ -61,7 +58,13 @@ jobs: - name: Install windows dependencies if: runner.os == 'Windows' - run: choco install nsis-unicode + # Use 'py -m pip' because our autobuild.xml specifies py.exe as + # PYTHON_EXECUTABLE, and we've tried all kinds of tricks to make pip + # install the 'llsd' package into the Python interpreter selected by + # py.exe. + run: | + choco install nsis-unicode + py -m pip install autobuild llsd - name: Build id: build @@ -69,7 +72,6 @@ jobs: env: RUNNER_OS: ${{ runner.os }} run: | - pip install llsd # Required by viewer tests autobuild configure autobuild build --no-configure -- cgit v1.2.3 From f57de07f73871bc7be6c338ea18893a494d104eb Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Wed, 7 Jun 2023 13:46:29 -0700 Subject: Attempt to port some build.yaml improvements from DRTVWR-559 over to actions branch --- .github/workflows/build.yaml | 47 ++++++++++++++++++++++++++++++++------------ indra/cmake/Variables.cmake | 18 ++++++++++------- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4c668d5e99..7731a837e9 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -5,18 +5,22 @@ on: pull_request: push: branches: ["actions"] + tags: ["*"] jobs: build: strategy: matrix: - runner: [windows-2022, macos-11] + runner: [windows-large, macos-12-xl] configuration: [Release] addrsize: [64] + python-version: ["3.11"] include: - - runner: windows-2022 + - runner: windows-large configuration: Release addrsize: 32 + - runner: macos-12-xl + developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" runs-on: ${{ matrix.runner }} env: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} @@ -26,6 +30,7 @@ jobs: AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" + DEVELOPER_DIR: ${{ matrix.developer_dir }} # Ensure that viewer builds engage Bugsplat. BUGSPLAT_DB: "SecondLife_Viewer_2018" # Setting this variable directs Linden's TUT test driver code to capture @@ -35,9 +40,18 @@ jobs: # if unit tests fail to import llsd (i.e. wrong Python interpreter), # make py.exe enumerate the possibilities and explain its choice PYLAUNCHER_DEBUG: "1" + GIT_REF: ${{ github.head_ref || github.ref }} + LL_SKIP_REQUIRE_SYSROOT: 1 steps: - name: Checkout code uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha || github.sha }} + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} - name: Checkout build variables uses: actions/checkout@v3 @@ -55,16 +69,13 @@ jobs: with: path: .autobuild-installables key: ${{ runner.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}- + ${{ runner.os }}-${{ matrix.addrsize }}- - name: Install windows dependencies if: runner.os == 'Windows' - # Use 'py -m pip' because our autobuild.xml specifies py.exe as - # PYTHON_EXECUTABLE, and we've tried all kinds of tricks to make pip - # install the 'llsd' package into the Python interpreter selected by - # py.exe. - run: | - choco install nsis-unicode - py -m pip install autobuild llsd + run: choco install nsis-unicode - name: Build id: build @@ -72,9 +83,18 @@ jobs: env: RUNNER_OS: ${{ runner.os }} run: | - autobuild configure - autobuild build --no-configure + # On windows we need to point the build to the correct python + # as neither CMake's FindPython nor our custom Python.cmake module + # will resolve the correct interpreter location. + if [[ "$RUNNER_OS" == "Windows" ]]; then + export PYTHON="$(cygpath -m "$(which python)")" + echo "Python location: $PYTHON" + fi + autobuild configure -- -DVIEWER_CHANNEL="Second Life Test ${GIT_REF##*/}" + autobuild build --no-configure + + # Find artifacts if [[ "$RUNNER_OS" == "Windows" ]]; then installer_path=$(find ./build-*/newview/ | grep '_Setup\.exe') installer_name="$(basename $installer_path)" @@ -82,8 +102,9 @@ jobs: installer_path=$(find ./build-*/newview/ | grep '\.dmg') installer_name="$(basename $installer_path)" fi - echo "::set-output name=installer_path::$installer_path" - echo "::set-output name=installer_name::$installer_name" + + echo "installer_path=$installer_path" >> $GITHUB_OUTPUT + echo "installer_name=$installer_name" >> $GITHUB_OUTPUT - name: Upload installer uses: actions/upload-artifact@v3 diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index e6285ab48b..778384f87c 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -173,13 +173,17 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL "${CMAKE_MATCH_1}") message(STATUS "CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL = '${CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL}'") - string(REGEX MATCHALL "[^ ]+" LL_BUILD_LIST "$ENV{LL_BUILD}") - list(FIND LL_BUILD_LIST "-iwithsysroot" sysroot_idx) - if ("${sysroot_idx}" LESS 0) - message(FATAL_ERROR "Environment variable LL_BUILD must contain '-iwithsysroot'") - endif () - math(EXPR sysroot_idx "${sysroot_idx} + 1") - list(GET LL_BUILD_LIST "${sysroot_idx}" CMAKE_OSX_SYSROOT) + # allow disabling this check by setting LL_SKIP_REQUIRE_SYSROOT either ON as cmake cache var or non-empty as environment var + set(LL_SKIP_REQUIRE_SYSROOT OFF CACHE BOOL "Skip requirement to set toolchain sysroot ahead of time. Not skipped by default for consistency, but skipping can be useful for selecting alternative xcode versions side by side") + if("$ENV{LL_SKIP_REQUIRE_SYSROOT}" STREQUAL "" AND NOT ${LL_SKIP_REQUIRE_SYSROOT}) + string(REGEX MATCHALL "[^ ]+" LL_BUILD_LIST "$ENV{LL_BUILD}") + list(FIND LL_BUILD_LIST "-iwithsysroot" sysroot_idx) + if ("${sysroot_idx}" LESS 0) + message(FATAL_ERROR "Environment variable LL_BUILD must contain '-iwithsysroot'") + endif () + math(EXPR sysroot_idx "${sysroot_idx} + 1") + list(GET LL_BUILD_LIST "${sysroot_idx}" CMAKE_OSX_SYSROOT) + endif() message(STATUS "CMAKE_OSX_SYSROOT = '${CMAKE_OSX_SYSROOT}'") set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0") -- cgit v1.2.3 From 3ffa57473d4aec6a32807873513f7d880ec4bc67 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Wed, 7 Jun 2023 14:48:24 -0700 Subject: Revert "SL-18837: On Windows, try using py.exe Python stub." This reverts commit 996ea03d874c714f312c1bfbafda3dddc2172a39. --- autobuild.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 9c8bf57f60..31ab78c79b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3676,7 +3676,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - -DPYTHON_EXECUTABLE=C:\Windows\py.exe default @@ -3720,7 +3719,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON - -DPYTHON_EXECUTABLE=C:\Windows\py.exe name @@ -3754,7 +3752,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - -DPYTHON_EXECUTABLE=C:\Windows\py.exe name @@ -3797,7 +3794,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DINSTALL_PROPRIETARY=FALSE -DUSE_KDU=FALSE -DUSE_OPENAL:BOOL=ON - -DPYTHON_EXECUTABLE=C:\Windows\py.exe name -- cgit v1.2.3 From 68a57566b7520608ae242032788c3f472b54ad10 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Wed, 7 Jun 2023 16:28:11 -0700 Subject: SL-18837 fix win32 build warning about missing python-version setting --- .github/workflows/build.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 7731a837e9..d0f1b59ae6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -19,6 +19,7 @@ jobs: - runner: windows-large configuration: Release addrsize: 32 + python-version: "3.11" - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" runs-on: ${{ matrix.runner }} @@ -59,7 +60,7 @@ jobs: repository: secondlife/build-variables ref: viewer path: .build-variables - + - name: Install autobuild run: pip3 install autobuild llsd -- cgit v1.2.3 From bbd077bda8118c534d58cbcdc697875147cf09b7 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Fri, 9 Jun 2023 17:58:00 -0700 Subject: SL-18837 set build id based on github workflow run id --- .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 d0f1b59ae6..71b2a62618 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -92,7 +92,7 @@ jobs: echo "Python location: $PYTHON" fi - autobuild configure -- -DVIEWER_CHANNEL="Second Life Test ${GIT_REF##*/}" + autobuild configure --id "${{ github.run_id }}" -- -DVIEWER_CHANNEL="Second Life Test ${GIT_REF##*/}" autobuild build --no-configure # Find artifacts -- cgit v1.2.3 From ee453bc2d9df82dabf425ad61363dacf91338a48 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Thu, 22 Jun 2023 18:27:30 -0700 Subject: SL-18837 fixes for test failures. VERSION_BUILD is now too big to fit in 32 bits, and cpuid doesn't do what we expect under rosetta --- .github/workflows/build.yaml | 3 ++- indra/llcommon/llprocessor.cpp | 2 +- indra/newview/llappviewer.cpp | 4 ++-- indra/newview/llversioninfo.cpp | 2 +- indra/newview/llversioninfo.h | 2 +- indra/newview/llweb.cpp | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 71b2a62618..00dd7ed116 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -31,6 +31,7 @@ jobs: AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" + AUTOBUILD_BUILD_ID: ${{ github.run_id }} DEVELOPER_DIR: ${{ matrix.developer_dir }} # Ensure that viewer builds engage Bugsplat. BUGSPLAT_DB: "SecondLife_Viewer_2018" @@ -93,7 +94,7 @@ jobs: fi autobuild configure --id "${{ github.run_id }}" -- -DVIEWER_CHANNEL="Second Life Test ${GIT_REF##*/}" - autobuild build --no-configure + autobuild build --no-configure # Find artifacts if [[ "$RUNNER_OS" == "Windows" ]]; then diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index 4a1a81f083..28f8bc2b93 100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -746,7 +746,7 @@ private: __cpuid(0x1, eax, ebx, ecx, edx); if(feature_infos[0] != (S32)edx) { - LL_ERRS() << "machdep.cpu.feature_bits doesn't match expected cpuid result!" << LL_ENDL; + LL_WARNS() << "machdep.cpu.feature_bits doesn't match expected cpuid result!" << LL_ENDL; } #endif // LL_RELEASE_FOR_DOWNLOAD diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 8235e4466c..47cde3755b 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3552,7 +3552,7 @@ void LLAppViewer::writeSystemInfo() gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::instance().getMajor(); gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::instance().getMinor(); gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::instance().getPatch(); - gDebugInfo["ClientInfo"]["BuildVersion"] = LLVersionInfo::instance().getBuild(); + gDebugInfo["ClientInfo"]["BuildVersion"] = STRINGIZE(LLVersionInfo::instance().getBuild()); gDebugInfo["ClientInfo"]["AddressSize"] = LLVersionInfo::instance().getAddressSize(); gDebugInfo["CAFilename"] = gDirUtilp->getCAFile(); @@ -5669,7 +5669,7 @@ void LLAppViewer::handleLoginComplete() gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::instance().getMajor(); gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::instance().getMinor(); gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::instance().getPatch(); - gDebugInfo["ClientInfo"]["BuildVersion"] = LLVersionInfo::instance().getBuild(); + gDebugInfo["ClientInfo"]["BuildVersion"] = STRINGIZE(LLVersionInfo::instance().getBuild()); LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if ( parcel && parcel->getMusicURL()[0]) diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 376a7fce76..62bfa24e29 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -91,7 +91,7 @@ S32 LLVersionInfo::getPatch() return LL_VIEWER_VERSION_PATCH; } -S32 LLVersionInfo::getBuild() +S64 LLVersionInfo::getBuild() { return LL_VIEWER_VERSION_BUILD; } diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 02ff0c094a..122bd5c47a 100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -61,7 +61,7 @@ public: S32 getPatch(); /// return the build number as an integer - S32 getBuild(); + S64 getBuild(); /// return the full viewer version as a string like "2.0.0.200030" std::string getVersion(); diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index c4d873dd22..df8e9770f3 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -160,7 +160,7 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, substitution["VERSION_MAJOR"] = LLVersionInfo::instance().getMajor(); substitution["VERSION_MINOR"] = LLVersionInfo::instance().getMinor(); substitution["VERSION_PATCH"] = LLVersionInfo::instance().getPatch(); - substitution["VERSION_BUILD"] = LLVersionInfo::instance().getBuild(); + substitution["VERSION_BUILD"] = STRINGIZE(LLVersionInfo::instance().getBuild()); substitution["CHANNEL"] = LLVersionInfo::instance().getChannel(); substitution["GRID"] = LLGridManager::getInstance()->getGridId(); substitution["GRID_LOWERCASE"] = utf8str_tolower(LLGridManager::getInstance()->getGridId()); -- cgit v1.2.3 From 8a6247e34b1f77a248fc37b62852d4924df97d28 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 27 Jun 2023 17:28:58 -0400 Subject: SL-18837: Try doing necessary setup to run viewer's own build.sh. --- .github/workflows/build.yaml | 118 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 105 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d0f1b59ae6..fbb073968d 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -19,12 +19,12 @@ jobs: - runner: windows-large configuration: Release addrsize: 32 - python-version: "3.11" - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" runs-on: ${{ matrix.runner }} env: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} + AUTOBUILD_BUILD_ID: ${{ github.run_id }} AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} # authorizes fetching private constituent packages AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} @@ -32,17 +32,23 @@ jobs: AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" DEVELOPER_DIR: ${{ matrix.developer_dir }} - # Ensure that viewer builds engage Bugsplat. - BUGSPLAT_DB: "SecondLife_Viewer_2018" + build_coverity: false + build_log_dir: ${{ github.workspace }}/.logs + build_secrets_checkout: ${{ github.workspace }}/.build-secrets + build_viewer: true + BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared + BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/.buildscripts/hg/bin/buildscripts_support_functions + git_hooks_checkout: ${{ github.workspace }}/.git-hooks + GIT_REF: ${{ github.head_ref || github.ref }} + LL_SKIP_REQUIRE_SYSROOT: 1 # Setting this variable directs Linden's TUT test driver code to capture # test-program log output at the specified level, but to display it only if # the individual test fails. LOGFAIL: DEBUG - # if unit tests fail to import llsd (i.e. wrong Python interpreter), - # make py.exe enumerate the possibilities and explain its choice - PYLAUNCHER_DEBUG: "1" - GIT_REF: ${{ github.head_ref || github.ref }} - LL_SKIP_REQUIRE_SYSROOT: 1 + master_message_template_checkout: ${{ github.workspace }}/.master-message-template + # Only set variants to the one configuration: don't let build.sh loop + # over variants, let GitHub distribute variants over multiple hosts. + variants: ${{ matrix.configuration }} steps: - name: Checkout code uses: actions/checkout@v3 @@ -54,6 +60,12 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Checkout build secrets + uses: actions/checkout@v3 + with: + repository: secondlife/build-secrets + path: .build-secrets + - name: Checkout build variables uses: actions/checkout@v3 with: @@ -61,7 +73,25 @@ jobs: ref: viewer path: .build-variables - - name: Install autobuild + - name: Checkout buildscripts + uses: actions/checkout@v3 + with: + repository: secondlife/sling-buildscripts + path: .buildscripts + + - name: Checkout git-hooks + uses: actions/checkout@v3 + with: + repository: secondlife/git-hooks + path: .git-hooks + + - name: Checkout master-message-template + uses: actions/checkout@v3 + with: + repository: secondlife/master-message-template + path: .master-message-template + + - name: Install autobuild run: pip3 install autobuild llsd - name: Cache autobuild packages @@ -84,16 +114,78 @@ jobs: env: RUNNER_OS: ${{ runner.os }} run: | + # set up things the viewer's build.sh script expects + mkdir -p "$build_log_dir" + mkdir -p "$BUILDSCRIPTS_SHARED/packages/lib/python" + source "$BUILDSCRIPTS_SUPPORT_FUNCTIONS" + if [[ "$OSTYPE" == "cygwin" ]] + then + native_path() { cygpath --windows "$1"; } + shell_path() { cygpath --unix "$1"; } + else + native_path() { echo "$1"; } + shell_path() { echo "$1"; } + fi + initialize_build() + { + echo "initialize_build" + } + initialize_version() + { + export revision="$AUTOBUILD_BUILD_ID" + } + python_cmd() + { + if [[ "x${1:0:1}" == "x-" ]] # -m, -c, etc. + then # if $1 is a switch, don't try to twiddle paths + "$(shell_path "$PYTHON_COMMAND")" "$@" + elif [[ "$(basename "$1")" == "codeticket.py" ]] + then # ignore any attempt to contact codeticket + echo "## $@" + else # running a script at an explicit path: fix path for Python + local script="$1" + shift + "$(shell_path "$PYTHON_COMMAND")" "$(native_path "$script")" "$@" + fi + } + repo_branch() + { + git -C "$1" branch | grep '^* ' | cut -c 3- + } + record_dependencies_graph() + { + echo "TODO: generate and post dependency graph" + } + # Since we're not uploading to codeticket, DO NOT sleep for minutes. + sleep() + { + echo "Not sleeping for $1 seconds" + } + export -f native_path shell_path initialize_build initialize_version + export -f python_cmd repo_branch record_dependencies_graph sleep + export arch=$(uname | cut -b-6) + export AUTOBUILD="$(which autobuild)" + # Build with a tag like "Second Life Project Shiny:abcdef0" to get a + # viewer channel "Second Life Project Shiny" (ignoring ":hash", + # needed to disambiguate tags). + if [[ "${GIT_REF:0:12}" == "Second Life " ]] + then export viewer_channel="${GIT_REF%:*}" + else export viewer_channel="Second Life Test" + fi + # On windows we need to point the build to the correct python # as neither CMake's FindPython nor our custom Python.cmake module # will resolve the correct interpreter location. if [[ "$RUNNER_OS" == "Windows" ]]; then - export PYTHON="$(cygpath -m "$(which python)")" + export PYTHON="$(native_path "$(which python)")" echo "Python location: $PYTHON" + export PYTHON_COMMAND="$PYTHON" + else + export PYTHON_COMMAND="python3" fi + export PYTHON_COMMAND_NATIVE="$(native_path "$PYTHON_COMMAND")" - autobuild configure -- -DVIEWER_CHANNEL="Second Life Test ${GIT_REF##*/}" - autobuild build --no-configure + ./build.sh # Find artifacts if [[ "$RUNNER_OS" == "Windows" ]]; then @@ -106,7 +198,7 @@ jobs: echo "installer_path=$installer_path" >> $GITHUB_OUTPUT echo "installer_name=$installer_name" >> $GITHUB_OUTPUT - + - name: Upload installer uses: actions/upload-artifact@v3 with: -- cgit v1.2.3 From a163931b773eb9c863b804eb4af1e63e398e6360 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Mon, 26 Jun 2023 17:06:37 -0700 Subject: SL-18837 improvements suggested by code review --- indra/newview/llappviewer.cpp | 4 ++-- indra/newview/llweb.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 47cde3755b..99ace834c2 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3552,7 +3552,7 @@ void LLAppViewer::writeSystemInfo() gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::instance().getMajor(); gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::instance().getMinor(); gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::instance().getPatch(); - gDebugInfo["ClientInfo"]["BuildVersion"] = STRINGIZE(LLVersionInfo::instance().getBuild()); + gDebugInfo["ClientInfo"]["BuildVersion"] = std::to_string(LLVersionInfo::instance().getBuild()); gDebugInfo["ClientInfo"]["AddressSize"] = LLVersionInfo::instance().getAddressSize(); gDebugInfo["CAFilename"] = gDirUtilp->getCAFile(); @@ -5669,7 +5669,7 @@ void LLAppViewer::handleLoginComplete() gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::instance().getMajor(); gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::instance().getMinor(); gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::instance().getPatch(); - gDebugInfo["ClientInfo"]["BuildVersion"] = STRINGIZE(LLVersionInfo::instance().getBuild()); + gDebugInfo["ClientInfo"]["BuildVersion"] = std::to_string(LLVersionInfo::instance().getBuild()); LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if ( parcel && parcel->getMusicURL()[0]) diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index df8e9770f3..9afe332025 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -160,7 +160,7 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, substitution["VERSION_MAJOR"] = LLVersionInfo::instance().getMajor(); substitution["VERSION_MINOR"] = LLVersionInfo::instance().getMinor(); substitution["VERSION_PATCH"] = LLVersionInfo::instance().getPatch(); - substitution["VERSION_BUILD"] = STRINGIZE(LLVersionInfo::instance().getBuild()); + substitution["VERSION_BUILD"] = std::to_string(LLVersionInfo::instance().getBuild()); substitution["CHANNEL"] = LLVersionInfo::instance().getChannel(); substitution["GRID"] = LLGridManager::getInstance()->getGridId(); substitution["GRID_LOWERCASE"] = utf8str_tolower(LLGridManager::getInstance()->getGridId()); -- cgit v1.2.3 From ce3508613bc1db3ad05758f452ffecf293fba643 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 28 Jun 2023 09:36:25 -0400 Subject: SL-18837: Include actions-build-sh branch in build trigger pushes. --- .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 fbb073968d..f7a3eb5e7d 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -4,7 +4,7 @@ on: workflow_dispatch: pull_request: push: - branches: ["actions"] + branches: ["actions", "actions-build-sh"] tags: ["*"] jobs: -- cgit v1.2.3 From 853cf3928cba51fe1e84a51316f9698c55ba4ad4 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 28 Jun 2023 16:44:03 -0400 Subject: SL-18837: Don't fetch (unmigrated) build-secrets, use GH secrets. --- .github/workflows/build.yaml | 14 ++++++-------- build.sh | 18 +++++++++++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f7a3eb5e7d..dda5867a9f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -4,7 +4,7 @@ on: workflow_dispatch: pull_request: push: - branches: ["actions", "actions-build-sh"] + branches: ["actions*"] tags: ["*"] jobs: @@ -19,6 +19,7 @@ jobs: - runner: windows-large configuration: Release addrsize: 32 + python-version: "3.11" - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" runs-on: ${{ matrix.runner }} @@ -32,9 +33,12 @@ jobs: AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" DEVELOPER_DIR: ${{ matrix.developer_dir }} + # Ensure that viewer builds engage Bugsplat. + BUGSPLAT_DB: "SecondLife_Viewer_2018" + BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }} + BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }} build_coverity: false build_log_dir: ${{ github.workspace }}/.logs - build_secrets_checkout: ${{ github.workspace }}/.build-secrets build_viewer: true BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/.buildscripts/hg/bin/buildscripts_support_functions @@ -60,12 +64,6 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Checkout build secrets - uses: actions/checkout@v3 - with: - repository: secondlife/build-secrets - path: .build-secrets - - name: Checkout build variables uses: actions/checkout@v3 with: diff --git a/build.sh b/build.sh index 89609a9ffd..06a73aa8ca 100755 --- a/build.sh +++ b/build.sh @@ -146,12 +146,20 @@ pre_build() fi # don't spew credentials into build log - bugsplat_sh="$build_secrets_checkout/bugsplat/bugsplat.sh" set +x - if [ -r "$bugsplat_sh" ] - then # show that we're doing this, just not the contents - echo source "$bugsplat_sh" - source "$bugsplat_sh" + # expect these variables to be set in the environment from GitHub secrets + if [[ -z "$BUGSPLAT_USER" || -z "$BUGSPLAT_PASS" ]] + then + # older mechanism involving build-secrets repo - + # if build_secrets_checkout isn't set, report its name + bugsplat_sh="${build_secrets_checkout:-\$build_secrets_checkout}/bugsplat/bugsplat.sh" + if [ -r "$bugsplat_sh" ] + then # show that we're doing this, just not the contents + echo source "$bugsplat_sh" + source "$bugsplat_sh" + else + fatal "BUGSPLAT_USER or BUGSPLAT_PASS missing, and no $bugsplat_sh" + fi fi set -x -- cgit v1.2.3 From d2294841b2df66f4e684b5eed1cae955cea21cf8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 28 Jun 2023 16:58:32 -0400 Subject: SL-18837: Get buildscripts_support_functions from sling-buildscripts and use these variants for GitHub builds. --- .github/workflows/build.yaml | 9 ++----- buildscripts_support_functions | 60 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 7 deletions(-) create mode 100644 buildscripts_support_functions diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index dda5867a9f..e7608657e3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -41,7 +41,8 @@ jobs: build_log_dir: ${{ github.workspace }}/.logs build_viewer: true BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared - BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/.buildscripts/hg/bin/buildscripts_support_functions + # extracted and committed to viewer repo + BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/buildscripts_support_functions git_hooks_checkout: ${{ github.workspace }}/.git-hooks GIT_REF: ${{ github.head_ref || github.ref }} LL_SKIP_REQUIRE_SYSROOT: 1 @@ -71,12 +72,6 @@ jobs: ref: viewer path: .build-variables - - name: Checkout buildscripts - uses: actions/checkout@v3 - with: - repository: secondlife/sling-buildscripts - path: .buildscripts - - name: Checkout git-hooks uses: actions/checkout@v3 with: diff --git a/buildscripts_support_functions b/buildscripts_support_functions new file mode 100644 index 0000000000..557d2f80fb --- /dev/null +++ b/buildscripts_support_functions @@ -0,0 +1,60 @@ +# standalone functions from sling-buildscripts + +set_build_number_to_revision() +{ + record_event "buildNumber $revision" +} + +record_event() +{ + echo "=== $@" +} + +begin_section() +{ + record_event "START $*" + sections+=("$*") +} + +end_section() +{ + # accommodate dumb Mac bash 3, which doesn't understand array[-1] + local last=$(( ${#sections[@]} - 1 )) + record_event "END ${*:-${sections[$last]}}" + unset "sections[$last]" +} + +record_success() +{ + record_event "SUCCESS $*" +} + +record_failure() +{ + record_event "FAILURE $*" >&2 +} + +fatal() +{ + record_failure "$@" + finalize false + exit 1 +} + +# redefined fail for backward compatibility +alias fail=fatal + +pass() +{ + exit 0 +} + +export -f set_build_number_to_revision +export -f record_event +export -f begin_section +export -f end_section +export -f record_success +export -f record_failure +export -f fatal +export -f pass +export sections -- cgit v1.2.3 From ab6fd15d6184e3aab69f1bef0fb98c2d3d257408 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 28 Jun 2023 17:08:04 -0400 Subject: SL-18837: git-hooks no longer has requirements.txt? --- build.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 06a73aa8ca..44c7d66640 100755 --- a/build.sh +++ b/build.sh @@ -321,9 +321,13 @@ begin_section "coding policy check" # this far. Running coding policy checks on one platform *should* suffice... if [[ "$arch" == "Darwin" ]] then - # install the git-hooks dependencies - pip install -r "$(native_path "$git_hooks_checkout/requirements.txt")" || \ - fatal "pip install git-hooks failed" + git_hooks_reqs="$git_hooks_checkout/requirements.txt" + if [[ -r "$(shell_path "$git_hooks_reqs")" ]] + then + # install the git-hooks dependencies + pip install -r "$(native_path "$git_hooks_reqs")" || \ + fatal "pip install git-hooks failed" + fi # validate the branch we're about to build python_cmd "$git_hooks_checkout/coding_policy_git.py" --all_files || \ fatal "coding policy check failed" -- cgit v1.2.3 From 41d937d2c03502c31c4366e75ebe5dbcf7b0d906 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 28 Jun 2023 17:15:06 -0400 Subject: SL-18837: Don't try to engage git-hooks explicitly at all. --- .github/workflows/build.yaml | 7 ------- build.sh | 10 +++++++--- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e7608657e3..40759823ad 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -43,7 +43,6 @@ jobs: BUILDSCRIPTS_SHARED: ${{ github.workspace }}/.shared # extracted and committed to viewer repo BUILDSCRIPTS_SUPPORT_FUNCTIONS: ${{ github.workspace }}/buildscripts_support_functions - git_hooks_checkout: ${{ github.workspace }}/.git-hooks GIT_REF: ${{ github.head_ref || github.ref }} LL_SKIP_REQUIRE_SYSROOT: 1 # Setting this variable directs Linden's TUT test driver code to capture @@ -72,12 +71,6 @@ jobs: ref: viewer path: .build-variables - - name: Checkout git-hooks - uses: actions/checkout@v3 - with: - repository: secondlife/git-hooks - path: .git-hooks - - name: Checkout master-message-template uses: actions/checkout@v3 with: diff --git a/build.sh b/build.sh index 44c7d66640..86119cf259 100755 --- a/build.sh +++ b/build.sh @@ -328,9 +328,13 @@ then pip install -r "$(native_path "$git_hooks_reqs")" || \ fatal "pip install git-hooks failed" fi - # validate the branch we're about to build - python_cmd "$git_hooks_checkout/coding_policy_git.py" --all_files || \ - fatal "coding policy check failed" + git_hooks_script="$git_hooks_checkout/coding_policy_git.py" + if [[ -r "$(shell_path "$git_hooks_script")" ]] + then + # validate the branch we're about to build + python_cmd "$(native_path "$git_hooks_script")" --all_files || \ + fatal "coding policy check failed" + fi fi end_section "coding policy check" -- cgit v1.2.3 From 3c63cc9c55b1193f2876e7523f0b6766f5a8c5ac Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 28 Jun 2023 18:36:51 -0400 Subject: SL-18837: Make LLVersionInfo::getBuild() S64 for GitHub run IDs. --- indra/newview/llappviewer.cpp | 4 ++-- indra/newview/llpanellogin.cpp | 4 ++-- indra/newview/lltranslate.cpp | 4 ++-- indra/newview/llversioninfo.cpp | 2 +- indra/newview/llversioninfo.h | 2 +- indra/newview/llweb.cpp | 2 +- indra/newview/llxmlrpctransaction.cpp | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 8235e4466c..99ace834c2 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3552,7 +3552,7 @@ void LLAppViewer::writeSystemInfo() gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::instance().getMajor(); gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::instance().getMinor(); gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::instance().getPatch(); - gDebugInfo["ClientInfo"]["BuildVersion"] = LLVersionInfo::instance().getBuild(); + gDebugInfo["ClientInfo"]["BuildVersion"] = std::to_string(LLVersionInfo::instance().getBuild()); gDebugInfo["ClientInfo"]["AddressSize"] = LLVersionInfo::instance().getAddressSize(); gDebugInfo["CAFilename"] = gDirUtilp->getCAFile(); @@ -5669,7 +5669,7 @@ void LLAppViewer::handleLoginComplete() gDebugInfo["ClientInfo"]["MajorVersion"] = LLVersionInfo::instance().getMajor(); gDebugInfo["ClientInfo"]["MinorVersion"] = LLVersionInfo::instance().getMinor(); gDebugInfo["ClientInfo"]["PatchVersion"] = LLVersionInfo::instance().getPatch(); - gDebugInfo["ClientInfo"]["BuildVersion"] = LLVersionInfo::instance().getBuild(); + gDebugInfo["ClientInfo"]["BuildVersion"] = std::to_string(LLVersionInfo::instance().getBuild()); LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if ( parcel && parcel->getMusicURL()[0]) diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index b14fdbf38e..c61c176530 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -300,7 +300,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, setDefaultBtn(def_btn); std::string channel = LLVersionInfo::instance().getChannel(); - std::string version = llformat("%s (%d)", + std::string version = llformat("%s (%ld)", LLVersionInfo::instance().getShortVersion().c_str(), LLVersionInfo::instance().getBuild()); @@ -894,7 +894,7 @@ void LLPanelLogin::loadLoginPage() } // Channel and Version - params["version"] = llformat("%s (%d)", + params["version"] = llformat("%s (%ld)", LLVersionInfo::instance().getShortVersion().c_str(), LLVersionInfo::instance().getBuild()); params["channel"] = LLVersionInfo::instance().getChannel(); diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index 34d3ed8bb1..d7cb12826f 100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -133,7 +133,7 @@ void LLTranslationAPIHandler::verifyKeyCoro(LLTranslate::EService service, std:: LLCore::HttpHeaders::ptr_t httpHeaders(new LLCore::HttpHeaders); - std::string user_agent = llformat("%s %d.%d.%d (%d)", + std::string user_agent = llformat("%s %d.%d.%d (%ld)", LLVersionInfo::instance().getChannel().c_str(), LLVersionInfo::instance().getMajor(), LLVersionInfo::instance().getMinor(), @@ -177,7 +177,7 @@ void LLTranslationAPIHandler::translateMessageCoro(LanguagePair_t fromTo, std::s LLCore::HttpHeaders::ptr_t httpHeaders(new LLCore::HttpHeaders); - std::string user_agent = llformat("%s %d.%d.%d (%d)", + std::string user_agent = llformat("%s %d.%d.%d (%ld)", LLVersionInfo::instance().getChannel().c_str(), LLVersionInfo::instance().getMajor(), LLVersionInfo::instance().getMinor(), diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 376a7fce76..62bfa24e29 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -91,7 +91,7 @@ S32 LLVersionInfo::getPatch() return LL_VIEWER_VERSION_PATCH; } -S32 LLVersionInfo::getBuild() +S64 LLVersionInfo::getBuild() { return LL_VIEWER_VERSION_BUILD; } diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 02ff0c094a..122bd5c47a 100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -61,7 +61,7 @@ public: S32 getPatch(); /// return the build number as an integer - S32 getBuild(); + S64 getBuild(); /// return the full viewer version as a string like "2.0.0.200030" std::string getVersion(); diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index c4d873dd22..9afe332025 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -160,7 +160,7 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, substitution["VERSION_MAJOR"] = LLVersionInfo::instance().getMajor(); substitution["VERSION_MINOR"] = LLVersionInfo::instance().getMinor(); substitution["VERSION_PATCH"] = LLVersionInfo::instance().getPatch(); - substitution["VERSION_BUILD"] = LLVersionInfo::instance().getBuild(); + substitution["VERSION_BUILD"] = std::to_string(LLVersionInfo::instance().getBuild()); substitution["CHANNEL"] = LLVersionInfo::instance().getChannel(); substitution["GRID"] = LLGridManager::getInstance()->getGridId(); substitution["GRID_LOWERCASE"] = utf8str_tolower(LLGridManager::getInstance()->getGridId()); diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index 8d178dbbdc..b851b7ad5c 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -384,7 +384,7 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip, const httpHeaders->append(HTTP_OUT_HEADER_CONTENT_TYPE, HTTP_CONTENT_TEXT_XML); - std::string user_agent = llformat("%s %d.%d.%d (%d)", + std::string user_agent = llformat("%s %d.%d.%d (%ld)", LLVersionInfo::instance().getChannel().c_str(), LLVersionInfo::instance().getMajor(), LLVersionInfo::instance().getMinor(), -- cgit v1.2.3 From 2ab14316488185496ec5c72fafcccd2ffdc43dfd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 29 Jun 2023 09:08:41 -0400 Subject: SL-18837: Temporarily suppress Windows builds; add finalize function Also pretend novel arch value MINGW6 is really CYGWIN so we'll recognize it. --- .github/workflows/build.yaml | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 40759823ad..f5ed5ce2ae 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -13,15 +13,17 @@ jobs: matrix: runner: [windows-large, macos-12-xl] configuration: [Release] - addrsize: [64] + addrsize: [32,64] python-version: ["3.11"] - include: - - runner: windows-large - configuration: Release - addrsize: 32 - python-version: "3.11" + developer_dir: ["", "/Applications/Xcode_14.0.1.app/Contents/Developer"] + exclude: - runner: macos-12-xl + addrsize: 32 + - runner: windows-large developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" + ## nat 2023-06-29: until we've resolved the !@#$%! Windows Python + ## permissions problem, don't even bother running Windows builds. + - runner: windows-large runs-on: ${{ matrix.runner }} env: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} @@ -112,6 +114,17 @@ jobs: native_path() { echo "$1"; } shell_path() { echo "$1"; } fi + finalize() + { + case "$1" in + true|0) + record_success "Build Succeeded" + ;; + *) + record_failure "Build Failed with $1" + ;; + esac + } initialize_build() { echo "initialize_build" @@ -147,9 +160,12 @@ jobs: { echo "Not sleeping for $1 seconds" } - export -f native_path shell_path initialize_build initialize_version + export -f native_path shell_path finalize initialize_build initialize_version export -f python_cmd repo_branch record_dependencies_graph sleep export arch=$(uname | cut -b-6) + # Surprise! GH Windows runner's MINGW6 is a $arch value we've never + # seen before, so numerous tests don't know about it. + [[ "$arch" == "MINGW6" ]] && arch=CYGWIN export AUTOBUILD="$(which autobuild)" # Build with a tag like "Second Life Project Shiny:abcdef0" to get a # viewer channel "Second Life Project Shiny" (ignoring ":hash", -- cgit v1.2.3 From d62e7039dafe4a49d548225203785eeda0eeb44a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 29 Jun 2023 14:03:31 -0400 Subject: SL-18837: Install autobuild from source repo, not PyPI. Bug in autobuild 3.9.2? The TC viewer build can successfully build llphysicsextensions/autobuild-tpv.xml, but the previous GH actions build failed: "no configuration for Release found" despite -c Tpv. The difference seems to be that we used 'pip3 install autobuild' from PyPI, whereas the TC buildscripts setup clones secondlife/autobuild branch v3 and installs from that repo. --- .github/workflows/build.yaml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f5ed5ce2ae..18e07aae5e 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,6 +28,7 @@ jobs: env: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_BUILD_ID: ${{ github.run_id }} + autobuild_checkout: ${{ github.workspace}}/.autobuild AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} # authorizes fetching private constituent packages AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} @@ -66,6 +67,19 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Checkout autobuild + uses: actions/checkout@v3 + # Bug in autobuild 3.9.2? The TC viewer build can successfully build + # llphysicsextensions/autobuild-tpv.xml, but the previous GH actions + # build failed: "no configuration for Release found" despite -c Tpv. + # The difference seems to be that we used 'pip3 install autobuild' + # from PyPI, whereas the TC buildscripts setup clones + # secondlife/autobuild branch v3 and installs from that repo. + with: + repository: secondlife/autobuild + ref: v3 + path: .autobuild + - name: Checkout build variables uses: actions/checkout@v3 with: @@ -80,7 +94,10 @@ jobs: path: .master-message-template - name: Install autobuild - run: pip3 install autobuild llsd + shell: bash + run: | + pip3 install "$autobuild_checkout" + pip3 install llsd - name: Cache autobuild packages uses: actions/cache@v3 -- cgit v1.2.3 From 153f5cdb9f060806472d76c7b57837cdbdf21b68 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 30 Jun 2023 10:44:17 -0400 Subject: SL-18837: Revert "Install autobuild from source repo, not PyPI." That doesn't seem to be the distinction between TC builds and GH builds. Instead, we'll try unsetting AUTOBUILD_CONFIGURATION. This reverts commit d62e7039dafe4a49d548225203785eeda0eeb44a. --- .github/workflows/build.yaml | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 18e07aae5e..f5ed5ce2ae 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,7 +28,6 @@ jobs: env: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_BUILD_ID: ${{ github.run_id }} - autobuild_checkout: ${{ github.workspace}}/.autobuild AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} # authorizes fetching private constituent packages AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} @@ -67,19 +66,6 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Checkout autobuild - uses: actions/checkout@v3 - # Bug in autobuild 3.9.2? The TC viewer build can successfully build - # llphysicsextensions/autobuild-tpv.xml, but the previous GH actions - # build failed: "no configuration for Release found" despite -c Tpv. - # The difference seems to be that we used 'pip3 install autobuild' - # from PyPI, whereas the TC buildscripts setup clones - # secondlife/autobuild branch v3 and installs from that repo. - with: - repository: secondlife/autobuild - ref: v3 - path: .autobuild - - name: Checkout build variables uses: actions/checkout@v3 with: @@ -94,10 +80,7 @@ jobs: path: .master-message-template - name: Install autobuild - shell: bash - run: | - pip3 install "$autobuild_checkout" - pip3 install llsd + run: pip3 install autobuild llsd - name: Cache autobuild packages uses: actions/cache@v3 -- cgit v1.2.3 From 5f1de35f39aa3a13f6dbb98b117bb6897c792910 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 30 Jun 2023 10:51:03 -0400 Subject: SL-18837: Unset AUTOBUILD_CONFIGURATION. We suspect that autobuild incorrectly prioritizes AUTOBUILD_CONFIGURATION over its command-line -c switch. The autobuild command to build the TPV package for llphysicsextensions specifies -c Tpv (the configuration in the specified config file), but with AUTOBUILD_CONFIGURATION=Release set, autobuild fails: "ERROR: no configuration for build configuration 'Release' found" --- .github/workflows/build.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f5ed5ce2ae..a3d5269d5a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,7 +28,6 @@ jobs: env: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_BUILD_ID: ${{ github.run_id }} - AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} # authorizes fetching private constituent packages AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables -- cgit v1.2.3 From ca5f3e3b35dedd3674df91ec5aabae1e6bab4acd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 6 Jul 2023 17:29:40 -0400 Subject: SL-18837: Add addoutput, addarrayoutput functions to build.sh and use them instead of codeticket addoutput to pass GitHub xxx_name, xxx_path outputs to build.yaml. Add upload steps to build.yaml to try to upload build products identified in build.sh. --- .github/workflows/build.yaml | 38 ++++++++++++++++++++++++++++++++++++++ build.sh | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a3d5269d5a..cd82fe5a54 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -205,3 +205,41 @@ jobs: with: name: ${{ steps.build.outputs.installer_name }} path: ${{ steps.build.outputs.installer_path }} + + - name: Upload metadata + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.build.outputs.autobuild_package_name }} + path: ${{ steps.build.outputs.autobuild_package_path }} + + - name: Upload version + uses: actions/upload-artifact@v3 + with: + name: viewer_version.txt + path: ${{ steps.build.outputs.viewer_version_name }} + + - name: Upload Doxygen Log + if: steps.build.outputs.doxygen_log_path + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.build.outputs.doxygen_log_name }} + path: ${{ steps.build.outputs.doxygen_log_path }} + + - name: Upload Doxygen Tarball + if: steps.build.outputs.doxygen_tarball_path + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.build.outputs.doxygen_tarball_name }} + path: ${{ steps.build.outputs.doxygen_tarball_path }} + + - name: Upload viewer package installers + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.build.outputs.installer_name }} + path: ${{ steps.build.outputs.packages }} + + - name: Upload symbol file + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.build.outputs.symbolfile_name }} + path: ${{ steps.build.outputs.symbolfile_path }} diff --git a/build.sh b/build.sh index 86119cf259..c50bf1df9d 100755 --- a/build.sh +++ b/build.sh @@ -110,6 +110,27 @@ installer_CYGWIN() fi } +[[ -n "$GITHUB_OUTPUT" ]] || fatal "Need to export GITHUB_OUTPUT" + +addoutput() +{ + local varname="$1" + local value="$2" + echo "${varname}_name=$(basename "$value")" >> "$GITHUB_OUTPUT" + echo "${varname}_path=$value" >> "$GITHUB_OUTPUT" +} + +# For variable numbers of output values, separate them one per line. +addarrayoutput() +{ + local varname="$1" + # indirection: specify the *name* of the array to emit + local -n arrayname="$2" + local IFS=' +' + echo "$varname=${arrayname[*]}" >> "$GITHUB_OUTPUT" +} + pre_build() { local variant="$1" @@ -369,6 +390,7 @@ do begin_section "Autobuild metadata" python_cmd "$helpers/codeticket.py" addoutput "Autobuild Metadata" "$build_dir/autobuild-package.xml" --mimetype text/xml \ || fatal "Upload of autobuild metadata failed" + addoutput autobuild_package "$build_dir/autobuild-package.xml" if [ "$arch" != "Linux" ] then record_dependencies_graph "$build_dir/autobuild-package.xml" # defined in buildscripts/hg/bin/build.sh @@ -384,6 +406,7 @@ do begin_section "Viewer Version" python_cmd "$helpers/codeticket.py" addoutput "Viewer Version" "$(<"$build_dir/newview/viewer_version.txt")" --mimetype inline-text \ || fatal "Upload of viewer version failed" + addoutput viewer_version "$(<"$build_dir/newview/viewer_version.txt")" end_section "Viewer Version" fi ;; @@ -392,12 +415,14 @@ do then record_event "Doxygen warnings generated; see doxygen_warnings.log" python_cmd "$helpers/codeticket.py" addoutput "Doxygen Log" "$build_dir/doxygen_warnings.log" --mimetype text/plain ## TBD + addoutput doxygen_log "$build_dir/doxygen_warnings.log" 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" \ || fatal "Upload of doxygen tarball failed" + addoutput doxygen_tarball "$build_dir/viewer-doxygen.tar.bz2" fi ;; *) @@ -513,6 +538,7 @@ then retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput Installer "$package" \ || fatal "Upload of installer failed" wait_for_codeticket + packages=("$package") # Upload additional packages. for package_id in $additional_packages @@ -523,11 +549,14 @@ then retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Installer $package_id" "$package" \ || fatal "Upload of installer $package_id failed" wait_for_codeticket + packages+=("$package") else record_failure "Failed to find additional package for '$package_id'." fi done + addarrayoutput viewer_packages packages + if [ "$last_built_variant" = "Release" ] then # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. @@ -537,6 +566,7 @@ then retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Symbolfile" "$VIEWER_SYMBOL_FILE" \ || fatal "Upload of symbolfile failed" wait_for_codeticket + addoutput symbolfile "$VIEWER_SYMBOL_FILE" fi # Upload the llphysicsextensions_tpv package, if one was produced @@ -546,6 +576,8 @@ then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Physics Extensions Package" "$llphysicsextensions_package" --private \ || fatal "Upload of physics extensions package failed" + ## how to make private? + ## addoutput llphysics "$llphysicsextensions_package" fi fi -- cgit v1.2.3 From 07b47160f1d93c1ed0ee5e61c0c8330f66e20857 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 6 Jul 2023 17:38:58 -0400 Subject: SL-18837: Ding Dong, 32-bit is dead! --- .github/workflows/build.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cd82fe5a54..e55a799825 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -13,12 +13,10 @@ jobs: matrix: runner: [windows-large, macos-12-xl] configuration: [Release] - addrsize: [32,64] + addrsize: [64] python-version: ["3.11"] developer_dir: ["", "/Applications/Xcode_14.0.1.app/Contents/Developer"] exclude: - - runner: macos-12-xl - addrsize: 32 - runner: windows-large developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" ## nat 2023-06-29: until we've resolved the !@#$%! Windows Python -- cgit v1.2.3 From 2b1a3cf9cdb4cde92d14217b743545eccdcb2991 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 06:38:03 -0400 Subject: SL-18837: Use multi-line GitHub outputs to upload artifacts. Having observed installer upload failures, I discovered the warning in actions/upload-artifact/README.md about multiple concurrent jobs trying to post the same pathname to the same artifact name. Try to disambiguate artifacts not only for different platforms, but for different jobs running on the same platform. This change also reflects my understanding that an artifact is (effectively) a distinct zip file that can contain multiple uploaded files. Because we'll want to download metadata without having to download enormous installers, create a separate metadata artifact per platform. Similarly, symbol files can get large: use a third distinct artifact for symbol files. But with those artifacts defined, leverage actions/upload-artifact's ability to upload multiple paths to the same artifact. In build.sh, define bash arrays installer, metadata, symbolfile and set up so that, on exit, each is written to a GITHUB_OUTPUT variable with the corresponding name. This involves a little magic to get macOS bash 3 to indirectly access an array. These multi-line output variables are then used to drive the upload-artifact step for each of the defined artifacts. --- .github/workflows/build.yaml | 80 +++++++++++++++++++------------------------- build.sh | 55 ++++++++++++++++-------------- 2 files changed, 65 insertions(+), 70 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index e55a799825..574a83246c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -186,58 +186,48 @@ jobs: ./build.sh - # Find artifacts - if [[ "$RUNNER_OS" == "Windows" ]]; then - installer_path=$(find ./build-*/newview/ | grep '_Setup\.exe') - installer_name="$(basename $installer_path)" - elif [[ "$RUNNER_OS" == "macOS" ]]; then - installer_path=$(find ./build-*/newview/ | grep '\.dmg') - installer_name="$(basename $installer_path)" - fi - - echo "installer_path=$installer_path" >> $GITHUB_OUTPUT - echo "installer_name=$installer_name" >> $GITHUB_OUTPUT + # Each artifact is downloaded as a distinct .zip file. Multiple jobs + # (per the matrix above) writing the same filepath to the same + # artifact name will *overwrite* that file. Moreover, they can + # interfere with each other, causing the upload to fail. + # https://github.com/actions/upload-artifact#uploading-to-the-same-artifact + # Given the size of our installers, and the fact that we typically + # only want to download just one instead of a single zip containing + # several, generate a distinct artifact name for each installer. + # Since the matrix above can run multiple builds on the same + # platform, we must disambiguate on more than the platform name. + # If we were still running Windows 32-bit builds, we'd need to + # qualify the artifact with bit width. + # DEVELOPER_DIR="/Applications/Xcode_14.0.1.app/Contents/Developer" + # or the empty string, so this produces dev="Xcode_14.0.1" or ".". + dev="$(basename "$(dirname "$(dirname "$DEVELOPER_DIR")")" .app)" + artifact="$RUNNER_OS $dev" + # For empty DEVELOPER_DIR, dev is ".", so artifact can end up with + # appended " ." -- ditch that if present. + artifact="${artifact% .}" + echo "artifact=$artifact" >> $GITHUB_OUTPUT - name: Upload installer uses: actions/upload-artifact@v3 with: - name: ${{ steps.build.outputs.installer_name }} - path: ${{ steps.build.outputs.installer_path }} - - - name: Upload metadata - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.build.outputs.autobuild_package_name }} - path: ${{ steps.build.outputs.autobuild_package_path }} - - - name: Upload version - uses: actions/upload-artifact@v3 - with: - name: viewer_version.txt - path: ${{ steps.build.outputs.viewer_version_name }} + name: "${{ steps.build.outputs.artifact }} installer" + # emitted by build.sh, possibly multiple lines + path: | + ${{ steps.build.outputs.installer }} - - name: Upload Doxygen Log - if: steps.build.outputs.doxygen_log_path - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.build.outputs.doxygen_log_name }} - path: ${{ steps.build.outputs.doxygen_log_path }} - - - name: Upload Doxygen Tarball - if: steps.build.outputs.doxygen_tarball_path - uses: actions/upload-artifact@v3 - with: - name: ${{ steps.build.outputs.doxygen_tarball_name }} - path: ${{ steps.build.outputs.doxygen_tarball_path }} - - - name: Upload viewer package installers + # The other upload of nontrivial size is the symbol file. Use a distinct + # artifact for that too. + - name: Upload symbol file uses: actions/upload-artifact@v3 with: - name: ${{ steps.build.outputs.installer_name }} - path: ${{ steps.build.outputs.packages }} + name: "${{ steps.build.outputs.artifact }} symbols" + path: | + ${{ steps.build.outputs.symbolfile }} - - name: Upload symbol file + - name: Upload metadata uses: actions/upload-artifact@v3 with: - name: ${{ steps.build.outputs.symbolfile_name }} - path: ${{ steps.build.outputs.symbolfile_path }} + name: "${{ steps.build.outputs.artifact }} metadata" + # emitted by build.sh, possibly multiple lines + path: | + ${{ steps.build.outputs.metadata }} diff --git a/build.sh b/build.sh index c50bf1df9d..bd3e84d7bd 100755 --- a/build.sh +++ b/build.sh @@ -16,6 +16,8 @@ # * The special style in which python is invoked is intentional to permit # use of a native python install on windows - which requires paths in DOS form +cleanup="true" + retry_cmd() { max_attempts="$1"; shift @@ -111,24 +113,28 @@ installer_CYGWIN() } [[ -n "$GITHUB_OUTPUT" ]] || fatal "Need to export GITHUB_OUTPUT" - -addoutput() -{ - local varname="$1" - local value="$2" - echo "${varname}_name=$(basename "$value")" >> "$GITHUB_OUTPUT" - echo "${varname}_path=$value" >> "$GITHUB_OUTPUT" -} - -# For variable numbers of output values, separate them one per line. -addarrayoutput() +# The following is based on the Warning for GitHub multiline output strings: +# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings +EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + +# Build up these arrays as we go +installer=() +metadata=() +symbolfile=() +# and dump them to GITHUB_OUTPUT when done +cleanup="$cleanup ; arrayoutput installer ; arrayoutput metadata ; arrayoutput symbolfile" +trap "$cleanup" EXIT + +arrayoutput() { - local varname="$1" - # indirection: specify the *name* of the array to emit - local -n arrayname="$2" + local outputname="$1" + # append "[*]" to the array name so array indirection works + local array="$1[*]" local IFS=' ' - echo "$varname=${arrayname[*]}" >> "$GITHUB_OUTPUT" + echo "$outputname<<$EOF +${!array} +$EOF" >> "$GITHUB_OUTPUT" } pre_build() @@ -216,7 +222,8 @@ package_llphysicsextensions_tpv() # capture the package file name for use in upload later... PKGTMP=`mktemp -t pgktpv.XXXXXX` - trap "rm $PKGTMP* 2>/dev/null" 0 + cleanup="$cleanup ; rm $PKGTMP* 2>/dev/null" + trap "$cleanup" EXIT "$autobuild" package --quiet --config-file "$tpvconfig" --results-file "$(native_path $PKGTMP)" || fatal "failed to package llphysicsextensions_tpv" tpv_status=$? if [ -r "${PKGTMP}" ] @@ -390,7 +397,7 @@ do begin_section "Autobuild metadata" python_cmd "$helpers/codeticket.py" addoutput "Autobuild Metadata" "$build_dir/autobuild-package.xml" --mimetype text/xml \ || fatal "Upload of autobuild metadata failed" - addoutput autobuild_package "$build_dir/autobuild-package.xml" + metadata+=("$build_dir/autobuild-package.xml") if [ "$arch" != "Linux" ] then record_dependencies_graph "$build_dir/autobuild-package.xml" # defined in buildscripts/hg/bin/build.sh @@ -406,7 +413,7 @@ do begin_section "Viewer Version" python_cmd "$helpers/codeticket.py" addoutput "Viewer Version" "$(<"$build_dir/newview/viewer_version.txt")" --mimetype inline-text \ || fatal "Upload of viewer version failed" - addoutput viewer_version "$(<"$build_dir/newview/viewer_version.txt")" + metadata+=("$build_dir/newview/viewer_version.txt") end_section "Viewer Version" fi ;; @@ -415,14 +422,14 @@ do then record_event "Doxygen warnings generated; see doxygen_warnings.log" python_cmd "$helpers/codeticket.py" addoutput "Doxygen Log" "$build_dir/doxygen_warnings.log" --mimetype text/plain ## TBD - addoutput doxygen_log "$build_dir/doxygen_warnings.log" + metadata+=("$build_dir/doxygen_warnings.log") 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" \ || fatal "Upload of doxygen tarball failed" - addoutput doxygen_tarball "$build_dir/viewer-doxygen.tar.bz2" + metadata+=("$build_dir/viewer-doxygen.tar.bz2") fi ;; *) @@ -538,7 +545,7 @@ then retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput Installer "$package" \ || fatal "Upload of installer failed" wait_for_codeticket - packages=("$package") + installer+=("$package") # Upload additional packages. for package_id in $additional_packages @@ -549,14 +556,12 @@ then retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Installer $package_id" "$package" \ || fatal "Upload of installer $package_id failed" wait_for_codeticket - packages+=("$package") + installer+=("$package") else record_failure "Failed to find additional package for '$package_id'." fi done - addarrayoutput viewer_packages packages - if [ "$last_built_variant" = "Release" ] then # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. @@ -566,7 +571,7 @@ then retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Symbolfile" "$VIEWER_SYMBOL_FILE" \ || fatal "Upload of symbolfile failed" wait_for_codeticket - addoutput symbolfile "$VIEWER_SYMBOL_FILE" + symbolfile+=("$VIEWER_SYMBOL_FILE") fi # Upload the llphysicsextensions_tpv package, if one was produced -- cgit v1.2.3 From f54c1215676f26480d88b4588bb0eeb9c05f50d9 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 10:06:02 -0400 Subject: SL-18837: Try putting generated Python scripts in RUNNER_TEMP dir. The claim is that the Windows Python interpreter is integrated somehow with the OS such that a command line that tries to run Python with a script that "looks suspicious" (i.e. in a system temp directory) fails with "Access denied" without even loading the interpreter. At least that theory would explain the "Access denied" errors we've been getting trying to run Python scripts generated into the system temp directory by our integration tests. Our hope is that generating such scripts into the GitHub RUNNER_TEMP directory will work better. As this test is specific to Windows, don't even bother running Mac builds. --- .github/workflows/build.yaml | 6 +++--- indra/test/namedtempfile.h | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 574a83246c..dc8f9f15cd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -19,9 +19,9 @@ jobs: exclude: - runner: windows-large developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" - ## nat 2023-06-29: until we've resolved the !@#$%! Windows Python - ## permissions problem, don't even bother running Windows builds. - - runner: windows-large + ## nat 2023-07-07: trying to resolve the Windows Python permissions + ## problem; don't bother running Mac builds. + - runner: macos-12-xl runs-on: ${{ matrix.runner }} env: AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index c215c50f3f..4343361f41 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -84,12 +84,19 @@ protected: const std::string_view& sfx) { // Create file in a temporary place. + // This variable is set by GitHub actions and is the recommended place + // to put temp files belonging to an actions job. + const char* RUNNER_TEMP = getenv("RUNNER_TEMP"); + boost::filesystem::path tempdir{ + // if RUNNER_TEMP is set and not empty + (RUNNER_TEMP && *RUNNER_TEMP)? + boost::filesystem::path(RUNNER_TEMP) : // use RUNNER_TEMP if available + boost::filesystem::temp_directory_path()}; // else canonical temp dir boost::filesystem::path tempname{ - boost::filesystem::temp_directory_path() / - // unique_path() recommended template, but with underscores - // instead of hyphens: some use cases involve temporary Python - // scripts - stringize(pfx, "%%%%_%%%%_%%%%_%%%%", sfx) }; + // use filename template recommended by unique_path() doc, but + // with underscores instead of hyphens: some use cases involve + // temporary Python scripts + tempdir / stringize(pfx, "%%%%_%%%%_%%%%_%%%%", sfx) }; mPath = boost::filesystem::unique_path(tempname); boost::filesystem::ofstream out{ mPath }; -- cgit v1.2.3 From e933ace53b24b732d4111169e3c5964a8591a29e Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 14:07:12 -0400 Subject: SL-18837: Try to bypass Windows perm problem with Python indirection. --- indra/llcommon/tests/llprocess_test.cpp | 41 ++++++++++++++++++------------ indra/llcommon/tests/test_python_script.py | 20 +++++++++++++++ indra/test/namedtempfile.h | 22 +++++++++------- 3 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 indra/llcommon/tests/test_python_script.py diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 4adb8d872a..af99e97d66 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -124,6 +124,17 @@ void waitfor(LLProcess::handle h, const std::string& desc, int timeout=60) i < timeout); } +namespace { + +// find test helper, a sibling of this file +// nat 2023-07-07: we're currently using Boost 1.81, but +// path::replace_filename() (which is exactly what we need here) doesn't +// arrive until Boost 1.82. +auto test_python_script{ + (boost::filesystem::path(__FILE__).remove_filename() / "test_python_script.py").string() }; + +} + /** * Construct an LLProcess to run a Python script. */ @@ -145,6 +156,7 @@ struct PythonProcessLauncher mParams.desc = desc + " script"; mParams.executable = PYTHON; + mParams.args.add(test_python_script); mParams.args.add(mScript.getName()); } @@ -214,30 +226,26 @@ static std::string python_out(const std::string& desc, const CONTENT& script) class NamedTempDir: public boost::noncopyable { public: - // Use python() function to create a temp directory: I've found - // nothing in either Boost.Filesystem or APR quite like Python's - // tempfile.mkdtemp(). - // Special extra bonus: on Mac, mkdtemp() reports a pathname - // starting with /var/folders/something, whereas that's really a - // symlink to /private/var/folders/something. Have to use - // realpath() to compare properly. NamedTempDir(): - mPath(python_out("mkdtemp()", - "from __future__ import with_statement\n" - "import os.path, sys, tempfile\n" - "with open(sys.argv[1], 'w') as f:\n" - " f.write(os.path.normcase(os.path.normpath(os.path.realpath(tempfile.mkdtemp()))))\n")) - {} + mPath(NamedTempFile::temp_path()), + mCreated(boost::filesystem::create_directories(mPath)) + { + mPath = boost::filesystem::canonical(mPath); + } ~NamedTempDir() { - aprchk(apr_dir_remove(mPath.c_str(), gAPRPoolp)); + if (mCreated) + { + boost::filesystem::remove_all(mPath); + } } - std::string getName() const { return mPath; } + std::string getName() const { return mPath.string(); } private: - std::string mPath; + boost::filesystem::path mPath; + bool mCreated; }; /***************************************************************************** @@ -390,6 +398,7 @@ namespace tut // Have to have a named copy of this std::string so its c_str() value // will persist. std::string scriptname(script.getName()); + argv.push_back(test_python_script.c_str()); argv.push_back(scriptname.c_str()); argv.push_back(NULL); diff --git a/indra/llcommon/tests/test_python_script.py b/indra/llcommon/tests/test_python_script.py new file mode 100644 index 0000000000..c0c8661aa9 --- /dev/null +++ b/indra/llcommon/tests/test_python_script.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +"""\ +@file test_python_script.py +@author Nat Goodspeed +@date 2023-07-07 +@brief Work around a problem running Python within integration tests on GitHub + Windows runners. + +$LicenseInfo:firstyear=2023&license=viewerlgpl$ +Copyright (c) 2023, Linden Research, Inc. +$/LicenseInfo$ +""" + +import os +import sys + +# use pop() so that if the referenced script in turn looks at sys.argv, it +# will see its arguments rather than its own filename +_script = sys.argv.pop(1) +exec(open(_script).read()) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 4343361f41..525a35000d 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -65,8 +65,7 @@ public: boost::filesystem::remove(mPath); } - // On Windows, path::native() returns a wstring - std::string getName() const { return ll_convert(mPath.native()); } + std::string getName() const { return mPath.string(); } void peep() { @@ -78,12 +77,9 @@ public: std::cout << "---\n"; } -protected: - void createFile(const std::string_view& pfx, - const Streamer& func, - const std::string_view& sfx) + static boost::filesystem::path temp_path(const std::string_view& pfx="", + const std::string_view& sfx="") { - // Create file in a temporary place. // This variable is set by GitHub actions and is the recommended place // to put temp files belonging to an actions job. const char* RUNNER_TEMP = getenv("RUNNER_TEMP"); @@ -97,9 +93,17 @@ protected: // with underscores instead of hyphens: some use cases involve // temporary Python scripts tempdir / stringize(pfx, "%%%%_%%%%_%%%%_%%%%", sfx) }; - mPath = boost::filesystem::unique_path(tempname); - boost::filesystem::ofstream out{ mPath }; + return boost::filesystem::unique_path(tempname); + } +protected: + void createFile(const std::string_view& pfx, + const Streamer& func, + const std::string_view& sfx) + { + // Create file in a temporary place. + mPath = temp_path(pfx, sfx); + boost::filesystem::ofstream out{ mPath }; // Write desired content. func(out); } -- cgit v1.2.3 From c4b5d089dad5680a0dd12b2d386b692318eb5c58 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 16:57:20 -0400 Subject: SL-18837: Partially revert e933ace, keeping useful tweaks. Introducing indirection via test_python_script.py did NOT address the "Access is denied" errors on GitHub Windows runners. --- indra/llcommon/tests/llleap_test.cpp | 25 +++++++++---------------- indra/llcommon/tests/llprocess_test.cpp | 13 ------------- indra/llcommon/tests/test_python_script.py | 20 -------------------- 3 files changed, 9 insertions(+), 49 deletions(-) delete mode 100644 indra/llcommon/tests/test_python_script.py diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 0fc741d9e1..e9edd165df 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -17,7 +17,6 @@ // std headers #include // external library headers -#include // other Linden headers #include "../test/lltut.h" #include "../test/namedtempfile.h" @@ -29,10 +28,6 @@ #include "stringize.h" #include "StringVec.h" -using boost::assign::list_of; - -StringVec sv(const StringVec& listof) { return listof; } - #if defined(LL_WINDOWS) #define sleep(secs) _sleep((secs) * 1000) @@ -217,9 +212,9 @@ namespace tut "time.sleep(1)\n"); LLLeapVector instances; instances.push_back(LLLeap::create(get_test_name(), - sv(list_of(PYTHON)(script.getName())))->getWeak()); + StringVec{PYTHON, script.getName()})->getWeak()); instances.push_back(LLLeap::create(get_test_name(), - sv(list_of(PYTHON)(script.getName())))->getWeak()); + StringVec{PYTHON, script.getName()})->getWeak()); // In this case we're simply establishing that two LLLeap instances // can coexist without throwing exceptions or bombing in any other // way. Wait for them to terminate. @@ -249,7 +244,7 @@ namespace tut "print('Hello from Python!')\n"); CaptureLog log(LLError::LEVEL_WARN); waitfor(LLLeap::create(get_test_name(), - sv(list_of(PYTHON)(script.getName())))); + StringVec{PYTHON, script.getName()})); ensure_contains("error log line", log.messageWith("invalid protocol"), "Hello from Python!"); } @@ -264,7 +259,7 @@ namespace tut "sys.stdout.write('Hello from Python!')\n"); CaptureLog log(LLError::LEVEL_WARN); waitfor(LLLeap::create(get_test_name(), - sv(list_of(PYTHON)(script.getName())))); + StringVec{PYTHON, script.getName()})); ensure_contains("error log line", log.messageWith("Discarding"), "Hello from Python!"); } @@ -278,7 +273,7 @@ namespace tut "sys.stdout.write('5a2:something')\n"); CaptureLog log(LLError::LEVEL_WARN); waitfor(LLLeap::create(get_test_name(), - sv(list_of(PYTHON)(script.getName())))); + StringVec{PYTHON, script.getName()})); ensure_contains("error log line", log.messageWith("invalid protocol"), "5a2:"); } @@ -390,7 +385,8 @@ namespace tut "result = '' if resp == dict(pump=replypump(), data='ack')\\\n" " else 'bad: ' + str(resp)\n" "send(pump='" << result.getName() << "', data=result)\n";}); - waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName())))); + waitfor(LLLeap::create(get_test_name(), + StringVec{PYTHON, script.getName()})); result.ensure(); } @@ -449,7 +445,7 @@ namespace tut " result = 'expected reqid=%s in %s' % (i, resp)\n" " break\n" "send(pump='" << result.getName() << "', data=result)\n";}); - waitfor(LLLeap::create(get_test_name(), sv(list_of(PYTHON)(script.getName()))), + waitfor(LLLeap::create(get_test_name(), StringVec{PYTHON, script.getName()}), 300); // needs more realtime than most tests result.ensure(); } @@ -516,10 +512,7 @@ namespace tut " (start, large[start:end], echoed[start:end]))\n" "sys.exit(1)\n";}); waitfor(LLLeap::create(test_name, - sv(list_of - (PYTHON) - (script.getName()) - (stringize(size)))), + StringVec{PYTHON, script.getName(), stringize(size)}), 180); // try a longer timeout result.ensure(); } diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index af99e97d66..c7d1a2c86a 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -124,17 +124,6 @@ void waitfor(LLProcess::handle h, const std::string& desc, int timeout=60) i < timeout); } -namespace { - -// find test helper, a sibling of this file -// nat 2023-07-07: we're currently using Boost 1.81, but -// path::replace_filename() (which is exactly what we need here) doesn't -// arrive until Boost 1.82. -auto test_python_script{ - (boost::filesystem::path(__FILE__).remove_filename() / "test_python_script.py").string() }; - -} - /** * Construct an LLProcess to run a Python script. */ @@ -156,7 +145,6 @@ struct PythonProcessLauncher mParams.desc = desc + " script"; mParams.executable = PYTHON; - mParams.args.add(test_python_script); mParams.args.add(mScript.getName()); } @@ -398,7 +386,6 @@ namespace tut // Have to have a named copy of this std::string so its c_str() value // will persist. std::string scriptname(script.getName()); - argv.push_back(test_python_script.c_str()); argv.push_back(scriptname.c_str()); argv.push_back(NULL); diff --git a/indra/llcommon/tests/test_python_script.py b/indra/llcommon/tests/test_python_script.py deleted file mode 100644 index c0c8661aa9..0000000000 --- a/indra/llcommon/tests/test_python_script.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env python3 -"""\ -@file test_python_script.py -@author Nat Goodspeed -@date 2023-07-07 -@brief Work around a problem running Python within integration tests on GitHub - Windows runners. - -$LicenseInfo:firstyear=2023&license=viewerlgpl$ -Copyright (c) 2023, Linden Research, Inc. -$/LicenseInfo$ -""" - -import os -import sys - -# use pop() so that if the referenced script in turn looks at sys.argv, it -# will see its arguments rather than its own filename -_script = sys.argv.pop(1) -exec(open(_script).read()) -- cgit v1.2.3 From 1fc8758458c99b3a41965e33b3c62613c83e403a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 17:31:50 -0400 Subject: SL-18837: Coax APR to log LLProcess launch attempts; show log file. --- indra/llcommon/tests/llprocess_test.cpp | 34 +++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index c7d1a2c86a..fbddc7f909 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -30,6 +30,7 @@ #include "../test/namedtempfile.h" #include "../test/catch_and_store_what_in.h" #include "stringize.h" +#include "lldir.h" #include "llsdutil.h" #include "llevents.h" #include "llstring.h" @@ -151,8 +152,37 @@ struct PythonProcessLauncher /// Launch Python script; verify that it launched void launch() { - mPy = LLProcess::create(mParams); - tut::ensure(STRINGIZE("Couldn't launch " << mDesc << " script"), bool(mPy)); + std::string logpath{ gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "apr.log") }; +#if LL_WINDOWS + _putenv_s("APR_LOG", logpath.c_str()); +#else + setenv("APR_LOG", logpath.c_str(), 1); +#endif + try + { + mPy = LLProcess::create(mParams); + tut::ensure(STRINGIZE("Couldn't launch " << mDesc << " script"), bool(mPy)); + } + catch (const tut::failure& err); + { + std::ifstream inf(logpath.c_str()); + if (! inf.is_open()) + { + LL_WARNS() << "Couldn't open '" << logpath << "'" << LL_ENDL; + } + else + { + LL_WARNS() << "==============================" << LL_ENDL; + LL_WARNS() << "From '" << logpath << "':" << LL_ENDL; + std::string line; + while (std::getline(line, inf)) + { + LL_WARNS() << line << LL_ENDL; + } + LL_WARNS() << "==============================" << LL_ENDL; + } + throw; + } } /// Run Python script and wait for it to complete. -- cgit v1.2.3 From 8f81e1fa87123ff6255e9ee82e68c414efe05cdd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 17:47:57 -0400 Subject: SL-18837: Fix "lldir.h" #include --- indra/llcommon/tests/llprocess_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index fbddc7f909..9ee7890c7c 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -30,7 +30,7 @@ #include "../test/namedtempfile.h" #include "../test/catch_and_store_what_in.h" #include "stringize.h" -#include "lldir.h" +#include "../llfilesystem/lldir.h" #include "llsdutil.h" #include "llevents.h" #include "llstring.h" -- cgit v1.2.3 From 8aa3a0a7ed8cf3e3fedb2c98d6ea336fdd45e296 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 19:48:02 -0400 Subject: SL-18837: Fix spurious semi --- indra/llcommon/tests/llprocess_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 9ee7890c7c..fb5cf12cb2 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -163,7 +163,7 @@ struct PythonProcessLauncher mPy = LLProcess::create(mParams); tut::ensure(STRINGIZE("Couldn't launch " << mDesc << " script"), bool(mPy)); } - catch (const tut::failure& err); + catch (const tut::failure& err) { std::ifstream inf(logpath.c_str()); if (! inf.is_open()) -- cgit v1.2.3 From 09c5b01997e1d34e799a8a0ee3571bd181f9a665 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 20:02:33 -0400 Subject: SL-18837: Hook in LLDir to allow reading APR log file. --- indra/llcommon/CMakeLists.txt | 2 +- indra/llcommon/tests/llprocess_test.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 54020a4231..7412514e6b 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -308,7 +308,7 @@ if (LL_TESTS) LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llmainthreadtask "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llpounceable "" "${test_libs}") - LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}") + LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs};llfilesystem") LL_ADD_INTEGRATION_TEST(llprocessor "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llprocinfo "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}") diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index fb5cf12cb2..c6091bfeb1 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -175,7 +175,7 @@ struct PythonProcessLauncher LL_WARNS() << "==============================" << LL_ENDL; LL_WARNS() << "From '" << logpath << "':" << LL_ENDL; std::string line; - while (std::getline(line, inf)) + while (std::getline(inf, line)) { LL_WARNS() << line << LL_ENDL; } -- cgit v1.2.3 From 908fb3fed6b858da4dc2b1c840b849e30ade2046 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 7 Jul 2023 20:54:34 -0400 Subject: SL-18837: Ditch unreferenced name of caught exception --- indra/llcommon/tests/llprocess_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index c6091bfeb1..827837d62a 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -163,7 +163,7 @@ struct PythonProcessLauncher mPy = LLProcess::create(mParams); tut::ensure(STRINGIZE("Couldn't launch " << mDesc << " script"), bool(mPy)); } - catch (const tut::failure& err) + catch (const tut::failure&) { std::ifstream inf(logpath.c_str()); if (! inf.is_open()) -- cgit v1.2.3 From f37d2c307617302f2ed5dfead7e280da54a7d3e4 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 8 Jul 2023 09:04:33 -0400 Subject: SL-18837: Don't use LLDir, use NamedTempFile::temp_path. Remove llcommon circular dependency on llfilesystem, which doesn't work for this case anyway. --- indra/llcommon/CMakeLists.txt | 2 +- indra/llcommon/tests/llprocess_test.cpp | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 7412514e6b..54020a4231 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -308,7 +308,7 @@ if (LL_TESTS) LL_ADD_INTEGRATION_TEST(llleap "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llmainthreadtask "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llpounceable "" "${test_libs}") - LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs};llfilesystem") + LL_ADD_INTEGRATION_TEST(llprocess "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llprocessor "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llprocinfo "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}") diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 827837d62a..6fcc6fd8aa 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -30,7 +30,6 @@ #include "../test/namedtempfile.h" #include "../test/catch_and_store_what_in.h" #include "stringize.h" -#include "../llfilesystem/lldir.h" #include "llsdutil.h" #include "llevents.h" #include "llstring.h" @@ -152,11 +151,9 @@ struct PythonProcessLauncher /// Launch Python script; verify that it launched void launch() { - std::string logpath{ gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "apr.log") }; + std::string logpath{ NamedTempFile::temp_path("apr", ".log").string() }; #if LL_WINDOWS _putenv_s("APR_LOG", logpath.c_str()); -#else - setenv("APR_LOG", logpath.c_str(), 1); #endif try { -- cgit v1.2.3 From 1ec6c744048a2905b0f2bf83f035a8fb8798dbdf Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 8 Jul 2023 11:08:16 -0400 Subject: SL-18837: Set APR_LOG once for the whole job instead of a new value for each LLProcess::create() invocation. Since the internal apr_log() function only looks at APR_LOG once per process, the first test (which succeeded, hence no log file dump) left the log file open with that same original pathname. Resetting the APR_LOG environment variable for subsequent runs only made the new code in llprocess_test look for files that were never created. --- .github/workflows/build.yaml | 1 + indra/llcommon/tests/llprocess_test.cpp | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index dc8f9f15cd..f585fa1c39 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,6 +24,7 @@ jobs: - runner: macos-12-xl runs-on: ${{ matrix.runner }} env: + APR_LOG: "$RUNNER_TEMP/apr.log" AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_BUILD_ID: ${{ github.run_id }} # authorizes fetching private constituent packages diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 6fcc6fd8aa..a01ec84547 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -151,10 +151,6 @@ struct PythonProcessLauncher /// Launch Python script; verify that it launched void launch() { - std::string logpath{ NamedTempFile::temp_path("apr", ".log").string() }; -#if LL_WINDOWS - _putenv_s("APR_LOG", logpath.c_str()); -#endif try { mPy = LLProcess::create(mParams); @@ -162,21 +158,25 @@ struct PythonProcessLauncher } catch (const tut::failure&) { - std::ifstream inf(logpath.c_str()); - if (! inf.is_open()) - { - LL_WARNS() << "Couldn't open '" << logpath << "'" << LL_ENDL; - } - else + const char* APR_LOG = getenv("APR_LOG"); + if (APR_LOG && *APR_LOG) { - LL_WARNS() << "==============================" << LL_ENDL; - LL_WARNS() << "From '" << logpath << "':" << LL_ENDL; - std::string line; - while (std::getline(inf, line)) + std::ifstream inf(APR_LOG); + if (! inf.is_open()) { - LL_WARNS() << line << LL_ENDL; + LL_WARNS() << "Couldn't open '" << APR_LOG << "'" << LL_ENDL; + } + else + { + LL_WARNS() << "==============================" << LL_ENDL; + LL_WARNS() << "From '" << APR_LOG << "':" << LL_ENDL; + std::string line; + while (std::getline(inf, line)) + { + LL_WARNS() << line << LL_ENDL; + } + LL_WARNS() << "==============================" << LL_ENDL; } - LL_WARNS() << "==============================" << LL_ENDL; } throw; } -- cgit v1.2.3 From 0d4e5b6bf8804806260c8295456410bca63c8874 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 8 Jul 2023 13:12:25 -0400 Subject: SL-18837: Use runner.temp rather than $RUNNER_TEMP. --- .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 f585fa1c39..729b0c54e5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,7 +24,7 @@ jobs: - runner: macos-12-xl runs-on: ${{ matrix.runner }} env: - APR_LOG: "$RUNNER_TEMP/apr.log" + APR_LOG: "${{ runner.temp }}/apr.log" AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_BUILD_ID: ${{ github.run_id }} # authorizes fetching private constituent packages -- cgit v1.2.3 From eff1c0b55c075eca88690b3547f58eb57c789b85 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 8 Jul 2023 13:15:01 -0400 Subject: SL-18837: Set APR_LOG within build step, not at job level. --- .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 729b0c54e5..c0bc5f30e1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,7 +24,6 @@ jobs: - runner: macos-12-xl runs-on: ${{ matrix.runner }} env: - APR_LOG: "${{ runner.temp }}/apr.log" AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} AUTOBUILD_BUILD_ID: ${{ github.run_id }} # authorizes fetching private constituent packages @@ -160,6 +159,7 @@ jobs: } export -f native_path shell_path finalize initialize_build initialize_version export -f python_cmd repo_branch record_dependencies_graph sleep + export APR_LOG="${RUNNER_TEMP}/apr.log" export arch=$(uname | cut -b-6) # Surprise! GH Windows runner's MINGW6 is a $arch value we've never # seen before, so numerous tests don't know about it. -- cgit v1.2.3 From ca4288edaa226507e2a44182689a167bd4ea7948 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 8 Jul 2023 13:35:53 -0400 Subject: SL-18837: Try running just 'python' for Windows integration tests. --- .github/workflows/build.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c0bc5f30e1..47b1f421e5 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -177,7 +177,11 @@ jobs: # as neither CMake's FindPython nor our custom Python.cmake module # will resolve the correct interpreter location. if [[ "$RUNNER_OS" == "Windows" ]]; then - export PYTHON="$(native_path "$(which python)")" + ##export PYTHON="$(native_path "$(which python)")" + ## Weirdly, on GitHub's Windows runners, the integration test that + ## runs just 'python' succeeds while the integration tests that + ## run the full path to the .exe fail with "Access is denied." + export PYTHON=python echo "Python location: $PYTHON" export PYTHON_COMMAND="$PYTHON" else -- cgit v1.2.3 From 7dc6211ad5ea83685a35c6fff740278343aa8b9d Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 8 Jul 2023 14:08:16 -0400 Subject: SL-18837: Force llprocess_test and llleap_test to use just 'python'. On GitHub Windows runners, trying to make build.yaml set PYTHON=python in the environment doesn't work: integration tests still fail with "Access is denied" because they're still trying to execute the interpreter's full pathname. Instead, make llprocess_test and llleap_test detect the case of GitHub Windows and override the environment variable PYTHON with a baked-in string constant "python". --- .github/workflows/build.yaml | 6 +----- indra/llcommon/tests/llleap_test.cpp | 11 ++++++++++- indra/llcommon/tests/llprocess_test.cpp | 13 ++++++++++++- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 47b1f421e5..c0bc5f30e1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -177,11 +177,7 @@ jobs: # as neither CMake's FindPython nor our custom Python.cmake module # will resolve the correct interpreter location. if [[ "$RUNNER_OS" == "Windows" ]]; then - ##export PYTHON="$(native_path "$(which python)")" - ## Weirdly, on GitHub's Windows runners, the integration test that - ## runs just 'python' succeeds while the integration tests that - ## run the full path to the .exe fail with "Access is denied." - export PYTHON=python + export PYTHON="$(native_path "$(which python)")" echo "Python location: $PYTHON" export PYTHON_COMMAND="$PYTHON" else diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index e9edd165df..01515ecebf 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -193,11 +193,20 @@ namespace tut reader.getName().substr(0, reader.getName().length()-3))), PYTHON(LLStringUtil::getenv("PYTHON")) { +#if LL_WINDOWS + // Weirdly, on GitHub Windows runners, plain 'python' works much + // better than a full pathname. + const char* RUNNER_TEMP = getenv("RUNNER_TEMP"); + if (RUNNER_TEMP && *RUNNER_TEMP) + { + PYTHON = "python"; + } +#endif ensure("Set PYTHON to interpreter pathname", !PYTHON.empty()); } NamedExtTempFile reader; const std::string reader_module; - const std::string PYTHON; + std::string PYTHON; }; typedef test_group llleap_group; typedef llleap_group::object object; diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index a01ec84547..3ba3a8aab3 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -141,6 +141,15 @@ struct PythonProcessLauncher mScript("py", script) { auto PYTHON(LLStringUtil::getenv("PYTHON")); +#if LL_WINDOWS + // Weirdly, on GitHub Windows runners, plain 'python' works much better + // than a full pathname. + const char* RUNNER_TEMP = getenv("RUNNER_TEMP"); + if (RUNNER_TEMP && *RUNNER_TEMP) + { + PYTHON = "python"; + } +#endif tut::ensure("Set $PYTHON to the Python interpreter", !PYTHON.empty()); mParams.desc = desc + " script"; @@ -1013,7 +1022,9 @@ namespace tut set_test_name("get*Pipe() validation"); PythonProcessLauncher py(get_test_name(), "from __future__ import print_function\n" - "print('this output is expected')\n"); + "import sys\n" + "print('this output is expected')\n" + "print('run by', sys.executable)\n"); py.mParams.files.add(LLProcess::FileParam("pipe")); // pipe for stdin py.mParams.files.add(LLProcess::FileParam()); // inherit stdout py.mParams.files.add(LLProcess::FileParam("pipe")); // pipe for stderr -- cgit v1.2.3 From 41a738591e94b6fdb51b50a047ad9274050444d4 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 10 Jul 2023 13:21:02 -0400 Subject: SL-18837: Update apr_suite to release v1.7.2-e935465. --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 31ab78c79b..420723a64e 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -51,11 +51,11 @@ archive hash - 20efce94a857d97ba9b947bcf802136175815d5b + dc4a38439f90325b406ec3f7cc4fa66edf0eeec8 hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-4d6fcb2/apr_suite-1.7.2-4d6fcb2-darwin64-4d6fcb2.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-e935465/apr_suite-1.7.2-e935465-darwin64-e935465.tar.zst name darwin64 @@ -77,11 +77,11 @@ archive hash - 0421edc009fb19747bc8affaaeb6826f31e29909 + abb48e031b4bbab5fa48d2872ef2db065f33d8ac hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-4d6fcb2/apr_suite-1.7.2-4d6fcb2-windows-4d6fcb2.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-e935465/apr_suite-1.7.2-e935465-windows-e935465.tar.zst name windows @@ -91,18 +91,18 @@ archive hash - a1fe8589dcaafa6bc3ea29a02617468e2d2a23c0 + 8233de9a11f323a03d569db1043ba5198176457b hash_algorithm sha1 url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-4d6fcb2/apr_suite-1.7.2-4d6fcb2-windows64-4d6fcb2.tar.zst + https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-e935465/apr_suite-1.7.2-e935465-windows64-e935465.tar.zst name windows64 version - 1.7.2-4d6fcb2 + 1.7.2-e935465 boost -- cgit v1.2.3 From 31ccef8a666da54312a55663a7ac03061c4903be Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 10 Jul 2023 14:35:41 -0400 Subject: SL-18837: Revert "Force llprocess_test and llleap_test to use just 'python'." Turns out that the pathname of the Python executable wasn't the issue. This reverts commit 7dc6211ad5ea83685a35c6fff740278343aa8b9d. --- indra/llcommon/tests/llleap_test.cpp | 11 +---------- indra/llcommon/tests/llprocess_test.cpp | 13 +------------ 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/indra/llcommon/tests/llleap_test.cpp b/indra/llcommon/tests/llleap_test.cpp index 01515ecebf..e9edd165df 100644 --- a/indra/llcommon/tests/llleap_test.cpp +++ b/indra/llcommon/tests/llleap_test.cpp @@ -193,20 +193,11 @@ namespace tut reader.getName().substr(0, reader.getName().length()-3))), PYTHON(LLStringUtil::getenv("PYTHON")) { -#if LL_WINDOWS - // Weirdly, on GitHub Windows runners, plain 'python' works much - // better than a full pathname. - const char* RUNNER_TEMP = getenv("RUNNER_TEMP"); - if (RUNNER_TEMP && *RUNNER_TEMP) - { - PYTHON = "python"; - } -#endif ensure("Set PYTHON to interpreter pathname", !PYTHON.empty()); } NamedExtTempFile reader; const std::string reader_module; - std::string PYTHON; + const std::string PYTHON; }; typedef test_group llleap_group; typedef llleap_group::object object; diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 3ba3a8aab3..a01ec84547 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -141,15 +141,6 @@ struct PythonProcessLauncher mScript("py", script) { auto PYTHON(LLStringUtil::getenv("PYTHON")); -#if LL_WINDOWS - // Weirdly, on GitHub Windows runners, plain 'python' works much better - // than a full pathname. - const char* RUNNER_TEMP = getenv("RUNNER_TEMP"); - if (RUNNER_TEMP && *RUNNER_TEMP) - { - PYTHON = "python"; - } -#endif tut::ensure("Set $PYTHON to the Python interpreter", !PYTHON.empty()); mParams.desc = desc + " script"; @@ -1022,9 +1013,7 @@ namespace tut set_test_name("get*Pipe() validation"); PythonProcessLauncher py(get_test_name(), "from __future__ import print_function\n" - "import sys\n" - "print('this output is expected')\n" - "print('run by', sys.executable)\n"); + "print('this output is expected')\n"); py.mParams.files.add(LLProcess::FileParam("pipe")); // pipe for stdin py.mParams.files.add(LLProcess::FileParam()); // inherit stdout py.mParams.files.add(LLProcess::FileParam("pipe")); // pipe for stderr -- cgit v1.2.3 From d8292a629149c2cfdda6ae9df4e87aa117153c21 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 10 Jul 2023 14:46:14 -0400 Subject: SL-18837: Disable APR_LOG for now, but leave notes for the future. --- .github/workflows/build.yaml | 3 ++- indra/llcommon/tests/llprocess_test.cpp | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c0bc5f30e1..dc5fef4177 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -159,7 +159,8 @@ jobs: } export -f native_path shell_path finalize initialize_build initialize_version export -f python_cmd repo_branch record_dependencies_graph sleep - export APR_LOG="${RUNNER_TEMP}/apr.log" + ## Useful for diagnosing Windows LLProcess/LLLeap test failures + ##export APR_LOG="${RUNNER_TEMP}/apr.log" export arch=$(uname | cut -b-6) # Surprise! GH Windows runner's MINGW6 is a $arch value we've never # seen before, so numerous tests don't know about it. diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index a01ec84547..9ca664c80c 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -158,6 +158,9 @@ struct PythonProcessLauncher } catch (const tut::failure&) { + // On Windows, if APR_LOG is set, our version of APR's + // apr_create_proc() logs to the specified file. If this test + // failed, try to report that log. const char* APR_LOG = getenv("APR_LOG"); if (APR_LOG && *APR_LOG) { -- cgit v1.2.3 From c77737b925e3687e47d3a1dce1b7e8b481302741 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 10 Jul 2023 15:26:21 -0400 Subject: SL-18837: Windows failures in setWorkingDirectory(): C: vs. c: (sigh) Normalize the case of the name of the temp directory for string comparison. --- indra/llcommon/tests/llprocess_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index 9ca664c80c..c1cb2af7fe 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -591,7 +591,7 @@ namespace tut " f.write(os.path.normcase(os.path.normpath(os.getcwd())))\n"); // Before running, call setWorkingDirectory() py.mParams.cwd = tempdir.getName(); - ensure_equals("os.getcwd()", py.run_read(), tempdir.getName()); + ensure_equals("os.getcwd()", py.run_read(), utf8str_tolower(tempdir.getName())); } template<> template<> -- cgit v1.2.3 From 6f1e7d58e32bc281c981fb0229c84a2cbf6eece2 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 14 Jul 2023 10:17:13 -0400 Subject: SL-18837: Update llphysicsextensions_source to release v1.0.c93156d. --- autobuild.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 420723a64e..c75154465e 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1838,11 +1838,11 @@ creds github hash - 2d0ba3d6c0f4c73f603bc7d61135079ef281686d + 48bca5d0233d1e724a59f649a2c6c7ac5f40ec3c hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908515 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/117009335 name darwin64 @@ -1854,11 +1854,11 @@ creds github hash - 90b1d01ab2fe93dd584de87df8cb42d1ec35f109 + 39f52d0350e130f41c5c758f7cb94e87b962c223 hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908517 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/117009336 name linux64 @@ -1870,11 +1870,11 @@ creds github hash - 397daeb397719448858eabae6061c795d127b8fb + 362126acd5348b20636ce7489dc9e6887a5a415d hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908521 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/117009343 name windows @@ -1886,11 +1886,11 @@ creds github hash - 475d0d49a28bcc04b3af8c9d5e8b0dbafa542db9 + 7b5e645fb7eb399abbea63bd21e8063bbb32a911 hash_algorithm sha1 url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/108908518 + https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/117009339 name windows64 -- cgit v1.2.3 From 0998d46f47927badbd3f7d3a4b7a83a11896a5c9 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Fri, 14 Jul 2023 18:04:14 -0700 Subject: Fix "intermittent" llrand unit test failure on windows on DRTVWR-578. we must return less than 1.0 when rand() returns RAND_MAX also, disable 32 bit build now that we have deprecated it. https://community.secondlife.com/blogs/entry/13464-end-of-support-for-second-life-32-bit-windows-viewer-and-updated-minimum-system-requirements-for-macos-to-1013/ --- .github/workflows/build.yaml | 8 ++------ indra/llcommon/llrand.cpp | 4 ++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 00dd7ed116..3e0330d77b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -13,18 +13,14 @@ jobs: matrix: runner: [windows-large, macos-12-xl] configuration: [Release] - addrsize: [64] python-version: ["3.11"] include: - - runner: windows-large - configuration: Release - addrsize: 32 - python-version: "3.11" - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" + python-version: "3.11" runs-on: ${{ matrix.runner }} env: - AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} + AUTOBUILD_ADDRSIZE: 64 AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} # authorizes fetching private constituent packages AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} diff --git a/indra/llcommon/llrand.cpp b/indra/llcommon/llrand.cpp index cb28a8f5c3..1b6963a9dd 100644 --- a/indra/llcommon/llrand.cpp +++ b/indra/llcommon/llrand.cpp @@ -82,7 +82,7 @@ static LLSeedRand sRandomSeeder; inline F64 ll_internal_random_double() { #if LL_WINDOWS - return (F64)rand() / (F64)RAND_MAX; + return (F64)rand() / (F64)(RAND_MAX+1); #else return drand48(); #endif @@ -90,7 +90,7 @@ inline F64 ll_internal_random_double() inline F32 ll_internal_random_float() { #if LL_WINDOWS - return (F32)rand() / (F32)RAND_MAX; + return (F32)rand() / (F32)(RAND_MAX+1); #else return (F32)drand48(); #endif -- cgit v1.2.3 From 54f9ca5404c05a4031c1c12caf24b88048704cbd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 17 Jul 2023 15:41:26 -0400 Subject: SL-18837: Merge branch 'actions' into actions-build-sh --- .github/workflows/build.yaml | 12 ++++-------- indra/llcommon/llprocessor.cpp | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index dc5fef4177..1cc29d95ea 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -13,19 +13,15 @@ jobs: matrix: runner: [windows-large, macos-12-xl] configuration: [Release] - addrsize: [64] python-version: ["3.11"] - developer_dir: ["", "/Applications/Xcode_14.0.1.app/Contents/Developer"] - exclude: - - runner: windows-large - developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" - ## nat 2023-07-07: trying to resolve the Windows Python permissions - ## problem; don't bother running Mac builds. + include: - runner: macos-12-xl + developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" runs-on: ${{ matrix.runner }} env: - AUTOBUILD_ADDRSIZE: ${{ matrix.addrsize }} + AUTOBUILD_ADDRSIZE: 64 AUTOBUILD_BUILD_ID: ${{ github.run_id }} + AUTOBUILD_CONFIGURATION: ${{ matrix.configuration }} # authorizes fetching private constituent packages AUTOBUILD_GITHUB_TOKEN: ${{ secrets.SHARED_AUTOBUILD_GITHUB_TOKEN }} AUTOBUILD_INSTALLABLE_CACHE: ${{ github.workspace }}/.autobuild-installables diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index 4a1a81f083..28f8bc2b93 100644 --- a/indra/llcommon/llprocessor.cpp +++ b/indra/llcommon/llprocessor.cpp @@ -746,7 +746,7 @@ private: __cpuid(0x1, eax, ebx, ecx, edx); if(feature_infos[0] != (S32)edx) { - LL_ERRS() << "machdep.cpu.feature_bits doesn't match expected cpuid result!" << LL_ENDL; + LL_WARNS() << "machdep.cpu.feature_bits doesn't match expected cpuid result!" << LL_ENDL; } #endif // LL_RELEASE_FOR_DOWNLOAD -- cgit v1.2.3 From 167ac704c8387c531630949860e33fb5a59789a8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 17 Jul 2023 16:20:59 -0400 Subject: SL-18837: Clean up some redundancy in llrand.cpp. --- indra/llcommon/llrand.cpp | 96 +++++++++++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 41 deletions(-) diff --git a/indra/llcommon/llrand.cpp b/indra/llcommon/llrand.cpp index cb28a8f5c3..4e4345f37a 100644 --- a/indra/llcommon/llrand.cpp +++ b/indra/llcommon/llrand.cpp @@ -58,14 +58,18 @@ * to restore uniform distribution. */ +template +inline REAL ll_internal_random(); + // *NOTE: The system rand implementation is probably not correct. #define LL_USE_SYSTEM_RAND 0 +/***************************************************************************** +* The LL_USE_SYSTEM_RAND implementation has been disabled since June 2008. +*****************************************************************************/ #if LL_USE_SYSTEM_RAND #include -#endif -#if LL_USE_SYSTEM_RAND class LLSeedRand { public: @@ -79,25 +83,25 @@ public: } }; static LLSeedRand sRandomSeeder; -inline F64 ll_internal_random_double() + +template <> +inline F64 ll_internal_random() { #if LL_WINDOWS - return (F64)rand() / (F64)RAND_MAX; + return (F64)rand() / (F64)(RAND_MAX+1); #else return drand48(); #endif } -inline F32 ll_internal_random_float() -{ -#if LL_WINDOWS - return (F32)rand() / (F32)RAND_MAX; -#else - return (F32)drand48(); -#endif -} -#else + +/***************************************************************************** +* This is the implementation we've been using. +*****************************************************************************/ +#else // LL_USE_SYSTEM_RAND static LLRandLagFib2281 gRandomGenerator(LLUUID::getRandomSeed()); -inline F64 ll_internal_random_double() + +template <> +inline F64 ll_internal_random() { // *HACK: Through experimentation, we have found that dual core // CPUs (or at least multi-threaded processes) seem to @@ -107,16 +111,40 @@ inline F64 ll_internal_random_double() if(!((rv >= 0.0) && (rv < 1.0))) return fmod(rv, 1.0); return rv; } +#endif // LL_USE_SYSTEM_RAND + +/***************************************************************************** +* Functions common to both implementations +*****************************************************************************/ +template <> +inline F32 ll_internal_random() +{ + return F32(ll_internal_random()); +} + +/*------------------------------ F64 aliases -------------------------------*/ +inline F64 ll_internal_random_double() +{ + return ll_internal_random(); +} + +F64 ll_drand() +{ + return ll_internal_random_double(); +} +/*------------------------------ F32 aliases -------------------------------*/ inline F32 ll_internal_random_float() { - // The clamping rules are described above. - F32 rv = (F32)gRandomGenerator(); - if(!((rv >= 0.0f) && (rv < 1.0f))) return fmod(rv, 1.f); - return rv; + return ll_internal_random(); } -#endif +F32 ll_frand() +{ + return ll_internal_random_float(); +} + +/*-------------------------- clamped random range --------------------------*/ S32 ll_rand() { return ll_rand(RAND_MAX); @@ -130,42 +158,28 @@ S32 ll_rand(S32 val) return rv; } -F32 ll_frand() -{ - return ll_internal_random_float(); -} - -F32 ll_frand(F32 val) +template +REAL ll_grand(REAL val) { // The clamping rules are described above. - F32 rv = ll_internal_random_float() * val; + REAL rv = ll_internal_random() * val; if(val > 0) { - if(rv >= val) return 0.0f; + if(rv >= val) return REAL(); } else { - if(rv <= val) return 0.0f; + if(rv <= val) return REAL(); } return rv; } -F64 ll_drand() +F32 ll_frand(F32 val) { - return ll_internal_random_double(); + return ll_grand(val); } F64 ll_drand(F64 val) { - // The clamping rules are described above. - F64 rv = ll_internal_random_double() * val; - if(val > 0) - { - if(rv >= val) return 0.0; - } - else - { - if(rv <= val) return 0.0; - } - return rv; + return ll_grand(val); } -- cgit v1.2.3 From 4b158580e5654615d2a5510267bf76392c9666fa Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 17 Jul 2023 16:47:50 -0400 Subject: SL-18837: Lowercasing pathname for string compare is Windows-only. --- indra/llcommon/tests/llprocess_test.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/indra/llcommon/tests/llprocess_test.cpp b/indra/llcommon/tests/llprocess_test.cpp index c1cb2af7fe..b6b297b8d7 100644 --- a/indra/llcommon/tests/llprocess_test.cpp +++ b/indra/llcommon/tests/llprocess_test.cpp @@ -591,7 +591,13 @@ namespace tut " f.write(os.path.normcase(os.path.normpath(os.getcwd())))\n"); // Before running, call setWorkingDirectory() py.mParams.cwd = tempdir.getName(); - ensure_equals("os.getcwd()", py.run_read(), utf8str_tolower(tempdir.getName())); + std::string expected{ tempdir.getName() }; +#if LL_WINDOWS + // SIGH, don't get tripped up by "C:" != "c:" -- + // but on the Mac, using tolower() fails because "/users" != "/Users"! + expected = utf8str_tolower(expected); +#endif + ensure_equals("os.getcwd()", py.run_read(), expected); } template<> template<> -- cgit v1.2.3 From 14d0b514af4e70956ecc2fbf6fe4c2e745e144a8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 09:45:00 -0400 Subject: SL-18837: Ditch inactive llrand.cpp LL_USE_SYSTEM_RAND code. LL_USE_SYSTEM_RAND has been disabled since June 2008; that code only clutters the implementation we actually use. --- indra/llcommon/llrand.cpp | 46 +++------------------------------------------- 1 file changed, 3 insertions(+), 43 deletions(-) diff --git a/indra/llcommon/llrand.cpp b/indra/llcommon/llrand.cpp index 4e4345f37a..33afc50cf7 100644 --- a/indra/llcommon/llrand.cpp +++ b/indra/llcommon/llrand.cpp @@ -58,48 +58,12 @@ * to restore uniform distribution. */ +static LLRandLagFib2281 gRandomGenerator(LLUUID::getRandomSeed()); + +// no default implementation, only specific F64 and F32 specializations template inline REAL ll_internal_random(); -// *NOTE: The system rand implementation is probably not correct. -#define LL_USE_SYSTEM_RAND 0 - -/***************************************************************************** -* The LL_USE_SYSTEM_RAND implementation has been disabled since June 2008. -*****************************************************************************/ -#if LL_USE_SYSTEM_RAND -#include - -class LLSeedRand -{ -public: - LLSeedRand() - { -#if LL_WINDOWS - srand(LLUUID::getRandomSeed()); -#else - srand48(LLUUID::getRandomSeed()); -#endif - } -}; -static LLSeedRand sRandomSeeder; - -template <> -inline F64 ll_internal_random() -{ -#if LL_WINDOWS - return (F64)rand() / (F64)(RAND_MAX+1); -#else - return drand48(); -#endif -} - -/***************************************************************************** -* This is the implementation we've been using. -*****************************************************************************/ -#else // LL_USE_SYSTEM_RAND -static LLRandLagFib2281 gRandomGenerator(LLUUID::getRandomSeed()); - template <> inline F64 ll_internal_random() { @@ -111,11 +75,7 @@ inline F64 ll_internal_random() if(!((rv >= 0.0) && (rv < 1.0))) return fmod(rv, 1.0); return rv; } -#endif // LL_USE_SYSTEM_RAND -/***************************************************************************** -* Functions common to both implementations -*****************************************************************************/ template <> inline F32 ll_internal_random() { -- cgit v1.2.3 From 479fa3e1964d792ba9483b21b272d52f377f48a2 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 09:56:11 -0400 Subject: SL-18837: Conditionally upload llphysicsextensions-tpv package but only when building viewer-private. Also re-fix SL-19942 workaround by deleting AUTOBUILD_CONFIGURATION before trying to build llphysicsextensions-tpv. --- .github/workflows/build.yaml | 23 +++++++++++++---------- build.sh | 24 +++++++++++++++++------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1cc29d95ea..f0c7fdd496 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -192,18 +192,11 @@ jobs: # Given the size of our installers, and the fact that we typically # only want to download just one instead of a single zip containing # several, generate a distinct artifact name for each installer. - # Since the matrix above can run multiple builds on the same + # If the matrix above can run multiple builds on the same # platform, we must disambiguate on more than the platform name. - # If we were still running Windows 32-bit builds, we'd need to + # e.g. if we were still running Windows 32-bit builds, we'd need to # qualify the artifact with bit width. - # DEVELOPER_DIR="/Applications/Xcode_14.0.1.app/Contents/Developer" - # or the empty string, so this produces dev="Xcode_14.0.1" or ".". - dev="$(basename "$(dirname "$(dirname "$DEVELOPER_DIR")")" .app)" - artifact="$RUNNER_OS $dev" - # For empty DEVELOPER_DIR, dev is ".", so artifact can end up with - # appended " ." -- ditch that if present. - artifact="${artifact% .}" - echo "artifact=$artifact" >> $GITHUB_OUTPUT + echo "artifact=$RUNNER_OS" >> $GITHUB_OUTPUT - name: Upload installer uses: actions/upload-artifact@v3 @@ -229,3 +222,13 @@ jobs: # emitted by build.sh, possibly multiple lines path: | ${{ steps.build.outputs.metadata }} + + - name: Upload physics package + uses: actions/upload-artifact@v3 + # should only be set for viewer-private + if: steps.build.outputs.physicstpv + with: + name: "${{ steps.build.outputs.artifact }} physics" + # emitted by build.sh, zero or one lines + path: | + ${{ steps.build.outputs.physicstpv }} diff --git a/build.sh b/build.sh index bd3e84d7bd..5395a04712 100755 --- a/build.sh +++ b/build.sh @@ -121,8 +121,13 @@ EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) installer=() metadata=() symbolfile=() +physicstpv=() # and dump them to GITHUB_OUTPUT when done -cleanup="$cleanup ; arrayoutput installer ; arrayoutput metadata ; arrayoutput symbolfile" +cleanup="$cleanup ; \ +arrayoutput installer ; \ +arrayoutput metadata ; \ +arrayoutput symbolfile ; \ +arrayoutput physicstpv" trap "$cleanup" EXIT arrayoutput() @@ -216,9 +221,12 @@ package_llphysicsextensions_tpv() # nat 2016-12-21: without HAVOK, can't build PhysicsExtensions_TPV. if [ "$variant" = "Release" -a "${HAVOK:-}" != "OFF" ] then - test -r "$build_dir/packages/llphysicsextensions/autobuild-tpv.xml" || fatal "No llphysicsextensions_tpv autobuild configuration found" - tpvconfig=$(native_path "$build_dir/packages/llphysicsextensions/autobuild-tpv.xml") - "$autobuild" build --quiet --config-file "$tpvconfig" -c Tpv || fatal "failed to build llphysicsextensions_tpv" + 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` @@ -576,13 +584,15 @@ then # Upload the llphysicsextensions_tpv package, if one was produced # *TODO: Make this an upload-extension - if [ -r "$build_dir/llphysicsextensions_package" ] + # Only upload this package when building the private repo so the + # artifact is private. + if [[ "$GITHUB_REPOSITORY" == "secondlife/viewer-private" && \ + -r "$build_dir/llphysicsextensions_package" ]] then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Physics Extensions Package" "$llphysicsextensions_package" --private \ || fatal "Upload of physics extensions package failed" - ## how to make private? - ## addoutput llphysics "$llphysicsextensions_package" + physicstpv+=("$llphysicsextensions_package") fi fi -- cgit v1.2.3 From 6fd46b85f516d47626090e6c363b978519b3e1a3 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 10:54:12 -0400 Subject: SL-18837: Detect msys bash as well as cygwin for native_path et al. --- .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 f0c7fdd496..9b56d800f7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -99,7 +99,7 @@ jobs: mkdir -p "$build_log_dir" mkdir -p "$BUILDSCRIPTS_SHARED/packages/lib/python" source "$BUILDSCRIPTS_SUPPORT_FUNCTIONS" - if [[ "$OSTYPE" == "cygwin" ]] + if [[ "$OSTYPE" =~ cygwin|msys ]] then native_path() { cygpath --windows "$1"; } shell_path() { cygpath --unix "$1"; } -- cgit v1.2.3 From dcb1403661f227b16fd5d5622c7e1a692b461c5b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 11:41:32 -0400 Subject: SL-18837: Re-delete redundant matrix.include python-version. This clarifies that the matrix.include entry is intended to supplement an existing runner configuration, rather than adding a new configuration for the same runner. --- .github/workflows/build.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a3097c9b36..9b56d800f7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,7 +17,6 @@ jobs: include: - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" - python-version: "3.11" runs-on: ${{ matrix.runner }} env: AUTOBUILD_ADDRSIZE: 64 -- cgit v1.2.3 From ecb938c95b66ff58840aae64fd5fb791c55ec080 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 13:38:05 -0400 Subject: SL-18837: Try waiting a couple seconds before hdiutil detach to try to avoid "Resource busy" errors from hdiutil. --- indra/newview/viewer_manifest.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 4660991de6..1e43485b9c 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1329,6 +1329,10 @@ class DarwinManifest(ViewerManifest): self.run_command([self.src_path_of("installers/darwin/apple-notarize.sh"), app_in_dmg]) finally: + # Empirically, on GitHub we've hit errors like: + # hdiutil: couldn't eject "disk10" - Resource busy + # Try waiting a bit to see if that improves reliability. + time.sleep(2) # Unmount the image even if exceptions from any of the above self.run_command(['hdiutil', 'detach', '-force', devfile]) -- cgit v1.2.3 From 2b97587a14c596514cdea2f2c624445e272cc127 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 15:25:09 -0400 Subject: SL-18837: Try to post installer and metadata for GH viewer release. --- .github/release.yaml | 18 ++++++++++++++++++ .github/workflows/build.yaml | 12 ++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 .github/release.yaml diff --git a/.github/release.yaml b/.github/release.yaml new file mode 100644 index 0000000000..0f4884c944 --- /dev/null +++ b/.github/release.yaml @@ -0,0 +1,18 @@ +changelog: + exclude: + labels: + - ignore-for-release + authors: + - dependabot + categories: + - title: Breaking Changes 🛠 + labels: + - semver-major + - breaking-change + - title: New Features 🎉 + labels: + - semver-minor + - enhancement + - title: Other Changes + labels: + - '*' diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 9b56d800f7..517efa6fc6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -232,3 +232,15 @@ jobs: # emitted by build.sh, zero or one lines path: | ${{ steps.build.outputs.physicstpv }} + + release: + needs: build + runs-on: [ubuntu-latest] + if: startsWith(github.ref, 'refs/tags/v') + steps: + - uses: softprops/action-gh-release@v1 + with: + generate_release_notes: true + files: | + ${{ steps.build.outputs.installer }} + ${{ steps.build.outputs.metadata }} -- cgit v1.2.3 From 0d4228b55aa786c3cbe0512acc5f0d9f91c6b87b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 15:38:44 -0400 Subject: SL-18837: Use secondlife -3p/action-gh-release instead of the original softprops/action-gh-release repo, because organization rules forbid directly using the softprops repo. --- .github/workflows/build.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 517efa6fc6..9930762167 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -238,7 +238,8 @@ jobs: runs-on: [ubuntu-latest] if: startsWith(github.ref, 'refs/tags/v') steps: - - uses: softprops/action-gh-release@v1 + # forked from softprops/action-gh-release + - uses: secondlife-3p/action-gh-release@v1 with: generate_release_notes: true files: | -- cgit v1.2.3 From b449667d8d5fb24adb0e1672ba9182a8ecabf97c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 16:19:19 -0400 Subject: SL-19854: Ensure BugSplat credentials are exported. --- build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sh b/build.sh index 5395a04712..38f0a59fd5 100755 --- a/build.sh +++ b/build.sh @@ -194,6 +194,7 @@ pre_build() fi fi set -x + export BUGSPLAT_USER BUGSPLAT_PASS # honor autobuild_configure_parameters same as sling-buildscripts eval_autobuild_configure_parameters=$(eval $(echo echo $autobuild_configure_parameters)) -- cgit v1.2.3 From bbb192eb7935feb095d12d2af4860bb0958268fa Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 18 Jul 2023 16:26:28 -0400 Subject: SL-19854: Update bugsplat to release v1.0.7.86a960a. --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index c75154465e..39fd0c02b1 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -195,11 +195,11 @@ archive hash - 4490a7d3986a4e04d6569fea7ae9e618735d5a6f + 598333cfc5f84a1cffe2b26db340c9828f9e2cc9 hash_algorithm sha1 url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.108c9b7/bugsplat-1.0.7.108c9b7-darwin64-108c9b7.tar.zst + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.86a960a/bugsplat-1.0.7.86a960a-darwin64-86a960a.tar.zst name darwin64 @@ -209,11 +209,11 @@ archive hash - 029d087004f3f59f39376a0dea60d3d4a4e77610 + 5452c917fb1d3fd68b45cdc19f88590c9ef50bb2 hash_algorithm sha1 url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.108c9b7/bugsplat-4.0.3.0.108c9b7-windows-108c9b7.tar.zst + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.86a960a/bugsplat-4.0.3.0.86a960a-windows-86a960a.tar.zst name windows @@ -223,18 +223,18 @@ archive hash - 56163ae7aa5fa2e0b2e77d0fc63205452bc16351 + 772f61e5b9fd048f463a50ab4381d57cef0d76aa hash_algorithm sha1 url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.108c9b7/bugsplat-4.0.3.0.108c9b7-windows64-108c9b7.tar.zst + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.86a960a/bugsplat-4.0.3.0.86a960a-windows64-86a960a.tar.zst name windows64 version - 4.0.3.0.108c9b7 + 4.0.3.0.86a960a colladadom -- cgit v1.2.3 From 248f78b45ec9ee275f3b97e50b9962f2e54dbde2 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 21 Jul 2023 10:24:46 -0400 Subject: SL-19854: Update bugsplat to release v1.0.7-527603a. --- autobuild.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 39fd0c02b1..233a41676b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -195,11 +195,11 @@ archive hash - 598333cfc5f84a1cffe2b26db340c9828f9e2cc9 + d152f19f4a5a9c8013f006e19b1fcd88692bccf1 hash_algorithm sha1 url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.86a960a/bugsplat-1.0.7.86a960a-darwin64-86a960a.tar.zst + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7-527603a/bugsplat-1.0.7-527603a-darwin64-527603a.tar.zst name darwin64 @@ -209,11 +209,11 @@ archive hash - 5452c917fb1d3fd68b45cdc19f88590c9ef50bb2 + 21afe91b0f334685ca46bf043784145f9a85709f hash_algorithm sha1 url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.86a960a/bugsplat-4.0.3.0.86a960a-windows-86a960a.tar.zst + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7-527603a/bugsplat-4.0.3.0-527603a-windows-527603a.tar.zst name windows @@ -223,18 +223,18 @@ archive hash - 772f61e5b9fd048f463a50ab4381d57cef0d76aa + 1364da04333570b73c771e4f4acd1bacc7fc3f02 hash_algorithm sha1 url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7.86a960a/bugsplat-4.0.3.0.86a960a-windows64-86a960a.tar.zst + https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7-527603a/bugsplat-4.0.3.0-527603a-windows64-527603a.tar.zst name windows64 version - 4.0.3.0.86a960a + 4.0.3.0-527603a colladadom -- cgit v1.2.3 From 7cca3506b66cd6cbc04e795d84b1991b42b224d6 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 21 Jul 2023 14:02:00 -0400 Subject: SL-18837: Try triggering GH release for tag like "Second Life "... --- .github/workflows/build.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 9930762167..35db50ef00 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -96,6 +96,7 @@ jobs: RUNNER_OS: ${{ runner.os }} run: | # set up things the viewer's build.sh script expects + set -x mkdir -p "$build_log_dir" mkdir -p "$BUILDSCRIPTS_SHARED/packages/lib/python" source "$BUILDSCRIPTS_SUPPORT_FUNCTIONS" @@ -165,7 +166,7 @@ jobs: # Build with a tag like "Second Life Project Shiny:abcdef0" to get a # viewer channel "Second Life Project Shiny" (ignoring ":hash", # needed to disambiguate tags). - if [[ "${GIT_REF:0:12}" == "Second Life " ]] + if [[ "$GITHUB_REF_TYPE" == "tag" && "${GITHUB_REF_NAME:0:12}" == "Second Life " ]] then export viewer_channel="${GIT_REF%:*}" else export viewer_channel="Second Life Test" fi @@ -236,7 +237,7 @@ jobs: release: needs: build runs-on: [ubuntu-latest] - if: startsWith(github.ref, 'refs/tags/v') + if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second Life ') steps: # forked from softprops/action-gh-release - uses: secondlife-3p/action-gh-release@v1 -- cgit v1.2.3 From 6605403661da96dde7ff6dfb6bcfa87fc087ff0e Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 21 Jul 2023 15:24:11 -0400 Subject: SL-18837: Tags can't have spaces or colons. Look for valid ones. --- .github/workflows/build.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 35db50ef00..4262d3b6ef 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -163,11 +163,12 @@ jobs: # seen before, so numerous tests don't know about it. [[ "$arch" == "MINGW6" ]] && arch=CYGWIN export AUTOBUILD="$(which autobuild)" - # Build with a tag like "Second Life Project Shiny:abcdef0" to get a - # viewer channel "Second Life Project Shiny" (ignoring ":hash", + # Build with a tag like "Second_Life_Project_Shiny#abcdef0" to get a + # viewer channel "Second Life Project Shiny" (ignoring "#hash", # needed to disambiguate tags). - if [[ "$GITHUB_REF_TYPE" == "tag" && "${GITHUB_REF_NAME:0:12}" == "Second Life " ]] - then export viewer_channel="${GIT_REF%:*}" + if [[ "$GITHUB_REF_TYPE" == "tag" && "${GITHUB_REF_NAME:0:12}" == "Second_Life_" ]] + then viewer_channel="${GITHUB_REF_NAME%#*}" + export viewer_channel="${viewer_channel//_/ }" else export viewer_channel="Second Life Test" fi @@ -237,7 +238,7 @@ jobs: release: needs: build runs-on: [ubuntu-latest] - if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second Life ') + if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') steps: # forked from softprops/action-gh-release - uses: secondlife-3p/action-gh-release@v1 -- cgit v1.2.3 From f9a30e7ed13091f81686d183c25e57d732cee957 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 22 Jul 2023 08:18:13 -0400 Subject: SL-18837: Try posting build.yaml step outputs as job outputs. --- .github/workflows/build.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4262d3b6ef..3ea58d9c09 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -18,6 +18,10 @@ jobs: - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" runs-on: ${{ matrix.runner }} + outputs: + # pass these from build job to release job + installer: ${{ steps.build.outputs.installer }} + metadata: ${{ steps.build.outputs.metadata }} env: AUTOBUILD_ADDRSIZE: 64 AUTOBUILD_BUILD_ID: ${{ github.run_id }} @@ -245,5 +249,5 @@ jobs: with: generate_release_notes: true files: | - ${{ steps.build.outputs.installer }} - ${{ steps.build.outputs.metadata }} + ${{ jobs.build.outputs.installer }} + ${{ jobs.build.outputs.metadata }} -- cgit v1.2.3 From 73a857ba31a21add60db349fc29fb9f7a5edfa00 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 22 Jul 2023 08:32:21 -0400 Subject: SL-18837: Use 'needs' context, not 'jobs' context in release job to reference outputs from the build job. Also mark the release as prerelease, and fail the release action if we still can't find the files we're trying to post. --- .github/workflows/build.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 3ea58d9c09..01f7f2bd7b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -247,7 +247,10 @@ jobs: # forked from softprops/action-gh-release - uses: secondlife-3p/action-gh-release@v1 with: + prerelease: true generate_release_notes: true + # the only reason we generate a GH release is to post build products + fail_on_unmatched_files: true files: | - ${{ jobs.build.outputs.installer }} - ${{ jobs.build.outputs.metadata }} + ${{ needs.build.outputs.installer }} + ${{ needs.build.outputs.metadata }} -- cgit v1.2.3 From 70e4c73baae5759b6a2bae9722fa64cfb8b0bb20 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 18 Aug 2023 11:28:15 -0400 Subject: SL-18837: Engage initial GH viewer release script. --- .github/workflows/build.yaml | 38 +++++++++++++++++++++++++++---------- .github/workflows/post_artifacts.py | 31 ++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 10 deletions(-) create mode 100755 .github/workflows/post_artifacts.py diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 01f7f2bd7b..1cdef55f5f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -241,16 +241,34 @@ jobs: release: needs: build - runs-on: [ubuntu-latest] + runs-on: ubuntu-latest if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') steps: - # forked from softprops/action-gh-release - - uses: secondlife-3p/action-gh-release@v1 + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.sha }} + + - name: Setup python + uses: actions/setup-python@v4 with: - prerelease: true - generate_release_notes: true - # the only reason we generate a GH release is to post build products - fail_on_unmatched_files: true - files: | - ${{ needs.build.outputs.installer }} - ${{ needs.build.outputs.metadata }} + python-version: "3.11" + + - name: Install PyGithub + run: pip3 install PyGithub + + - name: Unpack artifacts + env: + BUILD: ${{ toJSON(needs.build) }} + run: .github/workflows/post_artifacts.py + +## # forked from softprops/action-gh-release +## - uses: secondlife-3p/action-gh-release@v1 +## with: +## prerelease: true +## generate_release_notes: true +## # the only reason we generate a GH release is to post build products +## fail_on_unmatched_files: true +## files: | +## ${{ needs.build.outputs.installer }} +## ${{ needs.build.outputs.metadata }} diff --git a/.github/workflows/post_artifacts.py b/.github/workflows/post_artifacts.py new file mode 100755 index 0000000000..bb51feb0a9 --- /dev/null +++ b/.github/workflows/post_artifacts.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +"""\ +@file post_artifacts.py +@author Nat Goodspeed +@date 2023-08-18 +@brief Unpack and post artifacts from a GitHub Actions build + +$LicenseInfo:firstyear=2023&license=viewerlgpl$ +Copyright (c) 2023, Linden Research, Inc. +$/LicenseInfo$ +""" + +import github +import json +import os +import sys + +class Error(Exception): + pass + +def main(*raw_args): + buildstr = os.getenv('BUILD') + build = json.loads(buildstr) + from pprint import pprint + pprint(build) + +if __name__ == "__main__": + try: + sys.exit(main(*sys.argv[1:])) + except Error as err: + sys.exit(str(err)) -- cgit v1.2.3 From 929aa15c80c89555f1f5c5fc57c4d4c27650a1c8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 28 Aug 2023 13:21:16 -0400 Subject: SL-18837: Experiment with download-artifact downloading all files. --- .github/workflows/build.yaml | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 1cdef55f5f..440681edb1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -242,25 +242,30 @@ jobs: release: needs: build runs-on: ubuntu-latest - if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') + ##if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - ref: ${{ github.sha }} - - - name: Setup python - uses: actions/setup-python@v4 - with: - python-version: "3.11" +## - name: Checkout code +## uses: actions/checkout@v3 +## with: +## ref: ${{ github.sha }} +## +## - name: Setup python +## uses: actions/setup-python@v4 +## with: +## python-version: "3.11" +## +## - name: Install PyGithub +## run: pip3 install PyGithub +## +## - name: Unpack artifacts +## env: +## BUILD: ${{ toJSON(needs.build) }} +## run: .github/workflows/post_artifacts.py - - name: Install PyGithub - run: pip3 install PyGithub + - uses: actions/download-artifact@v3 - - name: Unpack artifacts - env: - BUILD: ${{ toJSON(needs.build) }} - run: .github/workflows/post_artifacts.py + - name: Show what we downloaded + run: ls -R ## # forked from softprops/action-gh-release ## - uses: secondlife-3p/action-gh-release@v1 -- cgit v1.2.3 From 25efba151f98308a0e2d9af52a76173be3f8aa04 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 29 Aug 2023 11:12:32 -0400 Subject: SL-18837: On Windows, LLLeap partial final line test failed. Add DEBUG log output to try to diagnose. --- indra/llcommon/llleap.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/indra/llcommon/llleap.cpp b/indra/llcommon/llleap.cpp index c87c0758fe..060e96557d 100644 --- a/indra/llcommon/llleap.cpp +++ b/indra/llcommon/llleap.cpp @@ -376,6 +376,17 @@ public: // Read all remaining bytes and log. LL_INFOS("LLLeap") << mDesc << ": " << rest << LL_ENDL; } + /*--------------------------- diagnostic ---------------------------*/ + else if (data["eof"].asBoolean()) + { + LL_DEBUGS("LLLeap") << mDesc << " ended, no partial line" << LL_ENDL; + } + else + { + LL_DEBUGS("LLLeap") << mDesc << " (still running, " << childerr.size() + << " bytes pending)" << LL_ENDL; + } + /*------------------------- end diagnostic -------------------------*/ return false; } -- cgit v1.2.3 From 7779cebdcd1aecbce92c660072c00064185a95f1 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 29 Aug 2023 17:55:53 -0400 Subject: SL-18837: Introduce flatten_files.py and use to post release assets --- .github/workflows/build.yaml | 46 +++++---- .github/workflows/flatten_files.py | 180 ++++++++++++++++++++++++++++++++++++ .github/workflows/post_artifacts.py | 31 ------- 3 files changed, 206 insertions(+), 51 deletions(-) create mode 100755 .github/workflows/flatten_files.py delete mode 100755 .github/workflows/post_artifacts.py diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 440681edb1..61a1215d07 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -244,16 +244,16 @@ jobs: runs-on: ubuntu-latest ##if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') steps: -## - name: Checkout code -## uses: actions/checkout@v3 -## with: -## ref: ${{ github.sha }} -## -## - name: Setup python -## uses: actions/setup-python@v4 -## with: -## python-version: "3.11" -## + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.sha }} + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: "3.11" + ## - name: Install PyGithub ## run: pip3 install PyGithub ## @@ -263,17 +263,23 @@ jobs: ## run: .github/workflows/post_artifacts.py - uses: actions/download-artifact@v3 + with: + path: artifacts - name: Show what we downloaded run: ls -R -## # forked from softprops/action-gh-release -## - uses: secondlife-3p/action-gh-release@v1 -## with: -## prerelease: true -## generate_release_notes: true -## # the only reason we generate a GH release is to post build products -## fail_on_unmatched_files: true -## files: | -## ${{ needs.build.outputs.installer }} -## ${{ needs.build.outputs.metadata }} + - name: Make output dir + run: mkdir assets + + - name: Reshuffle artifact files + run: .github/workflows/flatten_files.py assets artifacts + + # forked from softprops/action-gh-release + - uses: secondlife-3p/action-gh-release@v1 + with: + prerelease: true + generate_release_notes: true + # the only reason we generate a GH release is to post build products + fail_on_unmatched_files: true + files: "assets/*" diff --git a/.github/workflows/flatten_files.py b/.github/workflows/flatten_files.py new file mode 100755 index 0000000000..542fa0206b --- /dev/null +++ b/.github/workflows/flatten_files.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +"""\ +@file flatten_files.py +@author Nat Goodspeed +@date 2023-08-18 +@brief From an input directory tree, populate a single flat output directory. + +$LicenseInfo:firstyear=2023&license=viewerlgpl$ +Copyright (c) 2023, Linden Research, Inc. +$/LicenseInfo$ +""" + +DESCRIPTION = """\ +From an input directory tree, populate a single flat output directory. + +For files with colliding names, rename them to unambiguous names derived from +their relative pathname within the input tree. + +This is useful when downloading GitHub build artifacts from multiple platforms +to post them all as release assets without collisions. +""" + +from collections import defaultdict +from contextlib import suppress +import filecmp +import os +from pathlib import Path +import sys + +class Error(Exception): + pass + +def flatten(output, input='.', dry_run=False): + try: + in_stat = os.stat(input) + except FileNotFoundError as err: + raise Error(f'{input} does not exist') from err + + try: + out_stat = os.stat(output) + except FileNotFoundError: + # output doesn't yet exist - at this point that's okay + out_stat = None + + # use samestat() to avoid being fooled by different ways of expressing the + # same path + if out_stat and os.path.samestat(out_stat, in_stat): + # output directory same as input: in this case, don't prune output + # directory from input tree walk because we'd prune everything + out_stat = None + elif out_stat: + # distinct existing output directory (potentially containing, or + # contained by, the input directory) + outfiles = [f for f in Path(output).rglob('*') if f.is_file()] + if outfiles: + print(f'Warning: {output} already contains {len(outfiles)} files:', file=sys.stderr) + for f in sorted(outfiles): + print(' ', f.relative_to(output), file=sys.stderr) + + # Use os.walk() instead of Path.rglob() so we can prune unwanted + # directories. + infiles = [] + for parent, dirs, files in os.walk(input): + infiles.extend(Path(parent, f) for f in files) + # Prune directories: because we must modify the dirs list in-place, + # and because we're using indexes, traverse backwards so deletion + # won't affect subsequent iterations. Yes we really must subtract 1 + # that many times. + for idx in range(len(dirs)-1, -1, -1): + if dirs[idx].startswith('.'): + # skip dot-named directories + print(f'ignoring {dirs[idx]}', file=sys.stderr) + del dirs[idx] + elif out_stat and os.path.samestat(os.stat(os.path.join(parent, dirs[idx])), out_stat): + # output directory lives under input directory: ignore any + # previous contents + print(f'ignoring nested output directory {os.path.join(parent, dirs[idx])}', + file=sys.stderr) + del dirs[idx] + + # Now that we've traversed the input tree, create the output directory if + # needed. + output = Path(output) + output.mkdir(parents=True, exist_ok=True) + + # group files by basename to identify collisions + basenames = defaultdict(list) + for f in infiles: + basenames[f.name].append(f) + + # output names: populate it right away with unique basenames + outnames = { name: files[0] for name, files in basenames.items() + if len(files) == 1 } + + # now focus on the collisions + for name, files in basenames.items(): + if len(files) <= 1: + continue + + # Special case: are these colliding files equal? e.g. viewer_version.txt + # Pass shallow=False so we actually read the files in question. Even + # if they're identical, they've been downloaded from different + # artifacts and have different timestamps (which would fool the default + # shallow=True). This could be time-consuming if we were comparing two + # of our very large files, but (a) our very large files already have + # distinct names and so don't reach this call and (b) if we somehow do + # wind up in that situation, it would be even more important to post + # only a single copy. + if all(filecmp.cmp(files[0], f, shallow=False) for f in files[1:]): + # pick only one of them and use its simple basename + outnames[name] = files[0] + continue + + # Because of our intended use for GitHub Actions build artifacts, we + # assume the top-level artifact names are descriptive. We'd still like + # to eliminate mid-level directory names that don't help disambiguate, + # so for instance, given: + # Windows metadata/newview/viewer_version.txt + # macOS metadata/newview/viewer_version.txt + # we see no reason to retain the 'newview' pathname component. Try + # longer and longer prefixes of the pathname parents. (But don't + # forget to trim off the original input directory pathname.) + filepairs = [(f, f.relative_to(input)) for f in files] + partslen = max(len(rel.parts) for f, rel in filepairs) + # skip the basename itself, we'll append that explicitly + for prefixlen in range(partslen - 1): + # Consider these relative names (shouldn't occur, but...): + # parent/autobuild-package.xml + # parent/newview/autobuild-package.xml + # Unless these are in fact identical, they'll collide, meaning + # we'll see them here. But beware their unequal numbers of parts. + # partslen will be 3, so prefixlen will be 0, 1 -- but unless we + # constrain it with min(), for prefixlen == 1 we'd construct: + # ('parent', 'autobuild-package.xml', 'autobuild-package.xml') + # ('parent', 'newview', 'autobuild-package.xml') + # whereas of course the correct answer would be: + # ('parent', 'autobuild-package.xml') + # ('parent', 'newview', 'autobuild-package.xml') + # Since we already know the basename is identical for every f in + # files, though, we can omit it from our uniqueness testing. + trynames = { rel.parts[:min(prefixlen+1, len(rel.parts)-1)]: f + for f, rel in filepairs } + if len(trynames) == len(files): + # Found a prefix without collisions -- note that we're + # guaranteed to get here eventually since the full paths are + # distinct in the filesystem, we just want to try to shorten. + # Path.parts is specifically documented to be a tuple. Join + # the key tuple with some delimiter acceptable to the + # filesystem. + outnames.update(('-'.join(nametuple + (name,)), f) + for nametuple, f in trynames.items()) + # stop considering longer prefixlens + break + + # at this point outnames should have distinct keys -- move to the output + # directory + for name, f in outnames.items(): + newname = output / name + if (not dry_run) and newname != f: + newname = f.rename(newname) + print(f'{f} => {newname}') + +def main(*raw_args): + from argparse import ArgumentParser + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument('-n', '--dry-run', action='store_true', default=False, + help="""show what would happen without moving files""") + parser.add_argument('output', metavar='OUTDIR', + help="""populate OUTDIR with (possibly renamed) files""") + parser.add_argument('input', metavar='INDIR', nargs='?', default='.', + help="""recursively read files under INDIR tree""") + + args = parser.parse_args(raw_args) + flatten(args.output, args.input, dry_run=args.dry_run) + +if __name__ == "__main__": + try: + sys.exit(main(*sys.argv[1:])) + except Error as err: + sys.exit(str(err)) diff --git a/.github/workflows/post_artifacts.py b/.github/workflows/post_artifacts.py deleted file mode 100755 index bb51feb0a9..0000000000 --- a/.github/workflows/post_artifacts.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python3 -"""\ -@file post_artifacts.py -@author Nat Goodspeed -@date 2023-08-18 -@brief Unpack and post artifacts from a GitHub Actions build - -$LicenseInfo:firstyear=2023&license=viewerlgpl$ -Copyright (c) 2023, Linden Research, Inc. -$/LicenseInfo$ -""" - -import github -import json -import os -import sys - -class Error(Exception): - pass - -def main(*raw_args): - buildstr = os.getenv('BUILD') - build = json.loads(buildstr) - from pprint import pprint - pprint(build) - -if __name__ == "__main__": - try: - sys.exit(main(*sys.argv[1:])) - except Error as err: - sys.exit(str(err)) -- cgit v1.2.3 From b06aa53f59dcd2efa4c73bbaa84b17c0d080117e Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 29 Aug 2023 20:03:21 -0400 Subject: SL-18837: Only list the downloaded artifacts. --- .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 61a1215d07..d62b640369 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -267,7 +267,7 @@ jobs: path: artifacts - name: Show what we downloaded - run: ls -R + run: ls -R artifacts - name: Make output dir run: mkdir assets -- cgit v1.2.3 From e8cd5205e89993df357410c245f99ebb7703958d Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 31 Aug 2023 15:53:56 -0400 Subject: SL-19243: Try to run Windows BugSplat uploads as a separate GH job. Upload a new Windows-exe artifact containing just the executable (needed by BugSplat) separately from the artifact containing the whole NSIS installer. This requires a new viewer_exe step output set by viewer_manifest.py. Define viewer_channel and viewer_version as build job outputs. Set viewer_channel in build.yaml when tag is interpreted. Set viewer_version in build.sh at the point when it would have posted viewer_version.txt to codeticket. Add a post-windows-symbols job dependent on the build job that engages secondlife/viewer-post-bugsplat-windows, which in turn engages secondlife/post-bugsplat-windows. We keep the actual upload code in a separate repo in case we need to modify that code before rerunning to resolve upload errors. If we kept the upload code in the viewer repo itself, rerunning the upload with modifications would necessarily require rerunning the viewer build, which would defeat the purpose of SL-19243. Because of that new upload job in build.yaml, skip Windows symbol uploads in build.sh. Use a simple (platform name) artifact name for metadata because of flatten_files.py's filename collision resolution. Use hyphens, not spaces, in remaining artifact names: apparently download-artifact doesn't much like artifacts with spaces in their names. Only run the release job when in fact there's a tag. Without that, we get errors. We need not create flatten_files.py's output directory beforehand because it will do that implicitly. --- .github/workflows/build.yaml | 45 ++++++++++++++++++++++++++++++---------- build.sh | 24 +++++++++++++-------- indra/newview/viewer_manifest.py | 6 ++++++ 3 files changed, 55 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d62b640369..ad5925d266 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -19,9 +19,8 @@ jobs: developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" runs-on: ${{ matrix.runner }} outputs: - # pass these from build job to release job - installer: ${{ steps.build.outputs.installer }} - metadata: ${{ steps.build.outputs.metadata }} + viewer_channel: ${{ steps.build.outputs.viewer_channel }} + viewer_version: ${{ steps.build.outputs.viewer_version }} env: AUTOBUILD_ADDRSIZE: 64 AUTOBUILD_BUILD_ID: ${{ github.run_id }} @@ -175,6 +174,7 @@ jobs: export viewer_channel="${viewer_channel//_/ }" else export viewer_channel="Second Life Test" fi + echo "viewer_channel=$viewer_channel" >> "$GITHUB_OUTPUT" # On windows we need to point the build to the correct python # as neither CMake's FindPython nor our custom Python.cmake module @@ -207,24 +207,37 @@ jobs: - name: Upload installer uses: actions/upload-artifact@v3 with: - name: "${{ steps.build.outputs.artifact }} installer" + name: "${{ steps.build.outputs.artifact }}-installer" # emitted by build.sh, possibly multiple lines path: | ${{ steps.build.outputs.installer }} + - name: Upload executable + uses: actions/upload-artifact@v3 + with: + name: "${{ steps.build.outputs.artifact }}-exe + if: steps.build.outputs.viewer_exe + path: ${{ steps.build.outputs.viewer_exe }} + # The other upload of nontrivial size is the symbol file. Use a distinct # artifact for that too. - name: Upload symbol file uses: actions/upload-artifact@v3 with: - name: "${{ steps.build.outputs.artifact }} symbols" + name: "${{ steps.build.outputs.artifact }}-symbols" path: | ${{ steps.build.outputs.symbolfile }} - name: Upload metadata uses: actions/upload-artifact@v3 with: - name: "${{ steps.build.outputs.artifact }} metadata" + # Call this artifact just "Windows" or "macOS" because it's the only + # artifact in which we expect files from both platforms with + # colliding names (e.g. autobuild-package.xml). Our flatten_files.py + # (see release step) resolves collisions by prepending the artifact + # name, so when we anticipate collisions, it's good to keep the + # artifact name short and sweet. + name: "${{ steps.build.outputs.artifact }}" # emitted by build.sh, possibly multiple lines path: | ${{ steps.build.outputs.metadata }} @@ -234,15 +247,28 @@ jobs: # should only be set for viewer-private if: steps.build.outputs.physicstpv with: - name: "${{ steps.build.outputs.artifact }} physics" + name: "${{ steps.build.outputs.artifact }}-physics" # emitted by build.sh, zero or one lines path: | ${{ steps.build.outputs.physicstpv }} + post-windows-symbols: + needs: build + runs-on: ubuntu-latest + steps: + - name: Post windows symbols + uses: secondlife/viewer-post-bugsplat-windows + with: + username: ${{ secrets.BUGSPLAT_USER }} + password: ${{ secrets.BUGSPLAT_PASS }} + database: "SecondLife_Viewer_2018" + channel: ${{ needs.build.outputs.viewer_channel }} + version: ${{ needs.build.outputs.viewer_version }} + release: needs: build runs-on: ubuntu-latest - ##if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') + if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') steps: - name: Checkout code uses: actions/checkout@v3 @@ -269,9 +295,6 @@ jobs: - name: Show what we downloaded run: ls -R artifacts - - name: Make output dir - run: mkdir assets - - name: Reshuffle artifact files run: .github/workflows/flatten_files.py assets artifacts diff --git a/build.sh b/build.sh index 38f0a59fd5..4dda0800b6 100755 --- a/build.sh +++ b/build.sh @@ -420,9 +420,11 @@ do if [ -r "$build_dir/newview/viewer_version.txt" ] then begin_section "Viewer Version" - python_cmd "$helpers/codeticket.py" addoutput "Viewer Version" "$(<"$build_dir/newview/viewer_version.txt")" --mimetype inline-text \ + viewer_version="$(<"$build_dir/newview/viewer_version.txt")" + python_cmd "$helpers/codeticket.py" addoutput "Viewer Version" "$viewer_version" --mimetype inline-text \ || fatal "Upload of viewer version failed" metadata+=("$build_dir/newview/viewer_version.txt") + echo "viewer_version=$viewer_version" >> "$GITHUB_OUTPUT" end_section "Viewer Version" fi ;; @@ -599,14 +601,18 @@ then # Run upload extensions # Ex: bugsplat - if [ -d ${build_dir}/packages/upload-extensions ]; then - for extension in ${build_dir}/packages/upload-extensions/*.sh; do - begin_section "Upload Extension $extension" - . $extension - [ $? -eq 0 ] || fatal "Upload of extension $extension failed" - wait_for_codeticket - end_section "Upload Extension $extension" - done + ## SL-19243 HACK: testing separate GH upload job on Windows + if [[ "$arch" != "CYGWIN" ]] + then + if [ -d ${build_dir}/packages/upload-extensions ]; then + for extension in ${build_dir}/packages/upload-extensions/*.sh; do + begin_section "Upload Extension $extension" + . $extension + [ $? -eq 0 ] || fatal "Upload of extension $extension failed" + wait_for_codeticket + end_section "Upload Extension $extension" + done + fi fi fi end_section "Uploads" diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 1e43485b9c..6c4f8cb2d4 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -480,6 +480,12 @@ class WindowsManifest(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 that as one of the GitHub step outputs + GITHUB_OUTPUT = os.getenv('GITHUB_OUTPUT') + if GITHUB_OUTPUT: + exepath = os.path.join(self.get_dst_prefix(), self.final_exe()) + with open(GITHUB_OUTPUT, 'a') as outf: + print(f'viewer_exe={exepath}', file=outf) with self.prefix(src=os.path.join(pkgdir, "VMP")): # include the compiled launcher scripts so that it gets included in the file_list -- cgit v1.2.3 From 58e8c3567f219703623f3a4755d3ba796ba4ef85 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 31 Aug 2023 16:06:13 -0400 Subject: SL-19243: Fix build.yaml syntax error. --- .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 ad5925d266..e0caee849a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -215,7 +215,7 @@ jobs: - name: Upload executable uses: actions/upload-artifact@v3 with: - name: "${{ steps.build.outputs.artifact }}-exe + name: "${{ steps.build.outputs.artifact }}-exe" if: steps.build.outputs.viewer_exe path: ${{ steps.build.outputs.viewer_exe }} -- cgit v1.2.3 From 348d7107070defa996b870691df23570694f1713 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 31 Aug 2023 16:09:12 -0400 Subject: SL-19243: Fix 'uses:' reference to viewer-post-bugsplat-windows --- .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 e0caee849a..a6a8b49d26 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -257,7 +257,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Post windows symbols - uses: secondlife/viewer-post-bugsplat-windows + uses: secondlife/viewer-post-bugsplat-windows@main with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} -- cgit v1.2.3 From 3147b55cecb5fc8a0de71cee09b0e12b66b75a40 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 31 Aug 2023 17:28:25 -0400 Subject: SL-19243: Fix wonky 'if:' in build.yaml --- .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 a6a8b49d26..526ac6999f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -213,10 +213,10 @@ jobs: ${{ steps.build.outputs.installer }} - name: Upload executable + if: steps.build.outputs.viewer_exe uses: actions/upload-artifact@v3 with: name: "${{ steps.build.outputs.artifact }}-exe" - if: steps.build.outputs.viewer_exe path: ${{ steps.build.outputs.viewer_exe }} # The other upload of nontrivial size is the symbol file. Use a distinct -- cgit v1.2.3 From 6a219d147d0761fce1fd75dc75f98b4e5283feb7 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 15 Aug 2023 15:32:35 -0400 Subject: SL-18837: Enlarge default coroutine stack size. A test executable on a GitHub Windows runner failed with C00000FD, which reports stack overflow. (cherry picked from commit aab7b4ba3812e5876b1205285bcfd8cff96bcac9) --- indra/llcommon/llcoros.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index 70d8dfc8b9..cfaf3415e7 100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -123,11 +123,7 @@ LLCoros::LLCoros(): // Previously we used // boost::context::guarded_stack_allocator::default_stacksize(); // empirically this is insufficient. -#if ADDRESS_SIZE == 64 - mStackSize(512*1024), -#else - mStackSize(256*1024), -#endif + mStackSize(768*1024), // mCurrent does NOT own the current CoroData instance -- it simply // points to it. So initialize it with a no-op deleter. mCurrent{ [](CoroData*){} } -- cgit v1.2.3 From c8aa205fab621c6b88393b06268e0026eeb07a23 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 31 Aug 2023 22:35:49 -0400 Subject: SL-19243: Try to robustify GH Mac volume detach Use a retry loop very like the code-signing retry loop. --- indra/newview/viewer_manifest.py | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 6c4f8cb2d4..aa28632e8a 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1288,6 +1288,7 @@ class DarwinManifest(ViewerManifest): 'Keychains', 'viewer.keychain') self.run_command(['security', 'unlock-keychain', '-p', keychain_pwd, viewer_keychain]) + sign_retries=3 sign_retry_wait=15 resources = app_in_dmg + "/Contents/Resources/" plain_sign = glob.glob(resources + "llplugin/*.dylib") @@ -1296,9 +1297,10 @@ class DarwinManifest(ViewerManifest): resources + "SLPlugin.app/Contents/MacOS/SLPlugin", app_in_dmg, ] - for attempt in range(3): + for attempt in range(sign_retries): if attempt: # second or subsequent iteration - print("codesign failed, waiting {:d} seconds before retrying".format(sign_retry_wait), + print(f"codesign attempt {attempt+1} failed, " + f"waiting {sign_retry_wait:d} seconds before retrying", file=sys.stderr) time.sleep(sign_retry_wait) sign_retry_wait*=2 @@ -1329,18 +1331,37 @@ class DarwinManifest(ViewerManifest): # 'err' goes out of scope sign_failed = err else: - print("Maximum codesign attempts exceeded; giving up", file=sys.stderr) + print(f"{sign_retries} codesign attempts failed; giving up", + file=sys.stderr) raise sign_failed self.run_command(['spctl', '-a', '-texec', '-vvvv', app_in_dmg]) - self.run_command([self.src_path_of("installers/darwin/apple-notarize.sh"), app_in_dmg]) + self.run_command([self.src_path_of("installers/darwin/apple-notarize.sh"), + app_in_dmg]) finally: + # Unmount the image even if exceptions from any of the above + detach_retries = 3 + detach_retry_wait = 2 # Empirically, on GitHub we've hit errors like: # hdiutil: couldn't eject "disk10" - Resource busy - # Try waiting a bit to see if that improves reliability. - time.sleep(2) - # Unmount the image even if exceptions from any of the above - self.run_command(['hdiutil', 'detach', '-force', devfile]) + for attempt in range(detach_retries): + if attempt: # second or subsequent iteration + print(f'detach failed, waiting {detach_retry_wait} seconds before retrying', + file=sys.stderr) + # Try waiting a bit to see if that improves reliability. + time.sleep(detach_retry_wait) + detach_retry_wait *= 2 + + try: + self.run_command(['hdiutil', 'detach', '-force', devfile]) + # if no exception, the detach worked + break + except ManifestError as err: + detach_failed = err + else: + print(f'{detach_retries} detach attempts failed', file=sys.stderr) + ## can we carry on anyway?? + ## raise detach_failed print("Converting temp disk image to final disk image") self.run_command(['hdiutil', 'convert', sparsename, '-format', 'UDZO', -- cgit v1.2.3 From 2ee8cb0e1601465737fad1fdc02dc237c4294330 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 1 Sep 2023 07:46:32 -0400 Subject: SL-19243: Job to post windows symbols must run on Windows. --- .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 526ac6999f..901cd092af 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -254,7 +254,7 @@ jobs: post-windows-symbols: needs: build - runs-on: ubuntu-latest + runs-on: windows steps: - name: Post windows symbols uses: secondlife/viewer-post-bugsplat-windows@main -- cgit v1.2.3 From 7cedb1eb20c1263ad1b26af6a3d297e532d641e1 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 1 Sep 2023 10:53:02 -0400 Subject: SL-19243: Add post-mac-symbols job using viewer-post-bugsplat-mac. The initial viewer-post-bugsplat-mac is just a placeholder so far, but we can flesh it out while the viewer builds necessitated by this change are running, and then we can iterate on viewer-post-bugsplat-mac without having to rebuild the viewer. --- .github/workflows/build.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 901cd092af..a901e33ec1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -256,7 +256,7 @@ jobs: needs: build runs-on: windows steps: - - name: Post windows symbols + - name: Post Windows symbols uses: secondlife/viewer-post-bugsplat-windows@main with: username: ${{ secrets.BUGSPLAT_USER }} @@ -265,6 +265,19 @@ jobs: channel: ${{ needs.build.outputs.viewer_channel }} version: ${{ needs.build.outputs.viewer_version }} + post-mac-symbols: + needs: build + runs-on: macos + steps: + - name: Post Mac symbols + uses: secondlife/viewer-post-bugsplat-mac@main + with: + username: ${{ secrets.BUGSPLAT_USER }} + password: ${{ secrets.BUGSPLAT_PASS }} + database: "SecondLife_Viewer_2018" + channel: ${{ needs.build.outputs.viewer_channel }} + version: ${{ needs.build.outputs.viewer_version }} + release: needs: build runs-on: ubuntu-latest -- cgit v1.2.3 From 00d8d4e9cdff7b5b584e7bd4f30c46902263c033 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 1 Sep 2023 12:16:36 -0400 Subject: SL-19243: Upload Mac .app as another build artifact. --- indra/newview/viewer_manifest.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index aa28632e8a..d07ec22496 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -406,6 +406,15 @@ class ViewerManifest(LLManifest): return os.path.relpath(abspath(path), abspath(base)) + def set_github_output_path(self, variable, path): + self.set_github_output(variable, os.path.join(self.get_dst_prefix(), path)) + + def set_github_output(self, variable, value): + GITHUB_OUTPUT = os.getenv('GITHUB_OUTPUT') + if GITHUB_OUTPUT: + with open(GITHUB_OUTPUT, 'a') as outf: + print('='.join((variable, value)), file=outf) + class WindowsManifest(ViewerManifest): # We want the platform, per se, for every Windows build to be 'win'. The @@ -481,11 +490,7 @@ class WindowsManifest(ViewerManifest): # 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 - GITHUB_OUTPUT = os.getenv('GITHUB_OUTPUT') - if GITHUB_OUTPUT: - exepath = os.path.join(self.get_dst_prefix(), self.final_exe()) - with open(GITHUB_OUTPUT, 'a') as outf: - print(f'viewer_exe={exepath}', file=outf) + self.set_github_output_path('viewer_exe', self.final_exe()) with self.prefix(src=os.path.join(pkgdir, "VMP")): # include the compiled launcher scripts so that it gets included in the file_list @@ -848,6 +853,7 @@ class DarwinManifest(ViewerManifest): 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="") + self.set_github_output_path('viewer_exe', self.channel() + ".app") pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") -- cgit v1.2.3 From 1f6213a58499d3f47f6ec74205ed2837bac83c29 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 1 Sep 2023 12:58:53 -0400 Subject: SL-19243: Try to list contents of xcarchive.zip --- build.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build.sh b/build.sh index 4dda0800b6..ba8c4dfc8a 100755 --- a/build.sh +++ b/build.sh @@ -613,6 +613,13 @@ then end_section "Upload Extension $extension" done fi + # SL-19243 HACK: List contents of xcarchive.zip + if [[ "$arch" == "Darwin" ]] + then + app_dir="${build_dir}/newview/${variant}" + xcarchive="$(ls -d "${app_dir}"/*.xcarchive.zip)" + unzip -l "$xcarchive" + fi fi fi end_section "Uploads" -- cgit v1.2.3 From bfb059d4ff63ef45f1703013561731953057b605 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 1 Sep 2023 15:28:36 -0400 Subject: SL-19243: Try harder to list contents of xcarchive.zip. upload-mac-symbols.sh actually moves the xcarchive.zip file to /tmp, which is why we couldn't find it when trying to list its contents after the upload. --- build.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/build.sh b/build.sh index ba8c4dfc8a..18b0e8df6f 100755 --- a/build.sh +++ b/build.sh @@ -604,6 +604,13 @@ then ## SL-19243 HACK: testing separate GH upload job on Windows if [[ "$arch" != "CYGWIN" ]] then + # SL-19243 HACK: List contents of xcarchive.zip, before running + # upload-mac-symbols.sh which moves it to /tmp + if [[ "$arch" == "Darwin" ]] + then + # e.g. build-darwin-x86_64/newview/Release/Second Life Test.xcarchive.zip + unzip -l "${build_dir}/newview/${variant}/${viewer_channel}.xcarchive.zip" + fi if [ -d ${build_dir}/packages/upload-extensions ]; then for extension in ${build_dir}/packages/upload-extensions/*.sh; do begin_section "Upload Extension $extension" @@ -613,13 +620,6 @@ then end_section "Upload Extension $extension" done fi - # SL-19243 HACK: List contents of xcarchive.zip - if [[ "$arch" == "Darwin" ]] - then - app_dir="${build_dir}/newview/${variant}" - xcarchive="$(ls -d "${app_dir}"/*.xcarchive.zip)" - unzip -l "$xcarchive" - fi fi fi end_section "Uploads" -- cgit v1.2.3 From b13c1f77c7004ab991eb38637ccde01bc4f13b6f Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 2 Sep 2023 09:44:24 -0400 Subject: SL-19242: Emphasize to upload-artifact that our .app is a directory --- indra/newview/viewer_manifest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index d07ec22496..1f67324aaa 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -853,7 +853,7 @@ class DarwinManifest(ViewerManifest): 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="") - self.set_github_output_path('viewer_exe', self.channel() + ".app") + self.set_github_output_path('viewer_exe', self.channel() + ".app/") pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") -- cgit v1.2.3 From 3eea556c28f86d1c1334879ff4d7dfc36201485e Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 2 Sep 2023 11:02:23 -0400 Subject: SL-19243: Post xcarchive.zip instead of separate symbols tarball. On Mac, in the CMake USE_BUGSPLAT logic, we created both xcarchive.zip (which is what BugSplat wants to see) and secondlife-symbols-darwin -64.tar.bz2 (which we don't think is used for anything). The tarball was posted to codeticket -- but why? If the point is to manually re-upload to BugSplat in case of failure, we'll do better saving xcarchive.zip to codeticket. For SL-19243, posting xcarchive.zip directly supports the goal of breaking out the upload to BugSplat as a separate step. Anyway, since xcarchive.zip is a superset of the tarball, the tarball can be recreated from the zip file, whereas the zip file can't be recreated from the tarball without opening the .dmg installer and extracting the viewer executable. If the xcarchive.zip file exists (that is, on Mac), post that to codeticket or GitHub, as applicable, instead of the tarball. In fact, in the USE_BUGSPLAT case, don't even bother creating the tarball since we're going to ignore it. Make the new build.sh logic that insists on BUGSPLAT_USER and BUGSPLAT_PASS conditional on BUGSPLAT_DB. --- build.sh | 56 +++++++++++++++++++++++++------------------- indra/newview/CMakeLists.txt | 19 ++------------- 2 files changed, 34 insertions(+), 41 deletions(-) diff --git a/build.sh b/build.sh index 18b0e8df6f..4f67fb9603 100755 --- a/build.sh +++ b/build.sh @@ -153,7 +153,7 @@ pre_build() RELEASE_CRASH_REPORTING=ON HAVOK=ON SIGNING=() - if [ "$arch" == "Darwin" -a "$variant" == "Release" ] + if [[ "$arch" == "Darwin" && "$variant" == "Release" ]] then SIGNING=("-DENABLE_SIGNING:BOOL=YES" \ "-DSIGNING_IDENTITY:STRING=Developer ID Application: Linden Research, Inc.") fi @@ -177,24 +177,27 @@ pre_build() VIEWER_SYMBOL_FILE="$(native_path "$abs_build_dir/newview/$variant/secondlife-symbols-$symplat-${AUTOBUILD_ADDRSIZE}.tar.bz2")" fi - # don't spew credentials into build log - set +x # expect these variables to be set in the environment from GitHub secrets - if [[ -z "$BUGSPLAT_USER" || -z "$BUGSPLAT_PASS" ]] + if [[ -n "$BUGSPLAT_DB" ]] then - # older mechanism involving build-secrets repo - - # if build_secrets_checkout isn't set, report its name - bugsplat_sh="${build_secrets_checkout:-\$build_secrets_checkout}/bugsplat/bugsplat.sh" - if [ -r "$bugsplat_sh" ] - then # show that we're doing this, just not the contents - echo source "$bugsplat_sh" - source "$bugsplat_sh" - else - fatal "BUGSPLAT_USER or BUGSPLAT_PASS missing, and no $bugsplat_sh" + # don't spew credentials into build log + set +x + if [[ -z "$BUGSPLAT_USER" || -z "$BUGSPLAT_PASS" ]] + then + # older mechanism involving build-secrets repo - + # if build_secrets_checkout isn't set, report its name + bugsplat_sh="${build_secrets_checkout:-\$build_secrets_checkout}/bugsplat/bugsplat.sh" + if [ -r "$bugsplat_sh" ] + then # show that we're doing this, just not the contents + echo source "$bugsplat_sh" + source "$bugsplat_sh" + else + fatal "BUGSPLAT_USER or BUGSPLAT_PASS missing, and no $bugsplat_sh" + fi fi + set -x + export BUGSPLAT_USER BUGSPLAT_PASS fi - set -x - export BUGSPLAT_USER BUGSPLAT_PASS # honor autobuild_configure_parameters same as sling-buildscripts eval_autobuild_configure_parameters=$(eval $(echo echo $autobuild_configure_parameters)) @@ -578,11 +581,23 @@ then # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ] then + # BugSplat wants to see xcarchive.zip + # e.g. build-darwin-x86_64/newview/Release/Second Life Test.xcarchive.zip + symbol_file="${build_dir}/newview/${variant}/${viewer_channel}.xcarchive.zip" + if [[ ! -f "$symbol_file" ]] + then + # symbol tarball we prep for (e.g.) Breakpad + symbol_file="$VIEWER_SYMBOL_FILE" + else + # SL-19243 HACK: List contents of xcarchive.zip, before running + # upload-mac-symbols.sh which moves it to /tmp + unzip -l "$symbol_file" + fi # Upload crash reporter file - retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Symbolfile" "$VIEWER_SYMBOL_FILE" \ + retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Symbolfile" "$symbol_file" \ || fatal "Upload of symbolfile failed" wait_for_codeticket - symbolfile+=("$VIEWER_SYMBOL_FILE") + symbolfile+=("$symbol_file") fi # Upload the llphysicsextensions_tpv package, if one was produced @@ -604,13 +619,6 @@ then ## SL-19243 HACK: testing separate GH upload job on Windows if [[ "$arch" != "CYGWIN" ]] then - # SL-19243 HACK: List contents of xcarchive.zip, before running - # upload-mac-symbols.sh which moves it to /tmp - if [[ "$arch" == "Darwin" ]] - then - # e.g. build-darwin-x86_64/newview/Release/Second Life Test.xcarchive.zip - unzip -l "${build_dir}/newview/${variant}/${viewer_channel}.xcarchive.zip" - fi if [ -d ${build_dir}/packages/upload-extensions ]; then for extension in ${build_dir}/packages/upload-extensions/*.sh; do begin_section "Upload Extension $extension" diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index dbd1f1b4ac..f23e4fa849 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2141,20 +2141,6 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE ) add_custom_target(dsym_generate DEPENDS "${VIEWER_APP_DSYM}") add_dependencies(dsym_generate ${VIEWER_BINARY_NAME}) - add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}" - # See above comments about "tar ...j" - COMMAND "tar" - ARGS - "cjf" - "${VIEWER_SYMBOL_FILE}" - "-C" - "${VIEWER_APP_DSYM}/.." - "${product}.dSYM" - DEPENDS "${VIEWER_APP_DSYM}" - COMMENT "Packing dSYM into ${VIEWER_SYMBOL_FILE}" - ) - add_custom_target(dsym_tarball DEPENDS "${VIEWER_SYMBOL_FILE}") - add_dependencies(dsym_tarball dsym_generate) add_custom_command(OUTPUT "${VIEWER_APP_XCARCHIVE}" COMMAND "zip" ARGS @@ -2172,16 +2158,15 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/dsym.stamp" COMMAND rm -rf "${VIEWER_APP_DSYM}" COMMAND touch "${CMAKE_CURRENT_BINARY_DIR}/dsym.stamp" - DEPENDS "${VIEWER_SYMBOL_FILE}" "${VIEWER_APP_XCARCHIVE}" + DEPENDS "${VIEWER_APP_XCARCHIVE}" COMMENT "Cleaning up dSYM" ) add_custom_target(generate_symbols DEPENDS "${VIEWER_APP_DSYM}" - "${VIEWER_SYMBOL_FILE}" "${VIEWER_APP_XCARCHIVE}" "${CMAKE_CURRENT_BINARY_DIR}/dsym.stamp" ) - add_dependencies(generate_symbols dsym_tarball dsym_xcarchive) + add_dependencies(generate_symbols dsym_xcarchive) endif (DARWIN) if (LINUX) # TBD -- cgit v1.2.3 From 2eda2eb21b720646ec8acc16d47551226f1c059d Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 2 Sep 2023 12:17:06 -0400 Subject: SL-19242: Fix duplicated 'Second Life Mumble.app' path component in the path passed as the macOS viewer_exe GitHub output. --- indra/newview/viewer_manifest.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 1f67324aaa..f6282743bb 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -853,7 +853,8 @@ class DarwinManifest(ViewerManifest): 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="") - self.set_github_output_path('viewer_exe', self.channel() + ".app/") + # capture the entire destination app bundle + self.set_github_output_path('viewer_exe', '') pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") -- cgit v1.2.3 From 5bf2317bd8a9ebef1d19b448fefd358264bde7c6 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 2 Sep 2023 12:19:26 -0400 Subject: SL-19243: Skip older Mac symbol upload because it moves the xcarchive.zip file away from where we later want to post it to GitHub. --- build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 4f67fb9603..6f74c64a39 100755 --- a/build.sh +++ b/build.sh @@ -616,8 +616,8 @@ then # Run upload extensions # Ex: bugsplat - ## SL-19243 HACK: testing separate GH upload job on Windows - if [[ "$arch" != "CYGWIN" ]] + ## SL-19243 HACK: testing separate GH upload jobs + if false then if [ -d ${build_dir}/packages/upload-extensions ]; then for extension in ${build_dir}/packages/upload-extensions/*.sh; do -- cgit v1.2.3 From 755f9d9ac9548e27d68ec701676e20c4824833f8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 6 Sep 2023 17:03:22 -0400 Subject: SL-19243: Specify macos-latest for post-mac-symbols. We want to run on a GitHub-hosted runner rather than one of our own. --- .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 a901e33ec1..025fc1560e 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -267,7 +267,7 @@ jobs: post-mac-symbols: needs: build - runs-on: macos + runs-on: macos-latest steps: - name: Post Mac symbols uses: secondlife/viewer-post-bugsplat-mac@main -- cgit v1.2.3 From 949909013e77e35fe59ed9507a2c40fdb31bc1fc Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 7 Sep 2023 11:38:00 -0400 Subject: SL-18837: Segregate ReleaseOS artifacts; don't even upload. Eliminate references to (no longer set) matrix.addrsize. --- .github/workflows/build.yaml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 69a7e4b6a6..46ec8fdeb9 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -86,10 +86,10 @@ jobs: id: cache-installables with: path: .autobuild-installables - key: ${{ runner.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} + key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} restore-keys: | - ${{ runner.os }}-${{ matrix.addrsize }}-${{ matrix.configuration }}- - ${{ runner.os }}-${{ matrix.addrsize }}- + ${{ runner.os }}-64-${{ matrix.configuration }}- + ${{ runner.os }}-64- - name: Install windows dependencies if: runner.os == 'Windows' @@ -205,9 +205,14 @@ jobs: # platform, we must disambiguate on more than the platform name. # e.g. if we were still running Windows 32-bit builds, we'd need to # qualify the artifact with bit width. - echo "artifact=$RUNNER_OS" >> $GITHUB_OUTPUT + if [[ "$AUTOBUILD_CONFIGURATION" == "ReleaseOS" ]] + then cfg_suffix='OS' + else cfg_suffix='' + fi + echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT - name: Upload installer + if: matrix.configuration != "ReleaseOS" uses: actions/upload-artifact@v3 with: name: "${{ steps.build.outputs.artifact }}-installer" @@ -216,7 +221,7 @@ jobs: ${{ steps.build.outputs.installer }} - name: Upload executable - if: steps.build.outputs.viewer_exe + if: matrix.configuration != "ReleaseOS" && steps.build.outputs.viewer_exe uses: actions/upload-artifact@v3 with: name: "${{ steps.build.outputs.artifact }}-exe" @@ -225,6 +230,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" uses: actions/upload-artifact@v3 with: name: "${{ steps.build.outputs.artifact }}-symbols" @@ -232,6 +238,7 @@ jobs: ${{ steps.build.outputs.symbolfile }} - name: Upload metadata + if: matrix.configuration != "ReleaseOS" uses: actions/upload-artifact@v3 with: # Call this artifact just "Windows" or "macOS" because it's the only @@ -248,7 +255,7 @@ jobs: - name: Upload physics package uses: actions/upload-artifact@v3 # should only be set for viewer-private - if: steps.build.outputs.physicstpv + if: matrix.configuration != "ReleaseOS" && steps.build.outputs.physicstpv with: name: "${{ steps.build.outputs.artifact }}-physics" # emitted by build.sh, zero or one lines -- cgit v1.2.3 From db71f834bc4b6898d8b38b484eb953924d42a5db Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 7 Sep 2023 11:44:53 -0400 Subject: SL-18837: Without USE_BUGSPLAT, no target generate_symbols. --- indra/newview/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index f23e4fa849..68f96e5669 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -2171,10 +2171,9 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE if (LINUX) # TBD endif (LINUX) - endif (USE_BUGSPLAT) - # for both Bugsplat and Breakpad - add_dependencies(llpackage generate_symbols) + add_dependencies(llpackage generate_symbols) + endif (USE_BUGSPLAT) endif () if (LL_TESTS) -- cgit v1.2.3 From bac73831c0f92dcdff1d85dab60e18ce6f6dabda Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 7 Sep 2023 11:48:15 -0400 Subject: SL-18837: String literals are single-quoted in GitHub expressions. --- .github/workflows/build.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 46ec8fdeb9..89241071e3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -212,7 +212,7 @@ jobs: echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT - name: Upload installer - if: matrix.configuration != "ReleaseOS" + if: matrix.configuration != 'ReleaseOS' uses: actions/upload-artifact@v3 with: name: "${{ steps.build.outputs.artifact }}-installer" @@ -221,7 +221,7 @@ 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_exe uses: actions/upload-artifact@v3 with: name: "${{ steps.build.outputs.artifact }}-exe" @@ -230,7 +230,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.configuration != 'ReleaseOS' uses: actions/upload-artifact@v3 with: name: "${{ steps.build.outputs.artifact }}-symbols" @@ -238,7 +238,7 @@ jobs: ${{ steps.build.outputs.symbolfile }} - name: Upload metadata - if: matrix.configuration != "ReleaseOS" + if: matrix.configuration != 'ReleaseOS' uses: actions/upload-artifact@v3 with: # Call this artifact just "Windows" or "macOS" because it's the only @@ -255,7 +255,7 @@ jobs: - name: Upload physics package uses: actions/upload-artifact@v3 # should only be set for viewer-private - if: matrix.configuration != "ReleaseOS" && steps.build.outputs.physicstpv + if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.physicstpv with: name: "${{ steps.build.outputs.artifact }}-physics" # emitted by build.sh, zero or one lines -- cgit v1.2.3 From 95aa00f7427b7d19ab502862b3018012c1bf1904 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 7 Sep 2023 13:40:46 -0400 Subject: SL-18837: Fix minor merge glitch. --- indra/llcommon/tests/llsdserialize_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 2de7df6f36..76e9ecc293 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -2081,7 +2081,7 @@ namespace tut " for item in DATA:\n" " serialized = llsd." << pyformatter << "(item)\n" " f.write(lenformat.pack(len(serialized)))\n" - " f.write(serialized)\n"); + " f.write(serialized)\n";}); std::ifstream inf(file.getName().c_str()); LLSD item; -- cgit v1.2.3 From 77227cf5c427b1be0481989f6cd9fd53a36dc487 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 7 Sep 2023 14:09:54 -0400 Subject: SL-18837: Suppress BUGSPLAT_DB for ReleaseOS builds. --- .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 89241071e3..77cb91cd85 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -34,8 +34,8 @@ jobs: AUTOBUILD_VARIABLES_FILE: ${{ github.workspace }}/.build-variables/variables AUTOBUILD_VSVER: "170" DEVELOPER_DIR: ${{ matrix.developer_dir }} - # Ensure that viewer builds engage Bugsplat. - BUGSPLAT_DB: "SecondLife_Viewer_2018" + # Ensure that Linden viewer builds engage Bugsplat. + BUGSPLAT_DB: ${{ matrix.configuration != 'ReleaseOS' && 'SecondLife_Viewer_2018' || '' }} BUGSPLAT_PASS: ${{ secrets.BUGSPLAT_PASS }} BUGSPLAT_USER: ${{ secrets.BUGSPLAT_USER }} build_coverity: false -- cgit v1.2.3 From a45c9f68c3e2600f48b25cc5cc74ef47cd83005b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 08:58:32 -0400 Subject: SL-18837: Add debugging output to llsdserialize_test.cpp. --- indra/llcommon/tests/llsdserialize_test.cpp | 90 ++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 76e9ecc293..ca63e74c6c 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -55,7 +55,9 @@ typedef U32 uint32_t; #include "../test/lltut.h" #include "../test/namedtempfile.h" #include "stringize.h" +#include #include +#include typedef std::function FormatterFunction; typedef std::function ParserFunction; @@ -65,6 +67,81 @@ std::vector string_to_vector(const std::string& str) return std::vector(str.begin(), str.end()); } +// Format a given byte string as 2-digit hex values, no separators +// Usage: std::cout << hexdump(somestring) << ... +class hexdump +{ +public: + hexdump(const char* data, size_t len): + hexdump(reinterpret_cast(data), len) + {} + + hexdump(const U8* data, size_t len): + mData(data, data + len) + {} + + hexdump(const hexdump&) = delete; + hexdump& operator=(const hexdump&) = delete; + + friend std::ostream& operator<<(std::ostream& out, const hexdump& self) + { + auto oldfmt{ out.flags() }; + auto oldfill{ out.fill() }; + out.setf(std::ios_base::hex, std::ios_base::basefield); + out.fill('0'); + for (auto c : self.mData) + { + out << std::setw(2) << unsigned(c); + } + out.setf(oldfmt, std::ios_base::basefield); + out.fill(oldfill); + return out; + } + +private: + std::vector mData; +}; + +// Format a given byte string as a mix of printable characters and, for each +// non-printable character, "\xnn" +// Usage: std::cout << hexmix(somestring) << ... +class hexmix +{ +public: + hexmix(const char* data, size_t len): + mData(data, len) + {} + + hexmix(const hexmix&) = delete; + hexmix& operator=(const hexmix&) = delete; + + friend std::ostream& operator<<(std::ostream& out, const hexmix& self) + { + auto oldfmt{ out.flags() }; + auto oldfill{ out.fill() }; + out.setf(std::ios_base::hex, std::ios_base::basefield); + out.fill('0'); + for (auto c : self.mData) + { + // std::isprint() must be passed an unsigned char! + if (std::isprint(static_cast(c))) + { + out << c; + } + else + { + out << "\\x" << std::setw(2) << unsigned(c); + } + } + out.setf(oldfmt, std::ios_base::basefield); + out.fill(oldfill); + return out; + } + +private: + std::string mData; +}; + namespace tut { struct sd_xml_data @@ -1909,7 +1986,14 @@ namespace tut auto buffstr{ buffer.str() }; int bufflen{ static_cast(buffstr.length()) }; out.write(reinterpret_cast(&bufflen), sizeof(bufflen)); + LL_DEBUGS("topy") << "Wrote length: " + << hexdump(reinterpret_cast(&bufflen), + sizeof(bufflen)) + << LL_ENDL; out.write(buffstr.c_str(), buffstr.length()); + LL_DEBUGS("topy") << "Wrote data: " + << hexmix(buffstr.c_str(), buffstr.length()) + << LL_ENDL; } } @@ -1938,8 +2022,8 @@ namespace tut " else:\n" " raise AssertionError('Too many data items')\n"; - // Create an llsdXXXXXX file containing 'data' serialized to - // notation. + // Create an llsdXXXXXX file containing 'data' serialized per + // FormatterFunction. NamedTempFile file("llsd", // NamedTempFile's function constructor // takes a callable. To this callable it passes the @@ -1958,11 +2042,13 @@ namespace tut "lenformat = struct.Struct('i')\n" "def parse_each(inf):\n" " for rawlen in iter(partial(inf.read, lenformat.size), b''):\n" + " print('Read length:', ''.join(('%02x' % b) for b in rawlen))\n" " len = lenformat.unpack(rawlen)[0]\n" // Since llsd.parse() has no max_bytes argument, instead of // passing the input stream directly to parse(), read the item // into a distinct bytes object and parse that. " data = inf.read(len)\n" + " print('Read data: ', repr(data))\n" " try:\n" " frombytes = llsd.parse(data)\n" " except llsd.LLSDParseError as err:\n" -- cgit v1.2.3 From eb8458587537e06df23447db56b9910a0d4e451e Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 09:50:38 -0400 Subject: SL-18837: NamedTempFile must be binary mode on Windows. --- indra/test/namedtempfile.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 525a35000d..3a994ae798 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -70,7 +70,7 @@ public: void peep() { std::cout << "File '" << mPath << "' contains:\n"; - boost::filesystem::ifstream reader(mPath); + boost::filesystem::ifstream reader(mPath, std::ios::binary); std::string line; while (std::getline(reader, line)) std::cout << line << '\n'; @@ -103,7 +103,7 @@ protected: { // Create file in a temporary place. mPath = temp_path(pfx, sfx); - boost::filesystem::ofstream out{ mPath }; + boost::filesystem::ofstream out{ mPath, std::ios::binary }; // Write desired content. func(out); } -- cgit v1.2.3 From 6cb906c44908a304af26e3ea95de88ff34ef46f7 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 10:35:10 -0400 Subject: SL-18837: Add OpenAL::createDefaultStreamingAudioImpl(). LLAudioEngine added a new abstract virtual method that wasn't yet implemented for LLStreamingAudio_OpenAL. --- indra/llaudio/llaudioengine_openal.cpp | 5 +++++ indra/llaudio/llaudioengine_openal.h | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/indra/llaudio/llaudioengine_openal.cpp b/indra/llaudio/llaudioengine_openal.cpp index 0a79614424..e6c62caae9 100644 --- a/indra/llaudio/llaudioengine_openal.cpp +++ b/indra/llaudio/llaudioengine_openal.cpp @@ -119,6 +119,11 @@ std::string LLAudioEngine_OpenAL::getDriverName(bool verbose) return version.str(); } +LLStreamingAudioInterface *LLAudioEngine_OpenAL::createDefaultStreamingAudioImpl() const +{ + return new LLStreamingAudio_OpenAL(); +} + // virtual void LLAudioEngine_OpenAL::allocateListener() { diff --git a/indra/llaudio/llaudioengine_openal.h b/indra/llaudio/llaudioengine_openal.h index a3cab97cd2..cd55261813 100644 --- a/indra/llaudio/llaudioengine_openal.h +++ b/indra/llaudio/llaudioengine_openal.h @@ -40,8 +40,9 @@ class LLAudioEngine_OpenAL : public LLAudioEngine LLAudioEngine_OpenAL(); virtual ~LLAudioEngine_OpenAL(); - virtual bool init(void *user_data, const std::string &app_title); - virtual std::string getDriverName(bool verbose); + virtual bool init(void *user_data, const std::string &app_title); + virtual std::string getDriverName(bool verbose); + virtual LLStreamingAudioInterface* createDefaultStreamingAudioImpl() const; virtual void allocateListener(); virtual void shutdown(); -- cgit v1.2.3 From 46bd102e80178abb094b5dac6fe9c476e044eaed Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 11:00:16 -0400 Subject: SL-18837: Typo for LLAudioEngine_OpenAL --- indra/llaudio/llaudioengine_openal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llaudio/llaudioengine_openal.cpp b/indra/llaudio/llaudioengine_openal.cpp index e6c62caae9..d2a66c8c0f 100644 --- a/indra/llaudio/llaudioengine_openal.cpp +++ b/indra/llaudio/llaudioengine_openal.cpp @@ -121,7 +121,7 @@ std::string LLAudioEngine_OpenAL::getDriverName(bool verbose) LLStreamingAudioInterface *LLAudioEngine_OpenAL::createDefaultStreamingAudioImpl() const { - return new LLStreamingAudio_OpenAL(); + return new LLAudioEngine_OpenAL(); } // virtual -- cgit v1.2.3 From 7e655d8c828829bd45ca0ea8c47e3ce5619b23c1 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 12:40:37 -0400 Subject: SL-18837: Revert "Typo for LLAudioEngine_OpenAL" This reverts commit 46bd102e80178abb094b5dac6fe9c476e044eaed. --- indra/llaudio/llaudioengine_openal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llaudio/llaudioengine_openal.cpp b/indra/llaudio/llaudioengine_openal.cpp index d2a66c8c0f..e6c62caae9 100644 --- a/indra/llaudio/llaudioengine_openal.cpp +++ b/indra/llaudio/llaudioengine_openal.cpp @@ -121,7 +121,7 @@ std::string LLAudioEngine_OpenAL::getDriverName(bool verbose) LLStreamingAudioInterface *LLAudioEngine_OpenAL::createDefaultStreamingAudioImpl() const { - return new LLAudioEngine_OpenAL(); + return new LLStreamingAudio_OpenAL(); } // virtual -- cgit v1.2.3 From 44181628d587f9c87cae9cdbfd57de69078000d2 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 12:41:04 -0400 Subject: SL-18837: Revert "Add OpenAL::createDefaultStreamingAudioImpl()." This reverts commit 6cb906c44908a304af26e3ea95de88ff34ef46f7. --- indra/llaudio/llaudioengine_openal.cpp | 5 ----- indra/llaudio/llaudioengine_openal.h | 5 ++--- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/indra/llaudio/llaudioengine_openal.cpp b/indra/llaudio/llaudioengine_openal.cpp index e6c62caae9..0a79614424 100644 --- a/indra/llaudio/llaudioengine_openal.cpp +++ b/indra/llaudio/llaudioengine_openal.cpp @@ -119,11 +119,6 @@ std::string LLAudioEngine_OpenAL::getDriverName(bool verbose) return version.str(); } -LLStreamingAudioInterface *LLAudioEngine_OpenAL::createDefaultStreamingAudioImpl() const -{ - return new LLStreamingAudio_OpenAL(); -} - // virtual void LLAudioEngine_OpenAL::allocateListener() { diff --git a/indra/llaudio/llaudioengine_openal.h b/indra/llaudio/llaudioengine_openal.h index cd55261813..a3cab97cd2 100644 --- a/indra/llaudio/llaudioengine_openal.h +++ b/indra/llaudio/llaudioengine_openal.h @@ -40,9 +40,8 @@ class LLAudioEngine_OpenAL : public LLAudioEngine LLAudioEngine_OpenAL(); virtual ~LLAudioEngine_OpenAL(); - virtual bool init(void *user_data, const std::string &app_title); - virtual std::string getDriverName(bool verbose); - virtual LLStreamingAudioInterface* createDefaultStreamingAudioImpl() const; + virtual bool init(void *user_data, const std::string &app_title); + virtual std::string getDriverName(bool verbose); virtual void allocateListener(); virtual void shutdown(); -- cgit v1.2.3 From d459b3a1ca317c6927dffacda3aac3b580c0dfb1 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Sat, 26 Aug 2023 21:04:05 +0200 Subject: Fix builds using OpenAL (cherry picked from commit fd73b6e5cf6341d606628646b73a0d05223b74bc) --- indra/llaudio/llaudioengine_openal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llaudio/llaudioengine_openal.h b/indra/llaudio/llaudioengine_openal.h index a3cab97cd2..562c96c794 100644 --- a/indra/llaudio/llaudioengine_openal.h +++ b/indra/llaudio/llaudioengine_openal.h @@ -42,6 +42,7 @@ class LLAudioEngine_OpenAL : public LLAudioEngine virtual bool init(void *user_data, const std::string &app_title); virtual std::string getDriverName(bool verbose); + virtual LLStreamingAudioInterface* createDefaultStreamingAudioImpl() const { return nullptr; } virtual void allocateListener(); virtual void shutdown(); @@ -56,7 +57,6 @@ class LLAudioEngine_OpenAL : public LLAudioEngine /*virtual*/ void updateWind(LLVector3 direction, F32 camera_altitude); private: - void * windDSP(void *newbuffer, int length); typedef S16 WIND_SAMPLE_T; LLWindGen *mWindGen; S16 *mWindBuf; -- cgit v1.2.3 From c7546ea65e55143ff3d2d82d8c289bbac7fffe0f Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 14:14:09 -0400 Subject: SL-18837: Make llsdserialize_test debug output conditional. Move hexdump() and hexmix() stream formatters to new hexdump.h for potential use by other tests. In toPythonUsing() helper function, add a temp file to receive Python script debug output, and direct debug output to that file. On test failure, dump the contents of that file to the log. Give NamedTempFile::peep() an optional target std::ostream; refactor implementation as peep_via() that accepts a callable to process each text line. Add operator<<() to stream the contents of a NamedTempFile object to ostream -- but don't use that with LL_DEBUGS(), as it flattens the file contents into a single log line. Instead add peep_log(), which streams each individual text line to LL_DEBUGS(). --- indra/llcommon/tests/llsdserialize_test.cpp | 202 +++++++++++----------------- indra/test/hexdump.h | 97 +++++++++++++ indra/test/namedtempfile.h | 25 +++- 3 files changed, 193 insertions(+), 131 deletions(-) create mode 100644 indra/test/hexdump.h diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index ca63e74c6c..ac40125f75 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -52,12 +52,12 @@ typedef U32 uint32_t; #include "llformat.h" #include "llmemorystream.h" +#include "../test/hexdump.h" #include "../test/lltut.h" #include "../test/namedtempfile.h" #include "stringize.h" -#include +#include "StringVec.h" #include -#include typedef std::function FormatterFunction; typedef std::function ParserFunction; @@ -67,81 +67,6 @@ std::vector string_to_vector(const std::string& str) return std::vector(str.begin(), str.end()); } -// Format a given byte string as 2-digit hex values, no separators -// Usage: std::cout << hexdump(somestring) << ... -class hexdump -{ -public: - hexdump(const char* data, size_t len): - hexdump(reinterpret_cast(data), len) - {} - - hexdump(const U8* data, size_t len): - mData(data, data + len) - {} - - hexdump(const hexdump&) = delete; - hexdump& operator=(const hexdump&) = delete; - - friend std::ostream& operator<<(std::ostream& out, const hexdump& self) - { - auto oldfmt{ out.flags() }; - auto oldfill{ out.fill() }; - out.setf(std::ios_base::hex, std::ios_base::basefield); - out.fill('0'); - for (auto c : self.mData) - { - out << std::setw(2) << unsigned(c); - } - out.setf(oldfmt, std::ios_base::basefield); - out.fill(oldfill); - return out; - } - -private: - std::vector mData; -}; - -// Format a given byte string as a mix of printable characters and, for each -// non-printable character, "\xnn" -// Usage: std::cout << hexmix(somestring) << ... -class hexmix -{ -public: - hexmix(const char* data, size_t len): - mData(data, len) - {} - - hexmix(const hexmix&) = delete; - hexmix& operator=(const hexmix&) = delete; - - friend std::ostream& operator<<(std::ostream& out, const hexmix& self) - { - auto oldfmt{ out.flags() }; - auto oldfill{ out.fill() }; - out.setf(std::ios_base::hex, std::ios_base::basefield); - out.fill('0'); - for (auto c : self.mData) - { - // std::isprint() must be passed an unsigned char! - if (std::isprint(static_cast(c))) - { - out << c; - } - else - { - out << "\\x" << std::setw(2) << unsigned(c); - } - } - out.setf(oldfmt, std::ios_base::basefield); - out.fill(oldfill); - return out; - } - -private: - std::string mData; -}; - namespace tut { struct sd_xml_data @@ -1868,16 +1793,12 @@ namespace tut // helper for TestPythonCompatible static std::string import_llsd("import os.path\n" "import sys\n" - "try:\n" - // new freestanding llsd package - " import llsd\n" - "except ImportError:\n" - // older llbase.llsd module - " from llbase import llsd\n"); + "import llsd\n"); // helper for TestPythonCompatible - template - void python(const std::string& desc, const CONTENT& script, int expect=0) + template + void python_expect(const std::string& desc, const CONTENT& script, int expect=0, + ARGS&&... args) { auto PYTHON(LLStringUtil::getenv("PYTHON")); ensure("Set $PYTHON to the Python interpreter", !PYTHON.empty()); @@ -1888,7 +1809,8 @@ namespace tut std::string q("\""); std::string qPYTHON(q + PYTHON + q); std::string qscript(q + scriptfile.getName() + q); - int rc = _spawnl(_P_WAIT, PYTHON.c_str(), qPYTHON.c_str(), qscript.c_str(), NULL); + int rc = _spawnl(_P_WAIT, PYTHON.c_str(), qPYTHON.c_str(), qscript.c_str(), + std::forward(args)..., NULL); if (rc == -1) { char buffer[256]; @@ -1904,6 +1826,10 @@ namespace tut LLProcess::Params params; params.executable = PYTHON; params.args.add(scriptfile.getName()); + for (const std::string& arg : StringVec{ std::forward(args)... }) + { + params.args.add(arg); + } LLProcessPtr py(LLProcess::create(params)); ensure(STRINGIZE("Couldn't launch " << desc << " script"), bool(py)); // Implementing timeout would mean messing with alarm() and @@ -1938,6 +1864,14 @@ namespace tut #endif } + // helper for TestPythonCompatible + template + void python(const std::string& desc, const CONTENT& script, ARGS&&... args) + { + // plain python() expects rc 0 + python_expect(desc, script, 0, std::forward(args)...); + } + struct TestPythonCompatible { TestPythonCompatible() {} @@ -1952,10 +1886,10 @@ namespace tut void TestPythonCompatibleObject::test<1>() { set_test_name("verify python()"); - python("hello", - "import sys\n" - "sys.exit(17)\n", - 17); // expect nonzero rc + python_expect("hello", + "import sys\n" + "sys.exit(17)\n", + 17); // expect nonzero rc } template<> template<> @@ -1986,14 +1920,14 @@ namespace tut auto buffstr{ buffer.str() }; int bufflen{ static_cast(buffstr.length()) }; out.write(reinterpret_cast(&bufflen), sizeof(bufflen)); - LL_DEBUGS("topy") << "Wrote length: " - << hexdump(reinterpret_cast(&bufflen), - sizeof(bufflen)) - << LL_ENDL; + LL_DEBUGS() << "Wrote length: " + << hexdump(reinterpret_cast(&bufflen), + sizeof(bufflen)) + << LL_ENDL; out.write(buffstr.c_str(), buffstr.length()); - LL_DEBUGS("topy") << "Wrote data: " - << hexmix(buffstr.c_str(), buffstr.length()) - << LL_ENDL; + LL_DEBUGS() << "Wrote data: " + << hexmix(buffstr.c_str(), buffstr.length()) + << LL_ENDL; } } @@ -2033,36 +1967,50 @@ namespace tut (std::ostream& out) { writeLLSDArray(serialize, out, cdata); }); - python("read C++ " + desc, - [&](std::ostream& out){ out << - import_llsd << - "from functools import partial\n" - "import io\n" - "import struct\n" - "lenformat = struct.Struct('i')\n" - "def parse_each(inf):\n" - " for rawlen in iter(partial(inf.read, lenformat.size), b''):\n" - " print('Read length:', ''.join(('%02x' % b) for b in rawlen))\n" - " len = lenformat.unpack(rawlen)[0]\n" - // Since llsd.parse() has no max_bytes argument, instead of - // passing the input stream directly to parse(), read the item - // into a distinct bytes object and parse that. - " data = inf.read(len)\n" - " print('Read data: ', repr(data))\n" - " try:\n" - " frombytes = llsd.parse(data)\n" - " except llsd.LLSDParseError as err:\n" - " print(f'*** {err}')\n" - " print(f'Bad content:\\n{data!r}')\n" - " raise\n" - // Also try parsing from a distinct stream. - " stream = io.BytesIO(data)\n" - " fromstream = llsd.parse(stream)\n" - " assert frombytes == fromstream\n" - " yield frombytes\n" - << pydata << - // Don't forget raw-string syntax for Windows pathnames. - "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n";}); + // 'debug' starts empty because it's intended as an output file + NamedTempFile debug("debug", ""); + + try + { + python("read C++ " + desc, + [&](std::ostream& out){ out << + import_llsd << + "from functools import partial\n" + "import io\n" + "import struct\n" + "lenformat = struct.Struct('i')\n" + "def parse_each(inf):\n" + " for rawlen in iter(partial(inf.read, lenformat.size), b''):\n" + " print('Read length:', ''.join(('%02x' % b) for b in rawlen),\n" + " file=debug)\n" + " len = lenformat.unpack(rawlen)[0]\n" + // Since llsd.parse() has no max_bytes argument, instead of + // passing the input stream directly to parse(), read the item + // into a distinct bytes object and parse that. + " data = inf.read(len)\n" + " print('Read data: ', repr(data), file=debug)\n" + " try:\n" + " frombytes = llsd.parse(data)\n" + " except llsd.LLSDParseError as err:\n" + " print(f'*** {err}')\n" + " print(f'Bad content:\\n{data!r}')\n" + " raise\n" + // Also try parsing from a distinct stream. + " stream = io.BytesIO(data)\n" + " fromstream = llsd.parse(stream)\n" + " assert frombytes == fromstream\n" + " yield frombytes\n" + << pydata << + // Don't forget raw-string syntax for Windows pathnames. + "debug = open(r'" << debug.getName() << "', 'w')\n" + "verify(parse_each(open(r'" << file.getName() << "', 'rb')))\n";}); + } + catch (const failure&) + { + LL_DEBUGS() << "Script debug output:" << LL_ENDL; + debug.peep_log(); + throw; + } } template<> template<> diff --git a/indra/test/hexdump.h b/indra/test/hexdump.h new file mode 100644 index 0000000000..dd7cbaaa3c --- /dev/null +++ b/indra/test/hexdump.h @@ -0,0 +1,97 @@ +/** + * @file hexdump.h + * @author Nat Goodspeed + * @date 2023-09-08 + * @brief Provide hexdump() and hexmix() ostream formatters + * + * $LicenseInfo:firstyear=2023&license=viewerlgpl$ + * Copyright (c) 2023, Linden Research, Inc. + * $/LicenseInfo$ + */ + +#if ! defined(LL_HEXDUMP_H) +#define LL_HEXDUMP_H + +#include +#include +#include +#include + +// Format a given byte string as 2-digit hex values, no separators +// Usage: std::cout << hexdump(somestring) << ... +class hexdump +{ +public: + hexdump(const std::string_view& data): + hexdump(data.data(), data.length()) + {} + + hexdump(const char* data, size_t len): + hexdump(reinterpret_cast(data), len) + {} + + hexdump(const unsigned char* data, size_t len): + mData(data, data + len) + {} + + friend std::ostream& operator<<(std::ostream& out, const hexdump& self) + { + auto oldfmt{ out.flags() }; + auto oldfill{ out.fill() }; + out.setf(std::ios_base::hex, std::ios_base::basefield); + out.fill('0'); + for (auto c : self.mData) + { + out << std::setw(2) << unsigned(c); + } + out.setf(oldfmt, std::ios_base::basefield); + out.fill(oldfill); + return out; + } + +private: + std::vector mData; +}; + +// Format a given byte string as a mix of printable characters and, for each +// non-printable character, "\xnn" +// Usage: std::cout << hexmix(somestring) << ... +class hexmix +{ +public: + hexmix(const std::string_view& data): + mData(data) + {} + + hexmix(const char* data, size_t len): + mData(data, len) + {} + + friend std::ostream& operator<<(std::ostream& out, const hexmix& self) + { + auto oldfmt{ out.flags() }; + auto oldfill{ out.fill() }; + out.setf(std::ios_base::hex, std::ios_base::basefield); + out.fill('0'); + for (auto c : self.mData) + { + // std::isprint() must be passed an unsigned char! + if (std::isprint(static_cast(c))) + { + out << c; + } + else + { + out << "\\x" << std::setw(2) << unsigned(c); + } + } + out.setf(oldfmt, std::ios_base::basefield); + out.fill(oldfill); + return out; + } + +private: + std::string mData; +}; + +#endif /* ! defined(LL_HEXDUMP_H) */ diff --git a/indra/test/namedtempfile.h b/indra/test/namedtempfile.h index 3a994ae798..ad14cebbd1 100644 --- a/indra/test/namedtempfile.h +++ b/indra/test/namedtempfile.h @@ -67,14 +67,31 @@ public: std::string getName() const { return mPath.string(); } - void peep() + template + void peep_via(CALLABLE&& callable) const { - std::cout << "File '" << mPath << "' contains:\n"; + std::forward(callable)(stringize("File '", mPath, "' contains:")); boost::filesystem::ifstream reader(mPath, std::ios::binary); std::string line; while (std::getline(reader, line)) - std::cout << line << '\n'; - std::cout << "---\n"; + std::forward(callable)(line); + std::forward(callable)("---"); + } + + void peep_log() const + { + peep_via([](const std::string& line){ LL_DEBUGS() << line << LL_ENDL; }); + } + + void peep(std::ostream& out=std::cout) const + { + peep_via([&out](const std::string& line){ out << line << '\n'; }); + } + + friend std::ostream& operator<<(std::ostream& out, const NamedTempFile& self) + { + self.peep(out); + return out; } static boost::filesystem::path temp_path(const std::string_view& pfx="", -- cgit v1.2.3 From c87d9c635b71d761e0ef84c1a9442759db721487 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 14:30:05 -0400 Subject: SL-18837: Suppress ReleaseOS for now. --- .github/workflows/build.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 77cb91cd85..7e3d2b68de 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -12,7 +12,9 @@ jobs: strategy: matrix: runner: [windows-large, macos-12-xl] - configuration: [Release, ReleaseOS] + ## Skip ReleaseOS until we resolve + ## === FAILURE No installer found from /c/a/viewer/viewer + configuration: [Release] ##, ReleaseOS] python-version: ["3.11"] include: - runner: macos-12-xl -- cgit v1.2.3 From 2d04cc14d3805df982d51d96d2e3d180f5ef0b34 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 17:01:46 -0400 Subject: 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 7e3d2b68de..8146db36ee 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 f6282743bb..679a3441b9 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -489,8 +489,11 @@ class WindowsManifest(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 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 @@ class DarwinManifest(ViewerManifest): 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") -- cgit v1.2.3 From 63d5d38e36061291343eddcec24a7243f896b980 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 17:24:04 -0400 Subject: SL-18837: Stop failing build.sh if there's no installer. This unblocks ReleaseOS builds, and also preps for SL-19242. Streamline build.sh's Uploads section. --- .github/workflows/build.yaml | 4 +--- build.sh | 51 ++------------------------------------------ 2 files changed, 3 insertions(+), 52 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 8146db36ee..acd30106c3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -12,9 +12,7 @@ jobs: strategy: matrix: runner: [windows-large, macos-12-xl] - ## Skip ReleaseOS until we resolve - ## === FAILURE No installer found from /c/a/viewer/viewer - configuration: [Release] ##, ReleaseOS] + configuration: [Release, ReleaseOS] python-version: ["3.11"] include: - runner: macos-12-xl diff --git a/build.sh b/build.sh index 6f74c64a39..b1bb15971d 100755 --- a/build.sh +++ b/build.sh @@ -550,32 +550,11 @@ then begin_section "Uploads" # Upload installer package=$(installer_$arch) - if [ x"$package" = x ] || test -d "$package" + if [ x"$package" != x ] && test -d "$package" then - fatal "No installer found from `pwd`" - succeeded=$build_coverity - else # Upload base package. - retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput Installer "$package" \ - || fatal "Upload of installer failed" - wait_for_codeticket installer+=("$package") - # Upload additional packages. - for package_id in $additional_packages - do - package=$(installer_$arch "$package_id") - if [ x"$package" != x ] - then - retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Installer $package_id" "$package" \ - || fatal "Upload of installer $package_id failed" - wait_for_codeticket - installer+=("$package") - else - record_failure "Failed to find additional package for '$package_id'." - fi - done - if [ "$last_built_variant" = "Release" ] then # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. @@ -588,47 +567,21 @@ then then # symbol tarball we prep for (e.g.) Breakpad symbol_file="$VIEWER_SYMBOL_FILE" - else - # SL-19243 HACK: List contents of xcarchive.zip, before running - # upload-mac-symbols.sh which moves it to /tmp - unzip -l "$symbol_file" fi # Upload crash reporter file - retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Symbolfile" "$symbol_file" \ - || fatal "Upload of symbolfile failed" - wait_for_codeticket symbolfile+=("$symbol_file") fi # Upload the llphysicsextensions_tpv package, if one was produced - # *TODO: Make this an upload-extension # Only upload this package when building the private repo so the # artifact is private. - if [[ "$GITHUB_REPOSITORY" == "secondlife/viewer-private" && \ + if [[ "x$GITHUB_REPOSITORY" == "xsecondlife/viewer-private" && \ -r "$build_dir/llphysicsextensions_package" ]] then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) - retry_cmd 4 30 python_cmd "$helpers/codeticket.py" addoutput "Physics Extensions Package" "$llphysicsextensions_package" --private \ - || fatal "Upload of physics extensions package failed" physicstpv+=("$llphysicsextensions_package") fi fi - - # Run upload extensions - # Ex: bugsplat - ## SL-19243 HACK: testing separate GH upload jobs - if false - then - if [ -d ${build_dir}/packages/upload-extensions ]; then - for extension in ${build_dir}/packages/upload-extensions/*.sh; do - begin_section "Upload Extension $extension" - . $extension - [ $? -eq 0 ] || fatal "Upload of extension $extension failed" - wait_for_codeticket - end_section "Upload Extension $extension" - done - fi - fi fi end_section "Uploads" else -- cgit v1.2.3 From ee82cd046f9bedc6a3eac96afc90f4413786669f Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 8 Sep 2023 19:25:47 -0400 Subject: SL-19242: Resolve '..' in viwer_app path before trying to upload. --- indra/newview/viewer_manifest.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 679a3441b9..e93a3db6d6 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -492,8 +492,11 @@ class WindowsManifest(ViewerManifest): # 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) + # name. But upload_artifact refuses to deal with '..', so resolve + # the path before setting viewer_app. + self.set_github_output_path( + 'viewer_app', + os.path.abspath(os.path.join(self.get_dst_prefix(), 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 @@ -858,7 +861,9 @@ class DarwinManifest(ViewerManifest): self.path(os.path.join(self.args['configuration'], self.channel()+".app"), dst="") # capture the entire destination app bundle, including the containing # .app directory - self.set_github_output_path('viewer_app', os.pardir) + self.set_github_output_path( + 'viewer_app', + os.path.abspath(os.path.join(self.get_dst_prefix(), os.pardir))) pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") -- cgit v1.2.3 From dc0ebc96a4556b99b515364465b23a64e84f0899 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Sat, 9 Sep 2023 09:36:03 -0400 Subject: SL-19242: Try passing upload-artifact a normalized relative path. --- indra/newview/viewer_manifest.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index e93a3db6d6..dd9ca569ce 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -407,7 +407,8 @@ class ViewerManifest(LLManifest): return os.path.relpath(abspath(path), abspath(base)) def set_github_output_path(self, variable, path): - self.set_github_output(variable, os.path.join(self.get_dst_prefix(), path)) + self.set_github_output(variable, + os.path.normpath(os.path.join(self.get_dst_prefix(), path))) def set_github_output(self, variable, value): GITHUB_OUTPUT = os.getenv('GITHUB_OUTPUT') @@ -492,11 +493,8 @@ class WindowsManifest(ViewerManifest): # 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. But upload_artifact refuses to deal with '..', so resolve - # the path before setting viewer_app. - self.set_github_output_path( - 'viewer_app', - os.path.abspath(os.path.join(self.get_dst_prefix(), os.pardir))) + # 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 @@ -861,9 +859,7 @@ class DarwinManifest(ViewerManifest): self.path(os.path.join(self.args['configuration'], self.channel()+".app"), dst="") # capture the entire destination app bundle, including the containing # .app directory - self.set_github_output_path( - 'viewer_app', - os.path.abspath(os.path.join(self.get_dst_prefix(), os.pardir))) + 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") -- cgit v1.2.3 From 29300a1fd356b7355ecfb56951e7d7ad0553ef15 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 11 Sep 2023 10:07:51 -0400 Subject: SL-19242: Try harder to post artifacts containing exactly app image. In a Windows build tree, we don't actually have an app-named top directory, so don't package its containing directory -- just the app dir itself, e.g. "newview/Release". In a Mac build tree, though we do have "Second Life Mumble.app", its parent directory also contains other large stuff. Try posting a temp directory containing a symlink to the .app. Ditch the "!*.bat" exclusion: the presence of a second path (even an exclusion) changes how upload-artifact nests its contents. --- .github/workflows/build.yaml | 4 ---- indra/newview/viewer_manifest.py | 46 +++++++++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index acd30106c3..9f10275d7c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -225,12 +225,8 @@ jobs: uses: actions/upload-artifact@v3 with: 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 dd9ca569ce..4084c1d9a4 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -37,6 +37,7 @@ import re import shutil import subprocess import sys +import tempfile import time viewer_dir = os.path.dirname(__file__) @@ -490,11 +491,8 @@ class WindowsManifest(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. 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) + # Emit the whole app image as one of the GitHub step outputs. + self.set_github_output_path('viewer_app', '') with self.prefix(src=os.path.join(pkgdir, "VMP")): # include the compiled launcher scripts so that it gets included in the file_list @@ -855,11 +853,39 @@ class DarwinManifest(ViewerManifest): return bool(set(["package", "unpacked"]).intersection(self.args['actions'])) 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, including the containing - # .app directory - self.set_github_output_path('viewer_app', os.pardir) + # copy over the build result (this is a no-op if run within the xcode + # script) + appname = self.channel() + ".app" + self.path(os.path.join(self.args['configuration'], appname), dst="") + RUNNER_TEMP = os.getenv('RUNNER_TEMP') + # When running as a GitHub Action job, RUNNER_TEMP is the recommended + # temp directory. If we're not running on GitHub, don't create this + # temp directory or this symlink: we don't clean them up, trusting + # that the runner is itself transient. On a dev machine, that would + # result in temp-directory clutter. + if RUNNER_TEMP: + # We want an artifact containing the "Second Life Mumble.app" + # directory, which in turn contains the whole app bundle. + # Unfortunately, the directory that contains the .app directory + # also contains other stuff, notably the xcarchive.zip, which is + # itself enormous. Create a temp directory containing only (a link + # to) our .app dir, and specify that as the directory to upload. + wrapdir = tempfile.mkdtemp(dir=RUNNER_TEMP) + applink = os.path.join(wrapdir, appname) + # This link will be used by a different job step, so link to an + # absolute path: we can't guarantee that the other step will have + # the same current directory. + # diagnostic output + parentdir = os.path.abspath(os.path.join(self.get_dst_prefix(), os.pardir)) + for dir in parentdir, os.path.join(parentdir, appname): + print(f'Contents of {dir}:') + for item in os.listdir(dir): + print(f' {item}') + # end diagnostic output + appreal = os.path.abspath(os.path.join(self.get_dst_prefix(), os.pardir, appname)) + print(f"Linking {applink} => {appreal}") + os.symlink(appreal, applink) + self.set_github_output_path('viewer_app', wrapdir) pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") -- cgit v1.2.3 From 0107f030c85c1ea122309a21a4d6790fc22e6d10 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 11 Sep 2023 12:53:34 -0400 Subject: SL-19242: Eliminate cruft from Windows app image artifact --- indra/newview/viewer_manifest.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 4084c1d9a4..33d5720320 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -34,6 +34,7 @@ import os.path import plistlib import random import re +import secrets import shutil import subprocess import sys @@ -411,11 +412,18 @@ class ViewerManifest(LLManifest): self.set_github_output(variable, os.path.normpath(os.path.join(self.get_dst_prefix(), path))) - def set_github_output(self, variable, value): + def set_github_output(self, variable, *values): GITHUB_OUTPUT = os.getenv('GITHUB_OUTPUT') - if GITHUB_OUTPUT: + if GITHUB_OUTPUT and values: with open(GITHUB_OUTPUT, 'a') as outf: - print('='.join((variable, value)), file=outf) + if len(values) == 1: + print('='.join((variable, value)), file=outf) + else: + delim = secrets.token_hex(8) + print('<<'.join((variable, delim)), file=outf) + for value in values: + print(value, file=outf) + print(delim, file=outf) class WindowsManifest(ViewerManifest): @@ -492,7 +500,12 @@ class WindowsManifest(ViewerManifest): # 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. - self.set_github_output_path('viewer_app', '') + self.set_github_output('viewer_app', + self.get_dst_prefix(), # whole app directory + '!secondlife-bin.*', # except for this stuff + '!*.bat', + '!*.tar.bz2', + '!*.nsi') with self.prefix(src=os.path.join(pkgdir, "VMP")): # include the compiled launcher scripts so that it gets included in the file_list -- cgit v1.2.3 From 0d0dafc1be14d0c4b8cf7b02ac949182d1eb093c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 11 Sep 2023 13:33:30 -0400 Subject: SL-19242: Fix minor error in viewer_manifest.set_github_output(). --- indra/newview/viewer_manifest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 33d5720320..a5415bb4bc 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -417,7 +417,7 @@ class ViewerManifest(LLManifest): if GITHUB_OUTPUT and values: with open(GITHUB_OUTPUT, 'a') as outf: if len(values) == 1: - print('='.join((variable, value)), file=outf) + print('='.join((variable, values[0])), file=outf) else: delim = secrets.token_hex(8) print('<<'.join((variable, delim)), file=outf) -- cgit v1.2.3 From db2953e5de12eb5eea347f4069be9c0ab015dcdb Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 11 Sep 2023 15:29:32 -0400 Subject: SL-19242: Have to prefix upload-artifact exclude paths with pathname. --- indra/newview/viewer_manifest.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index a5415bb4bc..1a8973ff84 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -500,12 +500,15 @@ class WindowsManifest(ViewerManifest): # 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. - self.set_github_output('viewer_app', - self.get_dst_prefix(), # whole app directory - '!secondlife-bin.*', # except for this stuff - '!*.bat', - '!*.tar.bz2', - '!*.nsi') + appbase = self.relpath(self.get_dst_prefix(), base=os.getcwd()) + self.set_github_output('viewer_app', appbase, + # except for this stuff + *(('!' + os.path.join(appbase, pattern)) + for pattern in ( + 'secondlife-bin.*', + '*.bat', + '*.tar.bz2', + '*.nsi'))) with self.prefix(src=os.path.join(pkgdir, "VMP")): # include the compiled launcher scripts so that it gets included in the file_list -- cgit v1.2.3 From fab7b300b9c8b82ac062cda5c5297500f0c311eb Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 11 Sep 2023 15:34:14 -0400 Subject: SL-19242: Re-enable the rest of the build product uploads. --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index b1bb15971d..c0d7e55f7e 100755 --- a/build.sh +++ b/build.sh @@ -550,7 +550,7 @@ then begin_section "Uploads" # Upload installer package=$(installer_$arch) - if [ x"$package" != x ] && test -d "$package" + if [ x"$package" != x ] && test -f "$package" then # Upload base package. installer+=("$package") -- cgit v1.2.3 From 62879b6e698a839784e1319e0d555c01ce0b4220 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 11 Sep 2023 18:05:32 -0400 Subject: SL-19242: Adjust Windows relative path base directory. --- indra/newview/viewer_manifest.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 1a8973ff84..8869831635 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -499,8 +499,19 @@ class WindowsManifest(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. - appbase = self.relpath(self.get_dst_prefix(), base=os.getcwd()) + # Emit the whole app image as one of the GitHub step outputs. 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)) -- cgit v1.2.3 From f31326189c99b18758b3754460d105a0195640c6 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 11 Sep 2023 19:38:55 -0400 Subject: SL-19242: Exclude installer from Windows-app artifact. --- indra/newview/viewer_manifest.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 8869831635..b994b304eb 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -499,9 +499,12 @@ class WindowsManifest(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. When - # we feed upload-artifact multiple absolute pathnames, even just - # for exclusion, it ends up creating several extraneous directory + # 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 @@ -517,6 +520,7 @@ class WindowsManifest(ViewerManifest): *(('!' + os.path.join(appbase, pattern)) for pattern in ( 'secondlife-bin.*', + '*_Setup.exe', '*.bat', '*.tar.bz2', '*.nsi'))) -- cgit v1.2.3 From 0992a0af3bc1d9c78d611c3778eca86b575dbe4c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 12 Sep 2023 12:46:28 -0400 Subject: SL-19243: Use consolidated viewer-build-util instead of distinct viewer-post-bugsplat-{windows,mac} repos. --- .github/workflows/build.yaml | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 9f10275d7c..7c1489e7fd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -265,10 +265,17 @@ jobs: post-windows-symbols: needs: build - runs-on: windows + runs-on: ubuntu-latest steps: + - name: Checkout viewer-build-util + uses: actions/checkout@v3 + with: + repository: secondlife/viewer-build-util + ref: main + path: .util + - name: Post Windows symbols - uses: secondlife/viewer-post-bugsplat-windows@main + uses: .util/post-bugsplat-windows with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} @@ -278,10 +285,17 @@ jobs: post-mac-symbols: needs: build - runs-on: macos-latest + runs-on: ubuntu-latest steps: + - name: Checkout viewer-build-util + uses: actions/checkout@v3 + with: + repository: secondlife/viewer-build-util + ref: main + path: .util + - name: Post Mac symbols - uses: secondlife/viewer-post-bugsplat-mac@main + uses: .util/post-bugsplat-mac with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} -- cgit v1.2.3 From d795b49f16ef77bf7453af228d121a1f7de5f1f9 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 12 Sep 2023 12:50:13 -0400 Subject: SL-19243: Job step 'uses' must specify action.yaml file instead of having it implied by specifying the containing directory. --- .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 7c1489e7fd..8157b9559f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -275,7 +275,7 @@ jobs: path: .util - name: Post Windows symbols - uses: .util/post-bugsplat-windows + uses: .util/post-bugsplat-windows/action.yaml with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} @@ -295,7 +295,7 @@ jobs: path: .util - name: Post Mac symbols - uses: .util/post-bugsplat-mac + uses: .util/post-bugsplat-mac/action.yaml with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} -- cgit v1.2.3 From 3e86f26b408a33578482d20cd82ae9b5b5a5dc7c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 12 Sep 2023 13:55:08 -0400 Subject: SL-19243: Try to convince GitHub that ./.util is really a path. --- .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 8157b9559f..4286de7cd3 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -275,7 +275,7 @@ jobs: path: .util - name: Post Windows symbols - uses: .util/post-bugsplat-windows/action.yaml + uses: ./.util/post-bugsplat-windows with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} @@ -295,7 +295,7 @@ jobs: path: .util - name: Post Mac symbols - uses: .util/post-bugsplat-mac/action.yaml + uses: ./.util/post-bugsplat-mac with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} -- cgit v1.2.3 From b02249546edeab57bef45cc72400973aa673d866 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 12 Sep 2023 16:28:09 -0400 Subject: SL-19243: Directly reference action subdirs in viewer-build-util instead of trying to checkout viewer-build-util (which doesn't work) and then reference action subdirs from the filesystem. Also engage (initial placeholder) actions to sign and package the platform-specific application artifacts. --- .github/workflows/build.yaml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 4286de7cd3..b1dbc08011 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -263,19 +263,26 @@ jobs: path: | ${{ steps.build.outputs.physicstpv }} + sign-and-package-windows: + needs: build + runs-on: windows + steps: + - name: Sign and package Windows viewer + uses: secondlife/viewer-build-util/sign-pkg-windows@main + + sign-and-package-mac: + needs: build + runs-on: macos-latest + steps: + - name: Sign and package Mac viewer + uses: secondlife/viewer-build-util/sign-pkg-mac@main + post-windows-symbols: needs: build runs-on: ubuntu-latest steps: - - name: Checkout viewer-build-util - uses: actions/checkout@v3 - with: - repository: secondlife/viewer-build-util - ref: main - path: .util - - name: Post Windows symbols - uses: ./.util/post-bugsplat-windows + uses: secondlife/viewer-build-util/post-bugsplat-windows@main with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} @@ -287,15 +294,8 @@ jobs: needs: build runs-on: ubuntu-latest steps: - - name: Checkout viewer-build-util - uses: actions/checkout@v3 - with: - repository: secondlife/viewer-build-util - ref: main - path: .util - - name: Post Mac symbols - uses: ./.util/post-bugsplat-mac + uses: secondlife/viewer-build-util/post-bugsplat-mac@main with: username: ${{ secrets.BUGSPLAT_USER }} password: ${{ secrets.BUGSPLAT_PASS }} -- cgit v1.2.3 From be5f210e72a12eb31152c8d8c7f28c5d8930ba45 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 11:13:55 -0400 Subject: SL-19242: Don't exclude the prepared .nsi file from Windows-app. Since we need to run NSIS in a separate job step, allow the Windows-app build artifact to include the temporary .nsi file prepared by filling in our template. Also tweak the logic that finds and runs NSIS. --- indra/newview/viewer_manifest.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index b994b304eb..3f07eefbec 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -522,8 +522,7 @@ class WindowsManifest(ViewerManifest): 'secondlife-bin.*', '*_Setup.exe', '*.bat', - '*.tar.bz2', - '*.nsi'))) + '*.tar.bz2'))) with self.prefix(src=os.path.join(pkgdir, "VMP")): # include the compiled launcher scripts so that it gets included in the file_list @@ -831,14 +830,20 @@ class WindowsManifest(ViewerManifest): # Check two paths, one for Program Files, and one for Program Files (x86). # Yay 64bit windows. nsis_path = "makensis.exe" - for program_files in '${programfiles}', '${programfiles(x86)}': - for nesis_path in 'NSIS', 'NSIS\\Unicode': - possible_path = os.path.expandvars(f"{program_files}\\{nesis_path}\\makensis.exe") - if os.path.exists(possible_path): - nsis_path = possible_path - break - - self.run_command([possible_path, '/V2', self.dst_path_of(tempfile)]) + try: + for program_files in os.getenv('programfiles'), os.getenv('programfiles(x86)'): + if program_files: + for subpath in 'NSIS', r'NSIS\Unicode': + possible_path = os.path.join(program_files, subpath, nsis_path) + if os.path.isfile(possible_path): + nsis_path = possible_path + # don't just break: we need to exit multiple + # levels of 'for' loop + raise StopIteration() + except StopIteration: + pass + + self.run_command([nsis_path, '/V2', self.dst_path_of(tempfile)]) self.sign(installer_file) self.created_path(self.dst_path_of(installer_file)) -- cgit v1.2.3 From b1c93e6a50cb98de154bf6cabd0d7734248c1423 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 13:17:38 -0400 Subject: SL-19242: Add NSIS language files etc. to Windows-app artifact. --- indra/newview/viewer_manifest.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 3f07eefbec..527aa25d05 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -805,12 +805,22 @@ class WindowsManifest(ViewerManifest): engage_registry="SetRegView 32" program_files="" + # Dump the installers/windows directory into the raw app image tree + # because NSIS needs those files. But don't use path() because we + # don't want them installed with the viewer - they're only for use by + # the installer itself. + shutil.copytree(os.path.join(self.get_src_prefix(), 'installers', 'windows'), + os.path.join(self.get_dst_prefix(), 'installers', 'windows')) + tempfile = "secondlife_setup_tmp.nsi" # the following replaces strings in the nsi template # it also does python-style % substitution self.replace_in("installers/windows/installer_template.nsi", tempfile, { "%%VERSION%%":version_vars, - "%%SOURCE%%":self.get_src_prefix(), + # The template references "%%SOURCE%%\installers\windows\...". + # Now that we've copied that directory into the app image + # tree, we can just replace %%SOURCE%% with '.'. + "%%SOURCE%%":'.', "%%INST_VARS%%":inst_vars_template % substitution_strings, "%%INSTALL_FILES%%":self.nsi_file_commands(True), "%%PROGRAMFILES%%":program_files, -- cgit v1.2.3 From baa0faa7d126e07b05d3f57d56a5440beb1c20b7 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 15:10:22 -0400 Subject: SL-19242: Don't die if Windows app image installers/windows exists. --- indra/newview/viewer_manifest.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 527aa25d05..40e6a8fa7c 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -810,7 +810,8 @@ class WindowsManifest(ViewerManifest): # don't want them installed with the viewer - they're only for use by # the installer itself. shutil.copytree(os.path.join(self.get_src_prefix(), 'installers', 'windows'), - os.path.join(self.get_dst_prefix(), 'installers', 'windows')) + os.path.join(self.get_dst_prefix(), 'installers', 'windows'), + dirs_exist_ok=True) tempfile = "secondlife_setup_tmp.nsi" # the following replaces strings in the nsi template -- cgit v1.2.3 From 62898143bff7627eeea860cd6fdf7ae865d85a60 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 17:59:09 -0400 Subject: SL-19242: Write relative pathnames into NSIS input file. --- indra/newview/viewer_manifest.py | 53 ++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 40e6a8fa7c..fb22d29183 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -28,6 +28,7 @@ $/LicenseInfo$ """ import errno import glob +import itertools import json import os import os.path @@ -718,46 +719,38 @@ class WindowsManifest(ViewerManifest): self.package_file = "copied_deps" def nsi_file_commands(self, install=True): - def wpath(path): - if path.endswith('/') or path.endswith(os.path.sep): - path = path[:-1] - path = path.replace('/', '\\') - return path - - result = "" + result = [] dest_files = [pair[1] for pair in self.file_list if pair[0] and os.path.isfile(pair[1])] # sort deepest hierarchy first dest_files.sort(key=lambda f: (f.count(os.path.sep), f), reverse=True) out_path = None for pkg_file in dest_files: - rel_file = os.path.normpath(pkg_file.replace(self.get_dst_prefix()+os.path.sep,'')) - installed_dir = wpath(os.path.join('$INSTDIR', os.path.dirname(rel_file))) - pkg_file = wpath(os.path.normpath(pkg_file)) - if installed_dir != out_path: - if install: - out_path = installed_dir - result += 'SetOutPath ' + out_path + '\n' + pkg_file = os.path.normpath(pkg_file) + rel_file = self.relpath(pkg_file) + installed_dir = os.path.join('$INSTDIR', os.path.dirname(rel_file)) + if install and installed_dir != out_path: + out_path = installed_dir + # emit SetOutPath every time it changes + result.append('SetOutPath ' + out_path) if install: - result += 'File ' + pkg_file + '\n' + result.append('File ' + rel_file) else: - result += 'Delete ' + wpath(os.path.join('$INSTDIR', rel_file)) + '\n' + # Note that '$INSTDIR' is purely textual here: we write + # exactly that into the .nsi file for NSIS to interpret. + result.append('Delete ' + os.path.join('$INSTDIR', rel_file)) # at the end of a delete, just rmdir all the directories if not install: - deleted_file_dirs = [os.path.dirname(pair[1].replace(self.get_dst_prefix()+os.path.sep,'')) for pair in self.file_list] - # find all ancestors so that we don't skip any dirs that happened to have no non-dir children - deleted_dirs = [] - for d in deleted_file_dirs: - deleted_dirs.extend(path_ancestors(d)) + deleted_file_dirs = [os.path.dirname(self.relpath(f)) for f in dest_files] + # find all ancestors so that we don't skip any dirs that happened + # to have no non-dir children + deleted_dirs = set(itertools.chain.from_iterable(path_ancestors(d) + for d in deleted_file_dirs)) # sort deepest hierarchy first - deleted_dirs.sort(key=lambda f: (f.count(os.path.sep), f), reverse=True) - prev = None - for d in deleted_dirs: - if d != prev: # skip duplicates - result += 'RMDir ' + wpath(os.path.join('$INSTDIR', os.path.normpath(d))) + '\n' - prev = d + for d in sorted(deleted_dirs, key=lambda f: (f.count(os.path.sep), f), reverse=True): + result.append('RMDir ' + os.path.join('$INSTDIR', os.path.normpath(d))) - return result + return '\n'.join(result) def package_finish(self): # a standard map of strings for replacing in the templates @@ -854,7 +847,9 @@ class WindowsManifest(ViewerManifest): except StopIteration: pass - self.run_command([nsis_path, '/V2', self.dst_path_of(tempfile)]) + # Because we've written relative pathnames into tempfile, run nsis + # with their base directory as current. + self.run_command([nsis_path, '/V2', tempfile], cwd=self.get_dst_prefix()) self.sign(installer_file) self.created_path(self.dst_path_of(installer_file)) -- cgit v1.2.3 From 6c6f6f402383baaa53cb14f31813654a6c6c0279 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 19:29:45 -0400 Subject: SL-19242: Pass arbitrary subprocess kwds through run_command(). That is, make LLManifest.run_command() accept and forward subprocess keyword arguments. --- indra/lib/python/indra/util/llmanifest.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index 820f356dae..bcb9d884c3 100755 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -38,6 +38,7 @@ import itertools import operator import os import re +import shlex import shutil import subprocess import sys @@ -531,15 +532,15 @@ class LLManifest(object, metaclass=LLManifestRegistry): self.cmakedirs(path) return path - def run_command(self, command): + def run_command(self, command, **kwds): """ Runs an external command. Raises ManifestError exception if the command returns a nonzero status. """ - print("Running command:", command) + print("Running command:", shlex.join(command)) sys.stdout.flush() try: - subprocess.check_call(command) + subprocess.check_call(command, **kwds) except subprocess.CalledProcessError as err: raise ManifestError( "Command %s returned non-zero status (%s)" % (command, err.returncode) ) -- cgit v1.2.3 From 2670cde77b3f75a34f537fb935464c73e9e2814a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 20:12:43 -0400 Subject: SL-19242: On NSIS error, dump the generated .nsi file. --- indra/newview/viewer_manifest.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index fb22d29183..62e64b1d44 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -849,7 +849,15 @@ class WindowsManifest(ViewerManifest): # Because we've written relative pathnames into tempfile, run nsis # with their base directory as current. - self.run_command([nsis_path, '/V2', tempfile], cwd=self.get_dst_prefix()) + try: + self.run_command([nsis_path, '/V2', tempfile], cwd=self.get_dst_prefix()) + except ManifestError as err: + print(f' {tempfile} '.center(72, '=')) + with open(self.dst_path_of(tempfile)) as nsi: + for line in nsi: + print(line) + print(72 * '=') + raise self.sign(installer_file) self.created_path(self.dst_path_of(installer_file)) -- cgit v1.2.3 From 2a031fa11cb5a5abca41d9eef5fdfb0b7bb54301 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 21:17:34 -0400 Subject: SL-19242: Ensure NSIS file paths don't end with backslash. If they do, NSIS takes it as line continuation. --- indra/newview/viewer_manifest.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 62e64b1d44..76683a1b92 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -719,6 +719,16 @@ class WindowsManifest(ViewerManifest): self.package_file = "copied_deps" def nsi_file_commands(self, install=True): + def INSTDIR(path): + # Note that '$INSTDIR' is purely textual here: we write + # exactly that into the .nsi file for NSIS to interpret. + # Pass the result through normpath() to handle the case in which + # path is the empty string. On Windows, that produces "$INSTDIR\". + # Unfortunately, if that's the last item on a line, NSIS takes + # that as line continuation and misinterprets the following line. + # Ensure we don't emit a trailing backslash. + return os.path.normpath(os.path.join('$INSTDIR', path)) + result = [] dest_files = [pair[1] for pair in self.file_list if pair[0] and os.path.isfile(pair[1])] # sort deepest hierarchy first @@ -727,7 +737,7 @@ class WindowsManifest(ViewerManifest): for pkg_file in dest_files: pkg_file = os.path.normpath(pkg_file) rel_file = self.relpath(pkg_file) - installed_dir = os.path.join('$INSTDIR', os.path.dirname(rel_file)) + installed_dir = INSTDIR(os.path.dirname(rel_file)) if install and installed_dir != out_path: out_path = installed_dir # emit SetOutPath every time it changes @@ -735,9 +745,7 @@ class WindowsManifest(ViewerManifest): if install: result.append('File ' + rel_file) else: - # Note that '$INSTDIR' is purely textual here: we write - # exactly that into the .nsi file for NSIS to interpret. - result.append('Delete ' + os.path.join('$INSTDIR', rel_file)) + result.append('Delete ' + INSTDIR(rel_file)) # at the end of a delete, just rmdir all the directories if not install: @@ -748,7 +756,7 @@ class WindowsManifest(ViewerManifest): for d in deleted_file_dirs)) # sort deepest hierarchy first for d in sorted(deleted_dirs, key=lambda f: (f.count(os.path.sep), f), reverse=True): - result.append('RMDir ' + os.path.join('$INSTDIR', os.path.normpath(d))) + result.append('RMDir ' + INSTDIR(d)) return '\n'.join(result) @@ -855,7 +863,7 @@ class WindowsManifest(ViewerManifest): print(f' {tempfile} '.center(72, '=')) with open(self.dst_path_of(tempfile)) as nsi: for line in nsi: - print(line) + print(line, end='') # already includes '\n' print(72 * '=') raise -- cgit v1.2.3 From ebe8e01ad13cf820fc89f2129928d2279e9d0f8a Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 13 Sep 2023 21:54:43 -0400 Subject: SL-19242: Capture the BugSplat @rpath as str, not bytes. --- indra/newview/viewer_manifest.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 76683a1b92..0c54981af3 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -996,7 +996,8 @@ class DarwinManifest(ViewerManifest): # work, we need the build to noisily fail! oldpath = subprocess.check_output( ['objdump', '--macho', '--dylib-id', '--non-verbose', - os.path.join(relpkgdir, "BugsplatMac.framework", "BugsplatMac")] + os.path.join(relpkgdir, "BugsplatMac.framework", "BugsplatMac")], + text=True ).splitlines()[-1] # take the last line of output self.run_command( ['install_name_tool', '-change', oldpath, -- cgit v1.2.3 From 7c351379fc534fb2a17cac3fe5f574786f82eef6 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 15 Sep 2023 15:17:40 -0400 Subject: SL-19242: Retrieve and decode Windows signing cert, pass to action. --- .github/workflows/build.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b1dbc08011..d04e105443 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -267,8 +267,18 @@ jobs: needs: build runs-on: windows steps: + - name: Decode certificate file + shell: bash + env: + SIGNING_CERT_WINDOWS: ${{ secrets.SIGNING_CERT_WINDOWS }} + run: | + mkdir -p .cert + echo "$SIGNING_CERT_WINDOWS" | base64 --decode > .cert/authenticode-cert.pfx + - name: Sign and package Windows viewer uses: secondlife/viewer-build-util/sign-pkg-windows@main + with: + certificate: .cert/authenticode-cert.pfx sign-and-package-mac: needs: build -- cgit v1.2.3 From 1184c383e20797c2c7df7a996663f9236b201cd4 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 18 Sep 2023 22:39:43 -0400 Subject: SL-19242: release job now depends on package jobs and uses new viewer-build-util/release-artifacts action. --- .github/workflows/build.yaml | 52 +++++------ .github/workflows/flatten_files.py | 180 ------------------------------------- 2 files changed, 22 insertions(+), 210 deletions(-) delete mode 100755 .github/workflows/flatten_files.py diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d04e105443..8a477e1a29 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -242,13 +242,7 @@ jobs: if: matrix.configuration != 'ReleaseOS' uses: actions/upload-artifact@v3 with: - # Call this artifact just "Windows" or "macOS" because it's the only - # artifact in which we expect files from both platforms with - # colliding names (e.g. autobuild-package.xml). Our flatten_files.py - # (see release step) resolves collisions by prepending the artifact - # name, so when we anticipate collisions, it's good to keep the - # artifact name short and sweet. - name: "${{ steps.build.outputs.artifact }}" + name: "${{ steps.build.outputs.artifact }}-metadata" # emitted by build.sh, possibly multiple lines path: | ${{ steps.build.outputs.metadata }} @@ -314,37 +308,35 @@ jobs: version: ${{ needs.build.outputs.viewer_version }} release: - needs: build + needs: [sign-and-package-windows, sign-and-package-mac] runs-on: ubuntu-latest if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - ref: ${{ github.sha }} - - - name: Setup python - uses: actions/setup-python@v4 - with: - python-version: "3.11" - -## - name: Install PyGithub -## run: pip3 install PyGithub -## -## - name: Unpack artifacts -## env: -## BUILD: ${{ toJSON(needs.build) }} -## run: .github/workflows/post_artifacts.py - - uses: actions/download-artifact@v3 with: path: artifacts - - name: Show what we downloaded - run: ls -R artifacts - - name: Reshuffle artifact files - run: .github/workflows/flatten_files.py assets artifacts + run: secondlife/viewer-build-util/release-artifacts@main + with: + input-path: artifacts + output-path: assets + exclude: | + # The *-app artifacts are for use only by the signing and + # packaging steps. Once we've generated signed installers, we no + # longer need them, and we CERTAINLY don't want to publish + # thousands of individual files as separate URLs. + Windows-app + macOS-app + prefix: | + # Use just "Windows" or "macOS" prefix because these are the only + # artifacts in which we expect files from both platforms with + # colliding names (e.g. autobuild-package.xml). release-artifacts + # normally resolves collisions by prepending the artifact name, so + # when we anticipate collisions, it's good to keep the prefix + # short and sweet. + Windows-metadata=Windows + macOS-metadata=macOS # forked from softprops/action-gh-release - uses: secondlife-3p/action-gh-release@v1 diff --git a/.github/workflows/flatten_files.py b/.github/workflows/flatten_files.py deleted file mode 100755 index 542fa0206b..0000000000 --- a/.github/workflows/flatten_files.py +++ /dev/null @@ -1,180 +0,0 @@ -#!/usr/bin/env python3 -"""\ -@file flatten_files.py -@author Nat Goodspeed -@date 2023-08-18 -@brief From an input directory tree, populate a single flat output directory. - -$LicenseInfo:firstyear=2023&license=viewerlgpl$ -Copyright (c) 2023, Linden Research, Inc. -$/LicenseInfo$ -""" - -DESCRIPTION = """\ -From an input directory tree, populate a single flat output directory. - -For files with colliding names, rename them to unambiguous names derived from -their relative pathname within the input tree. - -This is useful when downloading GitHub build artifacts from multiple platforms -to post them all as release assets without collisions. -""" - -from collections import defaultdict -from contextlib import suppress -import filecmp -import os -from pathlib import Path -import sys - -class Error(Exception): - pass - -def flatten(output, input='.', dry_run=False): - try: - in_stat = os.stat(input) - except FileNotFoundError as err: - raise Error(f'{input} does not exist') from err - - try: - out_stat = os.stat(output) - except FileNotFoundError: - # output doesn't yet exist - at this point that's okay - out_stat = None - - # use samestat() to avoid being fooled by different ways of expressing the - # same path - if out_stat and os.path.samestat(out_stat, in_stat): - # output directory same as input: in this case, don't prune output - # directory from input tree walk because we'd prune everything - out_stat = None - elif out_stat: - # distinct existing output directory (potentially containing, or - # contained by, the input directory) - outfiles = [f for f in Path(output).rglob('*') if f.is_file()] - if outfiles: - print(f'Warning: {output} already contains {len(outfiles)} files:', file=sys.stderr) - for f in sorted(outfiles): - print(' ', f.relative_to(output), file=sys.stderr) - - # Use os.walk() instead of Path.rglob() so we can prune unwanted - # directories. - infiles = [] - for parent, dirs, files in os.walk(input): - infiles.extend(Path(parent, f) for f in files) - # Prune directories: because we must modify the dirs list in-place, - # and because we're using indexes, traverse backwards so deletion - # won't affect subsequent iterations. Yes we really must subtract 1 - # that many times. - for idx in range(len(dirs)-1, -1, -1): - if dirs[idx].startswith('.'): - # skip dot-named directories - print(f'ignoring {dirs[idx]}', file=sys.stderr) - del dirs[idx] - elif out_stat and os.path.samestat(os.stat(os.path.join(parent, dirs[idx])), out_stat): - # output directory lives under input directory: ignore any - # previous contents - print(f'ignoring nested output directory {os.path.join(parent, dirs[idx])}', - file=sys.stderr) - del dirs[idx] - - # Now that we've traversed the input tree, create the output directory if - # needed. - output = Path(output) - output.mkdir(parents=True, exist_ok=True) - - # group files by basename to identify collisions - basenames = defaultdict(list) - for f in infiles: - basenames[f.name].append(f) - - # output names: populate it right away with unique basenames - outnames = { name: files[0] for name, files in basenames.items() - if len(files) == 1 } - - # now focus on the collisions - for name, files in basenames.items(): - if len(files) <= 1: - continue - - # Special case: are these colliding files equal? e.g. viewer_version.txt - # Pass shallow=False so we actually read the files in question. Even - # if they're identical, they've been downloaded from different - # artifacts and have different timestamps (which would fool the default - # shallow=True). This could be time-consuming if we were comparing two - # of our very large files, but (a) our very large files already have - # distinct names and so don't reach this call and (b) if we somehow do - # wind up in that situation, it would be even more important to post - # only a single copy. - if all(filecmp.cmp(files[0], f, shallow=False) for f in files[1:]): - # pick only one of them and use its simple basename - outnames[name] = files[0] - continue - - # Because of our intended use for GitHub Actions build artifacts, we - # assume the top-level artifact names are descriptive. We'd still like - # to eliminate mid-level directory names that don't help disambiguate, - # so for instance, given: - # Windows metadata/newview/viewer_version.txt - # macOS metadata/newview/viewer_version.txt - # we see no reason to retain the 'newview' pathname component. Try - # longer and longer prefixes of the pathname parents. (But don't - # forget to trim off the original input directory pathname.) - filepairs = [(f, f.relative_to(input)) for f in files] - partslen = max(len(rel.parts) for f, rel in filepairs) - # skip the basename itself, we'll append that explicitly - for prefixlen in range(partslen - 1): - # Consider these relative names (shouldn't occur, but...): - # parent/autobuild-package.xml - # parent/newview/autobuild-package.xml - # Unless these are in fact identical, they'll collide, meaning - # we'll see them here. But beware their unequal numbers of parts. - # partslen will be 3, so prefixlen will be 0, 1 -- but unless we - # constrain it with min(), for prefixlen == 1 we'd construct: - # ('parent', 'autobuild-package.xml', 'autobuild-package.xml') - # ('parent', 'newview', 'autobuild-package.xml') - # whereas of course the correct answer would be: - # ('parent', 'autobuild-package.xml') - # ('parent', 'newview', 'autobuild-package.xml') - # Since we already know the basename is identical for every f in - # files, though, we can omit it from our uniqueness testing. - trynames = { rel.parts[:min(prefixlen+1, len(rel.parts)-1)]: f - for f, rel in filepairs } - if len(trynames) == len(files): - # Found a prefix without collisions -- note that we're - # guaranteed to get here eventually since the full paths are - # distinct in the filesystem, we just want to try to shorten. - # Path.parts is specifically documented to be a tuple. Join - # the key tuple with some delimiter acceptable to the - # filesystem. - outnames.update(('-'.join(nametuple + (name,)), f) - for nametuple, f in trynames.items()) - # stop considering longer prefixlens - break - - # at this point outnames should have distinct keys -- move to the output - # directory - for name, f in outnames.items(): - newname = output / name - if (not dry_run) and newname != f: - newname = f.rename(newname) - print(f'{f} => {newname}') - -def main(*raw_args): - from argparse import ArgumentParser - parser = ArgumentParser(description=DESCRIPTION) - parser.add_argument('-n', '--dry-run', action='store_true', default=False, - help="""show what would happen without moving files""") - parser.add_argument('output', metavar='OUTDIR', - help="""populate OUTDIR with (possibly renamed) files""") - parser.add_argument('input', metavar='INDIR', nargs='?', default='.', - help="""recursively read files under INDIR tree""") - - args = parser.parse_args(raw_args) - flatten(args.output, args.input, dry_run=args.dry_run) - -if __name__ == "__main__": - try: - sys.exit(main(*sys.argv[1:])) - except Error as err: - sys.exit(str(err)) -- cgit v1.2.3 From bd8ecbb389efa977908f80b1d04bd827745bc892 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 18 Sep 2023 22:43:16 -0400 Subject: SL-19242: Typo in changing from inline to reusable action. --- .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 8a477e1a29..cbdbac65cd 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -317,7 +317,7 @@ jobs: path: artifacts - name: Reshuffle artifact files - run: secondlife/viewer-build-util/release-artifacts@main + uses: secondlife/viewer-build-util/release-artifacts@main with: input-path: artifacts output-path: assets -- cgit v1.2.3 From 763fcb02b89ae8e2149127f420bb5d9ca1594ccc Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 19 Sep 2023 09:15:30 -0400 Subject: SL-19242: Move comments out of YAML parameter text. --- .github/workflows/build.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cbdbac65cd..bb1b8bb08b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -321,20 +321,20 @@ jobs: with: input-path: artifacts output-path: assets - exclude: | - # The *-app artifacts are for use only by the signing and - # packaging steps. Once we've generated signed installers, we no - # longer need them, and we CERTAINLY don't want to publish - # thousands of individual files as separate URLs. + # The *-app artifacts are for use only by the signing and + # packaging steps. Once we've generated signed installers, we no + # longer need them, and we CERTAINLY don't want to publish + # thousands of individual files as separate URLs. + exclude: |- Windows-app macOS-app - prefix: | - # Use just "Windows" or "macOS" prefix because these are the only - # artifacts in which we expect files from both platforms with - # colliding names (e.g. autobuild-package.xml). release-artifacts - # normally resolves collisions by prepending the artifact name, so - # when we anticipate collisions, it's good to keep the prefix - # short and sweet. + # Use just "Windows" or "macOS" prefix because these are the only + # artifacts in which we expect files from both platforms with + # colliding names (e.g. autobuild-package.xml). release-artifacts + # normally resolves collisions by prepending the artifact name, so + # when we anticipate collisions, it's good to keep the prefix + # short and sweet. + prefix: |- Windows-metadata=Windows macOS-metadata=macOS -- cgit v1.2.3 From e8dfbbaf880314359c0c2d18c944199e3f26db07 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 20 Sep 2023 11:34:56 -0400 Subject: SL-19242: Pass channel and imagename to sign-pkg-mac/action.yaml. The viewer_manifest.py logic to determine the name of the viewer installer .dmg is a little convoluted. Make it tell viewer-build-util/sign-pkg-mac that name, rather than passing it all the relevant inputs and composing it redundantly. sign-pkg-mac also wants the viewer channel to determine the application name. --- .github/workflows/build.yaml | 4 ++++ indra/newview/viewer_manifest.py | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index bb1b8bb08b..b010115e9c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -24,6 +24,7 @@ jobs: outputs: viewer_channel: ${{ steps.build.outputs.viewer_channel }} viewer_version: ${{ steps.build.outputs.viewer_version }} + imagename: ${{ steps.build.outputs.imagename }} env: AUTOBUILD_ADDRSIZE: 64 AUTOBUILD_BUILD_ID: ${{ github.run_id }} @@ -280,6 +281,9 @@ jobs: steps: - name: Sign and package Mac viewer uses: secondlife/viewer-build-util/sign-pkg-mac@main + with: + channel: ${{ needs.build.outputs.viewer_channel }} + imagename: ${{ needs.build.outputs.imagename }} post-windows-symbols: needs: build diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 0c54981af3..10f38fa7d8 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1273,6 +1273,7 @@ class DarwinManifest(ViewerManifest): volname=CHANNEL_VENDOR_BASE+" Installer" # DO NOT CHANGE without understanding comment above imagename = self.installer_base_name() + self.set_github_output('imagename', imagename) sparsename = imagename + ".sparseimage" finalname = imagename + ".dmg" @@ -1292,7 +1293,7 @@ class DarwinManifest(ViewerManifest): try: devfile = re.search("/dev/disk([0-9]+)[^s]", hdi_output).group(0).strip() - volpath = re.search('HFS\s+(.+)', hdi_output).group(1).strip() + volpath = re.search(r'HFS\s+(.+)', hdi_output).group(1).strip() # Copy everything in to the mounted .dmg -- cgit v1.2.3 From 50e3d4020d2431d01ae3b8c6cc28c49a2762d267 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 25 Sep 2023 11:19:38 -0400 Subject: SL-19242: Reference the actual stored GitHub repo secrets. Add a Mac signing step to unpack the credentials bundled into NOTARIZE_CREDS_MACOS so viewer-build-util/sign-pkg-mac need not know about that peculiarity of our secrets formatting. --- .github/workflows/build.yaml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b010115e9c..d7bc4a84af 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -279,11 +279,36 @@ jobs: needs: build runs-on: macos-latest steps: + - name: Unpack Mac notarization credentials + id: note-creds + shell: bash + run: | + # In NOTARIZE_CREDS_MACOS we expect to find: + # USERNAME="..." + # PASSWORD="..." + # ASC_PROVIDER="..." + eval "${{ secrets.NOTARIZE_CREDS_MACOS }} + echo "::add-mask::$USERNAME" + echo "::add-mask::$PASSWORD" + echo "::add-mask::$ASC_PROVIDER" + echo "note_user=$USERNAME" >> "$GITHUB_OUTPUT" + echo "note_pass=$PASSWORD" >> "$GITHUB_OUTPUT" + echo "note_asc=$ASC_PROVIDER" >> "$GITHUB_OUTPUT" + # If we didn't manage to retrieve all of these credentials, better + # find out sooner than later. + [[ -n "$USERNAME" && -n "$PASSWORD && -n "$ASC_PROVIDER" ]] + - name: Sign and package Mac viewer uses: secondlife/viewer-build-util/sign-pkg-mac@main with: channel: ${{ needs.build.outputs.viewer_channel }} imagename: ${{ needs.build.outputs.imagename }} + cert_base64: ${{ secrets.SIGNING_CERT_MACOS }} + cert_name: ${{ secrets.SIGNING_CERT_MACOS_IDENTITY }} + cert_pass: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }} + note_user: ${{ steps.note-creds.outputs.note_user }} + note_pass: ${{ steps.note-creds.outputs.note_pass }} + note_asc: ${{ steps.note-creds.outputs.note_asc }} post-windows-symbols: needs: build -- cgit v1.2.3 From d2d3599080d7011aa45fc72922d4d46378d95bc8 Mon Sep 17 00:00:00 2001 From: Brad Linden Date: Mon, 25 Sep 2023 12:47:03 -0700 Subject: Attempt to fix SL-19242 notarize creds secrets loading --- .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 d7bc4a84af..18f17a2084 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -287,7 +287,7 @@ jobs: # USERNAME="..." # PASSWORD="..." # ASC_PROVIDER="..." - eval "${{ secrets.NOTARIZE_CREDS_MACOS }} + eval "${{ secrets.NOTARIZE_CREDS_MACOS }}" echo "::add-mask::$USERNAME" echo "::add-mask::$PASSWORD" echo "::add-mask::$ASC_PROVIDER" @@ -296,7 +296,7 @@ jobs: echo "note_asc=$ASC_PROVIDER" >> "$GITHUB_OUTPUT" # If we didn't manage to retrieve all of these credentials, better # find out sooner than later. - [[ -n "$USERNAME" && -n "$PASSWORD && -n "$ASC_PROVIDER" ]] + [[ -n "$USERNAME" && -n "$PASSWORD" && -n "$ASC_PROVIDER" ]] - name: Sign and package Mac viewer uses: secondlife/viewer-build-util/sign-pkg-mac@main -- cgit v1.2.3 From ff71d3c742630751e3c7b3eeeeea334f714afd55 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 26 Sep 2023 10:22:40 -0400 Subject: SL-19242: Package Mac app image as tarball for artifact uploading. actions/upload-artifact doesn't preserve symlinks, which are important for our Mac viewer and its embedded frameworks. But tar does, so pack up the whole bundle as a tarball before posting as a GitHub artifact. --- indra/newview/viewer_manifest.py | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 10f38fa7d8..b7dc705e95 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -39,6 +39,7 @@ import secrets import shutil import subprocess import sys +import tarfile import tempfile import time @@ -918,32 +919,22 @@ class DarwinManifest(ViewerManifest): RUNNER_TEMP = os.getenv('RUNNER_TEMP') # When running as a GitHub Action job, RUNNER_TEMP is the recommended # temp directory. If we're not running on GitHub, don't create this - # temp directory or this symlink: we don't clean them up, trusting + # temp directory or this tarball: we don't clean them up, trusting # that the runner is itself transient. On a dev machine, that would # result in temp-directory clutter. if RUNNER_TEMP: - # We want an artifact containing the "Second Life Mumble.app" - # directory, which in turn contains the whole app bundle. - # Unfortunately, the directory that contains the .app directory - # also contains other stuff, notably the xcarchive.zip, which is - # itself enormous. Create a temp directory containing only (a link - # to) our .app dir, and specify that as the directory to upload. - wrapdir = tempfile.mkdtemp(dir=RUNNER_TEMP) - applink = os.path.join(wrapdir, appname) - # This link will be used by a different job step, so link to an - # absolute path: we can't guarantee that the other step will have - # the same current directory. - # diagnostic output - parentdir = os.path.abspath(os.path.join(self.get_dst_prefix(), os.pardir)) - for dir in parentdir, os.path.join(parentdir, appname): - print(f'Contents of {dir}:') - for item in os.listdir(dir): - print(f' {item}') - # end diagnostic output - appreal = os.path.abspath(os.path.join(self.get_dst_prefix(), os.pardir, appname)) - print(f"Linking {applink} => {appreal}") - os.symlink(appreal, applink) - self.set_github_output_path('viewer_app', wrapdir) + # Per GitHub's actions/upload-artifact documentation + # https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files + # we must package the app bundle with tar before posting as an + # artifact. Posting individual files follows symlinks, which + # 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") + print(f'Creating {tarpath} from {self.get_dst_prefix()}') + with tarfile.open(tarpath, mode="x:bz2") as tarball: + tarball.add(self.get_dst_prefix()) + self.set_github_output_path('viewer_app', tarpath) pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") -- cgit v1.2.3 From 5f69db9d1907eac79ad7fa9e639733de42eec36f Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 26 Sep 2023 11:47:18 -0400 Subject: SL-19242: Allow overwriting the Mac viewer's app bundle tarball. --- indra/newview/viewer_manifest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index b7dc705e95..899456dd09 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -932,7 +932,7 @@ class DarwinManifest(ViewerManifest): # must itself be a symlink to some specific Versions subdir. tarpath = os.path.join(RUNNER_TEMP, "viewer.tar.bz2") print(f'Creating {tarpath} from {self.get_dst_prefix()}') - with tarfile.open(tarpath, mode="x:bz2") as tarball: + with tarfile.open(tarpath, mode="w:bz2") as tarball: tarball.add(self.get_dst_prefix()) self.set_github_output_path('viewer_app', tarpath) -- cgit v1.2.3 From ae6027572816c0f67d68b8759a00cc8848e21fec Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 26 Sep 2023 13:58:19 -0400 Subject: SL-19242: Store Mac app bundle in tarball with top-level .app name. We were creating the tarball with the app bundle stored as the whole 'Users/someone/.../newview/Release/Second Life Mumble.app' path. Don't. --- indra/newview/viewer_manifest.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 899456dd09..5039f3db83 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -933,7 +933,10 @@ class DarwinManifest(ViewerManifest): tarpath = os.path.join(RUNNER_TEMP, "viewer.tar.bz2") print(f'Creating {tarpath} from {self.get_dst_prefix()}') with tarfile.open(tarpath, mode="w:bz2") as tarball: - tarball.add(self.get_dst_prefix()) + # store in the tarball as just 'Second Life Mumble.app' + # instead of 'Users/someone/.../newview/Release/Second...' + tarball.add(self.get_dst_prefix(), + arcname=os.path.basename(self.get_dst_prefix())) self.set_github_output_path('viewer_app', tarpath) pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') -- cgit v1.2.3 From e2ea42cb6a078d250a5d1c7ee81be355bde669bc Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 2 Oct 2023 16:52:11 -0400 Subject: SL-19242: Expect and pass Apple "Team ID" rather than "ASC Provider". "ASC Provider" was a credential accepted by altool, but switching from altool to notarytool requires a Team ID instead. Expect to find TEAM_ID in our repository secret NOTARIZE_CREDS_MACOS. Extract it and pass it to sign-pkg-mac. --- .github/workflows/build.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 18f17a2084..d1f617f301 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -286,17 +286,17 @@ jobs: # In NOTARIZE_CREDS_MACOS we expect to find: # USERNAME="..." # PASSWORD="..." - # ASC_PROVIDER="..." + # TEAM_ID="..." eval "${{ secrets.NOTARIZE_CREDS_MACOS }}" echo "::add-mask::$USERNAME" echo "::add-mask::$PASSWORD" - echo "::add-mask::$ASC_PROVIDER" + echo "::add-mask::$TEAM_ID" echo "note_user=$USERNAME" >> "$GITHUB_OUTPUT" echo "note_pass=$PASSWORD" >> "$GITHUB_OUTPUT" - echo "note_asc=$ASC_PROVIDER" >> "$GITHUB_OUTPUT" + echo "note_team=$TEAM_ID" >> "$GITHUB_OUTPUT" # If we didn't manage to retrieve all of these credentials, better # find out sooner than later. - [[ -n "$USERNAME" && -n "$PASSWORD" && -n "$ASC_PROVIDER" ]] + [[ -n "$USERNAME" && -n "$PASSWORD" && -n "$TEAM_ID" ]] - name: Sign and package Mac viewer uses: secondlife/viewer-build-util/sign-pkg-mac@main @@ -308,7 +308,7 @@ jobs: cert_pass: ${{ secrets.SIGNING_CERT_MACOS_PASSWORD }} note_user: ${{ steps.note-creds.outputs.note_user }} note_pass: ${{ steps.note-creds.outputs.note_pass }} - note_asc: ${{ steps.note-creds.outputs.note_asc }} + note_team: ${{ steps.note-creds.outputs.note_team }} post-windows-symbols: needs: build -- cgit v1.2.3 From 1684d6249984e0ad8e13263da05f84cb5e6b84fb Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 3 Oct 2023 19:02:40 -0400 Subject: SL-19242: Remove signing and packaging from viewer_manifest.py for Mac and Windows. That's now done by subsequent jobs in the GitHub build. Remove workflow step to upload installers before signing and packaging jobs. Remove from viewer_manifest.py conditionals for 32-bit Windows or Mac. Also bump to actions/checkout@v4, per dependabot. --- .github/workflows/build.yaml | 15 +- .github/workflows/pre-commit.yaml | 2 +- build.sh | 4 - indra/newview/viewer_manifest.py | 323 ++------------------------------------ 4 files changed, 20 insertions(+), 324 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d1f617f301..cb3212d56a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -57,7 +57,7 @@ jobs: variants: ${{ matrix.configuration }} steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} @@ -67,14 +67,14 @@ jobs: python-version: ${{ matrix.python-version }} - name: Checkout build variables - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: secondlife/build-variables ref: viewer path: .build-variables - name: Checkout master-message-template - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: secondlife/master-message-template path: .master-message-template @@ -212,15 +212,6 @@ jobs: fi echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT - - name: Upload installer - if: matrix.configuration != 'ReleaseOS' - uses: actions/upload-artifact@v3 - with: - name: "${{ steps.build.outputs.artifact }}-installer" - # emitted by build.sh, possibly multiple lines - path: | - ${{ steps.build.outputs.installer }} - - name: Upload executable if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_app uses: actions/upload-artifact@v3 diff --git a/.github/workflows/pre-commit.yaml b/.github/workflows/pre-commit.yaml index 17c0ace02f..d626eef38d 100644 --- a/.github/workflows/pre-commit.yaml +++ b/.github/workflows/pre-commit.yaml @@ -11,7 +11,7 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: 3.x diff --git a/build.sh b/build.sh index c0d7e55f7e..53d0122cbc 100755 --- a/build.sh +++ b/build.sh @@ -118,13 +118,11 @@ installer_CYGWIN() EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) # Build up these arrays as we go -installer=() metadata=() symbolfile=() physicstpv=() # and dump them to GITHUB_OUTPUT when done cleanup="$cleanup ; \ -arrayoutput installer ; \ arrayoutput metadata ; \ arrayoutput symbolfile ; \ arrayoutput physicstpv" @@ -553,8 +551,6 @@ then if [ x"$package" != x ] && test -f "$package" then # Upload base package. - installer+=("$package") - if [ "$last_built_variant" = "Release" ] then # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 5039f3db83..7db0b75319 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -428,10 +428,11 @@ class ViewerManifest(LLManifest): print(delim, file=outf) -class WindowsManifest(ViewerManifest): +class Windows_x86_64_Manifest(ViewerManifest): # We want the platform, per se, for every Windows build to be 'win'. The # VMP will concatenate that with the address_size. build_data_json_platform = 'win' + address_size = 64 def final_exe(self): return self.exec_name()+".exe" @@ -492,7 +493,7 @@ class WindowsManifest(ViewerManifest): print("Doesn't exist:", src) def construct(self): - super(WindowsManifest, self).construct() + super().construct() pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") @@ -575,20 +576,12 @@ class WindowsManifest(ViewerManifest): self.path("SLVoice.exe") # Vivox libraries - if (self.address_size == 64): - self.path("vivoxsdk_x64.dll") - self.path("ortp_x64.dll") - else: - self.path("vivoxsdk.dll") - self.path("ortp.dll") + self.path("vivoxsdk_x64.dll") + self.path("ortp_x64.dll") # OpenSSL - if (self.address_size == 64): - self.path("libcrypto-1_1-x64.dll") - self.path("libssl-1_1-x64.dll") - else: - self.path("libcrypto-1_1.dll") - self.path("libssl-1_1.dll") + self.path("libcrypto-1_1-x64.dll") + self.path("libssl-1_1-x64.dll") # HTTP/2 self.path("nghttp2.dll") @@ -598,14 +591,9 @@ class WindowsManifest(ViewerManifest): # BugSplat if self.args.get('bugsplat'): - if(self.address_size == 64): - self.path("BsSndRpt64.exe") - self.path("BugSplat64.dll") - self.path("BugSplatRc64.dll") - else: - self.path("BsSndRpt.exe") - self.path("BugSplat.dll") - self.path("BugSplatRc.dll") + self.path("BsSndRpt64.exe") + self.path("BugSplat64.dll") + self.path("BugSplatRc64.dll") self.path(src="licenses-win32.txt", dst="licenses.txt") self.path("featuretable.txt") @@ -767,8 +755,7 @@ class WindowsManifest(ViewerManifest): 'version' : '.'.join(self.args['version']), 'version_short' : '.'.join(self.args['version'][:-1]), 'version_dashes' : '-'.join(self.args['version']), - 'version_registry' : '%s(%s)' % - ('.'.join(self.args['version']), self.address_size), + 'version_registry' : '%s(64)' % '.'.join(self.args['version']), 'final_exe' : self.final_exe(), 'flags':'', 'app_name':self.app_name(), @@ -800,12 +787,8 @@ class WindowsManifest(ViewerManifest): Caption "%(caption)s" """ - if(self.address_size == 64): - engage_registry="SetRegView 64" - program_files="!define MULTIUSER_USE_PROGRAMFILES64" - else: - engage_registry="SetRegView 32" - program_files="" + engage_registry="SetRegView 64" + program_files="!define MULTIUSER_USE_PROGRAMFILES64" # Dump the installers/windows directory into the raw app image tree # because NSIS needs those files. But don't use path() because we @@ -830,72 +813,10 @@ class WindowsManifest(ViewerManifest): "%%ENGAGEREGISTRY%%":engage_registry, "%%DELETE_FILES%%":self.nsi_file_commands(False)}) - # If we're on a build machine, sign the code using our Authenticode certificate. JC - # note that the enclosing setup exe is signed later, after the makensis makes it. - # Unlike the viewer binary, the VMP filenames are invariant with respect to version, os, etc. - for exe in ( - self.final_exe(), - "SLVersionChecker.exe", - "llplugin/dullahan_host.exe", - ): - self.sign(exe) - - # Check two paths, one for Program Files, and one for Program Files (x86). - # Yay 64bit windows. - nsis_path = "makensis.exe" - try: - for program_files in os.getenv('programfiles'), os.getenv('programfiles(x86)'): - if program_files: - for subpath in 'NSIS', r'NSIS\Unicode': - possible_path = os.path.join(program_files, subpath, nsis_path) - if os.path.isfile(possible_path): - nsis_path = possible_path - # don't just break: we need to exit multiple - # levels of 'for' loop - raise StopIteration() - except StopIteration: - pass - - # Because we've written relative pathnames into tempfile, run nsis - # with their base directory as current. - try: - self.run_command([nsis_path, '/V2', tempfile], cwd=self.get_dst_prefix()) - except ManifestError as err: - print(f' {tempfile} '.center(72, '=')) - with open(self.dst_path_of(tempfile)) as nsi: - for line in nsi: - print(line, end='') # already includes '\n' - print(72 * '=') - raise - - self.sign(installer_file) - self.created_path(self.dst_path_of(installer_file)) - self.package_file = installer_file - - def sign(self, exe): - sign_py = os.environ.get('SIGN', r'C:\buildscripts\code-signing\sign.py') - python = os.environ.get('PYTHON', sys.executable) - if os.path.exists(sign_py): - dst_path = self.dst_path_of(exe) - print("about to run signing of: ", dst_path) - self.run_command([python, sign_py, dst_path]) - else: - print("Skipping code signing of %s %s: %s not found" % (self.dst_path_of(exe), exe, sign_py)) - - def escape_slashes(self, path): - return path.replace('\\', '\\\\\\\\') -class Windows_i686_Manifest(WindowsManifest): - # Although we aren't literally passed ADDRESS_SIZE, we can infer it from - # the passed 'arch', which is used to select the specific subclass. - address_size = 32 - -class Windows_x86_64_Manifest(WindowsManifest): - address_size = 64 - - -class DarwinManifest(ViewerManifest): +class Darwin_x86_64_Manifest(ViewerManifest): build_data_json_platform = 'mac' + address_size = 64 def finish_build_data_dict(self, build_data_dict): build_data_dict.update({'Bundle Id':self.args['bundleid']}) @@ -1012,7 +933,7 @@ class DarwinManifest(ViewerManifest): with self.prefix(dst="Resources"): # defer cross-platform file copies until we're in the # nested Resources directory - super(DarwinManifest, self).construct() + super().construct() # need .icns file referenced by Info.plist with self.prefix(src=self.icon_path(), dst="") : @@ -1260,221 +1181,9 @@ class DarwinManifest(ViewerManifest): self.path( "plugins.dat" ) def package_finish(self): - global CHANNEL_VENDOR_BASE - # MBW -- If the mounted volume name changes, it breaks the .DS_Store's background image and icon positioning. - # If we really need differently named volumes, we'll need to create multiple DS_Store file images, or use some other trick. - - volname=CHANNEL_VENDOR_BASE+" Installer" # DO NOT CHANGE without understanding comment above - imagename = self.installer_base_name() self.set_github_output('imagename', imagename) - sparsename = imagename + ".sparseimage" - finalname = imagename + ".dmg" - # make sure we don't have stale files laying about - self.remove(sparsename, finalname) - - self.run_command(['hdiutil', 'create', sparsename, - '-volname', volname, '-fs', 'HFS+', - '-type', 'SPARSE', '-megabytes', '1300', - '-layout', 'SPUD']) - - # mount the image and get the name of the mount point and device node - try: - hdi_output = subprocess.check_output(['hdiutil', 'attach', '-private', sparsename], text=True) - except subprocess.CalledProcessError as err: - sys.exit("failed to mount image at '%s'" % sparsename) - - try: - devfile = re.search("/dev/disk([0-9]+)[^s]", hdi_output).group(0).strip() - volpath = re.search(r'HFS\s+(.+)', hdi_output).group(1).strip() - - # Copy everything in to the mounted .dmg - - app_name = self.app_name() - - # Hack: - # Because there is no easy way to coerce the Finder into positioning - # the app bundle in the same place with different app names, we are - # adding multiple .DS_Store files to svn. There is one for release, - # one for release candidate and one for first look. Any other channels - # will use the release .DS_Store, and will look broken. - # - Ambroff 2008-08-20 - dmg_template = os.path.join( - 'installers', 'darwin', '%s-dmg' % self.channel_type()) - - if not os.path.exists (self.src_path_of(dmg_template)): - dmg_template = os.path.join ('installers', 'darwin', 'release-dmg') - - for s,d in list({self.get_dst_prefix():app_name + ".app", - os.path.join(dmg_template, "_VolumeIcon.icns"): ".VolumeIcon.icns", - os.path.join(dmg_template, "background.jpg"): "background.jpg", - os.path.join(dmg_template, "_DS_Store"): ".DS_Store"}.items()): - print("Copying to dmg", s, d) - self.copy_action(self.src_path_of(s), os.path.join(volpath, d)) - - # Hide the background image, DS_Store file, and volume icon file (set their "visible" bit) - for f in ".VolumeIcon.icns", "background.jpg", ".DS_Store": - pathname = os.path.join(volpath, f) - self.run_command(['SetFile', '-a', 'V', pathname]) - - # Create the alias file (which is a resource file) from the .r - self.run_command( - ['Rez', self.src_path_of("installers/darwin/release-dmg/Applications-alias.r"), - '-o', os.path.join(volpath, "Applications")]) - - # Set the alias file's alias and custom icon bits - self.run_command(['SetFile', '-a', 'AC', os.path.join(volpath, "Applications")]) - - # Set the disk image root's custom icon bit - self.run_command(['SetFile', '-a', 'C', volpath]) - - # Sign the app if requested; - # do this in the copy that's in the .dmg so that the extended attributes used by - # the signature are preserved; moving the files using python will leave them behind - # and invalidate the signatures. - if 'signature' in self.args: - app_in_dmg=os.path.join(volpath,self.app_name()+".app") - print("Attempting to sign '%s'" % app_in_dmg) - identity = self.args['signature'] - if identity == '': - identity = 'Developer ID Application' - - # Look for an environment variable set via build.sh when running in Team City. - try: - build_secrets_checkout = os.environ['build_secrets_checkout'] - except KeyError: - pass - else: - # variable found so use it to unlock keychain followed by codesign - home_path = os.environ['HOME'] - keychain_pwd_path = os.path.join(build_secrets_checkout,'code-signing-osx','password.txt') - keychain_pwd = open(keychain_pwd_path).read().rstrip() - - # Note: As of macOS Sierra, keychains are created with - # names postfixed with '-db' so for example, the SL - # Viewer keychain would by default be found in - # ~/Library/Keychains/viewer.keychain-db instead of - # just ~/Library/Keychains/viewer.keychain in - # earlier versions. - # - # Because we have old OS files from previous - # versions of macOS on the build hosts, the - # configurations are different on each host. Some - # have viewer.keychain, some have viewer.keychain-db - # and some have both. As you can see in the line - # below, this script expects the Linden Developer - # cert/keys to be in viewer.keychain. - # - # To correctly sign builds you need to make sure - # ~/Library/Keychains/viewer.keychain exists on the - # host and that it contains the correct cert/key. If - # a build host is set up with a clean version of - # macOS Sierra (or later) then you will need to - # change this line (and the one for 'codesign' - # command below) to point to right place or else - # pull in the cert/key into the default viewer - # keychain 'viewer.keychain-db' and export it to - # 'viewer.keychain' - viewer_keychain = os.path.join(home_path, 'Library', - 'Keychains', 'viewer.keychain') - self.run_command(['security', 'unlock-keychain', - '-p', keychain_pwd, viewer_keychain]) - sign_retries=3 - sign_retry_wait=15 - resources = app_in_dmg + "/Contents/Resources/" - plain_sign = glob.glob(resources + "llplugin/*.dylib") - deep_sign = [ - resources + "updater/SLVersionChecker", - resources + "SLPlugin.app/Contents/MacOS/SLPlugin", - app_in_dmg, - ] - for attempt in range(sign_retries): - if attempt: # second or subsequent iteration - print(f"codesign attempt {attempt+1} failed, " - f"waiting {sign_retry_wait:d} seconds before retrying", - file=sys.stderr) - time.sleep(sign_retry_wait) - sign_retry_wait*=2 - - try: - # Note: See blurb above about names of keychains - for signee in plain_sign: - self.run_command( - ['codesign', - '--force', - '--timestamp', - '--keychain', viewer_keychain, - '--sign', identity, - signee]) - for signee in deep_sign: - self.run_command( - ['codesign', - '--verbose', - '--deep', - '--force', - '--entitlements', self.src_path_of("slplugin.entitlements"), - '--options', 'runtime', - '--keychain', viewer_keychain, - '--sign', identity, - signee]) - break # if no exception was raised, the codesign worked - except ManifestError as err: - # 'err' goes out of scope - sign_failed = err - else: - print(f"{sign_retries} codesign attempts failed; giving up", - file=sys.stderr) - raise sign_failed - self.run_command(['spctl', '-a', '-texec', '-vvvv', app_in_dmg]) - self.run_command([self.src_path_of("installers/darwin/apple-notarize.sh"), - app_in_dmg]) - - finally: - # Unmount the image even if exceptions from any of the above - detach_retries = 3 - detach_retry_wait = 2 - # Empirically, on GitHub we've hit errors like: - # hdiutil: couldn't eject "disk10" - Resource busy - for attempt in range(detach_retries): - if attempt: # second or subsequent iteration - print(f'detach failed, waiting {detach_retry_wait} seconds before retrying', - file=sys.stderr) - # Try waiting a bit to see if that improves reliability. - time.sleep(detach_retry_wait) - detach_retry_wait *= 2 - - try: - self.run_command(['hdiutil', 'detach', '-force', devfile]) - # if no exception, the detach worked - break - except ManifestError as err: - detach_failed = err - else: - print(f'{detach_retries} detach attempts failed', file=sys.stderr) - ## can we carry on anyway?? - ## raise detach_failed - - print("Converting temp disk image to final disk image") - self.run_command(['hdiutil', 'convert', sparsename, '-format', 'UDZO', - '-imagekey', 'zlib-level=9', '-o', finalname]) - # get rid of the temp file - self.package_file = finalname - self.remove(sparsename) - - -class Darwin_i386_Manifest(DarwinManifest): - address_size = 32 - - -class Darwin_i686_Manifest(DarwinManifest): - """alias in case arch is passed as i686 instead of i386""" - pass - - -class Darwin_x86_64_Manifest(DarwinManifest): - address_size = 64 - class LinuxManifest(ViewerManifest): build_data_json_platform = 'lnx' -- cgit v1.2.3 From 617801401ff84e0142fa3fe5f6614671094e2cef Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 4 Oct 2023 08:55:15 -0400 Subject: SL-18837: Restore setting ViewerManifest.package_file. This is referenced after running the packaging. --- indra/newview/viewer_manifest.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 7db0b75319..33b2e4affc 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -813,6 +813,8 @@ class Windows_x86_64_Manifest(ViewerManifest): "%%ENGAGEREGISTRY%%":engage_registry, "%%DELETE_FILES%%":self.nsi_file_commands(False)}) + self.package_file = installer_file + class Darwin_x86_64_Manifest(ViewerManifest): build_data_json_platform = 'mac' @@ -1183,6 +1185,8 @@ class Darwin_x86_64_Manifest(ViewerManifest): def package_finish(self): imagename = self.installer_base_name() self.set_github_output('imagename', imagename) + finalname = imagename + ".dmg" + self.package_file = finalname class LinuxManifest(ViewerManifest): -- cgit v1.2.3 From 59cd3f48b00b408e354cd39c0f6e966912ba628f Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 4 Oct 2023 14:19:44 -0400 Subject: SL-18837: Fix set-but-unreferenced in LLInventoryGallery::startDrag() --- indra/newview/llinventorygallery.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index 4838ba7a47..845ea01f56 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -2420,6 +2420,8 @@ void LLInventoryGallery::startDrag() ids.push_back(selected_id); } } + // We must have set this for some reason, but it's causing compile errors + (void)src; LLToolDragAndDrop::getInstance()->beginMultiDrag(types, ids, LLToolDragAndDrop::SOURCE_AGENT); } -- cgit v1.2.3 From 89191059ef419dbad72fdc831ca3c29860d26a0c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 4 Oct 2023 16:54:07 -0400 Subject: SL-18837: Upload symbol file and physics pkg without installer. build.sh logic used to test whether the installer existed and skip the symbol-file and llphysicsextensions uploads if not. Since we now sign and package the built viewer in a later build job, it's no longer appropriate to gate these uploads on existence of the installer. --- build.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 53d0122cbc..7f1e382c07 100755 --- a/build.sh +++ b/build.sh @@ -546,11 +546,9 @@ then if $build_viewer then begin_section "Uploads" - # Upload installer package=$(installer_$arch) - if [ x"$package" != x ] && test -f "$package" + if [ x"$package" != x ] then - # Upload base package. if [ "$last_built_variant" = "Release" ] then # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. -- cgit v1.2.3 From 1570153a8419878eea0e619a45e3d290ca3c0e92 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 4 Oct 2023 19:40:46 -0400 Subject: SL-18837: build.sh shouldn't even check for an installer. We no longer package the installer before this point, and we want to upload symbol files even so. --- build.sh | 51 ++++++++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 29 deletions(-) diff --git a/build.sh b/build.sh index 7f1e382c07..22f9e0c78a 100755 --- a/build.sh +++ b/build.sh @@ -546,36 +546,29 @@ then if $build_viewer then begin_section "Uploads" - package=$(installer_$arch) - if [ x"$package" != x ] + # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. + if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ] then - if [ "$last_built_variant" = "Release" ] - then - # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. - if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ] - then - # BugSplat wants to see xcarchive.zip - # e.g. build-darwin-x86_64/newview/Release/Second Life Test.xcarchive.zip - symbol_file="${build_dir}/newview/${variant}/${viewer_channel}.xcarchive.zip" - if [[ ! -f "$symbol_file" ]] - then - # symbol tarball we prep for (e.g.) Breakpad - symbol_file="$VIEWER_SYMBOL_FILE" - fi - # Upload crash reporter file - symbolfile+=("$symbol_file") - fi - - # Upload the llphysicsextensions_tpv package, if one was produced - # Only upload this package when building the private repo so the - # artifact is private. - if [[ "x$GITHUB_REPOSITORY" == "xsecondlife/viewer-private" && \ - -r "$build_dir/llphysicsextensions_package" ]] - then - llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) - physicstpv+=("$llphysicsextensions_package") - fi - fi + # BugSplat wants to see xcarchive.zip + # e.g. build-darwin-x86_64/newview/Release/Second Life Test.xcarchive.zip + symbol_file="${build_dir}/newview/${variant}/${viewer_channel}.xcarchive.zip" + if [[ ! -f "$symbol_file" ]] + then + # symbol tarball we prep for (e.g.) Breakpad + symbol_file="$VIEWER_SYMBOL_FILE" + fi + # Upload crash reporter file + symbolfile+=("$symbol_file") + fi + + # Upload the llphysicsextensions_tpv package, if one was produced + # Only upload this package when building the private repo so the + # artifact is private. + if [[ "x$GITHUB_REPOSITORY" == "xsecondlife/viewer-private" && \ + -r "$build_dir/llphysicsextensions_package" ]] + then + llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) + physicstpv+=("$llphysicsextensions_package") fi end_section "Uploads" else -- cgit v1.2.3 From 7504b1c319373c950e8b8c2c7a8b2f0d9abf1d8b Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 5 Oct 2023 10:17:09 -0400 Subject: SL-18837: When llrand_test.cpp fails, display the failing value. It's frustrating and unactionable to have a failing test report merely that the random value was greater than the specified high end. Okay, so what was the value? If it's supposed to be less than the high end, did it happen to be equal? Or was it garbage? We can't reproduce the failure by rerunning! The new ensure_in_exc_range(), ensure_in_inc_range() mechanism is somewhat complex because exactly one test allows equality with the high end of the expected range, where the rest mandate that the function return less than the high end. If that's a bug in the test -- if every llrand function is supposed to return less than the high end -- then we could simplify the test logic. --- indra/llcommon/tests/llrand_test.cpp | 60 +++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/indra/llcommon/tests/llrand_test.cpp b/indra/llcommon/tests/llrand_test.cpp index 383e6f9e0a..c8e2d19372 100644 --- a/indra/llcommon/tests/llrand_test.cpp +++ b/indra/llcommon/tests/llrand_test.cpp @@ -29,7 +29,30 @@ #include "../test/lltut.h" #include "../llrand.h" +#include "stringize.h" +template +void ensure_in_range_using(const std::string_view& name, + NUMBER value, NUMBER low, NUMBER high, + const std::string_view& compdesc, HIGHCOMP&& highcomp) +{ + auto failmsg{ stringize(name, " >= ", low, " (", value, ')') }; + tut::ensure(failmsg, (value >= low)); + failmsg = stringize(name, ' ', compdesc, ' ', high, " (", value, ')'); + tut::ensure(failmsg, std::forward(highcomp)(value, high)); +} + +template +void ensure_in_exc_range(const std::string_view& name, NUMBER value, NUMBER low, NUMBER high) +{ + ensure_in_range_using(name, value, low, high, "<", std::less()); +} + +template +void ensure_in_inc_range(const std::string_view& name, NUMBER value, NUMBER low, NUMBER high) +{ + ensure_in_range_using(name, value, low, high, "<=", std::less_equal()); +} namespace tut { @@ -44,84 +67,65 @@ namespace tut template<> template<> void random_object_t::test<1>() { - F32 number = 0.0f; for(S32 ii = 0; ii < 100000; ++ii) { - number = ll_frand(); - ensure("frand >= 0", (number >= 0.0f)); - ensure("frand < 1", (number < 1.0f)); + ensure_in_exc_range("frand", ll_frand(), 0.0f, 1.0f); } } template<> template<> void random_object_t::test<2>() { - F64 number = 0.0f; for(S32 ii = 0; ii < 100000; ++ii) { - number = ll_drand(); - ensure("drand >= 0", (number >= 0.0)); - ensure("drand < 1", (number < 1.0)); + ensure_in_exc_range("drand", ll_drand(), 0.0, 1.0); } } template<> template<> void random_object_t::test<3>() { - F32 number = 0.0f; for(S32 ii = 0; ii < 100000; ++ii) { - number = ll_frand(2.0f) - 1.0f; - ensure("frand >= 0", (number >= -1.0f)); - ensure("frand < 1", (number <= 1.0f)); + ensure_in_inc_range("frand(2.0f)", ll_frand(2.0f) - 1.0f, -1.0f, 1.0f); } } template<> template<> void random_object_t::test<4>() { - F32 number = 0.0f; for(S32 ii = 0; ii < 100000; ++ii) { - number = ll_frand(-7.0); - ensure("drand <= 0", (number <= 0.0)); - ensure("drand > -7", (number > -7.0)); + // Negate the result so we don't have to allow a templated low-end + // comparison as well. + ensure_in_exc_range("-frand(-7.0)", -ll_frand(-7.0), 0.0f, 7.0f); } } template<> template<> void random_object_t::test<5>() { - F64 number = 0.0f; for(S32 ii = 0; ii < 100000; ++ii) { - number = ll_drand(-2.0); - ensure("drand <= 0", (number <= 0.0)); - ensure("drand > -2", (number > -2.0)); + ensure_in_exc_range("-drand(-2.0)", -ll_drand(-2.0), 0.0, 2.0); } } template<> template<> void random_object_t::test<6>() { - S32 number = 0; for(S32 ii = 0; ii < 100000; ++ii) { - number = ll_rand(100); - ensure("rand >= 0", (number >= 0)); - ensure("rand < 100", (number < 100)); + ensure_in_exc_range("rand(100)", ll_rand(100), 0, 100); } } template<> template<> void random_object_t::test<7>() { - S32 number = 0; for(S32 ii = 0; ii < 100000; ++ii) { - number = ll_rand(-127); - ensure("rand <= 0", (number <= 0)); - ensure("rand > -127", (number > -127)); + ensure_in_exc_range("-rand(-127)", -ll_rand(-127), 0, 127); } } } -- cgit v1.2.3 From 764897839788d3bc19d564cf074675f498b5a77c Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 5 Oct 2023 15:25:54 -0400 Subject: SL-18837: Name the release for the build number to readily find it. --- .github/workflows/build.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cb3212d56a..2def307b94 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -361,6 +361,9 @@ jobs: # forked from softprops/action-gh-release - uses: secondlife-3p/action-gh-release@v1 with: + # name the release page for the build number so we can find it + # easily (analogous to looking up a codeticket build page) + name: "v${{ github.run_id }}" prerelease: true generate_release_notes: true # the only reason we generate a GH release is to post build products -- cgit v1.2.3 From 093b6a1494574ab142020f5ca3871574103223fa Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 6 Oct 2023 06:55:34 -0400 Subject: SL-18837: Update to Dullahan 1.14.0 with CEF 117 --- autobuild.xml | 1418 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 709 insertions(+), 709 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 9f6913c9de..c9b077dc27 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1,20 +1,14 @@ + version + 1.3 + type + autobuild installables SDL - copyright - Copyright (C) 1997-2012 Sam Lantinga - description - Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. - license - lgpl - license_file - LICENSES/SDL.txt - name - SDL platforms linux64 @@ -30,21 +24,21 @@ linux64 + license + lgpl + license_file + LICENSES/SDL.txt + copyright + Copyright (C) 1997-2012 Sam Lantinga version 1.2.15 + name + SDL + description + Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. apr_suite - copyright - Copyright © 2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. - description - Apache portable runtime project - license - apache - license_file - LICENSES/apr_suite.txt - name - apr_suite platforms darwin64 @@ -102,21 +96,21 @@ windows64 + license + apache + license_file + LICENSES/apr_suite.txt + copyright + Copyright © 2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. version 1.7.2-e935465 + name + apr_suite + description + Apache portable runtime project boost - copyright - (see individual source files) - description - Boost C++ Libraries - license - boost 1.0 - license_file - LICENSES/boost.txt - name - boost platforms darwin64 @@ -174,21 +168,21 @@ windows64 + license + boost 1.0 + license_file + LICENSES/boost.txt + copyright + (see individual source files) version 1.81 + name + boost + description + Boost C++ Libraries bugsplat - copyright - Copyright 2003-2017, BugSplat - description - Bugsplat crash reporting package - license - Proprietary - license_file - LICENSES/BUGSPLAT_LICENSE.txt - name - bugsplat platforms darwin64 @@ -234,19 +228,21 @@ windows64 + license + Proprietary + license_file + LICENSES/BUGSPLAT_LICENSE.txt + copyright + Copyright 2003-2017, BugSplat version 4.0.3.0-527603a + name + bugsplat + description + Bugsplat crash reporting package colladadom - copyright - Copyright 2006 Sony Computer Entertainment Inc. - license - SCEA - license_file - LICENSES/collada.txt - name - colladadom platforms darwin64 @@ -304,19 +300,19 @@ windows64 + license + SCEA + license_file + LICENSES/collada.txt + copyright + Copyright 2006 Sony Computer Entertainment Inc. version 2.3.d1ef72a + name + colladadom cubemaptoequirectangular - copyright - Copyright (c) 2017 Jaume Sanchez Elias, http://www.clicktorelease.com - license - MIT - license_file - LICENSES/CUBEMAPTOEQUIRECTANGULAR_LICENSE.txt - name - cubemaptoequirectangular platforms darwin64 @@ -374,21 +370,19 @@ windows64 + license + MIT + license_file + LICENSES/CUBEMAPTOEQUIRECTANGULAR_LICENSE.txt + copyright + Copyright (c) 2017 Jaume Sanchez Elias, http://www.clicktorelease.com version 1.1.0 + name + cubemaptoequirectangular curl - copyright - Copyright (c) 1996 - 2014, Daniel Stenberg, (daniel@haxx.se). - description - Library for transferring data specified with URL syntax - license - curl - license_file - LICENSES/curl.txt - name - curl platforms darwin64 @@ -446,21 +440,21 @@ windows64 + license + curl + license_file + LICENSES/curl.txt + copyright + Copyright (c) 1996 - 2014, Daniel Stenberg, (daniel@haxx.se). version 7.54.1-5a4a82d + name + curl + description + Library for transferring data specified with URL syntax dbus_glib - copyright - Copyright (C) Red Hat Inc. - description - D-Bus bindings for glib - license - Academic Free License v. 2.1 - license_file - LICENSES/dbus-glib.txt - name - dbus_glib platforms linux64 @@ -476,21 +470,21 @@ linux64 + license + Academic Free License v. 2.1 + license_file + LICENSES/dbus-glib.txt + copyright + Copyright (C) Red Hat Inc. version 0.76 + name + dbus_glib + description + D-Bus bindings for glib dictionaries - copyright - Copyright 2014 Apache OpenOffice software - description - Spell checking dictionaries to bundled into the viewer - license - various open source - license_file - LICENSES/dictionaries.txt - name - dictionaries platforms common @@ -508,21 +502,21 @@ common + license + various open source + license_file + LICENSES/dictionaries.txt + copyright + Copyright 2014 Apache OpenOffice software version None + name + dictionaries + description + Spell checking dictionaries to bundled into the viewer dullahan - copyright - Copyright (c) 2017, Linden Research, Inc. - description - A headless browser SDK that uses the Chromium Embedded Framework (CEF). It is designed to make it easier to write applications that render modern web content directly to a memory buffer, inject synthesized mouse and keyboard events as well as interact with web based features like JavaScript or cookies. - license - MPL - license_file - LICENSES/LICENSE.txt - name - dullahan platforms darwin64 @@ -530,11 +524,11 @@ archive hash - 26302518fa132a8a9da7eddee53ee583ab7581b3 + 6bb33eb9818f8b166e3bad22ba84fec0f9b397fa hash_algorithm sha1 url - https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180020_113.1.5_ge452d82_chromium-113.0.5672.93-darwin64-1758b1b.tar.zst + https://github.com/secondlife/dullahan/releases/download/v1.14.0/dullahan-1.14.0.202310042042_117.2.2_ge80c977_chromium-117.0.5938.132-darwin64-bb8417d.tar.zst name darwin64 @@ -558,31 +552,31 @@ archive hash - f29e543a6f85aa5b5093d2f4db0b192e28da601a + 7100f36b969d3c09bcaf50df988b4035c77e3158 hash_algorithm sha1 url - https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93-windows64-1758b1b.tar.zst + https://github.com/secondlife/dullahan/releases/download/v1.14.0/dullahan-1.14.0.202310042145_117.2.2_ge80c977_chromium-117.0.5938.132-windows64-bb8417d.tar.zst name windows64 + license + MPL + license_file + LICENSES/LICENSE.txt + copyright + Copyright (c) 2017, Linden Research, Inc. version - 1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93 + 1.14.0.202310042145_117.2.2_ge80c977_chromium-117.0.5938.132 + name + dullahan + description + A headless browser SDK that uses the Chromium Embedded Framework (CEF). It is designed to make it easier to write applications that render modern web content directly to a memory buffer, inject synthesized mouse and keyboard events as well as interact with web based features like JavaScript or cookies. expat - copyright - Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper - Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. - description - Expat is an XML parser library written in C - license - expat - license_file - LICENSES/expat.txt - name - expat platforms darwin64 @@ -642,21 +636,21 @@ windows64 + license + expat + license_file + LICENSES/expat.txt + copyright + Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper - Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. version 2.1.1.1f36d02 + name + expat + description + Expat is an XML parser library written in C fmodstudio - copyright - FMOD Studio by Firelight Technologies Pty Ltd. - description - FMOD Studio API - license - fmod - license_file - LICENSES/fmodstudio.txt - name - fmodstudio platforms darwin64 @@ -724,21 +718,21 @@ windows64 + license + fmod + license_file + LICENSES/fmodstudio.txt + copyright + FMOD Studio by Firelight Technologies Pty Ltd. version 2.02.13.578928 + name + fmodstudio + description + FMOD Studio API fontconfig - copyright - Copyright (C) 2000,2001,2002,2003,2004,2006,2007 Keith Packard, 2005 Patrick Lam, 2009 Roozbeh Pournader, 2008,2009 Red Hat, Inc., 2008 Danilo Šegan, 2012 Google, Inc. - description - Fontconfig is a library for configuring and customizing font access. - license - bsd - license_file - LICENSES/fontconfig.txt - name - fontconfig platforms linux64 @@ -754,21 +748,21 @@ linux64 + license + bsd + license_file + LICENSES/fontconfig.txt + copyright + Copyright (C) 2000,2001,2002,2003,2004,2006,2007 Keith Packard, 2005 Patrick Lam, 2009 Roozbeh Pournader, 2008,2009 Red Hat, Inc., 2008 Danilo Šegan, 2012 Google, Inc. version 2.11.0 + name + fontconfig + description + Fontconfig is a library for configuring and customizing font access. freetype - copyright - Copyright 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg. - description - Font rendering library - license - FreeType - license_file - LICENSES/freetype.txt - name - freetype platforms darwin64 @@ -828,21 +822,21 @@ windows64 + license + FreeType + license_file + LICENSES/freetype.txt + copyright + Copyright 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg. version 2.4.4.4f739fa + name + freetype + description + Font rendering library glext - copyright - Copyright (c) 2007-2010 The Khronos Group Inc. - description - glext headers define function prototypes and constants for OpenGL extensions - license - Copyright (c) 2007-2010 The Khronos Group Inc. - license_file - LICENSES/glext.txt - name - glext platforms common @@ -908,21 +902,21 @@ windows64 + license + Copyright (c) 2007-2010 The Khronos Group Inc. + license_file + LICENSES/glext.txt + copyright + Copyright (c) 2007-2010 The Khronos Group Inc. version 68 + name + glext + description + glext headers define function prototypes and constants for OpenGL extensions glh_linear - copyright - Copyright (c) 2000 Cass Everitt - description - glh - is a platform-indepenedent C++ OpenGL helper library - license - BSD - license_file - LICENSES/glh-linear.txt - name - glh_linear platforms common @@ -940,21 +934,21 @@ common + license + BSD + license_file + LICENSES/glh-linear.txt + copyright + Copyright (c) 2000 Cass Everitt version None + name + glh_linear + description + glh - is a platform-indepenedent C++ OpenGL helper library googlemock - copyright - Copyright 2008, Google Inc. - description - a library for writing and using C++ mock classes - license - BSD - license_file - LICENSES/gmock.txt - name - googlemock platforms darwin64 @@ -1012,19 +1006,21 @@ windows64 + license + BSD + license_file + LICENSES/gmock.txt + copyright + Copyright 2008, Google Inc. version 1.7.0.77bba00 + name + googlemock + description + a library for writing and using C++ mock classes gstreamer - copyright - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - license - LGPL - license_file - LICENSES/gstreamer.txt - name - gstreamer platforms linux64 @@ -1040,19 +1036,19 @@ linux64 + license + LGPL + license_file + LICENSES/gstreamer.txt + copyright + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> version 0.10.6.314267 + name + gstreamer gtk-atk-pango-glib - copyright - Copyright (various, see sources) - license - lgpl - license_file - LICENSES/gtk-atk-pango-glib.txt - name - gtk-atk-pango-glib platforms linux64 @@ -1068,21 +1064,19 @@ linux64 + license + lgpl + license_file + LICENSES/gtk-atk-pango-glib.txt + copyright + Copyright (various, see sources) version 0.1 + name + gtk-atk-pango-glib havok-source - copyright - Uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details. - description - Havok source code for libs and demos - license - havok - license_file - LICENSES/havok.txt - name - havok-source platforms darwin64 @@ -1146,19 +1140,21 @@ windows64 + license + havok + license_file + LICENSES/havok.txt + copyright + Uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details. version 2012.1-2 + name + havok-source + description + Havok source code for libs and demos jpegencoderbasic - copyright - Andreas Ritter, www.bytestrom.eu, 11/2009 - license - NONE - license_file - LICENSES/JPEG_ENCODER_BASIC_LICENSE.txt - name - jpegencoderbasic platforms darwin64 @@ -1216,21 +1212,19 @@ windows64 + license + NONE + license_file + LICENSES/JPEG_ENCODER_BASIC_LICENSE.txt + copyright + Andreas Ritter, www.bytestrom.eu, 11/2009 version 1.0 + name + jpegencoderbasic jpeglib - copyright - Copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding. - description - JPEG encoding, decoding library - license - jpeglib - license_file - LICENSES/jpeglib.txt - name - jpeglib platforms darwin64 @@ -1290,21 +1284,21 @@ windows64 + license + jpeglib + license_file + LICENSES/jpeglib.txt + copyright + Copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding. version 8c.7846234 + name + jpeglib + description + JPEG encoding, decoding library jsoncpp - copyright - Copyright (c) 2007-2010 Baptiste Lepilleur - description - jsoncpp is an implementation of a JSON (http://json.org) reader and writer in C++. - license - public domain - license_file - LICENSES/jsoncpp.txt - name - jsoncpp platforms darwin64 @@ -1364,21 +1358,21 @@ windows64 + license + public domain + license_file + LICENSES/jsoncpp.txt + copyright + Copyright (c) 2007-2010 Baptiste Lepilleur version 0.5.0.bc46e62 + name + jsoncpp + description + jsoncpp is an implementation of a JSON (http://json.org) reader and writer in C++. kdu - copyright - Kakadu software - description - JPEG2000 library by Kakadu - license - Kakadu - license_file - LICENSES/kdu.txt - name - kdu platforms darwin64 @@ -1446,21 +1440,21 @@ windows64 + license + Kakadu + license_file + LICENSES/kdu.txt + copyright + Kakadu software version 7.10.4.539108 + name + kdu + description + JPEG2000 library by Kakadu libhunspell - copyright - See hunspell.txt - description - Spell checking library - license - LGPL - license_file - LICENSES/hunspell.txt - name - libhunspell platforms darwin64 @@ -1520,21 +1514,21 @@ windows64 + license + LGPL + license_file + LICENSES/hunspell.txt + copyright + See hunspell.txt version 1.3.2.650fb94 + name + libhunspell + description + Spell checking library libndofdev - copyright - Copyright (c) 2007, 3Dconnexion, Inc. - All rights reserved. - description - 3DConnexion SDK - license - BSD - license_file - LICENSES/libndofdev.txt - name - libndofdev platforms darwin64 @@ -1580,21 +1574,21 @@ windows64 + license + BSD + license_file + LICENSES/libndofdev.txt + copyright + Copyright (c) 2007, 3Dconnexion, Inc. - All rights reserved. version 0.1.8e9edc7 + name + libndofdev + description + 3DConnexion SDK libpng - copyright - Copyright (c) 2004, 2006-2013 Glenn Randers-Pehrson - description - PNG Reference library - license - libpng - license_file - LICENSES/libpng.txt - name - libpng platforms darwin64 @@ -1652,21 +1646,21 @@ windows64 + license + libpng + license_file + LICENSES/libpng.txt + copyright + Copyright (c) 2004, 2006-2013 Glenn Randers-Pehrson version 1.6.38-ca06e99 + name + libpng + description + PNG Reference library libuuid - copyright - Copyright (c) 2004-2008 The OSSP Project <http://www.ossp.org/> - description - OSSP uuid is a ISO-C:1999 application programming interface (API) and corresponding command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and RFC 4122 compliant Universally Unique Identifier (UUID). - license - UUID - license_file - LICENSES/uuid.txt - name - libuuid platforms linux64 @@ -1682,21 +1676,21 @@ linux64 + license + UUID + license_file + LICENSES/uuid.txt + copyright + Copyright (c) 2004-2008 The OSSP Project <http://www.ossp.org/> version 1.6.2 + name + libuuid + description + OSSP uuid is a ISO-C:1999 application programming interface (API) and corresponding command line interface (CLI) for the generation of DCE 1.1, ISO/IEC 11578:1996 and RFC 4122 compliant Universally Unique Identifier (UUID). libxml2 - copyright - Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. - description - Libxml2 is the XML C parser and toolkit developed for the Gnome project. - license - mit - license_file - LICENSES/libxml2.txt - name - libxml2 platforms darwin64 @@ -1756,21 +1750,21 @@ windows64 + license + mit + license_file + LICENSES/libxml2.txt + copyright + Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. version 2.9.4.7476681 + name + libxml2 + description + Libxml2 is the XML C parser and toolkit developed for the Gnome project. llappearance_utility - copyright - Copyright (c) 2000-2012, Linden Research, Inc. - description - Linden Lab appearance utility for server-side avatar baking services. - license - Proprietary - license_file - LICENSES/llappearanceutility.txt - name - llappearance_utility platforms linux @@ -1786,20 +1780,21 @@ linux + license + Proprietary + license_file + LICENSES/llappearanceutility.txt + copyright + Copyright (c) 2000-2012, Linden Research, Inc. version 0.0.1 + name + llappearance_utility + description + Linden Lab appearance utility for server-side avatar baking services. llca - copyright - Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. - - license - mit - license_file - LICENSES/ca-license.txt - name - llca platforms common @@ -1817,19 +1812,20 @@ common + license + mit + license_file + LICENSES/ca-license.txt + copyright + Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. + version 202305160024.0 + name + llca llphysicsextensions_source - copyright - Copyright (c) 2010, Linden Research, Inc. - license - internal - license_file - LICENSES/llphysicsextensions.txt - name - llphysicsextensions_source platforms darwin64 @@ -1897,19 +1893,19 @@ windows64 - version - 1.0.565768 - - llphysicsextensions_stub - - copyright - Copyright (c) 2010, Linden Research, Inc. license internal license_file LICENSES/llphysicsextensions.txt + copyright + Copyright (c) 2010, Linden Research, Inc. + version + 1.0.565768 name - llphysicsextensions_stub + llphysicsextensions_source + + llphysicsextensions_stub + platforms darwin64 @@ -1949,19 +1945,19 @@ windows + license + internal + license_file + LICENSES/llphysicsextensions.txt + copyright + Copyright (c) 2010, Linden Research, Inc. version 1.0.542456 + name + llphysicsextensions_stub llphysicsextensions_tpv - copyright - Copyright (c) 2010, Linden Research, Inc. - license - internal - license_file - LICENSES/HavokSublicense.pdf - name - llphysicsextensions_tpv platforms darwin64 @@ -2013,17 +2009,19 @@ windows + license + internal + license_file + LICENSES/HavokSublicense.pdf + copyright + Copyright (c) 2010, Linden Research, Inc. version 1.0.561752 + name + llphysicsextensions_tpv mesa - license - mesa - license_file - LICENSES/mesa.txt - name - mesa platforms linux @@ -2039,23 +2037,17 @@ linux + license + mesa + license_file + LICENSES/mesa.txt version 7.11.1.297294 + name + mesa meshoptimizer - canonical_repo - https://bitbucket.org/lindenlab/3p-meshoptimizer - copyright - Copyright (c) 2016-2021 Arseny Kapoulkine - description - Meshoptimizer. Mesh optimization library. - license - meshoptimizer - license_file - LICENSES/meshoptimizer.txt - name - meshoptimizer platforms darwin64 @@ -2101,23 +2093,23 @@ windows64 + license + meshoptimizer + license_file + LICENSES/meshoptimizer.txt + copyright + Copyright (c) 2016-2021 Arseny Kapoulkine version 160 + name + meshoptimizer + canonical_repo + https://bitbucket.org/lindenlab/3p-meshoptimizer + description + Meshoptimizer. Mesh optimization library. minizip-ng - canonical_repo - https://bitbucket.org/lindenlab/3p-minizip-ng - copyright - This project uses the zlib license. Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - description - minizip-ng is a zip manipulation library. Based on work of Gilles Vollant. - license - minizip-ng - license_file - LICENSES/minizip-ng.txt - name - minizip-ng platforms darwin64 @@ -2177,22 +2169,23 @@ windows64 + license + minizip-ng + license_file + LICENSES/minizip-ng.txt + copyright + This project uses the zlib license. Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler version 3.0.2.3e9876e + name + minizip-ng + canonical_repo + https://bitbucket.org/lindenlab/3p-minizip-ng + description + minizip-ng is a zip manipulation library. Based on work of Gilles Vollant. nghttp2 - copyright - Copyright (c) 2012, 2014, 2015, 2016 Tatsuhiro Tsujikawa -Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors - description - Library providing HTTP 2 support for libcurl - license - MIT - license_file - LICENSES/nghttp2.txt - name - nghttp2 platforms darwin64 @@ -2252,23 +2245,24 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 - source_type - hg + license + MIT + license_file + LICENSES/nghttp2.txt + copyright + Copyright (c) 2012, 2014, 2015, 2016 Tatsuhiro Tsujikawa +Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors version 1.40.0.b1526c6 + name + nghttp2 + description + Library providing HTTP 2 support for libcurl + source_type + hg nvapi - copyright - Copyright © 2012 NVIDIA Corporation. All rights reserved. - description - NVAPI provides an interface to NVIDIA devices. - license - NVIDIA Corporation Software License Agreement – NVAPI SDK - license_file - LICENSES/NVAPI_SDK_License_Agreement.pdf - name - nvapi platforms windows @@ -2300,21 +2294,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + NVIDIA Corporation Software License Agreement – NVAPI SDK + license_file + LICENSES/NVAPI_SDK_License_Agreement.pdf + copyright + Copyright © 2012 NVIDIA Corporation. All rights reserved. version 352.aac0e19 + name + nvapi + description + NVAPI provides an interface to NVIDIA devices. ogg_vorbis - copyright - Copyright (c) 2002, Xiph.org Foundation - description - Audio encoding library - license - ogg-vorbis - license_file - LICENSES/ogg-vorbis.txt - name - ogg_vorbis platforms darwin64 @@ -2372,36 +2366,36 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 - version - 1.3.3-1.3.6.e4101b6 + license + ogg-vorbis + license_file + LICENSES/ogg-vorbis.txt + copyright + Copyright (c) 2002, Xiph.org Foundation + version + 1.3.3-1.3.6.e4101b6 + name + ogg_vorbis + description + Audio encoding library open-libndofdev - copyright - Copyright (c) 2008, Jan Ciger (jan.ciger (at) gmail.com) - description - Open Source replacement for 3DConnection SDK license BSD license_file LICENSES/libndofdev.txt - name - open-libndofdev + copyright + Copyright (c) 2008, Jan Ciger (jan.ciger (at) gmail.com) version 0.3 + name + open-libndofdev + description + Open Source replacement for 3DConnection SDK openal - copyright - Creative Labs - description - OpenAL is a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications. - license - lgpl - license_file - LICENSES/openal.txt - name - openal platforms linux64 @@ -2443,21 +2437,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + lgpl + license_file + LICENSES/openal.txt + copyright + Creative Labs version 1.12.854-1.1.0.314223 + name + openal + description + OpenAL is a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications. openjpeg - copyright - Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium; Copyright (c) 2002-2007, Professor Benoit Macq; Copyright (c) 2001-2003, David Janssens; Copyright (c) 2002-2003, Yannick Verschueren; Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe; Copyright (c) 2005, Herve Drolon, FreeImage Team; Copyright (c) 2006-2007, Parvatha Elangovan; Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>; Copyright (c) 2010-2011, Kaori Hagihara; Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France; Copyright (c) 2012, CS Systemes d'Information, France; - description - The OpenJPEG library is an open-source JPEG 2000 codec written in C language. - license - BSD - license_file - LICENSES/openjpeg.txt - name - openjpeg platforms darwin64 @@ -2517,21 +2511,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + BSD + license_file + LICENSES/openjpeg.txt + copyright + Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium; Copyright (c) 2002-2007, Professor Benoit Macq; Copyright (c) 2001-2003, David Janssens; Copyright (c) 2002-2003, Yannick Verschueren; Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe; Copyright (c) 2005, Herve Drolon, FreeImage Team; Copyright (c) 2006-2007, Parvatha Elangovan; Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>; Copyright (c) 2010-2011, Kaori Hagihara; Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France; Copyright (c) 2012, CS Systemes d'Information, France; version 2.5.0.ea12248 + name + openjpeg + description + The OpenJPEG library is an open-source JPEG 2000 codec written in C language. openssl - copyright - Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved; Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - description - Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) Library - license - openssl - license_file - LICENSES/openssl.txt - name - openssl platforms darwin64 @@ -2591,21 +2585,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + openssl + license_file + LICENSES/openssl.txt + copyright + Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved; Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) version 1.1.1q.de53f55 + name + openssl + description + Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) Library pcre - copyright - Copyright (c) 1997-2014 University of Cambridge; Copyright(c) 2009-2014 Zoltan Herczeg; Copyright (c) 2007-2012, Google Inc. - description - PCRE Perl-compatible regular expression library - license - bsd - license_file - LICENSES/pcre-license.txt - name - pcre platforms darwin64 @@ -2663,21 +2657,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + bsd + license_file + LICENSES/pcre-license.txt + copyright + Copyright (c) 1997-2014 University of Cambridge; Copyright(c) 2009-2014 Zoltan Herczeg; Copyright (c) 2007-2012, Google Inc. version 8.35.979fd86 + name + pcre + description + PCRE Perl-compatible regular expression library slvoice - copyright - 2010 Vivox, including audio coding using Polycom¨ Siren14TM (ITU-T Rec. G.722.1 Annex C) - description - Vivox SDK components - license - Mixed - license_file - LICENSES/vivox_licenses.txt - name - slvoice platforms darwin64 @@ -2741,19 +2735,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + Mixed + license_file + LICENSES/vivox_licenses.txt + copyright + 2010 Vivox, including audio coding using Polycom¨ Siren14TM (ITU-T Rec. G.722.1 Annex C) version 4.10.0000.32327.5fc3fe7c.571099 + name + slvoice + description + Vivox SDK components threejs - copyright - Copyright © 2010-2021 three.js authors - license - MIT - license_file - LICENSES/THREEJS_LICENSE.txt - name - threejs platforms darwin64 @@ -2811,23 +2807,19 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + MIT + license_file + LICENSES/THREEJS_LICENSE.txt + copyright + Copyright © 2010-2021 three.js authors version 0.132.2 + name + threejs tracy - canonical_repo - https://bitbucket.org/lindenlab/3p-tracy - copyright - Copyright (c) 2017-2021, Bartosz Taudul (wolf@nereid.pl) - description - Tracy Profiler Library - license - bsd - license_file - LICENSES/tracy_license.txt - name - tracy platforms darwin64 @@ -2871,25 +2863,27 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + bsd + license_file + LICENSES/tracy_license.txt + copyright + Copyright (c) 2017-2021, Bartosz Taudul (wolf@nereid.pl) + version + v0.7.8.563351 + name + tracy + canonical_repo + https://bitbucket.org/lindenlab/3p-tracy + description + Tracy Profiler Library source https://bitbucket.org/lindenlab/3p-tracy source_type git - version - v0.7.8.563351 tut - copyright - Copyright 2002-2006 Vladimir Dyuzhev, Copyright 2007 Denis Kononenko, Copyright 2008-2009 Michał Rzechonek - description - TUT is a small and portable unit test framework for C++. - license - bsd - license_file - LICENSES/tut.txt - name - tut platforms common @@ -2907,21 +2901,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors common + license + bsd + license_file + LICENSES/tut.txt + copyright + Copyright 2002-2006 Vladimir Dyuzhev, Copyright 2007 Denis Kononenko, Copyright 2008-2009 Michał Rzechonek version 2008.11.30 + name + tut + description + TUT is a small and portable unit test framework for C++. uriparser - copyright - Copyright (C) 2007, Weijia Song <songweijia@gmail.com>, Sebastian Pipping <webmaster@hartwork.org> - description - uriparser is a strictly RFC 3986 compliant URI parsing and handling library written in C. uriparser is cross-platform, fast, supports Unicode and is licensed under the New BSD license. - license - New BSD license - license_file - LICENSES/uriparser.txt - name - uriparser platforms darwin64 @@ -2981,21 +2975,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + New BSD license + license_file + LICENSES/uriparser.txt + copyright + Copyright (C) 2007, Weijia Song <songweijia@gmail.com>, Sebastian Pipping <webmaster@hartwork.org> version 0.9.4 + name + uriparser + description + uriparser is a strictly RFC 3986 compliant URI parsing and handling library written in C. uriparser is cross-platform, fast, supports Unicode and is licensed under the New BSD license. viewer-manager - copyright - Copyright (c) 2000-2012, Linden Research, Inc. - description - Linden Lab Viewer Management Process suite. - license - viewerlgpl - license_file - LICENSE - name - viewer-manager platforms darwin64 @@ -3053,23 +3047,25 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + viewerlgpl + license_file + LICENSE + copyright + Copyright (c) 2000-2012, Linden Research, Inc. + version + 3.0.cc7ea1e + name + viewer-manager + description + Linden Lab Viewer Management Process suite. source https://bitbucket.org/lindenlab/vmp-standalone source_type hg - version - 3.0.cc7ea1e vlc-bin - copyright - Copyright (C) 1998-2016 VLC authors and VideoLAN - license - GPL2 - license_file - LICENSES/vlc.txt - name - vlc-bin platforms darwin64 @@ -3115,21 +3111,19 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + GPL2 + license_file + LICENSES/vlc.txt + copyright + Copyright (C) 1998-2016 VLC authors and VideoLAN version 3.0.16.c219a5d + name + vlc-bin xmlrpc-epi - copyright - Copyright: (C) 2000 Epinions, Inc. - description - XMLRPC Library - license - xmlrpc-epi - license_file - LICENSES/xmlrpc-epi.txt - name - xmlrpc-epi platforms darwin64 @@ -3189,21 +3183,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + xmlrpc-epi + license_file + LICENSES/xmlrpc-epi.txt + copyright + Copyright: (C) 2000 Epinions, Inc. version 0.54.1.8a05acf + name + xmlrpc-epi + description + XMLRPC Library xxhash - copyright - Copyright (c) 2012-2021 Yann Collet - description - xxHash Library - license - xxhash - license_file - LICENSES/xxhash.txt - name - xxhash platforms common @@ -3275,23 +3269,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + xxhash + license_file + LICENSES/xxhash.txt + copyright + Copyright (c) 2012-2021 Yann Collet version 0.8.1.7501c90 + name + xxhash + description + xxHash Library zlib-ng - canonical_repo - https://bitbucket.org/lindenlab/3p-zlib-ng - copyright - Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler - description - zlib data compression library for the next generation systems - license - zlib-ng - license_file - LICENSES/zlib-ng.txt - name - zlib-ng platforms darwin64 @@ -3351,24 +3343,24 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors windows64 + license + zlib-ng + license_file + LICENSES/zlib-ng.txt + copyright + Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler version 1.2.11.zlib-ng.32fd361 + name + zlib-ng + canonical_repo + https://bitbucket.org/lindenlab/3p-zlib-ng + description + zlib data compression library for the next generation systems package_description - canonical_repo - https://github.com/secondlife/viewer - copyright - Copyright (c) 2020, Linden Research, Inc. - description - Second Life Viewer - license - LGPL - license_file - docs/LICENSE-source.txt - name - Second Life Viewer platforms common @@ -3377,9 +3369,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors RelWithDebInfo - build - - configure command @@ -3390,7 +3379,10 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=TRUE - + + + build + name RelWithDebInfo @@ -3399,10 +3391,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors configure - arguments - - ../indra - command cmake options @@ -3411,16 +3399,17 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=FALSE - + + arguments + + ../indra + name RelWithDebInfoOS Release - build - - configure command @@ -3431,7 +3420,10 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=TRUE - + + + build + name Release @@ -3440,10 +3432,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors configure - arguments - - ../indra - command cmake options @@ -3452,7 +3440,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -DADDRESS_SIZE:STRING=$AUTOBUILD_ADDRSIZE -DROOT_PROJECT_NAME:STRING=SecondLife -DINSTALL_PROPRIETARY=FALSE - + + arguments + + ../indra + name ReleaseOS @@ -3463,12 +3455,22 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors darwin64 - build_directory - build-darwin-x86_64 configurations RelWithDebInfo + configure + + options + + -G + Xcode + + arguments + + ../indra + + build command @@ -3479,19 +3481,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors RelWithDebInfo -project SecondLife.xcodeproj - - - configure - - arguments - - ../indra - - options - - -G - Xcode - + default True @@ -3500,6 +3490,14 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors RelWithDebInfoOS + configure + + options + + -G + Xcode + + build command @@ -3510,21 +3508,25 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors RelWithDebInfo -project SecondLife.xcodeproj - + + name + RelWithDebInfoOS + + Release + configure options -G Xcode - + + arguments + + ../indra + - name - RelWithDebInfoOS - - Release - build command @@ -3535,25 +3537,21 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Release -project SecondLife.xcodeproj - + + name + Release + + ReleaseOS + configure - arguments - - ../indra - options -G Xcode - + - name - Release - - ReleaseOS - build command @@ -3564,48 +3562,40 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Release -project SecondLife.xcodeproj - - - configure - - options - - -G - Xcode - + name ReleaseOS + build_directory + build-darwin-x86_64 name darwin64 linux64 - build_directory - build-linux-x86_64 configurations Release - build - - command - ninja - configure - arguments - - ../indra - options -G Ninja -DLL_TESTS=Off - + + arguments + + ../indra + + + build + + command + ninja default True @@ -3614,11 +3604,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors ReleaseOS - build - - command - ninja - configure options @@ -3626,7 +3611,12 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors -G Ninja -DLL_TESTS=Off - + + + build + + command + ninja name ReleaseOS @@ -3640,44 +3630,44 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors default + build_directory + build-linux-x86_64 name linux64 windows - build_directory - build-vc${AUTOBUILD_VSVER|170}-$AUTOBUILD_ADDRSIZE configurations RelWithDebInfo - build + configure + options + + -G + ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} + -A + ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + arguments - SecondLife.sln - + ..\indra + + + build + command devenv options /build RelWithDebInfo|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - - - configure - + arguments - ..\indra - - options - - -G - ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} - -A - ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + SecondLife.sln + default True @@ -3686,12 +3676,25 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors RelWithDebInfoOS - build + configure + options + + -G + ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} + -A + ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} + -DINSTALL_PROPRIETARY=FALSE + -DUSE_KDU=FALSE + -DUSE_OPENAL:BOOL=ON + arguments - SecondLife.sln - + ..\indra + + + build + command msbuild.exe options @@ -3702,69 +3705,70 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental - + + arguments + + SecondLife.sln + + name + RelWithDebInfoOS + + Release + configure - arguments - - ..\indra - options -G ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - -DINSTALL_PROPRIETARY=FALSE - -DUSE_KDU=FALSE - -DUSE_OPENAL:BOOL=ON - + + arguments + + ..\indra + - name - RelWithDebInfoOS - - Release - build - arguments - - SecondLife.sln - command devenv options /build Release|${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + + arguments + + SecondLife.sln + + name + Release + + ReleaseOS + configure - arguments - - ..\indra - options -G ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} -A ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - + -DUNATTENDED:BOOL=ON + -DINSTALL_PROPRIETARY=FALSE + -DUSE_KDU=FALSE + -DUSE_OPENAL:BOOL=ON + + arguments + + ..\indra + - name - Release - - ReleaseOS - build - arguments - - SecondLife.sln - command msbuild.exe options @@ -3775,40 +3779,36 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors /p:useenv=true /verbosity:minimal /p:VCBuildAdditionalOptions= /incremental - - - configure - + arguments - ..\indra - - options - - -G - ${AUTOBUILD_WIN_CMAKE_GEN|NOTWIN} - -A - ${AUTOBUILD_WIN_VSPLATFORM|NOTWIN} - -DUNATTENDED:BOOL=ON - -DINSTALL_PROPRIETARY=FALSE - -DUSE_KDU=FALSE - -DUSE_OPENAL:BOOL=ON - + SecondLife.sln + name ReleaseOS + build_directory + build-vc${AUTOBUILD_VSVER|170}-$AUTOBUILD_ADDRSIZE name windows + license + LGPL + license_file + docs/LICENSE-source.txt + copyright + Copyright (c) 2020, Linden Research, Inc. version_file newview/viewer_version.txt + name + Second Life Viewer + canonical_repo + https://github.com/secondlife/viewer + description + Second Life Viewer - type - autobuild - version - 1.3 - + \ No newline at end of file -- cgit v1.2.3 From 909371d0804fbfd74de2d4d088b7c7f17a9cfadd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 6 Oct 2023 11:52:42 -0400 Subject: SL-18837: Remove 32-bit Windows package entries. glext, which contains only header files, now builds only a single common package instead of platform-specific ones. But as long as we retain the platform-specific URLs, autobuild will continue to prefer those over the common platform. Remove all platform-specific glext package entries. --- autobuild.xml | 622 +--------------------------------------------------------- 1 file changed, 4 insertions(+), 618 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index c9b077dc27..1d7d623b71 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -67,20 +67,6 @@ name linux64 - windows - - archive - - hash - abb48e031b4bbab5fa48d2872ef2db065f33d8ac - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-apr_suite/releases/download/v1.7.2-e935465/apr_suite-1.7.2-e935465-windows-e935465.tar.zst - - name - windows - windows64 archive @@ -139,20 +125,6 @@ name linux64 - windows - - archive - - hash - 401f576f99e8a72850061c885072278e3e886434 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-boost/releases/download/v1.81-90bb2df/boost-1.81-windows-90bb2df.tar.zst - - name - windows - windows64 archive @@ -199,20 +171,6 @@ name darwin64 - windows - - archive - - hash - 21afe91b0f334685ca46bf043784145f9a85709f - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-bugsplat/releases/download/v1.0.7-527603a/bugsplat-4.0.3.0-527603a-windows-527603a.tar.zst - - name - windows - windows64 archive @@ -271,20 +229,6 @@ name linux64 - windows - - archive - - hash - 48f27593701c1a72bee1e0feef559eb8e209f26e - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-colladadom/releases/download/v2.3.d1ef72a/colladadom-2.3.d1ef72a-windows-d1ef72a.tar.zst - - name - windows - windows64 archive @@ -341,20 +285,6 @@ https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-linux64-d7afe27.tar.zst - windows - - archive - - hash - e53a8268474e0272f0252097873d52de7205351e - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-cubemap_to_eqr_js/releases/download/v1.1.0-d7afe27/cubemaptoequirectangular-1.1.0-windows-d7afe27.tar.zst - - name - windows - windows64 archive @@ -411,20 +341,6 @@ name linux64 - windows - - archive - - hash - a1ff1cea3b6171e4ed9f29249e72111866334615 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-curl/releases/download/v7.54.1-5a4a82d/curl-7.54.1-5a4a82d-windows-5a4a82d.tar.zst - - name - windows - windows64 archive @@ -533,20 +449,6 @@ name darwin64 - windows - - archive - - hash - f682df99c1acc5279a9161f2f13f446001e7871d - hash_algorithm - sha1 - url - https://github.com/secondlife/dullahan/releases/download/v1.13.0.202305180006_113.1.5_ge452d82_chromium-113.0.5672.93-1758b1b/dullahan-1.13.0.202305180125_113.1.5_ge452d82_chromium-113.0.5672.93-windows-1758b1b.tar.zst - - name - windows - windows64 archive @@ -607,20 +509,6 @@ name linux64 - windows - - archive - - hash - f663242ab6c7aa1601a96907202cfd04fee03720 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-expat/releases/download/v2.1.1.1f36d02/expat-2.1.1.1f36d02-windows-1f36d02.tar.zst - - name - windows - windows64 archive @@ -685,22 +573,6 @@ name linux64 - windows - - archive - - creds - github - hash - bbf3cfeb245ca73ce4fc6ac494c33b2071bfeb7b - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/3p-fmodstudio/releases/assets/108908454 - - name - windows - windows64 archive @@ -793,20 +665,6 @@ name linux64 - windows - - archive - - hash - bb3c4f11b1c9f14e271c5ab16ca1ae743f1e3493 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-freetype/releases/download/v2.4.4.4f739fa/freetype-2.4.4.4f739fa-windows-4f739fa.tar.zst - - name - windows - windows64 archive @@ -853,54 +711,6 @@ name common - darwin64 - - archive - - hash - 1bd3214ac23474ea4c869e386970a1be - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54835/510029/glext-68-darwin64-538965.tar.bz2 - - name - darwin64 - - linux64 - - archive - - hash - 5f3c9d61b620f949b199ebd8885218ed - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-glext/rev/314200/arch/Linux/installer/glext-68-linux64-314200.tar.bz2 - - name - linux64 - - windows - - archive - - hash - 6a311615bce59b01cf73ee65012a9b38 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54951/511711/glext-68-windows-538965.tar.bz2 - - name - windows - - windows64 - - archive - - hash - daf619dab1cf7518af6532b18800c4b0 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/54924/511490/glext-68-windows64-538965.tar.bz2 - - name - windows64 - license Copyright (c) 2007-2010 The Khronos Group Inc. @@ -977,20 +787,6 @@ name linux64 - windows - - archive - - hash - 588ceffc4e30ff699694a9f70b9de81994e2c19f - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-googlemock/releases/download/v1.7.0.77bba00/googlemock-1.7.0.77bba00-windows-77bba00.tar.zst - - name - windows - windows64 archive @@ -1107,22 +903,6 @@ name linux64 - windows - - archive - - creds - github - hash - a28190162382667985fa8d105ba62fd1effbf65a - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108912601 - - name - windows - windows64 archive @@ -1183,20 +963,6 @@ https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-linux64-9165e47.tar.zst - windows - - archive - - hash - 27a5ae2b7fb299685df499515b42342cab4d0973 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jpeg_encoder_js/releases/download/v1.0-9165e47/jpegencoderbasic-1.0-windows-9165e47.tar.zst - - name - windows - windows64 archive @@ -1255,20 +1021,6 @@ name linux64 - windows - - archive - - hash - 4a78122a6130d9f647a17b1dd488ebe8c98f8b82 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-windows-7846234.tar.zst - - name - windows - windows64 archive @@ -1329,20 +1081,6 @@ name linux64 - windows - - archive - - hash - 866fd5106369a58bdab8193914ff20cf6f0d96ae - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-jsoncpp/releases/download/v0.5.0.bc46e62/jsoncpp-0.5.0.bc46e62-windows-bc46e62.tar.zst - - name - windows - windows64 archive @@ -1407,22 +1145,6 @@ name linux64 - windows - - archive - - creds - github - hash - 3513764294c0c3e4fa669f57bb26454c91e79692 - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/3p-kdu/releases/assets/108298972 - - name - windows - windows64 archive @@ -1485,20 +1207,6 @@ name linux64 - windows - - archive - - hash - 305444c28da48c809ead766d99926309531b52b4 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-windows-650fb94.tar.zst - - name - windows - windows64 archive @@ -1545,20 +1253,6 @@ name darwin64 - windows - - archive - - hash - 1d8fce18cfd19af6c10fb5575beb95953d9dd12d - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-libndofdev/releases/download/v0.1.8e9edc7/libndofdev-0.1.8e9edc7-windows-8e9edc7.tar.zst - - name - windows - windows64 archive @@ -1610,26 +1304,12 @@ archive hash - 13de93ea11544051b69f238eeb644fd3 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/882/1946/libpng-1.6.8.500873-linux64-500873.tar.bz2 - - name - linux64 - - windows - - archive - - hash - c0c487d4dc8ed42b7e9834babb9697bdbf57c534 - hash_algorithm - sha1 + 13de93ea11544051b69f238eeb644fd3 url - https://github.com/secondlife/3p-libpng/releases/download/v1.6.38-ca06e99/libpng-1.6.38-ca06e99-windows-ca06e99.tar.zst + http://automated-builds-secondlife-com.s3.amazonaws.com/ct2/882/1946/libpng-1.6.8.500873-linux64-500873.tar.bz2 name - windows + linux64 windows64 @@ -1721,20 +1401,6 @@ name linux64 - windows - - archive - - hash - 7446cbaed41c26b67122c203c556161893b5b425 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-libxml2/releases/download/v2.9.4.7476681/libxml2-2.9.4.7476681-windows-7476681.tar.zst - - name - windows - windows64 archive @@ -1860,22 +1526,6 @@ name linux64 - windows - - archive - - creds - github - hash - 362126acd5348b20636ce7489dc9e6887a5a415d - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/llphysicsextensions_source/releases/assets/117009343 - - name - windows - windows64 archive @@ -1984,18 +1634,6 @@ name linux64 - windows - - archive - - hash - 60e399f707bca32d0a4f7ee33ac4c35b - url - https://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/84730/788138/llphysicsextensions_tpv-1.0.561752-windows-561752.tar.bz2 - - name - windows - windows64 archive @@ -2064,20 +1702,6 @@ name darwin64 - windows - - archive - - hash - 92af48f406d8f48b62005f319daad9c1751a6f5b - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-windows-032f20a.tar.zst - - name - windows - windows64 archive @@ -2140,20 +1764,6 @@ name linux64 - windows - - archive - - hash - ff191c1d6515234d8c671360215c52c5974988b1 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-minizip-ng/releases/download/v3.0.2.3e9876e/minizip_ng-3.0.2.3e9876e-windows-3e9876e.tar.zst - - name - windows - windows64 archive @@ -2216,20 +1826,6 @@ name linux64 - windows - - archive - - hash - ea16c2b825b69af75c3a64df9e3c24a9021026ca - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-nghttp2/releases/download/v1.40.0.b1526c6/nghttp2-1.40.0.b1526c6-windows-b1526c6.tar.zst - - name - windows - windows64 archive @@ -2265,20 +1861,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors platforms - windows - - archive - - hash - 0a4752a250abd3df3c92ea4205c93598f88a1ecf - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-nvapi/releases/download/v352.aac0e19/nvapi-352.aac0e19-windows-aac0e19.tar.zst - - name - windows - windows64 archive @@ -2337,20 +1919,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - 9fc1cc518c17929cb66d9b07f92b2751fda80371 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-ogg_vorbis/releases/download/v1.3.3-1.3.6.e4101b6/ogg_vorbis-1.3.3-1.3.6.e4101b6-windows-e4101b6.tar.zst - - name - windows - windows64 archive @@ -2410,20 +1978,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - d9c86f79a6bb56a670e2801c33fd2dd1 - hash_algorithm - md5 - url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/CYGWIN/installer/openal-1.12.854-1.1.0.314223-windows-314223.tar.bz2 - - name - windows - windows64 archive @@ -2482,20 +2036,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - f16bd2fe43901e510b53e57396b308f659443547 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-openjpeg/releases/download/v2.5.0.ea12248/openjpeg-2.5.0.ea12248-windows-ea12248.tar.zst - - name - windows - windows64 archive @@ -2556,20 +2096,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - dbf2f69a7d73821dbe12288097298924e866e606 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-openssl/releases/download/v1.1.1q.de53f55/openssl-1.1.1q.de53f55-windows-de53f55.tar.zst - - name - windows - windows64 archive @@ -2628,20 +2154,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - 5e93602abcd5130c21a6d554dc088390326e68e7 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-windows-979fd86.tar.zst - - name - windows - windows64 archive @@ -2702,22 +2214,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - creds - github - hash - 3a3dedc5ac1c19c6af40673908a3cc0c1f75c52c - hash_algorithm - sha1 - url - https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299354 - - name - windows - windows64 archive @@ -2778,20 +2274,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-linux64-b8f6746.tar.zst - windows - - archive - - hash - 31bd892de74f171644ea67ac57e0391d2c7081b1 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows-b8f6746.tar.zst - - name - windows - windows64 archive @@ -2834,20 +2316,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name darwin64 - windows - - archive - - hash - 47c696cd2966c5cc3c8ba6115dd1f886 - hash_algorithm - md5 - url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/86973/801641/tracy-v0.7.8.563351-windows-563351.tar.bz2 - - name - windows - windows64 archive @@ -2946,20 +2414,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - c07e234e5fbf1f92167ea5dd296a0fc7feb67199 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-uriparser/releases/download/v0.9.4-8fff38a/uriparser-0.9.4-windows-8fff38a.tar.zst - - name - windows - windows64 archive @@ -3020,18 +2474,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - 647e86470e02509b1cf89829d08dfd46 - url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/116623/1003293/viewer_manager-3.0.580913-windows-580913.tar.bz2 - - name - windows - windows64 archive @@ -3082,20 +2524,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name darwin64 - windows - - archive - - hash - 712f25fe4780a089193fc4f23ed7dc9340d72994 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-vlc-bin/releases/download/v3.0.16.c219a5d/vlc_bin-3.0.16.c219a5d-windows-c219a5d.tar.zst - - name - windows - windows64 archive @@ -3154,20 +2582,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - db122f53b03334d4f192ee7a5f12899ba4658003 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-xmlrpc-epi/releases/download/v0.54.1.8a05acf/xmlrpc_epi-0.54.1.8a05acf-windows-8a05acf.tar.zst - - name - windows - windows64 archive @@ -3240,20 +2654,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - 8ac856ef69a7395c3b70c3fcc1edb7f3f4194f92 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-xxhash/releases/download/v0.8.1.7501c90/xxhash-0.8.1.7501c90-windows-7501c90.tar.zst - - name - windows - windows64 archive @@ -3314,20 +2714,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors name linux64 - windows - - archive - - hash - 2b5a50b0a3d31a07bc74cb77871ad195eb97c550 - hash_algorithm - sha1 - url - https://github.com/secondlife/3p-zlib-ng/releases/download/v1.2.11.zlib-ng.32fd361/zlib_ng-1.2.11.zlib-ng.32fd361-windows-32fd361.tar.zst - - name - windows - windows64 archive @@ -3811,4 +3197,4 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Second Life Viewer - \ No newline at end of file + -- cgit v1.2.3 From 6d3fa5f13fe387cba498b5f833ffa560f7d86272 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 6 Oct 2023 12:25:13 -0400 Subject: SL-18837: Update Tracy to 0.8.1-235e98f --- autobuild.xml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 1d7d623b71..5233488733 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -2309,9 +2309,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - da7317e4a81609f624f84780f28b07de + b84ccb1606b3fc5b216d0123a23a4922e02b6bd8 + hash_algorithm + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/86972/801630/tracy-v0.7.8.563351-darwin64-563351.tar.bz2 + https://github.com/secondlife/3p-tracy/releases/download/v0.8.1-235e98f/tracy-v0.8.1.235e98f-darwin64-235e98f.tar.zst name darwin64 @@ -2321,11 +2323,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - b649ee6591e67d2341e886b3fc3484a7 + 54f126b85f179362cf0b6024e3cd621b53d68703 hash_algorithm - md5 + sha1 url - https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/86974/801642/tracy-v0.7.8.563351-windows64-563351.tar.bz2 + https://github.com/secondlife/3p-tracy/releases/download/v0.8.1-235e98f/tracy-v0.8.1.235e98f-windows64-235e98f.tar.zst name windows64 @@ -2336,9 +2338,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors license_file LICENSES/tracy_license.txt copyright - Copyright (c) 2017-2021, Bartosz Taudul (wolf@nereid.pl) + Copyright (c) 2017-2022, Bartosz Taudul (wolf@nereid.pl) version - v0.7.8.563351 + v0.8.1.235e98f name tracy canonical_repo @@ -3197,4 +3199,4 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Second Life Viewer - + \ No newline at end of file -- cgit v1.2.3 From 787ca67b5f2daf2ebbf880a51b74273e99539ca3 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 12 Oct 2023 11:32:25 -0400 Subject: SL-18837: Update llca to v202310121525.0-d22bd98 --- autobuild.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 5233488733..cae94df012 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1468,11 +1468,11 @@ archive hash - 3a45d167f60ed26dc1f8467b93ec64676cc7fe34 + e50ea94bbaa4ff41bf53b84b7192df1a694c5337 hash_algorithm sha1 url - https://github.com/secondlife/llca/releases/download/v202305121625.0-efdf149/llca-202305160024.0-common-efdf149.tar.zst + https://github.com/secondlife/llca/releases/download/v202310121525.0-d22bd98/llca-202310121530.0-common-d22bd98.tar.zst name common @@ -1486,7 +1486,7 @@ Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. version - 202305160024.0 + 202310121530.0 name llca -- cgit v1.2.3 From be5a6e617971e3a786319ca92f2524fd6acc46da Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 12 Oct 2023 13:32:50 -0400 Subject: SL-18837: Update openal to v1.23.1-18e315c --- autobuild.xml | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index cae94df012..38f4a8c256 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -1971,9 +1971,11 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 7530fab3979312da75a903d87b73e3a9 + e0fbc4874acc4167a6e2b6489fbb8258d98fd665 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/Linux/installer/openal-1.12.854-1.1.0.314223-linux64-314223.tar.bz2 + https://github.com/secondlife/3p-openal-soft/releases/download/v1.23.1-18e315c/openal-1.23.1-linux64-18e315c.tar.zst name linux64 @@ -1983,26 +1985,42 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - e0fdd9394a8cd8c6360b922f6f237e57 + 6ae3b5310eb1988741bc55416681ca9d64f76f85 + hash_algorithm + sha1 url - http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/p64_3p-openal/rev/314223/arch/CYGWIN/installer/openal-1.12.854-1.1.0.314223-windows64-314223.tar.bz2 + https://github.com/secondlife/3p-openal-soft/releases/download/v1.23.1-18e315c/openal-1.23.1-windows64-18e315c.tar.zst name windows64 + darwin64 + + archive + + hash + 4edaef5f03a1122eae8467c4a04d9caccaaaf847 + hash_algorithm + sha1 + url + https://github.com/secondlife/3p-openal-soft/releases/download/v1.23.1-18e315c/openal-1.23.1-darwin64-18e315c.tar.zst + + name + darwin64 + license - lgpl + LGPL2 license_file - LICENSES/openal.txt + LICENSES/openal-soft.txt copyright - Creative Labs + Copyright (C) 1999-2007 by authors. version - 1.12.854-1.1.0.314223 + 1.23.1 name openal description - OpenAL is a cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications. + OpenAL Soft is a software implementation of the OpenAL 3D audio API. openjpeg -- cgit v1.2.3 From f5a34fd074bda091732a8ae0a4cf6f4e0358a140 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 12 Oct 2023 16:55:04 -0400 Subject: SL-18837: Unify all llrand_test.cpp in-range tests. The header file documents that no llrand function should ever return a value equal to the passed extent, so the one test in llrand_test.cpp that checked less than or equal to the high end of the range was anomalous. But changing that to an exclusive range means that we no longer need separate exclusive range and inclusive range functions. Replace ensure_in_range_using(), ensure_in_exc_range() and ensure_in_inc_range() with a grand unified (simplified) ensure_in_range() function. --- indra/llcommon/tests/llrand_test.cpp | 43 +++++++++++++++--------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/indra/llcommon/tests/llrand_test.cpp b/indra/llcommon/tests/llrand_test.cpp index c8e2d19372..ac5a33d0ba 100644 --- a/indra/llcommon/tests/llrand_test.cpp +++ b/indra/llcommon/tests/llrand_test.cpp @@ -31,27 +31,20 @@ #include "../llrand.h" #include "stringize.h" -template -void ensure_in_range_using(const std::string_view& name, - NUMBER value, NUMBER low, NUMBER high, - const std::string_view& compdesc, HIGHCOMP&& highcomp) +// In llrand.h, every function is documented to return less than the high end +// -- specifically, because you can pass a negative extent, they're documented +// never to return a value equal to the extent. +// So that we don't need two different versions of ensure_in_range(), when +// testing extent < 0, negate the return value and the extent before passing +// into ensure_in_range(). +template +void ensure_in_range(const std::string_view& name, + NUMBER value, NUMBER low, NUMBER high) { auto failmsg{ stringize(name, " >= ", low, " (", value, ')') }; tut::ensure(failmsg, (value >= low)); - failmsg = stringize(name, ' ', compdesc, ' ', high, " (", value, ')'); - tut::ensure(failmsg, std::forward(highcomp)(value, high)); -} - -template -void ensure_in_exc_range(const std::string_view& name, NUMBER value, NUMBER low, NUMBER high) -{ - ensure_in_range_using(name, value, low, high, "<", std::less()); -} - -template -void ensure_in_inc_range(const std::string_view& name, NUMBER value, NUMBER low, NUMBER high) -{ - ensure_in_range_using(name, value, low, high, "<=", std::less_equal()); + failmsg = stringize(name, " < ", high, " (", value, ')'); + tut::ensure(failmsg, (value < high)); } namespace tut @@ -69,7 +62,7 @@ namespace tut { for(S32 ii = 0; ii < 100000; ++ii) { - ensure_in_exc_range("frand", ll_frand(), 0.0f, 1.0f); + ensure_in_range("frand", ll_frand(), 0.0f, 1.0f); } } @@ -78,7 +71,7 @@ namespace tut { for(S32 ii = 0; ii < 100000; ++ii) { - ensure_in_exc_range("drand", ll_drand(), 0.0, 1.0); + ensure_in_range("drand", ll_drand(), 0.0, 1.0); } } @@ -87,7 +80,7 @@ namespace tut { for(S32 ii = 0; ii < 100000; ++ii) { - ensure_in_inc_range("frand(2.0f)", ll_frand(2.0f) - 1.0f, -1.0f, 1.0f); + ensure_in_range("frand(2.0f)", ll_frand(2.0f) - 1.0f, -1.0f, 1.0f); } } @@ -98,7 +91,7 @@ namespace tut { // Negate the result so we don't have to allow a templated low-end // comparison as well. - ensure_in_exc_range("-frand(-7.0)", -ll_frand(-7.0), 0.0f, 7.0f); + ensure_in_range("-frand(-7.0)", -ll_frand(-7.0), 0.0f, 7.0f); } } @@ -107,7 +100,7 @@ namespace tut { for(S32 ii = 0; ii < 100000; ++ii) { - ensure_in_exc_range("-drand(-2.0)", -ll_drand(-2.0), 0.0, 2.0); + ensure_in_range("-drand(-2.0)", -ll_drand(-2.0), 0.0, 2.0); } } @@ -116,7 +109,7 @@ namespace tut { for(S32 ii = 0; ii < 100000; ++ii) { - ensure_in_exc_range("rand(100)", ll_rand(100), 0, 100); + ensure_in_range("rand(100)", ll_rand(100), 0, 100); } } @@ -125,7 +118,7 @@ namespace tut { for(S32 ii = 0; ii < 100000; ++ii) { - ensure_in_exc_range("-rand(-127)", -ll_rand(-127), 0, 127); + ensure_in_range("-rand(-127)", -ll_rand(-127), 0, 127); } } } -- cgit v1.2.3 From 549e56572b821e8cfc15e591ce13861c2913d7c0 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 12 Oct 2023 17:25:30 -0400 Subject: PIE-1057: Engage viewer-build-util azure branch. --- .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 2def307b94..6c88c2ca5c 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -262,7 +262,7 @@ jobs: echo "$SIGNING_CERT_WINDOWS" | base64 --decode > .cert/authenticode-cert.pfx - name: Sign and package Windows viewer - uses: secondlife/viewer-build-util/sign-pkg-windows@main + uses: secondlife/viewer-build-util/sign-pkg-windows@azure with: certificate: .cert/authenticode-cert.pfx -- cgit v1.2.3 From 56911455e0b1b4bbc7c39775325f2822c1168c69 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 13 Oct 2023 09:32:53 -0400 Subject: SL-18837: Update dullahan to v118.0.5993.54 This includes this week's CEF 118. --- autobuild.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 38f4a8c256..569b9f7c28 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -440,11 +440,11 @@ archive hash - 6bb33eb9818f8b166e3bad22ba84fec0f9b397fa + e4d568c166049ce61b39d69887b56d2382781a1a hash_algorithm sha1 url - https://github.com/secondlife/dullahan/releases/download/v1.14.0/dullahan-1.14.0.202310042042_117.2.2_ge80c977_chromium-117.0.5938.132-darwin64-bb8417d.tar.zst + https://github.com/secondlife/dullahan/releases/download/v118.0.5993.54/dullahan-1.14.0.202310131309_118.4.1_g3dd6078_chromium-118.0.5993.54-darwin64-6b02a60.tar.zst name darwin64 @@ -454,11 +454,11 @@ archive hash - 7100f36b969d3c09bcaf50df988b4035c77e3158 + a00eae7f5dc430ae48389ab723ced39739b0a144 hash_algorithm sha1 url - https://github.com/secondlife/dullahan/releases/download/v1.14.0/dullahan-1.14.0.202310042145_117.2.2_ge80c977_chromium-117.0.5938.132-windows64-bb8417d.tar.zst + https://github.com/secondlife/dullahan/releases/download/v118.0.5993.54/dullahan-1.14.0.202310131404_118.4.1_g3dd6078_chromium-118.0.5993.54-windows64-6b02a60.tar.zst name windows64 @@ -471,7 +471,7 @@ copyright Copyright (c) 2017, Linden Research, Inc. version - 1.14.0.202310042145_117.2.2_ge80c977_chromium-117.0.5938.132 + 1.14.0.202310131404_118.4.1_g3dd6078_chromium-118.0.5993.54 name dullahan description -- cgit v1.2.3 From f6d872a027834bc83ee51d488336de933b703f74 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Fri, 13 Oct 2023 15:11:30 -0400 Subject: PIE-1057: Pass sign-pkg-windows@azure the Azure-related secrets. --- .github/workflows/build.yaml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6c88c2ca5c..daa647f257 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -253,18 +253,14 @@ jobs: needs: build runs-on: windows steps: - - name: Decode certificate file - shell: bash - env: - SIGNING_CERT_WINDOWS: ${{ secrets.SIGNING_CERT_WINDOWS }} - run: | - mkdir -p .cert - echo "$SIGNING_CERT_WINDOWS" | base64 --decode > .cert/authenticode-cert.pfx - - name: Sign and package Windows viewer uses: secondlife/viewer-build-util/sign-pkg-windows@azure with: - certificate: .cert/authenticode-cert.pfx + vault_uri: "${{ secrets.AZURE_KEY_VAULT_URI }}" + cert_name: "${{ secrets.AZURE_CERT_NAME }}" + client_id: "${{ secrets.AZURE_CLIENT_ID }}" + client_secret: "${{ secrets.AZURE_CLIENT_SECRET }}" + tenant_id: "${{ secrets.AZURE_TENANT_ID }}" sign-and-package-mac: needs: build -- cgit v1.2.3 From 016023c780aeb02b281ed52128f286b08d3c9eaf Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 16 Oct 2023 19:04:23 -0400 Subject: SL-18837: Create Second Life Viewer.app, not Second Life Release.app --- indra/newview/viewer_manifest.py | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 33b2e4affc..4bcc26e1d5 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -837,30 +837,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): def construct(self): # copy over the build result (this is a no-op if run within the xcode # script) - appname = self.channel() + ".app" - self.path(os.path.join(self.args['configuration'], appname), dst="") - RUNNER_TEMP = os.getenv('RUNNER_TEMP') - # When running as a GitHub Action job, RUNNER_TEMP is the recommended - # temp directory. If we're not running on GitHub, don't create this - # temp directory or this tarball: we don't clean them up, trusting - # that the runner is itself transient. On a dev machine, that would - # result in temp-directory clutter. - if RUNNER_TEMP: - # Per GitHub's actions/upload-artifact documentation - # https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files - # we must package the app bundle with tar before posting as an - # artifact. Posting individual files follows symlinks, which - # 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") - print(f'Creating {tarpath} from {self.get_dst_prefix()}') - with tarfile.open(tarpath, mode="w:bz2") as tarball: - # store in the tarball as just 'Second Life Mumble.app' - # instead of 'Users/someone/.../newview/Release/Second...' - tarball.add(self.get_dst_prefix(), - arcname=os.path.basename(self.get_dst_prefix())) - self.set_github_output_path('viewer_app', tarpath) + self.path(os.path.join(self.args['configuration'], self.app_name() + ".app"), dst="") pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") @@ -1188,6 +1165,29 @@ class Darwin_x86_64_Manifest(ViewerManifest): finalname = imagename + ".dmg" self.package_file = finalname + RUNNER_TEMP = os.getenv('RUNNER_TEMP') + # When running as a GitHub Action job, RUNNER_TEMP is the recommended + # temp directory. If we're not running on GitHub, don't create this + # temp directory or this tarball: we don't clean them up, trusting + # that the runner is itself transient. On a dev machine, that would + # result in temp-directory clutter. + if RUNNER_TEMP: + # Per GitHub's actions/upload-artifact documentation + # https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files + # we must package the app bundle with tar before posting as an + # artifact. Posting individual files follows symlinks, which + # 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") + print(f'Creating {tarpath} from {self.get_dst_prefix()}') + with tarfile.open(tarpath, mode="w:bz2") as tarball: + # store in the tarball as just 'Second Life Mumble.app' + # instead of 'Users/someone/.../newview/Release/Second...' + tarball.add(self.get_dst_prefix(), + arcname=os.path.basename(self.get_dst_prefix())) + self.set_github_output_path('viewer_app', tarpath) + class LinuxManifest(ViewerManifest): build_data_json_platform = 'lnx' -- cgit v1.2.3 From 19f453fc2007f780ae5d819090db206f07d0a9c6 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Mon, 16 Oct 2023 19:46:37 -0400 Subject: SL-18837: Second Life Release.app=>Second Life Viewer.app in tarball --- indra/newview/viewer_manifest.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 4bcc26e1d5..1fa4df1682 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -837,7 +837,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): 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.app_name() + ".app"), dst="") + self.path(os.path.join(self.args['configuration'], self.channel() + ".app"), dst="") pkgdir = os.path.join(self.args['build'], os.pardir, 'packages') relpkgdir = os.path.join(pkgdir, "lib", "release") @@ -1182,10 +1182,12 @@ class Darwin_x86_64_Manifest(ViewerManifest): tarpath = os.path.join(RUNNER_TEMP, "viewer.tar.bz2") print(f'Creating {tarpath} from {self.get_dst_prefix()}') with tarfile.open(tarpath, mode="w:bz2") as tarball: - # store in the tarball as just 'Second Life Mumble.app' + # 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' + # to 'Second Life Viewer.app'. tarball.add(self.get_dst_prefix(), - arcname=os.path.basename(self.get_dst_prefix())) + arcname=self.app_name() + ".app") self.set_github_output_path('viewer_app', tarpath) -- cgit v1.2.3 From 117f07e5a4b7882a44681c730dcc0628238cfec6 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 17 Oct 2023 06:33:05 -0400 Subject: SL-18837: Avoid stuffing build number into 32-bit int. Even though LLVersionInfo::getBuild() already returns a 64-bit int, various consumers assumed it could fit into 32 bits. It was especially bad to pass it to a classic C style varargs function. Only on a little-endian CPU, and only because it was the last argument, the damage was limited to truncation -- instead of arbitrary undefined behavior. Where the consumer doesn't support 64-bit ints, pass as string instead. --- indra/newview/llappviewer.cpp | 4 +++- indra/newview/llcurrencyuimanager.cpp | 13 +++++++++---- indra/newview/llpanellogin.cpp | 13 ++++++------- indra/newview/lltranslate.cpp | 25 +++++++++++++------------ indra/newview/llversioninfo.cpp | 4 ++-- indra/newview/llversioninfo.h | 2 +- indra/newview/llxmlrpctransaction.cpp | 15 ++++++++------- 7 files changed, 42 insertions(+), 34 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index dec849afa1..5763ebe721 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3209,8 +3209,10 @@ LLSD LLAppViewer::getViewerInfo() const // LLFloaterAbout. LLSD info; auto& versionInfo(LLVersionInfo::instance()); + // With GitHub builds, the build number is too big to fit in a 32-bit int, + // and LLSD doesn't deal with integers wider than int. Use string. info["VIEWER_VERSION"] = llsd::array(versionInfo.getMajor(), versionInfo.getMinor(), - versionInfo.getPatch(), versionInfo.getBuild()); + versionInfo.getPatch(), stringize(versionInfo.getBuild())); info["VIEWER_VERSION_STR"] = versionInfo.getVersion(); info["CHANNEL"] = versionInfo.getChannel(); info["ADDRESS_SIZE"] = ADDRESS_SIZE; diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp index 232e461fd0..4c0a5cf183 100644 --- a/indra/newview/llcurrencyuimanager.cpp +++ b/indra/newview/llcurrencyuimanager.cpp @@ -45,6 +45,7 @@ #include "llxmlrpctransaction.h" #include "llviewernetwork.h" #include "llpanel.h" +#include "stringize.h" const F64 CURRENCY_ESTIMATE_FREQUENCY = 2.0; @@ -158,7 +159,7 @@ void LLCurrencyUIManager::Impl::updateCurrencyInfo() mLocalCurrencyEstimated = true; return; } - + LLXMLRPCValue keywordArgs = LLXMLRPCValue::createStruct(); keywordArgs.appendString("agentId", gAgent.getID().asString()); keywordArgs.appendString( @@ -170,8 +171,10 @@ void LLCurrencyUIManager::Impl::updateCurrencyInfo() keywordArgs.appendInt("viewerMajorVersion", LLVersionInfo::instance().getMajor()); keywordArgs.appendInt("viewerMinorVersion", LLVersionInfo::instance().getMinor()); keywordArgs.appendInt("viewerPatchVersion", LLVersionInfo::instance().getPatch()); - keywordArgs.appendInt("viewerBuildVersion", LLVersionInfo::instance().getBuild()); - + // With GitHub builds, the build number is too big to fit in a 32-bit int, + // and XMLRPC_VALUE doesn't deal with integers wider than int. Use string. + keywordArgs.appendString("viewerBuildVersion", stringize(LLVersionInfo::instance().getBuild())); + LLXMLRPCValue params = LLXMLRPCValue::createArray(); params.append(keywordArgs); @@ -245,7 +248,9 @@ void LLCurrencyUIManager::Impl::startCurrencyBuy(const std::string& password) keywordArgs.appendInt("viewerMajorVersion", LLVersionInfo::instance().getMajor()); keywordArgs.appendInt("viewerMinorVersion", LLVersionInfo::instance().getMinor()); keywordArgs.appendInt("viewerPatchVersion", LLVersionInfo::instance().getPatch()); - keywordArgs.appendInt("viewerBuildVersion", LLVersionInfo::instance().getBuild()); + // With GitHub builds, the build number is too big to fit in a 32-bit int, + // and XMLRPC_VALUE doesn't deal with integers wider than int. Use string. + keywordArgs.appendString("viewerBuildVersion", stringize(LLVersionInfo::instance().getBuild())); LLXMLRPCValue params = LLXMLRPCValue::createArray(); params.append(keywordArgs); diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index ea936ab024..025a653c47 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -65,6 +65,7 @@ #include "lltrans.h" #include "llglheaders.h" #include "llpanelloginlistener.h" +#include "stringize.h" #if LL_WINDOWS #pragma warning(disable: 4355) // 'this' used in initializer list @@ -300,10 +301,9 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, setDefaultBtn(def_btn); std::string channel = LLVersionInfo::instance().getChannel(); - std::string version = llformat("%s (%ld)", - LLVersionInfo::instance().getShortVersion().c_str(), - LLVersionInfo::instance().getBuild()); - + std::string version = stringize(LLVersionInfo::instance().getShortVersion(), " (", + LLVersionInfo::instance().getBuild(), ')'); + LLTextBox* forgot_password_text = getChild("forgot_password_text"); forgot_password_text->setClickedCallback(onClickForgotPassword, NULL); @@ -894,9 +894,8 @@ void LLPanelLogin::loadLoginPage() } // Channel and Version - params["version"] = llformat("%s (%ld)", - LLVersionInfo::instance().getShortVersion().c_str(), - LLVersionInfo::instance().getBuild()); + params["version"] = stringize(LLVersionInfo::instance().getShortVersion(), " (", + LLVersionInfo::instance().getBuild(), ')'); params["channel"] = LLVersionInfo::instance().getChannel(); // Grid diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp index 1e21c3fa05..6526e1df92 100644 --- a/indra/newview/lltranslate.cpp +++ b/indra/newview/lltranslate.cpp @@ -39,6 +39,7 @@ #include "json/reader.h" #include "llcorehttputil.h" #include "llurlregistry.h" +#include "stringize.h" static const std::string AZURE_NOTRANSLATE_OPENING_TAG("
"); @@ -160,12 +161,12 @@ void LLTranslationAPIHandler::verifyKeyCoro(LLTranslate::EService service, LLSD LLCore::HttpHeaders::ptr_t httpHeaders(new LLCore::HttpHeaders); - std::string user_agent = llformat("%s %d.%d.%d (%ld)", - LLVersionInfo::instance().getChannel().c_str(), - LLVersionInfo::instance().getMajor(), - LLVersionInfo::instance().getMinor(), - LLVersionInfo::instance().getPatch(), - LLVersionInfo::instance().getBuild()); + std::string user_agent = stringize( + LLVersionInfo::instance().getChannel(), ' ', + LLVersionInfo::instance().getMajor(), '.', + LLVersionInfo::instance().getMinor(), '.', + LLVersionInfo::instance().getPatch(), " (", + LLVersionInfo::instance().getBuild(), ')'); initHttpHeader(httpHeaders, user_agent, key); @@ -215,12 +216,12 @@ void LLTranslationAPIHandler::translateMessageCoro(LanguagePair_t fromTo, std::s LLCore::HttpHeaders::ptr_t httpHeaders(new LLCore::HttpHeaders); - std::string user_agent = llformat("%s %d.%d.%d (%ld)", - LLVersionInfo::instance().getChannel().c_str(), - LLVersionInfo::instance().getMajor(), - LLVersionInfo::instance().getMinor(), - LLVersionInfo::instance().getPatch(), - LLVersionInfo::instance().getBuild()); + std::string user_agent = stringize( + LLVersionInfo::instance().getChannel(), ' ', + LLVersionInfo::instance().getMajor(), '.', + LLVersionInfo::instance().getMinor(), '.', + LLVersionInfo::instance().getPatch(), " (", + LLVersionInfo::instance().getBuild(), ')'); initHttpHeader(httpHeaders, user_agent); httpOpts->setSSLVerifyPeer(false); diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 62bfa24e29..9551df7bee 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -69,7 +69,7 @@ void LLVersionInfo::initSingleton() // fully constructed; such calls don't really belong in the constructor. // cache the version string - version = STRINGIZE(getShortVersion() << "." << getBuild()); + version = stringize(getShortVersion(), ".", getBuild()); } LLVersionInfo::~LLVersionInfo() @@ -91,7 +91,7 @@ S32 LLVersionInfo::getPatch() return LL_VIEWER_VERSION_PATCH; } -S64 LLVersionInfo::getBuild() +U64 LLVersionInfo::getBuild() { return LL_VIEWER_VERSION_BUILD; } diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 122bd5c47a..a40042380a 100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -61,7 +61,7 @@ public: S32 getPatch(); /// return the build number as an integer - S64 getBuild(); + U64 getBuild(); /// return the full viewer version as a string like "2.0.0.200030" std::string getVersion(); diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index b851b7ad5c..8ea07fcee0 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -42,6 +42,7 @@ #include "bufferarray.h" #include "llversioninfo.h" #include "llviewercontrol.h" +#include "stringize.h" // Have to include these last to avoid queue redefinition! @@ -384,14 +385,14 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip, const httpHeaders->append(HTTP_OUT_HEADER_CONTENT_TYPE, HTTP_CONTENT_TEXT_XML); - std::string user_agent = llformat("%s %d.%d.%d (%ld)", - LLVersionInfo::instance().getChannel().c_str(), - LLVersionInfo::instance().getMajor(), - LLVersionInfo::instance().getMinor(), - LLVersionInfo::instance().getPatch(), - LLVersionInfo::instance().getBuild()); + std::string user_agent = stringize( + LLVersionInfo::instance().getChannel(), ' ', + LLVersionInfo::instance().getMajor(), '.', + LLVersionInfo::instance().getMinor(), '.', + LLVersionInfo::instance().getPatch(), " (", + LLVersionInfo::instance().getBuild(), ')'); - httpHeaders->append(HTTP_OUT_HEADER_USER_AGENT, user_agent); + httpHeaders->append(HTTP_OUT_HEADER_USER_AGENT, user_agent); ///* Setting the DNS cache timeout to -1 disables it completely. //This might help with bug #503 */ -- cgit v1.2.3 From 651353560bfe23b6423ecf7690d86645a71c0cbc Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 17 Oct 2023 14:56:10 -0400 Subject: SL-20476: Don't let the compiler know we intend to crash. clang has gotten smart enough to recognize an inline attempt to store to address zero. Fool it by storing to an address passed as a parameter, and pass nullptr from a different source file. --- indra/llcommon/llerror.cpp | 17 +++++++++++++++-- indra/llcommon/llerror.h | 10 +++++----- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index 02cb186275..05e719b494 100644 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -1617,5 +1617,18 @@ bool debugLoggingEnabled(const std::string& tag) return res; } - - +void crashdriver(void (*callback)(int*)) +{ + // The LLERROR_CRASH macro used to have inline code of the form: + //int* make_me_crash = NULL; + //*make_me_crash = 0; + + // But compilers are getting smart enough to recognize that, so we must + // assign to an address supplied by a separate source file. We could do + // the assignment here in crashdriver() -- but then BugSplat would group + // all LL_ERRS() crashes as the fault of this one function, instead of + // identifying the specific LL_ERRS() source line. So instead, do the + // assignment in a lambda in the caller's source. We just provide the + // nullptr target. + callback(nullptr); +} diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index 020f05e8f5..624a5fb37a 100644 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -383,11 +383,9 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG; #define LL_NEWLINE '\n' // Use this only in LL_ERRS or in a place that LL_ERRS may not be used -#define LLERROR_CRASH \ -{ \ - int* make_me_crash = NULL;\ - *make_me_crash = 0; \ - exit(*make_me_crash); \ +#define LLERROR_CRASH \ +{ \ + crashdriver([](int* ptr){ *ptr = 0; exit(*ptr); }); \ } #define LL_ENDL \ @@ -466,5 +464,7 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG; // Check at run-time whether logging is enabled, without generating output bool debugLoggingEnabled(const std::string& tag); +// used by LLERROR_CRASH +void crashdriver(void (*)(int*)); #endif // LL_LLERROR_H -- cgit v1.2.3 From 2e8e96cfbcb383a667d1b938f364f0bbafcad5b4 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 18 Oct 2023 17:44:07 -0400 Subject: PIE-1057: viewer-build-util's azure branch has been merged to main. --- .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 daa647f257..33a8cffa3f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -254,7 +254,7 @@ jobs: runs-on: windows steps: - name: Sign and package Windows viewer - uses: secondlife/viewer-build-util/sign-pkg-windows@azure + uses: secondlife/viewer-build-util/sign-pkg-windows@main with: vault_uri: "${{ secrets.AZURE_KEY_VAULT_URI }}" cert_name: "${{ secrets.AZURE_CERT_NAME }}" -- cgit v1.2.3 From 732fedbe8f585b86f7f44c058b7407f0f8a9ecf7 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 25 Oct 2023 14:31:48 -0400 Subject: Increment viewer version to 6.6.17 following promotion of DRTVWR-578 --- indra/newview/VIEWER_VERSION.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 5235a3e6f4..93409ff0c2 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -6.6.16 +6.6.17 -- cgit v1.2.3 From e4d6a08941f9c4e81bda8ae14d481be5029353fd Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 25 Oct 2023 14:39:31 -0400 Subject: SL-18837: Build all branches on GitHub now. --- .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 33a8cffa3f..1cd0c2526f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -4,7 +4,7 @@ on: workflow_dispatch: pull_request: push: - branches: [main, "actions*"] + branches: ["*"] tags: ["*"] jobs: -- cgit v1.2.3