summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nongnu/packages/mozilla.scm12
-rw-r--r--nongnu/packages/patches/firefox-use-system-wide-dir.patch37
2 files changed, 45 insertions, 4 deletions
diff --git a/nongnu/packages/mozilla.scm b/nongnu/packages/mozilla.scm
index d6bc572e..9103c0a8 100644
--- a/nongnu/packages/mozilla.scm
+++ b/nongnu/packages/mozilla.scm
@@ -559,10 +559,14 @@ MOZ_ENABLE_WAYLAND=1 exec ~a $@\n"
(uri (string-append "https://archive.mozilla.org/pub/firefox/releases/"
version "/source/firefox-" version ".source.tar.xz"))
(patches
- (list (search-path
- (map (cut string-append <> "/nongnu/packages/patches")
- %load-path)
- "firefox-restore-desktop-files.patch")))
+ (map (lambda (patch)
+ (search-path
+ (map (cut string-append <> "/nongnu/packages/patches")
+ %load-path)
+ patch))
+ '("firefox-restore-desktop-files.patch"
+ "firefox-esr-compare-paths.patch"
+ "firefox-use-system-wide-dir.patch")))
(sha256
(base32 "06ya18ma1gndci0aygz75hidn3kwa1kji78g8smh7fq0091aad7i"))))
(arguments
diff --git a/nongnu/packages/patches/firefox-use-system-wide-dir.patch b/nongnu/packages/patches/firefox-use-system-wide-dir.patch
new file mode 100644
index 00000000..564f12f3
--- /dev/null
+++ b/nongnu/packages/patches/firefox-use-system-wide-dir.patch
@@ -0,0 +1,37 @@
+Replace "/usr/lib/mozilla" (the system-wide directory for extensions and
+native manifests) with "$ICECAT_SYSTEM_DIR".
+
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+index e3be04e70c..a3501c4f44 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -280,24 +280,11 @@ nsresult nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
+ static nsresult GetSystemParentDirectory(nsIFile** aFile) {
+ nsresult rv;
+ nsCOMPtr<nsIFile> localDir;
+-# if defined(XP_MACOSX)
+- rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
+- getter_AddRefs(localDir));
+- if (NS_SUCCEEDED(rv)) {
+- rv = localDir->AppendNative("Mozilla"_ns);
+- }
+-# else
+- constexpr auto dirname =
+-# ifdef HAVE_USR_LIB64_DIR
+- "/usr/lib64/mozilla"_ns
+-# elif defined(__OpenBSD__) || defined(__FreeBSD__)
+- "/usr/local/lib/mozilla"_ns
+-# else
+- "/usr/lib/mozilla"_ns
+-# endif
+- ;
+- rv = NS_NewNativeLocalFile(dirname, getter_AddRefs(localDir));
+-# endif
++ const char* systemParentDir = getenv("ICECAT_SYSTEM_DIR");
++ if (!systemParentDir || !*systemParentDir) return NS_ERROR_FAILURE;
++
++ rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir),
++ getter_AddRefs(localDir));
+
+ if (NS_SUCCEEDED(rv)) {
+ localDir.forget(aFile);