gnu: ungoogled-chromium: Add search path for installed extensions.

* gnu/packages/patches/ungoogled-chromium-extension-search-path.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/chromium.scm (%guix-patches): New variable.
(ungoogled-chromium-snippet): Apply %GUIX-PATCHES.
(ungoogled-chromium)[arguments]: Don't hard-code extensions directory.
[native-search-paths]: New field.
This commit is contained in:
Marius Bakke 2020-10-23 10:17:21 +02:00
parent f7d0a63dda
commit 867e3830e6
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
3 changed files with 39 additions and 8 deletions

View File

@ -1653,6 +1653,7 @@ dist_patch_DATA = \
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
%D%/packages/patches/ucx-tcp-iface-ioctl.patch \
%D%/packages/patches/udiskie-no-appindicator.patch \
%D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
%D%/packages/patches/ungoogled-chromium-system-nspr.patch \
%D%/packages/patches/unison-fix-ocaml-4.08.patch \
%D%/packages/patches/unknown-horizons-python-3.8-distro.patch \

View File

@ -334,6 +334,10 @@
(base32
"18p9a7qffmy8m03nqva7maalgil13lj2mn0s56v3crbs4wk4lalj"))))
(define %guix-patches
(list (local-file (search-patch "ungoogled-chromium-system-nspr.patch"))
(local-file (search-patch "ungoogled-chromium-extension-search-path.patch"))))
;; This is a source 'snippet' that does the following:
;; *) Applies various patches for unbundling purposes and libstdc++ compatibility.
;; *) Runs the ungoogled patch-, domain substitution-, and scrubbing scripts.
@ -356,9 +360,7 @@
(invoke "patch" "-p1" "--force" "--input"
patch "--no-backup-if-mismatch"))
(append '#+%debian-patches '#+%arch-patches
'#+(list (local-file
(search-patch
"ungoogled-chromium-system-nspr.patch")))))
'#+%guix-patches))
(with-directory-excursion #+%ungoogled-origin
(format #t "Ungooglifying...~%")
@ -571,11 +573,6 @@
(find-files (string-append "third_party/webrtc/modules"
"/audio_coding/codecs/opus")))
(substitute* "chrome/common/chrome_paths.cc"
(("/usr/share/chromium/extensions")
;; TODO: Add ~/.guix-profile.
"/run/current-system/profile/share/chromium/extensions"))
;; Many files try to include ICU headers from "third_party/icu/...".
;; Remove the "third_party/" prefix to use system headers instead.
(substitute* (find-files "chrome" "\\.cc$")
@ -840,6 +837,11 @@
("udev" ,eudev)
("valgrind" ,valgrind)
("vulkan-headers" ,vulkan-headers)))
(native-search-paths
(list (search-path-specification
(variable "CHROMIUM_EXTENSION_DIRECTORY")
(separator #f) ;single entry
(files '("share/chromium/extensions")))))
;; Building Chromium takes ... a very long time. On a single core, a busy
;; mid-end x86 system may need more than 24 hours to complete the build.

View File

@ -0,0 +1,28 @@
Look for extensions in $CHROMIUM_EXTENSION_DIRECTORY instead of
/usr/share/chromium/extensions.
--- a/chrome/common/chrome_paths.cc
+++ b/chrome/common/chrome_paths.cc
@@ -4,6 +4,7 @@
#include "chrome/common/chrome_paths.h"
+#include "base/environment.h"
#include "base/files/file_util.h"
#include "base/logging.h"
#include "base/native_library.h"
@@ -511,7 +512,13 @@
#endif
#if defined(OS_LINUX) || defined(OS_CHROMEOS)
case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
- cur = base::FilePath(kFilepathSinglePrefExtensions);
+ std::unique_ptr<base::Environment> environment(base::Environment::Create());
+ std::string extension_dir;
+ if (environment->GetVar("CHROMIUM_EXTENSION_DIRECTORY", &extension_dir)) {
+ cur = base::FilePath(extension_dir);
+ } else {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
+ }
break;
}
#endif