From 9600965bcf54a2d8bed3ec7176c9943b8ccd6111 Mon Sep 17 00:00:00 2001 From: Router Gray Date: Mon, 22 Jul 2019 04:48:34 -0500 Subject: [PATCH 1/3] Dullahan finally works, thanks Liru, Bitten, Drake. Catch Linux up. --- indra/cmake/CEFPlugin.cmake | 2 +- indra/llvfs/lldir_linux.cpp | 2 +- indra/newview/viewer_manifest.py | 83 +++++++++++++++++++++----------- 3 files changed, 57 insertions(+), 30 deletions(-) diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index f19e38254..7f90e6afa 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -39,7 +39,7 @@ elseif (DARWIN) elseif (LINUX) set(CEF_PLUGIN_LIBRARIES dullahan - cef_dll_wrapper + cef_dll_wrapper.a cef ) endif (WINDOWS) diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp index c1ae9eae1..6e70c2235 100644 --- a/indra/llvfs/lldir_linux.cpp +++ b/indra/llvfs/lldir_linux.cpp @@ -262,7 +262,7 @@ bool LLDir_Linux::fileExists(const std::string &filename) const /*virtual*/ std::string LLDir_Linux::getLLPluginLauncher() { return gDirUtilp->getExecutableDir() + gDirUtilp->getDirDelimiter() + - "SLPlugin"; + "llplugin/SLPlugin"; } /*virtual*/ std::string LLDir_Linux::getLLPluginFilename(std::string base_name) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 368f05be9..5b557dcab 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1171,11 +1171,9 @@ class LinuxManifest(ViewerManifest): with self.prefix(dst="bin"): self.path("%s-bin"%self.viewer_branding_id(),"do-not-directly-run-%s-bin"%self.viewer_branding_id()) - self.path2basename("../llplugin/slplugin", "SLPlugin") - with self.prefix("res-sdl"): - self.path("*") - # recurse + # recurses, packaged again + self.path("res-sdl") # Get the icons based on the channel type icon_path = self.icon_path() @@ -1186,6 +1184,9 @@ class LinuxManifest(ViewerManifest): self.path("viewer_256.BMP","viewer_icon.BMP") # plugins + with self.prefix(src="../llplugin/slplugin", dst="bin/llplugin"): + self.path("SLPlugin") + with self.prefix(src="../plugins", dst="bin/llplugin"): self.path2basename("filepicker", "libbasic_plugin_filepicker.so") self.path("gstreamer010/libmedia_plugin_gstreamer010.so", "libmedia_plugin_gstreamer.so") @@ -1199,6 +1200,29 @@ class LinuxManifest(ViewerManifest): with self.prefix(src=os.path.join(pkgdir, 'lib' ), dst="lib"): self.path( "libvlc*.so*" ) + # CEF common files + with self.prefix(src=os.path.join(pkgdir, 'resources'), dst=os.path.join('bin', 'llplugin') ): + self.path("cef.pak") + self.path("cef_extensions.pak") + self.path("cef_100_percent.pak") + self.path("cef_200_percent.pak") + self.path("devtools_resources.pak") + self.path("icudtl.dat") + + with self.prefix(src=os.path.join(pkgdir, 'resources', 'locales'), dst=os.path.join('bin', 'llplugin', 'locales') ): + self.path("*.pak") + + with self.prefix(src=os.path.join(pkgdir, 'bin', 'release'), dst=os.path.join('bin', 'llplugin') ): + self.path("dullahan_host") + self.path("chrome-sandbox") + self.path("natives_blob.bin") + self.path("snapshot_blob.bin") + self.path("v8_context_snapshot.bin") + + # plugin runtime + with self.prefix(src=relpkgdir, dst=os.path.join('bin', 'llplugin') ): + self.path("libcef.so") + # llcommon if not self.path("../llcommon/libllcommon.so", "lib/libllcommon.so"): print "Skipping llcommon.so (assuming llcommon was linked statically)" @@ -1244,11 +1268,14 @@ class LinuxManifest(ViewerManifest): if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer(): print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build" # makes some small assumptions about our packaged dir structure - self.run_command( - ["find"] + - [os.path.join(self.get_dst_prefix(), dir) for dir in ('bin', 'lib')] + - ['-type', 'f', '!', '-name', '*.py', - '!', '-name', 'update_install', '-exec', 'strip', '-S', '{}', ';']) + try: + self.run_command( + ["find"] + + [os.path.join(self.get_dst_prefix(), dir) for dir in ('bin', 'bin/llplugin', 'lib', 'lib32', 'lib64')] + + ['-executable', '-type', 'f', '!', '-name', 'update_install', '-exec', 'strip', '-S', '{}', ';']) + except ManifestError as err: + print err.message + pass class Linux_i686_Manifest(LinuxManifest): address_size = 32 @@ -1260,19 +1287,19 @@ class Linux_i686_Manifest(LinuxManifest): relpkgdir = os.path.join(pkgdir, "lib", "release") debpkgdir = os.path.join(pkgdir, "lib", "debug") - if (not self.standalone()) and self.prefix(src=relpkgdir, dst="lib"): + with self.prefix(relpkgdir, dst="lib"): self.path("libapr-1.so*") self.path("libaprutil-1.so*") - self.path("libcef.so") self.path("libexpat.so.*") self.path("libGLOD.so") self.path("libSDL-1.2.so.*") self.path("libalut.so") self.path("libopenal.so.1") + self.path("libfmod.so*") self.path("libtcmalloc_minimal.so.0") self.path("libtcmalloc_minimal.so.0.2.2") - self.end_prefix() + # Vivox runtimes with self.prefix(src=relpkgdir, dst="bin"): @@ -1284,6 +1311,13 @@ class Linux_i686_Manifest(LinuxManifest): self.path("libvivoxsdk.so") self.path("libvivoxplatform.so") + # CEF renderers + with self.prefix(src=os.path.join(relpkgdir, 'swiftshader'), dst=os.path.join("lib", "swiftshader") ): + self.path( "*.so" ) + with self.prefix(src=relpkgdir, dst="lib"): + self.path("libEGL.so") + self.path("libGLESv2.so") + class Linux_x86_64_Manifest(LinuxManifest): address_size = 64 @@ -1295,29 +1329,19 @@ class Linux_x86_64_Manifest(LinuxManifest): relpkgdir = os.path.join(pkgdir, "lib", "release") debpkgdir = os.path.join(pkgdir, "lib", "debug") - if (not self.standalone()) and self.prefix(relpkgdir, dst="lib64"): + with self.prefix(relpkgdir, dst="lib64"): self.path("libapr-1.so*") self.path("libaprutil-1.so*") self.path("libexpat.so*") self.path("libGLOD.so") self.path("libSDL-1.2.so*") - self.path("libhunspell-1.3.so*") + self.path("libhunspell*.so*") self.path("libalut.so*") self.path("libopenal.so*") + self.path("libfmod.so*") - try: - self.path("libtcmalloc.so*") #formerly called google perf tools - pass - except: - print "tcmalloc files not found, skipping" - pass + self.path("libtcmalloc.so*") #formerly called google perf tools - try: - self.path("libfmod.so*") - pass - except: - print "Skipping libfmod.so - not found" - pass # Vivox runtimes with self.prefix(src=relpkgdir, dst="bin"): @@ -1329,9 +1353,12 @@ class Linux_x86_64_Manifest(LinuxManifest): self.path("libvivoxsdk.so") self.path("libvivoxplatform.so") - # plugin runtime + # CEF renderers + with self.prefix(src=os.path.join(relpkgdir, 'swiftshader'), dst=os.path.join("lib64", "swiftshader") ): + self.path( "*.so" ) with self.prefix(src=relpkgdir, dst="lib64"): - self.path("libcef.so") + self.path("libEGL.so") + self.path("libGLESv2.so") ################################################################ From 248455585483d645d3675f93c3ba7d846819ec89 Mon Sep 17 00:00:00 2001 From: Router Gray Date: Mon, 22 Jul 2019 04:49:58 -0500 Subject: [PATCH 2/3] Linux library updates: FMOD Studio 2.00.02, Dullahan. --- autobuild.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autobuild.xml b/autobuild.xml index 5265147f5..19003340e 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -650,11 +650,11 @@ archive hash - 2f44b376e436f37cbad5c7567edddebd + 06746b78827e9a0c6b666bd2528d36ad hash_algorithm md5 url - https://bitbucket.org/router_gray/rg_3p-dullahan/downloads/dullahan-1.1.1085-3.3497.1833.g13f506f-linux64-201902042123.tar.bz2 + https://bitbucket.org/SingularityViewer/libraries/downloads/dullahan-1.1.1320_73.1.12+gee4b49f+chromium-73.0.3683.75-linux64-192030536.tar.bz2 name linux64 @@ -846,11 +846,11 @@ archive hash - 54dbd41322a08a1fc333ca6d96af5502 + 602e798cc969f2d46315775f1dd43c41 hash_algorithm md5 url - https://depot.alchemyviewer.org/pub/linux64/lib/fmodstudio-1.10.00-linux64-201709282320.tar.bz2 + https://bitbucket.org/SingularityViewer/libraries/downloads/fmodstudio-2.00.02.191991250-linux64-191991250.tar.bz2 name linux64 From c711847b4ef31d0a2a7a6b85290b08e1c59dda42 Mon Sep 17 00:00:00 2001 From: Router Gray Date: Mon, 22 Jul 2019 07:56:19 -0500 Subject: [PATCH 3/3] Don't crumble Liru's cookies (less spam in linux manifest) --- indra/newview/viewer_manifest.py | 37 ++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 5b557dcab..e036398de 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1287,7 +1287,7 @@ class Linux_i686_Manifest(LinuxManifest): relpkgdir = os.path.join(pkgdir, "lib", "release") debpkgdir = os.path.join(pkgdir, "lib", "debug") - with self.prefix(relpkgdir, dst="lib"): + if (not self.standalone()) and self.prefix(src=relpkgdir, dst="lib"): self.path("libapr-1.so*") self.path("libaprutil-1.so*") self.path("libexpat.so.*") @@ -1295,11 +1295,22 @@ class Linux_i686_Manifest(LinuxManifest): self.path("libSDL-1.2.so.*") self.path("libalut.so") self.path("libopenal.so.1") - self.path("libfmod.so*") - self.path("libtcmalloc_minimal.so.0") - self.path("libtcmalloc_minimal.so.0.2.2") + try: + self.path("libtcmalloc_minimal.so.0") + self.path("libtcmalloc_minimal.so.0.2.2") + pass + except: + print "tcmalloc files not found, skipping" + pass + try: + self.path("libfmod.so*") + pass + except: + print "Skipping libfmod.so - not found" + pass + self.end_prefix() # Vivox runtimes with self.prefix(src=relpkgdir, dst="bin"): @@ -1329,7 +1340,7 @@ class Linux_x86_64_Manifest(LinuxManifest): relpkgdir = os.path.join(pkgdir, "lib", "release") debpkgdir = os.path.join(pkgdir, "lib", "debug") - with self.prefix(relpkgdir, dst="lib64"): + if (not self.standalone()) and self.prefix(relpkgdir, dst="lib64"): self.path("libapr-1.so*") self.path("libaprutil-1.so*") self.path("libexpat.so*") @@ -1338,10 +1349,22 @@ class Linux_x86_64_Manifest(LinuxManifest): self.path("libhunspell*.so*") self.path("libalut.so*") self.path("libopenal.so*") - self.path("libfmod.so*") - self.path("libtcmalloc.so*") #formerly called google perf tools + try: + self.path("libtcmalloc.so*") #formerly called google perf tools + pass + except: + print "tcmalloc files not found, skipping" + pass + try: + self.path("libfmod.so*") + pass + except: + print "Skipping libfmod.so - not found" + pass + + self.end_prefix() # Vivox runtimes with self.prefix(src=relpkgdir, dst="bin"):