* 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".
		
			
				
	
	
		
			21 lines
		
	
	
	
		
			808 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
	
		
			808 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
See comment in gnu/build/icecat-extension.scm.
 | 
						|
 | 
						|
--- a/toolkit/mozapps/extensions/internal/XPIDatabase.jsm
 | 
						|
+++ b/toolkit/mozapps/extensions/internal/XPIDatabase.jsm
 | 
						|
@@ -3452,6 +3452,7 @@ const XPIDatabaseReconcile = {
 | 
						|
     if (
 | 
						|
       newAddon ||
 | 
						|
       oldAddon.updateDate != xpiState.mtime ||
 | 
						|
+      oldAddon.path != xpiState.path ||
 | 
						|
       (aUpdateCompatibility && this.isAppBundledLocation(installLocation))
 | 
						|
     ) {
 | 
						|
       newAddon = this.updateMetadata(
 | 
						|
@@ -3460,8 +3461,6 @@ const XPIDatabaseReconcile = {
 | 
						|
         xpiState,
 | 
						|
         newAddon
 | 
						|
       );
 | 
						|
-    } else if (oldAddon.path != xpiState.path) {
 | 
						|
-      newAddon = this.updatePath(installLocation, oldAddon, xpiState);
 | 
						|
     } else if (aUpdateCompatibility || aSchemaChange) {
 | 
						|
       newAddon = this.updateCompatibility(
 | 
						|
         installLocation,
 |