* gnu/build/icecat-extension.scm: New file with a MAKE-ICECAT-EXTENSION procedure that makes sure the add-on directory is a symlink, so that Icecat can normalize it into a package store path. * gnu/local.mk (dist_patch_DATA): Register it, as well as new patches. * gnu/packages/browser-extensions.scm (ublock-origin)[properties]: Store the add-on ID so that it is accessible in MAKE-ICECAT-EXTENSION. [arguments]: Use the add-on ID as root directory. (ublock-origin/icecat): New procedure. * gnu/packages/gnuzilla.scm (icecat-minimal)[arguments]: Rewrite the unused 'apply-guix-specific-patches' phase so that it applies the following two patches. [native-search-paths]: New field. * gnu/packages/patches/icecat-compare-paths.patch: New patch that compares add-on paths (which are package store paths) to detect package changes. * gnu/packages/patches/icecat-use-system-wide-dir.patch: New patch that replaces "/usr/lib/mozilla" (the system-wide directory for extensions and native manifests) with "$ICECAT_SYSTEM_DIR".
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
Replace "/usr/lib/mozilla" (the system-wide directory for extensions and
 | 
						|
native manifests) with "$ICECAT_SYSTEM_DIR".
 | 
						|
 | 
						|
--- a/toolkit/xre/nsXREDirProvider.cpp
 | 
						|
+++ b/toolkit/xre/nsXREDirProvider.cpp
 | 
						|
@@ -293,24 +293,12 @@ 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, false, getter_AddRefs(localDir));
 | 
						|
-#  endif
 | 
						|
+
 | 
						|
+  const char* systemParentDir = getenv("ICECAT_SYSTEM_DIR");
 | 
						|
+  if (!systemParentDir || !*systemParentDir) return NS_ERROR_FAILURE;
 | 
						|
+
 | 
						|
+  rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir), false,
 | 
						|
+                             getter_AddRefs(localDir));
 | 
						|
 
 | 
						|
   if (NS_SUCCEEDED(rv)) {
 | 
						|
     localDir.forget(aFile);
 |