diff options
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llappcorehttp.cpp | 3 | ||||
-rw-r--r-- | indra/newview/llappviewer.cpp | 13 | ||||
-rw-r--r-- | indra/newview/llfasttimerview.cpp | 4 | ||||
-rw-r--r-- | indra/newview/lllogininstance.cpp | 145 | ||||
-rw-r--r-- | indra/newview/lllogininstance.h | 1 | ||||
-rw-r--r-- | indra/newview/llviewerstats.h | 86 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 333 | ||||
-rw-r--r-- | indra/newview/tests/lllogininstance_test.cpp | 14 | ||||
-rwxr-xr-x | indra/newview/viewer_manifest.py | 13 |
9 files changed, 150 insertions, 462 deletions
diff --git a/indra/newview/llappcorehttp.cpp b/indra/newview/llappcorehttp.cpp index c1f898284a..261a7b5ad9 100644 --- a/indra/newview/llappcorehttp.cpp +++ b/indra/newview/llappcorehttp.cpp @@ -39,6 +39,7 @@ #include <curl/curl.h> #include "llcorehttputil.h" +#include "httpstats.h" // Here is where we begin to get our connection usage under control. // This establishes llcorehttp policy classes that, among other @@ -313,6 +314,8 @@ void LLAppCoreHttp::requestStop() void LLAppCoreHttp::cleanup() { + LLCore::HTTPStats::instance().dumpStats(); + if (LLCORE_HTTP_HANDLE_INVALID == mStopHandle) { // Should have been started already... diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 251c5eb4b1..b6f705f21a 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1101,6 +1101,19 @@ bool LLAppViewer::init() } } + char* PARENT = getenv("PARENT"); + if (! (PARENT && std::string(PARENT) == "SL_Launcher")) + { + // Don't directly run this executable. Please run the launcher, which + // will run the viewer itself. + // Naturally we do not consider this bulletproof. The point is to + // gently remind a user who *inadvertently* finds him/herself in this + // situation to do things the Right Way. Anyone who intentionally + // bypasses this mechanism needs no reminder that s/he's shooting + // him/herself in the foot. + LLNotificationsUtil::add("RunLauncher"); + } + #if LL_WINDOWS if (gGLManager.mGLVersion < LLFeatureManager::getInstance()->getExpectedGLVersion()) { diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index a69b3b7dc7..91501ccb1f 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -796,13 +796,13 @@ LLSD LLFastTimerView::analyzePerformanceLogDefault(std::istream& is) for(stats_map_t::iterator it = time_stats.begin(); it != time_stats.end(); ++it) { std::string label = it->first; - ret[label]["TotalTime"] = time_stats[label].mSum; + ret[label]["TotalTime"] = time_stats[label].getSum(); ret[label]["MeanTime"] = time_stats[label].getMean(); ret[label]["MaxTime"] = time_stats[label].getMaxValue(); ret[label]["MinTime"] = time_stats[label].getMinValue(); ret[label]["StdDevTime"] = time_stats[label].getStdDev(); - ret[label]["Samples"] = sample_stats[label].mSum; + ret[label]["Samples"] = sample_stats[label].getSum(); ret[label]["MaxSamples"] = sample_stats[label].getMaxValue(); ret[label]["MinSamples"] = sample_stats[label].getMinValue(); ret[label]["StdDevSamples"] = sample_stats[label].getStdDev(); diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 229703bb39..54459342a7 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -31,6 +31,7 @@ // llcommon #include "llevents.h" #include "stringize.h" +#include "llsdserialize.h" // llmessage (!) #include "llfiltersd2xmlrpc.h" // for xml_escape_string() @@ -47,12 +48,10 @@ #include "llstartup.h" #include "llfloaterreg.h" #include "llnotifications.h" +#include "llnotificationsutil.h" #include "llwindow.h" #include "llviewerwindow.h" #include "llprogressview.h" -#if LL_LINUX -#include "lltrans.h" -#endif #include "llsecapi.h" #include "llstartup.h" #include "llmachineid.h" @@ -250,63 +249,90 @@ bool LLLoginInstance::handleLoginEvent(const LLSD& event) void LLLoginInstance::handleLoginFailure(const LLSD& event) { - - - // Login has failed. - // Figure out why and respond... - LLSD response = event["data"]; - std::string reason_response = response["reason"].asString(); - std::string message_response = response["message"].asString(); - // For the cases of critical message or TOS agreement, - // start the TOS dialog. The dialog response will be handled - // by the LLLoginInstance::handleTOSResponse() callback. - // The callback intiates the login attempt next step, either - // to reconnect or to end the attempt in failure. - if(reason_response == "tos") - { - LL_INFOS() << "LLLoginInstance::handleLoginFailure ToS" << LL_ENDL; - - LLSD data(LLSD::emptyMap()); - data["message"] = message_response; - data["reply_pump"] = TOS_REPLY_PUMP; - if (gViewerWindow) - gViewerWindow->setShowProgress(FALSE); - LLFloaterReg::showInstance("message_tos", data); - LLEventPumps::instance().obtain(TOS_REPLY_PUMP) - .listen(TOS_LISTENER_NAME, - boost::bind(&LLLoginInstance::handleTOSResponse, - this, _1, "agree_to_tos")); - } - else if(reason_response == "critical") - { - LL_INFOS() << "LLLoginInstance::handleLoginFailure Crit" << LL_ENDL; + // Login has failed. + // Figure out why and respond... + LLSD response = event["data"]; + std::string reason_response = response["reason"].asString(); + std::string message_response = response["message"].asString(); + // For the cases of critical message or TOS agreement, + // start the TOS dialog. The dialog response will be handled + // by the LLLoginInstance::handleTOSResponse() callback. + // The callback intiates the login attempt next step, either + // to reconnect or to end the attempt in failure. + if(reason_response == "tos") + { + LL_INFOS() << "LLLoginInstance::handleLoginFailure ToS" << LL_ENDL; + + LLSD data(LLSD::emptyMap()); + data["message"] = message_response; + data["reply_pump"] = TOS_REPLY_PUMP; + if (gViewerWindow) + gViewerWindow->setShowProgress(FALSE); + LLFloaterReg::showInstance("message_tos", data); + LLEventPumps::instance().obtain(TOS_REPLY_PUMP) + .listen(TOS_LISTENER_NAME, + boost::bind(&LLLoginInstance::handleTOSResponse, + this, _1, "agree_to_tos")); + } + else if(reason_response == "critical") + { + LL_INFOS() << "LLLoginInstance::handleLoginFailure Crit" << LL_ENDL; + + LLSD data(LLSD::emptyMap()); + data["message"] = message_response; + data["reply_pump"] = TOS_REPLY_PUMP; + if(response.has("error_code")) + { + data["error_code"] = response["error_code"]; + } + if(response.has("certificate")) + { + data["certificate"] = response["certificate"]; + } + + if (gViewerWindow) + gViewerWindow->setShowProgress(FALSE); + + LLFloaterReg::showInstance("message_critical", data); + LLEventPumps::instance().obtain(TOS_REPLY_PUMP) + .listen(TOS_LISTENER_NAME, + boost::bind(&LLLoginInstance::handleTOSResponse, + this, _1, "read_critical")); + } + else if(reason_response == "update") + { + // This shouldn't happen - the viewer manager should have forced an update; + // possibly the user ran the viewer directly and bypassed the update check + std::string required_version = response["message_args"]["VERSION"]; + LL_WARNS() << "Login failed because an update to version " << required_version << " is required." << LL_ENDL; + + if (gViewerWindow) + gViewerWindow->setShowProgress(FALSE); + + LLSD data(LLSD::emptyMap()); + data["VERSION"] = required_version; + LLNotificationsUtil::add("RequiredUpdate", data, LLSD::emptyMap(), boost::bind(&LLLoginInstance::handleLoginDisallowed, this, _1, _2)); + } + else if(reason_response == "key") + { + // this is a password problem or other restriction + // an appropriate message has already been displayed + attemptComplete(); + } + else + { + LL_WARNS() << "Login failed for an unknown reason: " << LLSDOStreamer<LLSDNotationFormatter>(response) << LL_ENDL; + + if (gViewerWindow) + gViewerWindow->setShowProgress(FALSE); + + LLNotificationsUtil::add("LoginFailedUnknown", LLSD::emptyMap(), LLSD::emptyMap(), boost::bind(&LLLoginInstance::handleLoginDisallowed, this, _1, _2)); + } +} - LLSD data(LLSD::emptyMap()); - data["message"] = message_response; - data["reply_pump"] = TOS_REPLY_PUMP; - if(response.has("error_code")) - { - data["error_code"] = response["error_code"]; - } - if(response.has("certificate")) - { - data["certificate"] = response["certificate"]; - } - - if (gViewerWindow) - gViewerWindow->setShowProgress(FALSE); - - LLFloaterReg::showInstance("message_critical", data); - LLEventPumps::instance().obtain(TOS_REPLY_PUMP) - .listen(TOS_LISTENER_NAME, - boost::bind(&LLLoginInstance::handleTOSResponse, - this, _1, "read_critical")); - } - else - { - LL_INFOS() << "LLLoginInstance::handleLoginFailure attemptComplete" << LL_ENDL; - attemptComplete(); - } +void LLLoginInstance::handleLoginDisallowed(const LLSD& notification, const LLSD& response) +{ + attemptComplete(); } void LLLoginInstance::handleLoginSuccess(const LLSD& event) @@ -363,6 +389,7 @@ bool LLLoginInstance::handleTOSResponse(bool accepted, const std::string& key) return true; } + std::string construct_start_string() { std::string start; diff --git a/indra/newview/lllogininstance.h b/indra/newview/lllogininstance.h index 67d0f01ba6..f53c02c6e1 100644 --- a/indra/newview/lllogininstance.h +++ b/indra/newview/lllogininstance.h @@ -77,6 +77,7 @@ private: void handleLoginSuccess(const LLSD& event); void handleDisconnect(const LLSD& event); void handleIndeterminate(const LLSD& event); + void handleLoginDisallowed(const LLSD& notification, const LLSD& response); bool handleTOSResponse(bool v, const std::string& key); diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 97a060d95e..d8d92d61d3 100644 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h @@ -30,7 +30,7 @@ #include "lltextureinfo.h" #include "lltracerecording.h" #include "lltrace.h" - +#include "llstatsaccumulator.h" enum ESimStatID { @@ -256,89 +256,9 @@ public: void addToMessage(LLSD &body); - struct StatsAccumulator - { - S32 mCount; - F32 mSum; - F32 mSumOfSquares; - F32 mMinValue; - F32 mMaxValue; - U32 mCountOfNextUpdatesToIgnore; - - inline StatsAccumulator() - { - reset(); - } - - inline void push( F32 val ) - { - if ( mCountOfNextUpdatesToIgnore > 0 ) - { - mCountOfNextUpdatesToIgnore--; - return; - } - - mCount++; - mSum += val; - mSumOfSquares += val * val; - if (mCount == 1 || val > mMaxValue) - { - mMaxValue = val; - } - if (mCount == 1 || val < mMinValue) - { - mMinValue = val; - } - } - - inline F32 getMean() const - { - return (mCount == 0) ? 0.f : ((F32)mSum)/mCount; - } - - inline F32 getMinValue() const - { - return mMinValue; - } - - inline F32 getMaxValue() const - { - return mMaxValue; - } - - inline F32 getStdDev() const - { - const F32 mean = getMean(); - return (mCount < 2) ? 0.f : sqrt(llmax(0.f,mSumOfSquares/mCount - (mean * mean))); - } - - inline U32 getCount() const - { - return mCount; - } - - inline void reset() - { - mCount = 0; - mSum = mSumOfSquares = 0.f; - mMinValue = 0.0f; - mMaxValue = 0.0f; - mCountOfNextUpdatesToIgnore = 0; - } - - inline LLSD asLLSD() const - { - LLSD data; - data["mean"] = getMean(); - data["std_dev"] = getStdDev(); - data["count"] = (S32)mCount; - data["min"] = getMinValue(); - data["max"] = getMaxValue(); - return data; - } - }; + typedef LLStatsAccumulator StatsAccumulator; - // Phase tracking (originally put in for avatar rezzing), tracking + // Phase tracking (originally put in for avatar rezzing), tracking // progress of active/completed phases for activities like outfit changing. typedef std::map<std::string,LLTimer> phase_map_t; typedef std::map<std::string,StatsAccumulator> phase_stats_t; diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 4db272ba3f..3f39ea36f3 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1760,6 +1760,13 @@ Visit [_URL] for more information? <notification icon="alertmodal.tga" + name="RunLauncher" + type="alertmodal"> + Please do not directly run the viewer executable. Update any existing shortcuts to run SL_Launcher instead. + </notification> + + <notification + icon="alertmodal.tga" name="OldGPUDriver" type="alertmodal"> There is likely a newer driver for your graphics chip. Updating graphics drivers can substantially improve performance. @@ -3826,337 +3833,27 @@ Finished download of raw terrain file to: <notification icon="alertmodal.tga" - name="DownloadWindowsMandatory" - type="alertmodal"> -A new version of [APP_NAME] is available. -[MESSAGE] -You must download this update to use [APP_NAME]. - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Quit" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadWindows" - type="alertmodal"> -An updated version of [APP_NAME] is available. -[MESSAGE] -This update is not required, but we suggest you install it to improve performance and stability. - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Continue" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadWindowsReleaseForDownload" - type="alertmodal"> -An updated version of [APP_NAME] is available. -[MESSAGE] -This update is not required, but we suggest you install it to improve performance and stability. - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Continue" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadLinuxMandatory" - type="alertmodal"> -A new version of [APP_NAME] is available. -[MESSAGE] -You must download this update to use [APP_NAME]. - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Quit" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadLinux" - type="alertmodal"> -An updated version of [APP_NAME] is available. -[MESSAGE] -This update is not required, but we suggest you install it to improve performance and stability. - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Continue" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadLinuxReleaseForDownload" - type="alertmodal"> -An updated version of [APP_NAME] is available. -[MESSAGE] -This update is not required, but we suggest you install it to improve performance and stability. - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Continue" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadMacMandatory" + name="RequiredUpdate" type="alertmodal"> -A new version of [APP_NAME] is available. -[MESSAGE] -You must download this update to use [APP_NAME]. - -Download to your Applications folder? +Version [VERSION] is required for login. +This should have been updated for you but apparently was not. +Please download from https://secondlife.com/support/downloads/ <tag>confirm</tag> <usetemplate - name="okcancelbuttons" - notext="Quit" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadMac" - type="alertmodal"> -An updated version of [APP_NAME] is available. -[MESSAGE] -This update is not required, but we suggest you install it to improve performance and stability. - -Download to your Applications folder? - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Continue" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadMacReleaseForDownload" - type="alertmodal"> -An updated version of [APP_NAME] is available. -[MESSAGE] -This update is not required, but we suggest you install it to improve performance and stability. - -Download to your Applications folder? - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Continue" - yestext="Download"/> - </notification> - - <notification - icon="alertmodal.tga" - name="FailedUpdateInstall" - type="alertmodal"> -An error occurred installing the viewer update. -Please download and install the latest viewer from -http://secondlife.com/download. - <usetemplate name="okbutton" yestext="OK"/> </notification> <notification icon="alertmodal.tga" - name="FailedRequiredUpdateInstall" - type="alertmodal"> -We were unable to install a required update. -You will be unable to log in until [APP_NAME] has been updated. - -Please download and install the latest viewer from -http://secondlife.com/download. - <tag>fail</tag> - <usetemplate - name="okbutton" - yestext="Quit"/> - </notification> - - <notification - icon="alertmodal.tga" - name="UpdaterServiceNotRunning" + name="LoginFailedUnknown" type="alertmodal"> -There is a required update for your Second Life Installation. - -You may download this update from http://www.secondlife.com/downloads -or you can install it now. - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Quit Second Life" - yestext="Download and install now"/> - </notification> - - <notification - icon="notify.tga" - name="DownloadBackgroundTip" - type="notify"> -We have downloaded an update to your [APP_NAME] installation. -Version [VERSION] [[INFO_URL] Information about this update] - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Later..." - yestext="Install now and restart [APP_NAME]"/> - </notification> - - <notification - icon="alertmodal.tga" - name="DownloadBackgroundDialog" - type="alertmodal"> -We have downloaded an update to your [APP_NAME] installation. - Version [VERSION] [[INFO_URL] Information about this update] - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Later..." - yestext="Install now and restart [APP_NAME]"/> - </notification> - - <notification - icon="alertmodal.tga" - name="RequiredUpdateDownloadedVerboseDialog" - type="alertmodal" - force_urls_external="true"> -We have downloaded a required software update. -Version [VERSION] [[INFO_URL] Information about this update] - -We must restart [APP_NAME] to install the update. - <tag>confirm</tag> - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="RequiredUpdateDownloadedDialog" - type="alertmodal" - force_urls_external="true"> -We must restart [APP_NAME] to install the update. -[[INFO_URL] Information about this update] - <tag>confirm</tag> - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="notify.tga" - name="OtherChannelDownloadBackgroundTip" - type="notify"> -We have downloaded an update to your [APP_NAME] installation. -Version [VERSION] -This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; -see [[INFO_URL] for details about this update] - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Later..." - yestext="Install now and restart [APP_NAME]"/> - </notification> - - <notification - icon="alertmodal.tga" - name="OtherChannelDownloadBackgroundDialog" - type="alertmodal"> -We have downloaded an update to your [APP_NAME] installation. -Version [VERSION] -This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; -see [[INFO_URL] Information about this update] - <tag>confirm</tag> - <usetemplate - name="okcancelbuttons" - notext="Later..." - yestext="Install now and restart [APP_NAME]"/> - </notification> - - <notification - icon="alertmodal.tga" - name="OtherChannelRequiredUpdateDownloadedVerboseDialog" - type="alertmodal" - force_urls_external="true"> -We have downloaded a required software update. -Version [VERSION] -This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; -see [[INFO_URL] Information about this update] - -We must restart [APP_NAME] to install the update. - <tag>confirm</tag> - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="OtherChannelRequiredUpdateDownloadedDialog" - type="alertmodal" - force_urls_external="true"> -We must restart [APP_NAME] to install the update. -This experimental viewer has been replaced by a [NEW_CHANNEL] viewer; -see [[INFO_URL] Information about this update] - <tag>confirm</tag> - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="UpdateDownloadInProgress" - type="alertmodal"> -An update is available! -It's downloading in the background and we will prompt you to restart your viewer to finish installing it as soon as it's ready. - <tag>confirm</tag> - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="UpdateDownloadComplete" - type="alertmodal"> -An update was downloaded. It will be installed during restart. - <tag>confirm</tag> - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="UpdateDeferred" - type="alertmodal"> -An update was downloaded that you previously chose to skip or defer to the next start up. - <tag>confirm</tag> - <usetemplate - name="okbutton" - yestext="OK"/> - </notification> - - <notification - icon="alertmodal.tga" - name="UpdateViewerUpToDate" - type="alertmodal"> -Your viewer is up to date! -If you can't wait to try out the latest features and fixes, check out the Alternate Viewers page. http://wiki.secondlife.com/wiki/Linden_Lab_Official:Alternate_Viewers. +Sorry, login failed for an unrecognized reason. +If you continue to get this message, please check the [SUPPORT_SITE]. <tag>confirm</tag> <usetemplate name="okbutton" - yestext="OK"/> + yestext="Quit"/> </notification> <notification diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index 3b7ec48d61..85a117a96b 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -40,6 +40,7 @@ // other Linden headers #include "../test/lltut.h" #include "llevents.h" +#include "llnotificationsutil.h" #if defined(LL_WINDOWS) #pragma warning(disable: 4355) // using 'this' in base-class ctor initializer expr @@ -112,6 +113,19 @@ void LLCredential::authenticatorType(std::string &idType) { } +LLNotificationPtr LLNotificationsUtil::add(const std::string& name, + const LLSD& substitutions, + const LLSD& payload, + boost::function<void (const LLSD&, const LLSD&)> functor) +{ + return LLNotificationPtr((LLNotification*)NULL); +} + +LLNotificationPtr LLNotificationsUtil::add(const std::string& name, const LLSD& args) +{ + return LLNotificationPtr((LLNotification*)NULL); +} + //----------------------------------------------------------------------------- #include "../llviewernetwork.h" LLGridManager::~LLGridManager() diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 2d88fe7dce..d734106a9d 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1192,6 +1192,18 @@ class DarwinManifest(ViewerManifest): 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' self.run_command('security unlock-keychain -p "%s" "%s/Library/Keychains/viewer.keychain"' % ( keychain_pwd, home_path ) ) signed=False sign_attempts=3 @@ -1200,6 +1212,7 @@ class DarwinManifest(ViewerManifest): try: sign_attempts-=1; self.run_command( + # Note: See blurb above about names of keychains 'codesign --verbose --deep --force --keychain "%(home_path)s/Library/Keychains/viewer.keychain" --sign %(identity)r %(bundle)r' % { 'home_path' : home_path, 'identity': identity, |