From 9a9a40cb91bf3998eb8af9cfa034116165ead109 Mon Sep 17 00:00:00 2001 From: Techwolf Lupindo Date: Sun, 16 Feb 2014 21:13:41 -0500 Subject: [PATCH] Linux 64-bit build support. Moved viewer_manifest.py linux packaging around and use if self.is_packaging_viewer() in order to not break standalone builds. --- indra/newview/viewer_manifest.py | 181 ++++++++++++++++++------------- 1 file changed, 103 insertions(+), 78 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 56f66f5e4e..cdb9966c68 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1210,6 +1210,87 @@ class LinuxManifest(ViewerManifest): print "Skipping llcommon.so (assuming llcommon was linked statically)" self.path("featuretable_linux.txt") + + if self.is_packaging_viewer(): + if self.prefix("../packages/lib/release", dst="lib"): + self.path("libapr-1.so") + self.path("libapr-1.so.0") + self.path("libapr-1.so.0.4.5") + self.path("libaprutil-1.so") + self.path("libaprutil-1.so.0") + self.path("libaprutil-1.so.0.4.1") + self.path("libboost_context-mt.so.*") + self.path("libboost_filesystem-mt.so.*") + self.path("libboost_program_options-mt.so.*") + self.path("libboost_regex-mt.so.*") + self.path("libboost_signals-mt.so.*") + self.path("libboost_system-mt.so.*") + self.path("libboost_thread-mt.so.*") + self.path("libboost_chrono-mt.so.*") # FS spcific + self.path("libboost_date_time-mt.so.*") # FS spcific + self.path("libboost_wave-mt.so.*") # FS spcific + self.path("libcollada14dom.so") + self.path("libdb*.so") + self.path("libcrypto.so.*") + self.path("libexpat.so.*") + self.path("libssl.so.1.0.0") + self.path("libGLOD.so") + self.path("libminizip.so") + self.path("libuuid.so*") + self.path("libSDL-1.2.so.*") + self.path("libdirectfb-1.*.so.*") + self.path("libfusion-1.*.so.*") + self.path("libdirect-1.*.so.*") + self.path("libopenjpeg.so*") + self.path("libdirectfb-1.4.so.5") + self.path("libfusion-1.4.so.5") + self.path("libdirect-1.4.so.5*") + self.path("libhunspell-1.3.so*") + self.path("libalut.so") + self.path("libpng15.so.15") #use provided libpng to workaround incompatible system versions on some distros + self.path("libpng15.so.15.13.0") #use provided libpng to workaround incompatible system versions on some distros + self.path("libopenal.so", "libopenal.so.1") + #self.path("libnotify.so.1.1.2", "libnotify.so.1") # LO - uncomment when testing libnotify(growl) on linux + self.path("libpangox-1.0.so*") + # KLUDGE: As of 2012-04-11, the 'fontconfig' package installs + # libfontconfig.so.1.4.4, along with symlinks libfontconfig.so.1 + # and libfontconfig.so. Before we added support for library-file + # wildcards, though, this self.path() call specifically named + # libfontconfig.so.1.4.4 WITHOUT also copying the symlinks. When I + # (nat) changed the call to self.path("libfontconfig.so.*"), we + # ended up with the libfontconfig.so.1 symlink in the target + # directory as well. But guess what! At least on Ubuntu 10.04, + # certain viewer fonts look terrible with libfontconfig.so.1 + # present in the target directory. Removing that symlink suffices + # to improve them. I suspect that means we actually do better when + # the viewer fails to find our packaged libfontconfig.so*, falling + # back on the system one instead -- but diagnosing and fixing that + # is a bit out of scope for the present project. Meanwhile, this + # particular wildcard specification gets us exactly what the + # previous call did, without having to explicitly state the + # version number. + self.path("libfontconfig.so.*.*") + try: + self.path("libtcmalloc.so*") #formerly called google perf tools + pass + except: + print "tcmalloc files not found, skipping" + pass + + self.end_prefix("lib") + + # Vivox runtimes + # Currentelly, the 32-bit ones will work with a 64-bit client. + if self.prefix(src="../packages/lib/release", dst="bin"): + self.path("SLVoice") + self.end_prefix() + if self.prefix(src="../packages/lib/release", dst="lib"): + self.path("libortp.so") + self.path("libsndfile.so.1") + #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib + self.path("libvivoxsdk.so") + self.path("libvivoxplatform.so") + self.end_prefix("lib") def copy_finish(self): # Force executable permissions to be set for scripts @@ -1278,70 +1359,10 @@ class Linux_i686_Manifest(LinuxManifest): def construct(self): super(Linux_i686_Manifest, self).construct() - if self.prefix("../packages/lib/release", dst="lib"): - self.path("libapr-1.so") - self.path("libapr-1.so.0") - self.path("libapr-1.so.0.4.5") - self.path("libaprutil-1.so") - self.path("libaprutil-1.so.0") - self.path("libaprutil-1.so.0.4.1") - self.path("libboost_context-mt.so.*") - self.path("libboost_filesystem-mt.so.*") - self.path("libboost_program_options-mt.so.*") - self.path("libboost_regex-mt.so.*") - self.path("libboost_signals-mt.so.*") - self.path("libboost_system-mt.so.*") - self.path("libboost_thread-mt.so.*") - self.path("libboost_chrono-mt.so.*") # FS spcific - self.path("libboost_date_time-mt.so.*") # FS spcific - self.path("libboost_wave-mt.so.*") # FS spcific - self.path("libcollada14dom.so") - self.path("libdb*.so") - self.path("libcrypto.so.*") - self.path("libexpat.so.*") - self.path("libssl.so.1.0.0") - self.path("libGLOD.so") - self.path("libminizip.so") - self.path("libuuid.so*") - self.path("libSDL-1.2.so.*") - self.path("libdirectfb-1.*.so.*") - self.path("libfusion-1.*.so.*") - self.path("libdirect-1.*.so.*") - self.path("libopenjpeg.so*") - self.path("libdirectfb-1.4.so.5") - self.path("libfusion-1.4.so.5") - self.path("libdirect-1.4.so.5*") - self.path("libhunspell-1.3.so*") - self.path("libalut.so") - self.path("libpng15.so.15") #use provided libpng to workaround incompatible system versions on some distros - self.path("libpng15.so.15.13.0") #use provided libpng to workaround incompatible system versions on some distros - self.path("libopenal.so", "libopenal.so.1") + if self.is_packaging_viewer(): + if self.prefix("../packages/lib/release", dst="lib"): + self.path("libopenal.so", "libvivoxoal.so.1") # vivox's sdk expects this soname - #self.path("libnotify.so.1.1.2", "libnotify.so.1") # LO - uncomment when testing libnotify(growl) on linux - # KLUDGE: As of 2012-04-11, the 'fontconfig' package installs - # libfontconfig.so.1.4.4, along with symlinks libfontconfig.so.1 - # and libfontconfig.so. Before we added support for library-file - # wildcards, though, this self.path() call specifically named - # libfontconfig.so.1.4.4 WITHOUT also copying the symlinks. When I - # (nat) changed the call to self.path("libfontconfig.so.*"), we - # ended up with the libfontconfig.so.1 symlink in the target - # directory as well. But guess what! At least on Ubuntu 10.04, - # certain viewer fonts look terrible with libfontconfig.so.1 - # present in the target directory. Removing that symlink suffices - # to improve them. I suspect that means we actually do better when - # the viewer fails to find our packaged libfontconfig.so*, falling - # back on the system one instead -- but diagnosing and fixing that - # is a bit out of scope for the present project. Meanwhile, this - # particular wildcard specification gets us exactly what the - # previous call did, without having to explicitly state the - # version number. - self.path("libfontconfig.so.*.*") - try: - self.path("libtcmalloc.so*") #formerly called google perf tools - pass - except: - print "tcmalloc files not found, skipping" - pass try: self.path("libfmodex-*.so") @@ -1350,7 +1371,7 @@ class Linux_i686_Manifest(LinuxManifest): except: print "Skipping libfmodex.so - not found" pass - + self.end_prefix("lib") self.prefix(src="../packages/lib/release/x86", dst="lib") @@ -1362,25 +1383,29 @@ class Linux_i686_Manifest(LinuxManifest): self.end_prefix("lib") - # Vivox runtimes - if self.prefix(src="../packages/lib/release", dst="bin"): - self.path("SLVoice") - self.end_prefix() - if self.prefix(src="../packages/lib/release", dst="lib"): - self.path("libortp.so") - self.path("libsndfile.so.1") - #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib - self.path("libvivoxsdk.so") - self.path("libvivoxplatform.so") - self.end_prefix("lib") - - self.strip_binaries() - class Linux_x86_64_Manifest(LinuxManifest): def construct(self): super(Linux_x86_64_Manifest, self).construct() + if self.is_packaging_viewer(): + if self.prefix("../packages/lib/release", dst="lib"): + + # vivox 32-bit hack. + # one has to extract libopenal.so from the 32-bit openal package, or official LL viewer, and rename it to libopenal32.so + # and place it in the prebuilt lib/release directory + self.path("libopenal32.so", "libvivoxoal.so.1") # vivox's sdk expects this soname + + try: + self.path("libfmodex64-*.so") + self.path("libfmodex64.so") + pass + except: + print "Skipping libfmodex.so - not found" + pass + + self.end_prefix("lib") + # support file for valgrind debug tool self.path("secondlife-i686.supp")