From a7c424fc68e5a3245efdcb4f01056f44bf5d6078 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 27 Jan 2015 12:08:46 -0500 Subject: [PATCH] Fix remaining issues with new packaging system (mostly Linux) Thanks to Duncan Armundsen and Damian Zhaoying for the pointers (merges slightly with alchemy) --- indra/llvfs/lldir_linux.cpp | 11 ++++++---- indra/llvfs/lldir_win32.cpp | 19 +++++------------- .../linux_tools/client-readme-joystick.txt | 2 +- .../linux_tools/client-readme-voice.txt | 20 ++++++------------- indra/newview/linux_tools/client-readme.txt | 10 +++++----- .../handle_secondlifeprotocol.sh.in | 2 +- indra/newview/linux_tools/install.sh.in | 2 +- .../refresh_desktop_app_entry.sh.in | 2 +- indra/newview/linux_tools/wrapper.sh.in | 10 +++++----- indra/newview/viewer_manifest.py | 6 +++--- 10 files changed, 35 insertions(+), 49 deletions(-) diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp index e3090d8c5..7139cf95d 100644 --- a/indra/llvfs/lldir_linux.cpp +++ b/indra/llvfs/lldir_linux.cpp @@ -93,15 +93,18 @@ LLDir_Linux::LLDir_Linux() #else mAppRODataDir = tmp_str; #endif - std::string::size_type build_dir_pos = mExecutableDir.rfind("/indra/viewer-linux-"); + std::string::size_type build_dir_pos = mExecutableDir.rfind("/build-linux-"); if (build_dir_pos != std::string::npos) { // ...we're in a dev checkout mSkinBaseDir = mExecutableDir.substr(0, build_dir_pos) + "/indra/newview/skins"; - llinfos << "Running in dev checkout with mSkinBaseDir " - << mSkinBaseDir << llendl; + if (LLFile::isdir(mSkinBaseDir)) + llinfos << "Running in dev checkout with mSkinBaseDir " + << mSkinBaseDir << LL_ENDL; + else + mSkinBaseDir = ""; } - else + if (mSkinBaseDir.empty()) { // ...normal installation running mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins"; diff --git a/indra/llvfs/lldir_win32.cpp b/indra/llvfs/lldir_win32.cpp index 9a580d50f..6aaa5126d 100644 --- a/indra/llvfs/lldir_win32.cpp +++ b/indra/llvfs/lldir_win32.cpp @@ -130,7 +130,7 @@ LLDir_Win32::LLDir_Win32() { w_str[size] = '\0'; mExecutablePathAndName = utf16str_to_utf8str(llutf16string(w_str)); - S32 path_end = mExecutablePathAndName.find_last_of('\\'); + size_t path_end = mExecutablePathAndName.find_last_of('\\'); if (path_end != std::string::npos) { mExecutableDir = mExecutablePathAndName.substr(0, path_end); @@ -156,6 +156,8 @@ LLDir_Win32::LLDir_Win32() mAppRODataDir = mWorkingDir; +// if (mExecutableDir.find("indra") == std::string::npos) + // *NOTE:Mani - It is a mistake to put viewer specific code in // the LLDir implementation. The references to 'skins' and // 'llplugin' need to go somewhere else. @@ -168,20 +170,9 @@ LLDir_Win32::LLDir_Win32() mAppRODataDir = mExecutableDir; } - llinfos << "mAppRODataDir = " << mAppRODataDir << llendl; +// LL_INFOS() << "mAppRODataDir = " << mAppRODataDir << LL_ENDL; - std::string::size_type build_dir_pos = mExecutableDir.rfind("indra" + mDirDelimiter); - if (build_dir_pos != std::string::npos) - { - // ...we're in a dev checkout - mSkinBaseDir = mExecutableDir.substr(0, build_dir_pos) + "indra" + mDirDelimiter + "newview" + mDirDelimiter + "skins"; - llinfos << "Running in dev checkout with mSkinBaseDir " << mSkinBaseDir << llendl; - } - else - { - // ...normal installation running - mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins"; - } + mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins"; // Build the default cache directory mDefaultCacheDir = buildSLOSCacheDir(); diff --git a/indra/newview/linux_tools/client-readme-joystick.txt b/indra/newview/linux_tools/client-readme-joystick.txt index 997a8b08e..4f89a73cc 100644 --- a/indra/newview/linux_tools/client-readme-joystick.txt +++ b/indra/newview/linux_tools/client-readme-joystick.txt @@ -41,7 +41,7 @@ applications such as the Second Life Viewer, as follows: * Ubuntu or Gentoo Linux Configuration: For a quick start, you can simply paste the following line into a terminal before plugging in your SpaceNavigator - this only needs to be done once: - sudo bash -c 'echo KERNEL==\"event[0-9]*\", SYSFS{idVendor}==\"046d\", SYSFS{idProduct}==\"c626\", SYMLINK+=\"input/spacenavigator\", GROUP=\"plugdev\", MODE=\"664\" >> /etc/udev/rules.d/91-spacenavigator.rules' + sudo bash -c 'echo KERNEL==\"event[0-9]*\", SYSFS{idVendor}==\"046d\", SYSFS{idProduct}==\"c626\", SYMLINK+=\"input/spacenavigator\", GROUP=\"plugdev\", MODE=\"664\" > /etc/udev/rules.d/91-spacenavigator-LL.rules ; echo "" > /etc/hal/fdi/policy/3Dconnexion_SpaceNavigator_LL.fdi' For more comprehensive Linux SpaceNavigator configuration information please see the section 'Installing SpaceNavigator without the official driver' here: diff --git a/indra/newview/linux_tools/client-readme-voice.txt b/indra/newview/linux_tools/client-readme-voice.txt index 0637e9d17..53f1ac5b5 100644 --- a/indra/newview/linux_tools/client-readme-voice.txt +++ b/indra/newview/linux_tools/client-readme-voice.txt @@ -22,18 +22,10 @@ REQUIREMENTS -=-=-=-=-=-= * A headset/microphone supported by your chosen version of Linux -* The ALSA sound system (you probably already have this - - i.e. the alsa-base and alsa-utils packages on Ubuntu) - -Success with Linux Voice support has been reported on the following -systems: -* Ubuntu 6.06 (Dapper) with Intel ICH5/CMI9761A+ audio chipset -* Ubuntu 6.06 (Dapper) with SigmaTel STAC2997 audio chipset -* Ubuntu 6.06 (Dapper) with Creative EMU10K1 audio chipset -* Ubuntu 7.04 (Feisty) with USB Plantronics headset -* Ubuntu 7.04 (Feisty) with Intel HDA audio chipset -* Fedora Core 6 with (unknown) audio chipset -* Ubuntu 8.04 (Hardy) with (unknown) audio chipset +* At this time, the PulseAudio audio system is recommended; this software + is already part of most modern (2009+) Linux desktop systems. Alternatively, + the ALSA audio system may be used on systems installed from around + 2007 onwards (again this is likely already installed on your system). TESTING YOUR SETTINGS -=-=-=-=-=-=-=-=-=-=- @@ -45,8 +37,8 @@ when you speak. KNOWN PROBLEMS -=-=-=-=-=-=-= -* The 'Input Level' meter in the Voice Chat Device Settings dialog - does not respond to audio input. +* Compatibility with old ALSA-based audio systems (such as Ubuntu Dapper + from 2006) is poor. TROUBLESHOOTING -=-=-=-=-=-=-=- diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt index f9f60c833..656c7dc97 100644 --- a/indra/newview/linux_tools/client-readme.txt +++ b/indra/newview/linux_tools/client-readme.txt @@ -55,10 +55,13 @@ Minimum requirements: is required. If you are running a 64-bit Linux distribution then you will need its 32-bit compatibility environment installed, but this configuration is not currently supported. + * PulseAudio or ALSA Linux system sound software. A recent PulseAudio + is the recommended configuration; see README-linux-voice.txt for more + information. * Video/Graphics Card: o nVidia GeForce 2, GeForce 4mx, or better (recommend one of the following: 6700, 6800, 7600, 7800, 7900, 8400, 8500, 8600, - 8800, Go 7400, Go 7600, Go 7800, Go 7900) + 8800, Go 7400, Go 7600, Go 7800, Go 7900, +) o OR ATI Radeon 8500, 9250, or better (nVidia cards are recommended for the Linux client) @@ -97,10 +100,7 @@ you wish. 4. KNOWN ISSUES -=-=-=-=-=-=-=- -* UPDATING - when the client detects that a new version of Second Life - is available, it will ask you if you wish to download the new version. - This option is not implemented; to upgrade, you should manually download a - new version from the Second Life web site, . +* No significant known issues at this time. 5. TROUBLESHOOTING diff --git a/indra/newview/linux_tools/handle_secondlifeprotocol.sh.in b/indra/newview/linux_tools/handle_secondlifeprotocol.sh.in index 54d20279e..770f7ae37 100755 --- a/indra/newview/linux_tools/handle_secondlifeprotocol.sh.in +++ b/indra/newview/linux_tools/handle_secondlifeprotocol.sh.in @@ -11,7 +11,7 @@ if [ -z "$URL" ]; then fi RUN_PATH=`dirname "$0" || echo .` -cd "${RUN_PATH}" +cd "${RUN_PATH}/.." exec ./@VIEWER_BRANDING_ID@ -url \'"${URL}"\' diff --git a/indra/newview/linux_tools/install.sh.in b/indra/newview/linux_tools/install.sh.in index 17a837fbb..2bfd6d192 100755 --- a/indra/newview/linux_tools/install.sh.in +++ b/indra/newview/linux_tools/install.sh.in @@ -77,7 +77,7 @@ function root_install() install_to_prefix "$install_prefix" mkdir -p /usr/local/share/applications - ${install_prefix}/refresh_desktop_app_entry.sh + ${install_prefix}/etc/refresh_desktop_app_entry.sh } function install_to_prefix() diff --git a/indra/newview/linux_tools/refresh_desktop_app_entry.sh.in b/indra/newview/linux_tools/refresh_desktop_app_entry.sh.in index b865b4df0..66b8b90aa 100755 --- a/indra/newview/linux_tools/refresh_desktop_app_entry.sh.in +++ b/indra/newview/linux_tools/refresh_desktop_app_entry.sh.in @@ -3,7 +3,7 @@ SCRIPTSRC=`readlink -f "$0" || echo "$0"` RUN_PATH=`dirname "${SCRIPTSRC}" || echo .` -install_prefix=${RUN_PATH} +install_prefix=${RUN_PATH}/.. function install_desktop_entry() { diff --git a/indra/newview/linux_tools/wrapper.sh.in b/indra/newview/linux_tools/wrapper.sh.in index 40719f8d1..60c92485d 100755 --- a/indra/newview/linux_tools/wrapper.sh.in +++ b/indra/newview/linux_tools/wrapper.sh.in @@ -109,10 +109,10 @@ echo "Running from ${RUN_PATH}" cd "${RUN_PATH}" # Re-register the secondlife:// protocol handler every launch, for now. -./register_secondlifeprotocol.sh +./etc/register_secondlifeprotocol.sh # Re-register the application with the desktop system every launch, for now. -./refresh_desktop_app_entry.sh +./etc/refresh_desktop_app_entry.sh ## Before we mess with LD_LIBRARY_PATH, save the old one to restore for ## subprocesses that care. @@ -144,10 +144,10 @@ fi export VIEWER_BINARY='@VIEWER_BRANDING_ID@-do-not-run-directly' BINARY_TYPE=$(expr match "$(file -b bin/$VIEWER_BINARY)" '\(.*executable\)' | sed -e 's/ / /g') -if [ "${BINARY_TYPE}" == "ELF 64-bit LSB executable" ]; then - SL_ENV+='LD_LIBRARY_PATH="`pwd`/lib64:`pwd`/lib32:$LD_LIBRARY_PATH"' +if [ "${BINARY_TYPE}" == "ELF 32-bit LSB executable" ]; then + SL_ENV+='LD_LIBRARY_PATH="`pwd`/lib:$LD_LIBRARY_PATH"' else - SL_ENV+='LD_LIBRARY_PATH="`pwd`/lib:$LD_LIBRARY_PATH"' + SL_ENV+='LD_LIBRARY_PATH="`pwd`/lib64:`pwd`/lib32:$LD_LIBRARY_PATH"' fi export SL_CMD='$LL_WRAPPER bin/$VIEWER_BINARY' diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 4079eb7bf..06eead15a 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -900,7 +900,7 @@ class Linux_x86_64Manifest(LinuxManifest): def construct(self): super(Linux_x86_64Manifest, self).construct() - if (not self.standalone()) and self.prefix(src="../packages/lib/release", alt_build="../packages/libraries/x86_64-linux/lib/release", dst="lib"): + if (not self.standalone()) and self.prefix(src="../packages/lib/release", alt_build="../packages/libraries/x86_64-linux/lib/release", dst="lib64"): self.path("libapr-1.so*") self.path("libaprutil-1.so*") @@ -933,9 +933,9 @@ class Linux_x86_64Manifest(LinuxManifest): self.path("libboost_system-mt.so.*") self.path("libboost_thread-mt.so.*") - self.end_prefix("lib") + self.end_prefix("lib64") - if (not self.standalone()) and self.prefix(src='', alt_build="../packages/lib/release", dst="lib"): + if (not self.standalone()) and self.prefix(src='', alt_build="../packages/lib/release", dst="lib64"): self.add_extra_libraries() self.end_prefix()