Skip to content

Commit

Permalink
Linux: Load additional binaries from DIR_ASSETS (fixes issue chromium…
Browse files Browse the repository at this point in the history
…embedded#1936)

This adds *.pak, locales/*.pak , chrome-sandbox, libGLESv2.so, libEGL.so and
swiftshader/*.so to the list of binaries that will be loaded from the libcef.so
directory instead of the executable directory by default.
  • Loading branch information
magreenblatt committed Mar 20, 2019
1 parent e6986dc commit ee4b49f
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 7 deletions.
7 changes: 4 additions & 3 deletions libcef/common/main_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ void OverrideChildProcessPath() {

base::FilePath GetResourcesFilePath() {
base::FilePath pak_dir;
base::PathService::Get(base::DIR_MODULE, &pak_dir);
base::PathService::Get(base::DIR_ASSETS, &pak_dir);
return pak_dir;
}

Expand Down Expand Up @@ -263,8 +263,9 @@ bool IsScaleFactorSupported(ui::ScaleFactor scale_factor) {
}

#if defined(OS_LINUX)
// Look for the *.dat and *.bin files next to libcef instead of the exe on
// Linux. This is already the default on Windows.
// Look for binary files (*.bin, *.dat, *.pak, chrome-sandbox, libGLESv2.so,
// libEGL.so, locales/*.pak, swiftshader/*.so) next to libcef instead of the exe
// on Linux. This is already the default on Windows.
void OverrideAssetPath() {
Dl_info dl_info;
if (dladdr(reinterpret_cast<const void*>(&OverrideAssetPath), &dl_info)) {
Expand Down
5 changes: 5 additions & 0 deletions patch/patch.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -417,5 +417,10 @@ patches = [
# macOS: Fix crash when showing a select popup with CefDoMessageLoopWork.
# https://bitbucket.org/chromiumembedded/cef/issues/2495
'name': 'message_pump_mac_2495',
},
{
# Linux: Load binaries from DIR_ASSETS.
# https://bitbucket.org/chromiumembedded/cef/issues/1936
'name': 'linux_assets_path_1936',
}
]
35 changes: 35 additions & 0 deletions patch/patches/linux_assets_path_1936.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
diff --git sandbox/linux/suid/client/setuid_sandbox_host.cc sandbox/linux/suid/client/setuid_sandbox_host.cc
index 784f60733032..77e4e0070edf 100644
--- sandbox/linux/suid/client/setuid_sandbox_host.cc
+++ sandbox/linux/suid/client/setuid_sandbox_host.cc
@@ -120,7 +120,7 @@ bool SetuidSandboxHost::IsDisabledViaEnvironment() {
base::FilePath SetuidSandboxHost::GetSandboxBinaryPath() {
base::FilePath sandbox_binary;
base::FilePath exe_dir;
- if (base::PathService::Get(base::DIR_EXE, &exe_dir)) {
+ if (base::PathService::Get(base::DIR_ASSETS, &exe_dir)) {
base::FilePath sandbox_candidate = exe_dir.AppendASCII("chrome-sandbox");
if (base::PathExists(sandbox_candidate))
sandbox_binary = sandbox_candidate;
diff --git ui/gl/init/gl_initializer_x11.cc ui/gl/init/gl_initializer_x11.cc
index e3c481b97d89..5fde4a0bb388 100644
--- ui/gl/init/gl_initializer_x11.cc
+++ ui/gl/init/gl_initializer_x11.cc
@@ -88,7 +88,7 @@ bool InitializeStaticEGLInternal(GLImplementation implementation) {
if (implementation == kGLImplementationSwiftShaderGL) {
#if BUILDFLAG(ENABLE_SWIFTSHADER)
base::FilePath module_path;
- if (!base::PathService::Get(base::DIR_MODULE, &module_path))
+ if (!base::PathService::Get(base::DIR_ASSETS, &module_path))
return false;
module_path = module_path.Append("swiftshader/");

@@ -100,7 +100,7 @@ bool InitializeStaticEGLInternal(GLImplementation implementation) {
} else if (cmd->GetSwitchValueASCII(switches::kUseGL) ==
kGLImplementationANGLEName) {
base::FilePath module_path;
- if (!base::PathService::Get(base::DIR_MODULE, &module_path))
+ if (!base::PathService::Get(base::DIR_ASSETS, &module_path))
return false;

glesv2_path = module_path.Append(kGLESv2ANGLELibraryName);
8 changes: 4 additions & 4 deletions tools/distrib/linux/README.standard.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ cmake Contains CMake configuration files shared by all targets.

Debug Contains libcef.so and other components required to run the debug
version of CEF-based applications. By default these files should be
placed in the same directory as the executable and will be copied
there as part of the build process.
placed in the same directory as libcef.so and will be copied there
as part of the build process.

include Contains all required CEF header files.

Expand All @@ -15,8 +15,8 @@ libcef_dll Contains the source code for the libcef_dll_wrapper static library

Release Contains libcef.so and other components required to run the release
version of CEF-based applications. By default these files should be
placed in the same directory as the executable and will be copied
there as part of the build process.
placed in the same directory as libcef.so and will be copied there
as part of the build process.

Resources Contains resources required by libcef.so. By default these files
should be placed in the same directory as libcef.so and will be
Expand Down

0 comments on commit ee4b49f

Please sign in to comment.