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