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 diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h index f943cfc81d..e66ff5a292 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/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); 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/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) { 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; 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(); 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/llpathfindingnavmesh.cpp b/indra/newview/llpathfindingnavmesh.cpp index c9fbeba2f3..a0d999645c 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 + // auto binSize = value.size(); std::string newStr(reinterpret_cast(&value[0]), binSize); std::istringstream streamdecomp( newStr ); 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" 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(); 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" diff --git a/indra/newview/rlvcommon.cpp b/indra/newview/rlvcommon.cpp index 615c1932b0..1057907f00 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 2f73e001e2..aeabda1ae4 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); diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 6ad6235c21..2727dff1d6 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") # locate the executable within the bundle. + bugsplat_db = self.args.get('bugsplat') print(f"debug: bugsplat_db={bugsplat_db}") if bugsplat_db: @@ -1535,10 +1538,11 @@ class Darwin_x86_64_Manifest(ViewerManifest): self.path(libfile) oldpath = os.path.join("@rpath", libfile) + print(f"debug: oldpath={oldpath} executable={executable} libfile={libfile}") self.run_command( - ['install_name_tool', '-change', oldpath, - '@executable_path/../Resources/%s' % libfile, - executable]) + ['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 @@ -1952,6 +1956,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)