diff options
-rw-r--r-- | .github/workflows/build.yaml | 77 | ||||
-rw-r--r-- | autobuild.xml | 144 | ||||
-rwxr-xr-x | build.sh | 1 | ||||
-rw-r--r-- | indra/llcommon/llcoros.cpp | 12 | ||||
-rw-r--r-- | indra/llprimitive/llgltfmaterial.h | 23 | ||||
-rw-r--r-- | indra/llprimitive/tests/llgltfmaterial_test.cpp | 16 |
6 files changed, 157 insertions, 116 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 44f32c1c5d..47f612f028 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -5,17 +5,41 @@ on: pull_request: push: branches: ["main", "release/*", "project/*"] - tags: ["Second_Life_*"] + tags: ["Second_Life*"] + +env: + # Build with a tag like "Second_Life#abcdef0" to generate a release page + # (used for builds we are planning to deploy). + RELEASE_RUN: ${{ github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life') && 'Y' || '' }} jobs: + # The whole point of the setvar job is that we want to reference global + # env.RELEASE_RUN in build.env, but a job.env can't directly reference the + # global env context. + setvar: + runs-on: ubuntu-latest + outputs: + release_run: ${{ steps.setvar.outputs.release_run }} + steps: + - name: Set Variable + id: setvar + shell: bash + run: | + echo "release_run=$RELEASE_RUN" >> "$GITHUB_OUTPUT" + build: + needs: setvar strategy: matrix: runner: [windows-large, macos-12-xl] configuration: [Release] + Linden: [true] include: - runner: macos-12-xl developer_dir: "/Applications/Xcode_14.0.1.app/Contents/Developer" + - runner: windows-large + configuration: ReleaseOS + Linden: false runs-on: ${{ matrix.runner }} outputs: viewer_channel: ${{ steps.build.outputs.viewer_channel }} @@ -37,7 +61,10 @@ jobs: AUTOBUILD_VSVER: "170" DEVELOPER_DIR: ${{ matrix.developer_dir }} # Ensure that Linden viewer builds engage Bugsplat. - BUGSPLAT_DB: ${{ matrix.configuration != 'ReleaseOS' && 'SecondLife_Viewer_2018' || '' }} + BUGSPLAT_DB: ${{ matrix.Linden && 'SecondLife_Viewer_2018' || '' }} + # Run BUILD steps for Release configuration. + # Run BUILD steps for ReleaseOS configuration only for release runs. + BUILD: ${{ (matrix.Linden || needs.setvar.outputs.release_run) && 'Y' || '' }} build_coverity: false build_log_dir: ${{ github.workspace }}/.logs build_viewer: true @@ -56,16 +83,19 @@ jobs: variants: ${{ matrix.configuration }} steps: - name: Checkout code + if: env.BUILD uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} - name: Setup python + if: env.BUILD uses: actions/setup-python@v5 with: python-version: "3.11" - name: Checkout build variables + if: env.BUILD uses: actions/checkout@v4 with: repository: secondlife/build-variables @@ -73,17 +103,20 @@ jobs: path: .build-variables - name: Checkout master-message-template + if: env.BUILD uses: actions/checkout@v4 with: repository: secondlife/master-message-template path: .master-message-template - name: Install autobuild and python dependencies + if: env.BUILD run: pip3 install autobuild llsd - name: Cache autobuild packages - uses: actions/cache@v4 id: cache-installables + if: env.BUILD + uses: actions/cache@v4 with: path: .autobuild-installables key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }} @@ -92,17 +125,19 @@ jobs: ${{ runner.os }}-64- - name: Install windows dependencies - if: runner.os == 'Windows' + if: env.BUILD && runner.os == 'Windows' run: choco install nsis-unicode - name: Determine source branch id: which-branch + if: env.BUILD uses: secondlife/viewer-build-util/which-branch@v2 with: token: ${{ github.token }} - name: Build id: build + if: env.BUILD shell: bash env: AUTOBUILD_VCS_BRANCH: ${{ steps.which-branch.outputs.branch }} @@ -176,16 +211,22 @@ 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", - # needed to disambiguate tags). - 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" + + # determine the viewer channel from the branch name + branch=$AUTOBUILD_VCS_BRANCH + IFS='/' read -ra ba <<< $branch + prefix=${ba[0]} + if [ "$prefix" == "project" ]; then + IFS='_' read -ra prj <<< "${ba[1]}" + # uppercase first letter of each word + export viewer_channel="Second Life Project ${prj[*]^}" + elif [[ "$prefix" == "release" || "$prefix" == "main" ]]; + then + export viewer_channel="Second Life Release" + 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 # will resolve the correct interpreter location. @@ -219,7 +260,7 @@ jobs: echo "artifact=$RUNNER_OS$cfg_suffix" >> $GITHUB_OUTPUT - name: Upload executable - if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.viewer_app + if: matrix.Linden && steps.build.outputs.viewer_app uses: actions/upload-artifact@v4 with: name: "${{ steps.build.outputs.artifact }}-app" @@ -229,7 +270,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.Linden uses: actions/upload-artifact@v4 with: name: "${{ steps.build.outputs.artifact }}-symbols" @@ -237,7 +278,7 @@ jobs: ${{ steps.build.outputs.symbolfile }} - name: Upload metadata - if: matrix.configuration != 'ReleaseOS' + if: matrix.Linden uses: actions/upload-artifact@v4 with: name: "${{ steps.build.outputs.artifact }}-metadata" @@ -248,7 +289,7 @@ jobs: - name: Upload physics package uses: actions/upload-artifact@v4 # should only be set for viewer-private - if: matrix.configuration != 'ReleaseOS' && steps.build.outputs.physicstpv + if: matrix.Linden && steps.build.outputs.physicstpv with: name: "${{ steps.build.outputs.artifact }}-physics" # emitted by build.sh, zero or one lines @@ -352,9 +393,9 @@ jobs: version: ${{ needs.build.outputs.viewer_version }} release: - needs: [build, sign-and-package-windows, sign-and-package-mac] + needs: [setvar, build, sign-and-package-windows, sign-and-package-mac] runs-on: ubuntu-latest - if: github.ref_type == 'tag' && startsWith(github.ref_name, 'Second_Life_') + if: needs.setvar.outputs.release_run steps: - uses: actions/download-artifact@v4 with: diff --git a/autobuild.xml b/autobuild.xml index 13c9e7ec35..1939c6734b 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -455,18 +455,6 @@ </map> <key>emoji_shortcodes</key> <map> - <key>canonical_repo</key> - <string>https://github.com/secondlife/3p-emoji-shortcodes</string> - <key>copyright</key> - <string>Copyright 2017-2019 Miles Johnson.</string> - <key>description</key> - <string>Emoji shortcodes</string> - <key>license</key> - <string>MIT</string> - <key>license_file</key> - <string>LICENSES/emojibase-license.txt</string> - <key>name</key> - <string>emoji_shortcodes</string> <key>platforms</key> <map> <key>darwin64</key> @@ -494,8 +482,20 @@ <string>windows64</string> </map> </map> + <key>license</key> + <string>MIT</string> + <key>license_file</key> + <string>LICENSES/emojibase-license.txt</string> + <key>copyright</key> + <string>Copyright 2017-2019 Miles Johnson.</string> <key>version</key> <string>6.1.0.579438</string> + <key>name</key> + <string>emoji_shortcodes</string> + <key>canonical_repo</key> + <string>https://github.com/secondlife/3p-emoji-shortcodes</string> + <key>description</key> + <string>Emoji shortcodes</string> </map> <key>expat</key> <map> @@ -655,16 +655,6 @@ </map> <key>freetype</key> <map> - <key>copyright</key> - <string>Copyright 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg.</string> - <key>description</key> - <string>Font rendering library</string> - <key>license</key> - <string>FreeType</string> - <key>license_file</key> - <string>LICENSES/freetype.txt</string> - <key>name</key> - <string>freetype</string> <key>platforms</key> <map> <key>darwin64</key> @@ -724,8 +714,18 @@ <string>windows64</string> </map> </map> + <key>license</key> + <string>FreeType</string> + <key>license_file</key> + <string>LICENSES/freetype.txt</string> + <key>copyright</key> + <string>Copyright 2006, 2007, 2008, 2009, 2010 by David Turner, Robert Wilhelm, and Werner Lemberg.</string> <key>version</key> <string>2.12.1.557becd</string> + <key>name</key> + <string>freetype</string> + <key>description</key> + <string>Font rendering library</string> </map> <key>glext</key> <map> @@ -957,18 +957,6 @@ </map> <key>icu4c</key> <map> - <key>canonical_repo</key> - <string>https://bitbucket.org/lindenlab/3p-icu4c</string> - <key>copyright</key> - <string>Copyright (c) 1995-2011 International Business Machines Corporation and others <http://source.icu-project.org></string> - <key>description</key> - <string>ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software.</string> - <key>license</key> - <string>ICU, permissive non-copyleft free software license</string> - <key>license_file</key> - <string>LICENSES/icu.txt</string> - <key>name</key> - <string>icu4c</string> <key>platforms</key> <map> <key>darwin64</key> @@ -1000,8 +988,20 @@ <string>windows64</string> </map> </map> + <key>license</key> + <string>ICU, permissive non-copyleft free software license</string> + <key>license_file</key> + <string>LICENSES/icu.txt</string> + <key>copyright</key> + <string>Copyright (c) 1995-2011 International Business Machines Corporation and others <http://source.icu-project.org></string> <key>version</key> <string>4.8.1-7d08d82</string> + <key>name</key> + <string>icu4c</string> + <key>canonical_repo</key> + <string>https://bitbucket.org/lindenlab/3p-icu4c</string> + <key>description</key> + <string>ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software.</string> </map> <key>jpegencoderbasic</key> <map> @@ -1547,15 +1547,6 @@ </map> <key>llca</key> <map> - <key>copyright</key> - <string>Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. - </string> - <key>license</key> - <string>mit</string> - <key>license_file</key> - <string>LICENSES/ca-license.txt</string> - <key>name</key> - <string>llca</string> <key>platforms</key> <map> <key>common</key> @@ -1573,8 +1564,17 @@ <string>common</string> </map> </map> + <key>license</key> + <string>mit</string> + <key>license_file</key> + <string>LICENSES/ca-license.txt</string> + <key>copyright</key> + <string>Copyright (c) 2016, Linden Research, Inc.; data provided by the Mozilla NSS Project. + </string> <key>version</key> <string>202402012004.0</string> + <key>name</key> + <string>llca</string> </map> <key>llphysicsextensions_source</key> <map> @@ -1932,18 +1932,6 @@ </map> <key>nanosvg</key> <map> - <key>canonical_repo</key> - <string>https://bitbucket.org/lindenlab/3p-nanosvg</string> - <key>copyright</key> - <string>Copyright (c) 2013-14 Mikko Mononen</string> - <key>description</key> - <string>NanoSVG is a simple single-header-file SVG parser and rasterizer</string> - <key>license</key> - <string>Zlib</string> - <key>license_file</key> - <string>LICENSES/nanosvg.txt</string> - <key>name</key> - <string>nanosvg</string> <key>platforms</key> <map> <key>darwin64</key> @@ -1983,8 +1971,20 @@ <string>windows64</string> </map> </map> + <key>license</key> + <string>Zlib</string> + <key>license_file</key> + <string>LICENSES/nanosvg.txt</string> + <key>copyright</key> + <string>Copyright (c) 2013-14 Mikko Mononen</string> <key>version</key> <string>2022.09.27</string> + <key>name</key> + <string>nanosvg</string> + <key>canonical_repo</key> + <string>https://bitbucket.org/lindenlab/3p-nanosvg</string> + <key>description</key> + <string>NanoSVG is a simple single-header-file SVG parser and rasterizer</string> </map> <key>nghttp2</key> <map> @@ -2400,14 +2400,12 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <map> <key>archive</key> <map> - <key>creds</key> - <string>github</string> <key>hash</key> - <string>cc7c5bf53f83cff81d874ad66394df0991bd432c</string> + <string>1e70b06fe6eb9796097010871b32d8e95167e373</string> <key>hash_algorithm</key> <string>sha1</string> <key>url</key> - <string>https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299352</string> + <string>https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-darwin64-5942f08.tar.zst</string> </map> <key>name</key> <string>darwin64</string> @@ -2428,14 +2426,12 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <map> <key>archive</key> <map> - <key>creds</key> - <string>github</string> <key>hash</key> - <string>0c205371bb1731a9812b00556037729fdc057cbc</string> + <string>ddfb7c30d9756915e8b26f44e2ee3a69ee87fb9a</string> <key>hash_algorithm</key> <string>sha1</string> <key>url</key> - <string>https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299356</string> + <string>https://automated-builds-secondlife-com.s3.amazonaws.com/gh/secondlife/3p-slvoice/slvoice-4.10.0000.32327.5fc3fe7c.5942f08-windows64-5942f08.tar.zst</string> </map> <key>name</key> <string>windows64</string> @@ -2448,7 +2444,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <key>copyright</key> <string>2010 Vivox, including audio coding using Polycom¨ Siren14TM (ITU-T Rec. G.722.1 Annex C)</string> <key>version</key> - <string>4.10.0000.32327.5fc3fe7c.571099</string> + <string>4.10.0000.32327.5fc3fe7c.5942f08</string> <key>name</key> <string>slvoice</string> <key>description</key> @@ -2694,16 +2690,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> </map> <key>viewer-fonts</key> <map> - <key>copyright</key> - <string>Copyright 2016-2022 Brad Erickson CC-BY-4.0/MIT, Copyright 2016-2022 Twitter, Inc. CC-BY-4.0, Copyright 2013 Joe Loughry and Terence Eden MIT</string> - <key>description</key> - <string>Viewer fonts</string> - <key>license</key> - <string>Various open source</string> - <key>license_file</key> - <string>LICENSES/fonts.txt</string> - <key>name</key> - <string>viewer-fonts</string> <key>platforms</key> <map> <key>darwin64</key> @@ -2731,8 +2717,18 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string> <string>windows64</string> </map> </map> + <key>license</key> + <string>Various open source</string> + <key>license_file</key> + <string>LICENSES/fonts.txt</string> + <key>copyright</key> + <string>Copyright 2016-2022 Brad Erickson CC-BY-4.0/MIT, Copyright 2016-2022 Twitter, Inc. CC-BY-4.0, Copyright 2013 Joe Loughry and Terence Eden MIT</string> <key>version</key> <string>1.579464</string> + <key>name</key> + <string>viewer-fonts</string> + <key>description</key> + <string>Viewer fonts</string> </map> <key>viewer-manager</key> <map> @@ -178,6 +178,7 @@ pre_build() "$autobuild" configure --quiet -c $variant \ ${eval_autobuild_configure_parameters:---} \ + -DLL_TESTS:BOOL=ON \ -DPACKAGE:BOOL=ON \ -DHAVOK:BOOL="$HAVOK" \ -DRELEASE_CRASH_REPORTING:BOOL="$RELEASE_CRASH_REPORTING" \ diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp index 20340397db..8612f9353f 100644 --- a/indra/llcommon/llcoros.cpp +++ b/indra/llcommon/llcoros.cpp @@ -3,25 +3,25 @@ * @author Nat Goodspeed * @date 2009-06-03 * @brief Implementation for llcoros. - * + * * $LicenseInfo:firstyear=2009&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -123,7 +123,7 @@ LLCoros::LLCoros(): // Previously we used // boost::context::guarded_stack_allocator::default_stacksize(); // empirically this is insufficient. - mStackSize(900*1024), + mStackSize(1024*1024), // mCurrent does NOT own the current CoroData instance -- it simply // points to it. So initialize it with a no-op deleter. mCurrent{ [](CoroData*){} } diff --git a/indra/llprimitive/llgltfmaterial.h b/indra/llprimitive/llgltfmaterial.h index dac9c44f8a..f62cab1a61 100644 --- a/indra/llprimitive/llgltfmaterial.h +++ b/indra/llprimitive/llgltfmaterial.h @@ -5,21 +5,21 @@ * $LicenseInfo:firstyear=2022&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2022, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -122,13 +122,20 @@ public: F32 mRoughnessFactor = 1.f; F32 mAlphaCutoff = 0.5f; - bool mDoubleSided = false; AlphaMode mAlphaMode = ALPHA_MODE_OPAQUE; + bool mDoubleSided = false; + // override specific flags for state that can't use off-by-epsilon or UUID hack bool mOverrideDoubleSided = false; bool mOverrideAlphaMode = false; + // These fields are local to viewer and are a part of local bitmap support + typedef std::map<LLUUID, LLUUID> local_tex_map_t; + local_tex_map_t mTrackingIdToLocalTexture; + +public: + // get a UUID based on a hash of this LLGLTFMaterial LLUUID getHash() const; @@ -197,7 +204,7 @@ public: void writeToModel(tinygltf::Model& model, S32 mat_index) const; virtual void applyOverride(const LLGLTFMaterial& override_mat); - + // apply the given LLSD override data void applyOverrideLLSD(const LLSD& data); @@ -229,10 +236,6 @@ public: virtual bool replaceLocalTexture(const LLUUID& tracking_id, const LLUUID &old_id, const LLUUID& new_id); virtual void updateTextureTracking(); - // These fields are local to viewer and are a part of local bitmap support - typedef std::map<LLUUID, LLUUID> local_tex_map_t; - local_tex_map_t mTrackingIdToLocalTexture; - protected: static LLVector2 vec2FromJson(const std::map<std::string, tinygltf::Value>& object, const char* key, const LLVector2& default_value); static F32 floatFromJson(const std::map<std::string, tinygltf::Value>& object, const char* key, const F32 default_value); diff --git a/indra/llprimitive/tests/llgltfmaterial_test.cpp b/indra/llprimitive/tests/llgltfmaterial_test.cpp index 143cf8e9c0..b56c9ab4f5 100644 --- a/indra/llprimitive/tests/llgltfmaterial_test.cpp +++ b/indra/llprimitive/tests/llgltfmaterial_test.cpp @@ -1,26 +1,26 @@ -/** +/** * @file llgltfmaterial_test.cpp * - * $LicenseInfo:firstyear=2023&license=viewerlgpl$ + * $LicenseInfo:firstyear=2023&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2023, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ + * $/LicenseInfo$ */ #include "linden_common.h" @@ -143,7 +143,7 @@ namespace tut #if LL_WINDOWS // If any fields are added/changed, these tests should be updated (consider also updating ASSET_VERSION in LLGLTFMaterial) // This test result will vary between compilers, so only test a single platform - ensure_equals("fields supported for GLTF (sizeof check)", sizeof(LLGLTFMaterial), 216); + ensure_equals("fields supported for GLTF (sizeof check)", sizeof(LLGLTFMaterial), 224); #endif #endif ensure_equals("LLGLTFMaterial texture info count", (U32)LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT, 4); |