diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 8adec3ef10..282225e71d 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -10,19 +10,20 @@ env: AUTOBUILD_VARIABLES_FILE: ${{github.workspace}}/build-variables/variables EXTRA_ARGS: -DUSE_FMODSTUDIO=ON -DUSE_KDU=ON --crashreporting build_secrets_checkout: ${{github.workspace}}/signing + XZ_DEFAULTS: -T0 jobs: build_matrix: strategy: matrix: - os: [macos-10.15,ubuntu-20.04,windows-2022] + os: [macos-11,ubuntu-20.04,windows-2022] grid: [sl,os] addrsize: [64,32] exclude: - os: ubuntu-20.04 addrsize: 32 - - os: macos-10.15 + - os: macos-11 addrsize: 32 runs-on: ${{ matrix.os }} steps: @@ -196,6 +197,12 @@ jobs: fi done shell: bash + + - name: make Nightly builds expire after 14 days + if: env.FS_BUILD_TYPE == 'Nightly' + run: | + echo "EXTRA_ARGS=${{ env.EXTRA_ARGS}} --testbuild=14" >> $GITHUB_ENV + - name: Clean up packages to give more space run: rm *${{ env.fallback_platform }}*bz2 shell: bash @@ -246,18 +253,22 @@ jobs: - name: Install discord-webhook library run: pip install discord-webhook - - name: find channel from Branch name + - name: find channel and webhook from Branch name run: | if [[ "${{ github.ref_name }}" == *Release* ]]; then FS_RELEASE_FOLDER=release - else - if [[ "${{github.event_name}}" == 'schedule' ]]; then - FS_RELEASE_FOLDER=nightly + FS_BUILD_WEBHOOK_URL=${{ secrets.RELEASE_WEBHOOK_URL }} else - FS_RELEASE_FOLDER=preview + if [[ "${{github.event_name}}" == 'schedule' ]]; then + FS_RELEASE_FOLDER=nightly + FS_BUILD_WEBHOOK_URL=${{ secrets.NIGHTLY_WEBHOOK_URL }} + else + FS_RELEASE_FOLDER=preview + FS_BUILD_WEBHOOK_URL=${{ secrets.BETA_WEBHOOK_URL }} fi fi echo "FS_RELEASE_FOLDER=${FS_RELEASE_FOLDER}" >> $GITHUB_ENV + echo "FS_BUILD_WEBHOOK_URL=${FS_BUILD_WEBHOOK_URL}" >> $GITHUB_ENV - name: Download artifacts uses: actions/download-artifact@v3 @@ -269,7 +280,7 @@ jobs: working-directory: ${{steps.download.outputs.download-path}} - name: Reorganise artifacts ready for server upload. - run: python ./fsutils/download_list.py -u ${{steps.download.outputs.download-path}} -w ${{ secrets.RELEASE_WEBHOOK_URL }} + run: python ./fsutils/download_list.py -u ${{steps.download.outputs.download-path}} -w ${{ env.FS_BUILD_WEBHOOK_URL }} - name: Setup rclone and download the folder uses: beqjanus/setup-rclone@main diff --git a/fsutils/download_list.py b/fsutils/download_list.py index b8534efeff..2dc8cfd08d 100644 --- a/fsutils/download_list.py +++ b/fsutils/download_list.py @@ -80,7 +80,8 @@ def get_md5(mdfile): #split md5sum on space md5sum = md5sum.split()[0] #remove leading '\' - md5sum = md5sum[1:] + if md5sum[0] == "\\": + md5sum = md5sum[1:] print(f"generating md5sum for {mdfile} as {md5sum}") return md5sum @@ -210,7 +211,11 @@ for build_type in build_types_created: platforms_printable = {"windows":"MS Windows", "mac":"MacOS", "linux":"Linux"} grids_printable = {"SL":"Second Life", "OS":"OpenSim"} - download_root = f"https://downloads.firestormviewer.org/{build_types[build_type]}/" + download_root = f"https://downloads.firestormviewer.org/{build_types[build_type]}" + output += f''' +DOWNLOADS - {build_type} +------------------------------------------------------------------------------------------------------- +''' for dir in dirs: print(f"Getting files for {dir} in {build_type_dir}") files = get_files(os.path.join(build_type_dir, dir)) @@ -236,11 +241,8 @@ for build_type in build_types_created: print(f"No files found for {dir} in {build_type_dir}") - output += f''' -DOWNLOADS - {build_type} -''' - output += f'''------------------------------------------------------------------------------------------------------- + output += f''' {platforms_printable[dir]} ''' dir = dir.lower() @@ -266,8 +268,7 @@ DOWNLOADS - {build_type} except KeyError: output += f"{platform} for {grid_printable} ({wordsize}-bit) - NOT AVAILABLE\n" output += "\n" - output += ''' -------------------------------------------------------------------------------------------------------- + output += '''------------------------------------------------------------------------------------------------------- ''' if args.webhook: @@ -276,6 +277,7 @@ DOWNLOADS - {build_type} # Send the webhook response = webhook.execute() # Print the response - print(f"Webhook response: {response}") + if not response.ok: + print(f"Webhook Error {response.status_code}: {response.text}") print(output) diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 430ed650b0..e0520dc324 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -3136,6 +3136,14 @@ void LLPanelProfileNotes::onOpen(const LLSD& key) void LLPanelProfileNotes::setNotesText(const std::string &text) { + // FIRE-32926 - Profile notes that are actively being edited get discarded when + // the profile owner enters or leaves the region at the same time. + if (mHasUnsavedChanges) + { + return; + } + // + mSaveChanges->setEnabled(FALSE); mDiscardChanges->setEnabled(FALSE); mHasUnsavedChanges = false; diff --git a/indra/newview/llsurface.cpp b/indra/newview/llsurface.cpp index b0f2e98508..529ba721c5 100644 --- a/indra/newview/llsurface.cpp +++ b/indra/newview/llsurface.cpp @@ -171,6 +171,16 @@ void LLSurface::create(const S32 grids_per_edge, mMetersPerEdge = mMetersPerGrid * (mGridsPerEdge - 1); // Aurora Sim sTextureSize = width; + + // Trap non-power of 2 widths to avoid GLtexture issues. + if ((sTextureSize & (sTextureSize - 1)) != 0) + { + // Not a power of 2, find the next power of 2 + sTextureSize = 1 << static_cast( ceil(log2(sTextureSize)) ) ; + } + + // Clamp to maximum limit + sTextureSize = std::min(sTextureSize, 1024); // Aurora Sim mOriginGlobal.setVec(origin_global); diff --git a/indra/newview/skins/ansastorm/xui/de/floater_preview_texture.xml b/indra/newview/skins/ansastorm/xui/de/floater_preview_texture.xml index e92c308005..54a274082d 100644 --- a/indra/newview/skins/ansastorm/xui/de/floater_preview_texture.xml +++ b/indra/newview/skins/ansastorm/xui/de/floater_preview_texture.xml @@ -58,9 +58,9 @@ -