From afa9036dda4a7984919266db118dbb79c19c47af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20H=C3=B6rmann?= Date: Sat, 22 Jun 2024 14:38:47 +0200 Subject: [PATCH 01/21] annotate GCC 13 -Wdangling reference false positives so they are ignored --- indra/llui/llfloaterreg.h | 11 +++++++++++ indra/newview/llpathfindingnavmesh.cpp | 11 +++++++++++ indra/newview/rlvcommon.cpp | 7 +++++++ indra/newview/rlvhandler.cpp | 7 +++++++ 4 files changed, 36 insertions(+) diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h index c30e6afe7a..9f8a15f54d 100644 --- a/indra/llui/llfloaterreg.h +++ b/indra/llui/llfloaterreg.h @@ -123,7 +123,18 @@ public: static bool destroyInstance(const std::string& name, const LLSD& key = LLSD()); // Iterators + // ignore dangling reference false positives in gcc13 +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-reference" +#endif + // static const_instance_list_t& getFloaterList(const std::string& name); + // ignore dangling reference false positives in gcc13 +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic pop +#endif + // // Visibility Management // [RLVa:KB] - Checked: 2012-02-07 (RLVa-1.4.5) | Added: RLVa-1.4.5 diff --git a/indra/newview/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp index 52a7383da6..5832e47a72 100644 --- a/indra/newview/llpathfindingnavmesh.cpp +++ b/indra/newview/llpathfindingnavmesh.cpp @@ -139,7 +139,18 @@ void LLPathfindingNavMesh::handleNavMeshResult(const LLSD &pContent, U32 pNavMes ENavMeshRequestStatus status; if ( pContent.has(NAVMESH_DATA_FIELD) ) { + // ignore dangling reference false positives in gcc13 +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-reference" +#endif + // const LLSD::Binary &value = pContent.get(NAVMESH_DATA_FIELD).asBinary(); + // ignore dangling reference false positives in gcc13 +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic pop +#endif + // unsigned int binSize = value.size(); std::string newStr(reinterpret_cast(&value[0]), binSize); std::istringstream streamdecomp( newStr ); diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index b64171451d..1d93c91a32 100644 --- a/indra/newview/rlvcommon.cpp +++ b/indra/newview/rlvcommon.cpp @@ -490,7 +490,14 @@ void RlvUtil::filterLocation(std::string& strUTF8Text) { // Filter any mention of the surrounding region names LLWorld::region_list_t regions = LLWorld::getInstance()->getRegionList(); +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-reference" +#endif const std::string& strHiddenRegion = RlvStrings::getString(RlvStringKeys::Hidden::Region); +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic pop +#endif for (LLWorld::region_list_t::const_iterator itRegion = regions.begin(); itRegion != regions.end(); ++itRegion) boost::replace_all_regex(strUTF8Text, boost::regex("\\b" + escape_for_regex((*itRegion)->getName()) + "\\b", boost::regex::icase), strHiddenRegion); diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index f3afeb05b9..476e29d05a 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -374,7 +374,14 @@ void RlvHandler::getAttachmentResourcesCoro(const std::string& strUrl) for (LLSD::array_const_iterator itAttachObj = sdAttachObjects.beginArray(), endAttachObj = sdAttachObjects.endArray(); itAttachObj != endAttachObj; ++itAttachObj) { const LLUUID idObj = itAttachObj->get("id").asUUID(); +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdangling-reference" +#endif const std::string& strObjName = itAttachObj->get("name").asStringRef(); +#if defined(__GNUC__) && (__GNUC__ >= 13) +#pragma GCC diagnostic pop +#endif // If it's an attachment, it should be a temporary one (NOTE: we might catch it before it's had a chance to attach) const LLViewerObject* pObj = gObjectList.findObject(idObj); From afca69a93e7a7f53e22952180267a043d2f02877 Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 19 Jul 2024 06:50:22 +0100 Subject: [PATCH 02/21] BOOL to bool --- indra/llwindow/llwindowmacosx.cpp | 2 +- indra/llwindow/llwindowmacosx.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 94e7de333f..98ec86305b 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -1656,7 +1656,7 @@ ECursorType LLWindowMacOSX::getCursor() const // Legacy cursor setting from main program //void LLWindowMacOSX::initCursors() -void LLWindowMacOSX::initCursors(BOOL useLegacyCursors) +void LLWindowMacOSX::initCursors(bool useLegacyCursors) { initPixmapCursor(UI_CURSOR_NO, 8, 8); initPixmapCursor(UI_CURSOR_WORKING, 1, 1); diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index f66b66db1b..e3589603bc 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -159,7 +159,7 @@ protected: ~LLWindowMacOSX(); //void initCursors(); - void initCursors(BOOL useLegacyCursors); // Legacy cursor setting from main program + void initCursors(bool useLegacyCursors); // Legacy cursor setting from main program bool isValid() override; void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size); From b2e4ccbf26efe37baa324c767aea1e43e09d8752 Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 19 Jul 2024 07:03:12 +0100 Subject: [PATCH 03/21] Updated handling of unsupported primitive modes Added a warning message and return false if prim->mMode is not of expected types. --- indra/newview/gltf/primitive.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/indra/newview/gltf/primitive.cpp b/indra/newview/gltf/primitive.cpp index e1579374d4..549c558ff6 100644 --- a/indra/newview/gltf/primitive.cpp +++ b/indra/newview/gltf/primitive.cpp @@ -134,6 +134,13 @@ struct MikktMesh idx[1] = tri_idx + 1; idx[2] = tri_idx + 2; } + // unknown mode leaves idx uninitialised + else + { + LL_WARNS("GLTF") << "Unsupported primitive mode for conversion to triangles: " << (S32) prim->mMode << LL_ENDL; + return false; + } + // if (indexed) { From ec4ad10e1afda4ba1c7bf5f1605e7e78626a1d6d Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 19 Jul 2024 09:51:55 +0100 Subject: [PATCH 04/21] Use the default compiler version on Linux --- .github/workflows/build_viewer.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 48cbc704de..e16b3e970e 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -93,11 +93,11 @@ jobs: with: swap-storage: false - - name: Set gcc version on Linux - if: runner.os == 'Linux' - run: | - echo "CC=gcc-10" >> $GITHUB_ENV - echo "CXX=g++-10" >> $GITHUB_ENV + # - name: Set gcc version on Linux + # if: runner.os == 'Linux' + # run: | + # echo "CC=gcc-10" >> $GITHUB_ENV + # echo "CXX=g++-10" >> $GITHUB_ENV - name: Setup rclone and download the folder From 6f72927d0936bcefc44833d5bc6d7c44517e0603 Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 19 Jul 2024 10:48:01 +0100 Subject: [PATCH 05/21] Try a nasty hack to keep Mac happy --- indra/newview/pipeline.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 83f564c6e3..13b8ba19b2 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -103,7 +103,13 @@ #include "llmutelist.h" #include "lltoolpie.h" #include "llnotifications.h" +// hacky BOOL workaround +#ifndef BOOL +#define BOOL bool +#endif +// #include "llpathinglib.h" +#undef BOOL // hacky BOOL workaround #include "llfloaterpathfindingconsole.h" #include "llfloaterpathfindingcharacters.h" #include "llfloatertools.h" From 2a078c7ba4fe8ec45eb0232dd6d6334666a2bbaa Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 19 Jul 2024 11:32:27 +0100 Subject: [PATCH 06/21] Missing override for pedantic Clang --- indra/newview/llfloaterbump.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h index 7f618aa324..fff4d95280 100644 --- a/indra/newview/llfloaterbump.h +++ b/indra/newview/llfloaterbump.h @@ -49,7 +49,7 @@ public: void onOpen(const LLSD& key) override; // Instant bump list floater update - /*virtual*/ void draw(); + /*virtual*/ void draw() override; void setDirty() { mDirty = true; } static LLFloaterBump* getInstance(); From 5a50d6e5d69a73212152ecea36da83458e4757eb Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 19 Jul 2024 15:57:34 +0100 Subject: [PATCH 07/21] More temporary BOOL hackery until we get a new lib --- indra/newview/llfloaterpathfindingcharacters.cpp | 6 ++++++ indra/newview/llfloaterpathfindingconsole.h | 6 ++++++ indra/newview/llpathfindingmanager.cpp | 6 ++++++ indra/newview/llpathfindingnavmeshzone.cpp | 6 ++++++ indra/newview/llpathfindingpathtool.h | 7 ++++++- 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/indra/newview/llfloaterpathfindingcharacters.cpp b/indra/newview/llfloaterpathfindingcharacters.cpp index 0df0e3c9ec..f4829f0352 100644 --- a/indra/newview/llfloaterpathfindingcharacters.cpp +++ b/indra/newview/llfloaterpathfindingcharacters.cpp @@ -36,12 +36,18 @@ #include "llfloaterreg.h" #include "llfloaterpathfindingobjects.h" #include "llhandle.h" +// hacky BOOL workaround +#ifndef BOOL +#define BOOL bool +#endif +// #include "llpathfindingcharacter.h" #include "llpathfindingcharacterlist.h" #include "llpathfindingmanager.h" #include "llpathfindingobject.h" #include "llpathfindingobjectlist.h" #include "llpathinglib.h" +#undef BOOL // hacky BOOL workaround #include "llquaternion.h" #include "llsd.h" #include "lluicolortable.h" diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h index bcbc94e10e..fe0a9290ca 100644 --- a/indra/newview/llfloaterpathfindingconsole.h +++ b/indra/newview/llfloaterpathfindingconsole.h @@ -33,9 +33,15 @@ #include "llfloater.h" #include "llhandle.h" +// hacky BOOL workaround +#ifndef BOOL +#define BOOL bool +#endif +// #include "llpathfindingnavmeshzone.h" #include "llpathfindingpathtool.h" #include "llpathinglib.h" +#undef BOOL // hacky BOOL workaround #include "v4color.h" class LLButton; diff --git a/indra/newview/llpathfindingmanager.cpp b/indra/newview/llpathfindingmanager.cpp index 5e7bc4fb3b..1eb0072eb6 100644 --- a/indra/newview/llpathfindingmanager.cpp +++ b/indra/newview/llpathfindingmanager.cpp @@ -41,6 +41,11 @@ #include "llagent.h" #include "llhttpnode.h" #include "llnotificationsutil.h" +// hacky BOOL workaround +#ifndef BOOL +#define BOOL bool +#endif +// #include "llpathfindingcharacterlist.h" #include "llpathfindinglinkset.h" #include "llpathfindinglinksetlist.h" @@ -48,6 +53,7 @@ #include "llpathfindingnavmeshstatus.h" #include "llpathfindingobject.h" #include "llpathinglib.h" +#undef BOOL // hacky BOOL workaround #include "llsingleton.h" #include "llsd.h" #include "lltrans.h" diff --git a/indra/newview/llpathfindingnavmeshzone.cpp b/indra/newview/llpathfindingnavmeshzone.cpp index 012cc11eee..8f6da9d545 100644 --- a/indra/newview/llpathfindingnavmeshzone.cpp +++ b/indra/newview/llpathfindingnavmeshzone.cpp @@ -38,10 +38,16 @@ #include #include "llagent.h" +// hacky BOOL workaround +#ifndef BOOL +#define BOOL bool +#endif +// #include "llpathfindingmanager.h" #include "llpathfindingnavmesh.h" #include "llpathfindingnavmeshstatus.h" #include "llpathinglib.h" +#undef BOOL // hacky BOOL workaround #include "llsd.h" #include "lluuid.h" #include "llviewercontrol.h" diff --git a/indra/newview/llpathfindingpathtool.h b/indra/newview/llpathfindingpathtool.h index 248af63cf0..943784909f 100644 --- a/indra/newview/llpathfindingpathtool.h +++ b/indra/newview/llpathfindingpathtool.h @@ -29,8 +29,13 @@ #include #include - +// hacky BOOL workaround +#ifndef BOOL +#define BOOL bool +#endif +// #include "llpathinglib.h" +#undef BOOL // hacky BOOL workaround #include "llsingleton.h" #include "lltool.h" From 7d65940610d5884486abbe12fa21e0ddb1cd0c55 Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 19 Jul 2024 17:28:30 +0100 Subject: [PATCH 08/21] Mac build was failing due to undefined "executable" Take the executable declaration code from upstream --- indra/newview/viewer_manifest.py | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 6ad6235c21..206098044f 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1535,6 +1535,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.path(libfile) oldpath = os.path.join("@rpath", libfile) + executable = self.dst_path_of(self.channel()) self.run_command( ['install_name_tool', '-change', oldpath, '@executable_path/../Resources/%s' % libfile, From 92cf520253b7ca663f9bd0acc5b83b235dd6207e Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 24 Jul 2024 13:41:28 +0100 Subject: [PATCH 09/21] Try to fix the packaging of webrtc on Mac --- indra/newview/viewer_manifest.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 206098044f..43883c8cb2 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1535,11 +1535,9 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.path(libfile) oldpath = os.path.join("@rpath", libfile) - executable = self.dst_path_of(self.channel()) self.run_command( ['install_name_tool', '-change', oldpath, - '@executable_path/../Resources/%s' % libfile, - executable]) + '@executable_path/../Resources/%s' % libfile]) # dylibs is a list of all the .dylib files we expect to need # in our bundled sub-apps. For each of these we'll create a From a2694e8511ce00b87b4f12daacf78d00e96ee369 Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 24 Jul 2024 15:23:06 +0100 Subject: [PATCH 10/21] Try this instead --- indra/newview/viewer_manifest.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 43883c8cb2..11d8aee586 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1535,9 +1535,11 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.path(libfile) oldpath = os.path.join("@rpath", libfile) + executable = self.dst_path_of("Firestorm.app") self.run_command( - ['install_name_tool', '-change', oldpath, - '@executable_path/../Resources/%s' % libfile]) + ['install_name_tool', '-change', + oldpath, + '@executable_path/../Resources/%s' % libfile, executable]) # dylibs is a list of all the .dylib files we expect to need # in our bundled sub-apps. For each of these we'll create a From baee0a8e0772d6c7536b3416f02ba63cc90b36e2 Mon Sep 17 00:00:00 2001 From: Beq Date: Wed, 24 Jul 2024 17:46:26 +0100 Subject: [PATCH 11/21] Running out of ideas --- 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 11d8aee586..edf692e9cb 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1535,7 +1535,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.path(libfile) oldpath = os.path.join("@rpath", libfile) - executable = self.dst_path_of("Firestorm.app") + executable = self.dst_path_of(libfile) self.run_command( ['install_name_tool', '-change', oldpath, From eeba1c7f66c5884ad821f72b52535906907c7ab9 Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 25 Jul 2024 21:19:51 +0100 Subject: [PATCH 12/21] Add missing subdir, suggested by Melodey --- 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 edf692e9cb..10c473045a 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1539,7 +1539,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.run_command( ['install_name_tool', '-change', oldpath, - '@executable_path/../Resources/%s' % libfile, executable]) + '@executable_path/../Contents/Resources/%s' % libfile, executable]) # dylibs is a list of all the .dylib files we expect to need # in our bundled sub-apps. For each of these we'll create a From 4ac9016a3acdd0f8f921b6bdf50665a716dc4828 Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 26 Jul 2024 14:30:02 +0100 Subject: [PATCH 13/21] Another tweak to get webrtc in the right place --- 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 10c473045a..253f2884dc 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1539,7 +1539,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.run_command( ['install_name_tool', '-change', oldpath, - '@executable_path/../Contents/Resources/%s' % libfile, executable]) + '@executable_path/../Contents/Frameworks/%s' % libfile, executable]) # dylibs is a list of all the .dylib files we expect to need # in our bundled sub-apps. For each of these we'll create a From b33b06e133decb4a4e8193996e3cdb5e30606320 Mon Sep 17 00:00:00 2001 From: Beq Date: Fri, 26 Jul 2024 14:31:24 +0100 Subject: [PATCH 14/21] Make version identification clearer for support teams --- indra/newview/fsfloaterim.cpp | 33 +++++++++++++++++++++++++-- indra/newview/llversioninfo.cpp | 40 +++++++++++++++++++++++++++++++++ indra/newview/llversioninfo.h | 14 ++++++++++++ 3 files changed, 85 insertions(+), 2 deletions(-) diff --git a/indra/newview/fsfloaterim.cpp b/indra/newview/fsfloaterim.cpp index d66c9b5961..fc176e3dc0 100644 --- a/indra/newview/fsfloaterim.cpp +++ b/indra/newview/fsfloaterim.cpp @@ -471,13 +471,42 @@ void FSFloaterIM::sendMsgFromInputEditor(EChatType type) if (FSData::getInstance()->isTestingGroup(mSessionID)) { if(chat_prefix_testing) - utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getBuildVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") ")); + { + auto viewer_maturity = LLVersionInfo::getInstance()->getFSViewerMaturity(); + if( viewer_maturity == LLVersionInfo::FSViewerMaturity::RELEASE_VIEWER ) + { + utf8_text.insert(insert_pos, "(Release) "); + } + else if( viewer_maturity == LLVersionInfo::FSViewerMaturity::UNOFFICIAL_VIEWER ) + { + utf8_text.insert(insert_pos, "(Unofficial) "); + } + else // In testing groups we'll allow all non-release recognised channels. + { + utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getBuildVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") ")); + } + } + } //For release support groups, only display the short version(Major.Minor.Patch) since chat can speed by. This makes it easier on Support's eyes. else if(FSData::getInstance()->isSupportGroup(mSessionID)) { if(chat_prefix_support) - utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getShortVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") ")); + { + auto viewer_maturity = LLVersionInfo::getInstance()->getFSViewerMaturity(); + if( viewer_maturity == LLVersionInfo::FSViewerMaturity::UNOFFICIAL_VIEWER ) + { + utf8_text.insert(insert_pos, "(Unofficial) "); + } + else if( viewer_maturity != LLVersionInfo::FSViewerMaturity::RELEASE_VIEWER ) + { + utf8_text.insert(insert_pos, "(pre-Release) "); + } + else + { + utf8_text.insert(insert_pos, ("(" + str_address_size_tag + str_operating_system_tag + " " + LLVersionInfo::getInstance()->getShortVersion() + skin_indicator + str_viewer_mode + str_rlv_enabled + str_opensim_tag + ") ")); + } + } } } diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 36228ad91b..577dc55f5a 100644 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -211,7 +211,47 @@ LLVersionInfo::ViewerMaturity LLVersionInfo::getViewerMaturity() } return maturity; } +// Add FS specific maturity grading +LLVersionInfo::FSViewerMaturity LLVersionInfo::getFSViewerMaturity() +{ + FSViewerMaturity maturity; + std::string channel = getChannel(); + + + static const boost::regex is_manual_channel("\\bManualx64\\b"); + static const boost::regex is_beta_channel("\\bBetax64\\b"); + static const boost::regex is_alpha_channel("\\bAlphax64\\b"); + static const boost::regex is_release_channel("\\bReleasex64\\b"); + static const boost::regex is_nightly_channel("\\bNightlyx64\\b"); + + if (ll_regex_search(channel, is_release_channel)) + { + maturity = FSViewerMaturity::RELEASE_VIEWER; + } + else if (ll_regex_search(channel, is_beta_channel)) + { + maturity = FSViewerMaturity::BETA_VIEWER; + } + else if (ll_regex_search(channel, is_alpha_channel)) + { + maturity = FSViewerMaturity::ALPHA_VIEWER; + } + else if (ll_regex_search(channel, is_manual_channel)) + { + maturity = FSViewerMaturity::MANUAL_VIEWER; + } + else if (ll_regex_search(channel, is_nightly_channel)) + { + maturity = FSViewerMaturity::NIGHTLY_VIEWER; + } + else + { + maturity = FSViewerMaturity::UNOFFICIAL_VIEWER; + } + return maturity; +} +// std::string LLVersionInfo::getReleaseNotes() { return mReleaseNotes; diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 3830e45f48..99bf255f74 100644 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -109,6 +109,20 @@ public: } ViewerMaturity; ViewerMaturity getViewerMaturity(); +// Add an FS specific viewer maturity enum + using FSViewerMaturity = + enum class FSViewerMaturityEnum + { + UNOFFICIAL_VIEWER=0, + ALPHA_VIEWER, + MANUAL_VIEWER, + BETA_VIEWER, + NIGHTLY_VIEWER, + RELEASE_VIEWER, + }; + FSViewerMaturity getFSViewerMaturity(); +// + /// get the release-notes URL, once it becomes available -- until then, /// return empty string std::string getReleaseNotes(); From fff95dc0e87c62ee8ca15c69da800f9ca96e12c1 Mon Sep 17 00:00:00 2001 From: MelodyOwo Date: Fri, 26 Jul 2024 18:08:09 -0400 Subject: [PATCH 15/21] Make Clang Happier --- indra/newview/llfloateravatar.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h index b1b504a0ba..6d9a4b1a5a 100644 --- a/indra/newview/llfloateravatar.h +++ b/indra/newview/llfloateravatar.h @@ -43,7 +43,7 @@ private: LLMediaCtrl* mAvatarPicker; // Avatar chooser does not change between OpenSim grids - /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void onOpen(const LLSD& key) override; void handleUrlChanged(const std::string& url); boost::signals2::connection mAvatarPickerUrlChangedSignal; From 96b8a9ec52146d2d80ae030a3040cc0ed9b9b9b9 Mon Sep 17 00:00:00 2001 From: Beq Date: Sat, 27 Jul 2024 05:55:35 +0100 Subject: [PATCH 16/21] Modify Firestorm.app embedded path. Based on `http://qin.laya.com/tech_coding_help/dylib_linking.html` (thanks Brad) In the past, I tried this, but I think it failed to find the executable. Given that the change needs to be made to the executable, this should have worked. Trying again, but this time with Contents folder in the right place. --- 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 253f2884dc..e0c0061c4e 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1535,7 +1535,8 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.path(libfile) oldpath = os.path.join("@rpath", libfile) - executable = self.dst_path_of(libfile) + executable = self.dst_path_of("Firestorm.app") + print(f"debug: oldpath={oldpath} executable={executable} libfile={libfile}") self.run_command( ['install_name_tool', '-change', oldpath, From 612c91ade9b440edd79bed2ae57cdff4c2b94985 Mon Sep 17 00:00:00 2001 From: Beq Date: Sat, 27 Jul 2024 08:13:14 +0100 Subject: [PATCH 17/21] mac packaging: exit loop cleanly on hdi detach success --- indra/newview/viewer_manifest.py | 1 + 1 file changed, 1 insertion(+) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index e0c0061c4e..30db674798 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1954,6 +1954,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): for tries in range(10): try: self.run_command(['hdiutil', 'detach', '-force', devfile]) + break # Exit loop if detach worked except ManifestError as err: print(f"detach failed on attempt {tries}") time.sleep(1) From 8de3e13e5350af7d3facff635af6f72d0bd95138 Mon Sep 17 00:00:00 2001 From: Beq Date: Sat, 27 Jul 2024 12:02:14 +0100 Subject: [PATCH 18/21] Try setting executable to reference Contents/MacOS --- indra/newview/viewer_manifest.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 30db674798..970c277648 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1425,6 +1425,9 @@ class Darwin_x86_64_Manifest(ViewerManifest): idnadir = os.path.join(pkgdir, "lib", "python", "idna") with self.prefix(src="", dst="Contents"): # everything goes in Contents + with self.prefix(dst="MacOS"): + executable = self.dst_path_of("Firestorm.app") # locate the executable within the bundle. + bugsplat_db = self.args.get('bugsplat') print(f"debug: bugsplat_db={bugsplat_db}") if bugsplat_db: @@ -1535,7 +1538,6 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.path(libfile) oldpath = os.path.join("@rpath", libfile) - executable = self.dst_path_of("Firestorm.app") print(f"debug: oldpath={oldpath} executable={executable} libfile={libfile}") self.run_command( ['install_name_tool', '-change', From 665d99934d44a53497731a6c12f650a03965af0b Mon Sep 17 00:00:00 2001 From: Beq Date: Sat, 27 Jul 2024 14:51:15 +0100 Subject: [PATCH 19/21] Firestorm not Firestorm.app and revert to Resources as per LL --- 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 970c277648..0c00b36944 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1426,7 +1426,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): with self.prefix(src="", dst="Contents"): # everything goes in Contents with self.prefix(dst="MacOS"): - executable = self.dst_path_of("Firestorm.app") # locate the executable within the bundle. + executable = self.dst_path_of("Firestorm") # locate the executable within the bundle. bugsplat_db = self.args.get('bugsplat') print(f"debug: bugsplat_db={bugsplat_db}") From 21d6248a8cfc4136fae654a230ff863e953f9e3d Mon Sep 17 00:00:00 2001 From: Beq Date: Sat, 27 Jul 2024 18:14:11 +0100 Subject: [PATCH 20/21] Now we have the right binary, get the lib from the right place. --- 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 0c00b36944..1701be232b 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1542,7 +1542,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.run_command( ['install_name_tool', '-change', oldpath, - '@executable_path/../Contents/Frameworks/%s' % libfile, executable]) + '@executable_path/../Contents/Resources/%s' % libfile, executable]) # dylibs is a list of all the .dylib files we expect to need # in our bundled sub-apps. For each of these we'll create a From 80730d097a4b4e3f30f9fd008cb2c5107238fe8d Mon Sep 17 00:00:00 2001 From: Beq Date: Sat, 27 Jul 2024 20:24:28 +0100 Subject: [PATCH 21/21] Fix: Off by one level --- 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 1701be232b..2727dff1d6 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1542,7 +1542,7 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.run_command( ['install_name_tool', '-change', oldpath, - '@executable_path/../Contents/Resources/%s' % libfile, executable]) + '@executable_path/../Resources/%s' % libfile, executable]) # dylibs is a list of all the .dylib files we expect to need # in our bundled sub-apps. For each of these we'll create a