nongnu: firefox: Support Guix icecat browser extensions.

* nongnu/packages/patches/firefox-use-system-wide-dir.patch: New file.
* nongnu/packages/mozilla.scm (firefox)[source]: Add it along with
firefox-esr-compare-paths.patch.
This commit is contained in:
Hilton Chain 2024-12-11 23:30:51 +08:00
parent 4fe0608a5c
commit e81013943d
No known key found for this signature in database
GPG key ID: ACC66D09CA528292
2 changed files with 45 additions and 4 deletions

View file

@ -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

View file

@ -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);