diff --git a/autobuild.xml b/autobuild.xml
index 5265147f5..19003340e 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -650,11 +650,11 @@
archive
name
linux64
@@ -846,11 +846,11 @@
archive
name
linux64
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..e036398de 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
@@ -1263,15 +1290,26 @@ class Linux_i686_Manifest(LinuxManifest):
if (not self.standalone()) and self.prefix(src=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("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
@@ -1284,6 +1322,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
@@ -1301,7 +1346,7 @@ class Linux_x86_64_Manifest(LinuxManifest):
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*")
@@ -1319,6 +1364,8 @@ class Linux_x86_64_Manifest(LinuxManifest):
print "Skipping libfmod.so - not found"
pass
+ self.end_prefix()
+
# Vivox runtimes
with self.prefix(src=relpkgdir, dst="bin"):
self.path("SLVoice")
@@ -1329,9 +1376,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")
################################################################