aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/lisp-xyz.scm
blob: e2acf5712fd36734c4f0a42b95f7234b9e0be353 (about) (plain)
blob size (1117KB) exceeds display size limit (100KB).
nd return a package that, when installed, will make the extension contained in PKG available as an Icecat browser extension. PKG-OUTPUT specifies which output of PKG to use." (package (inherit pkg) (location (package-location pkg)) (name (string-append (package-name pkg) "-icecat")) (native-inputs '()) (inputs '()) (propagated-inputs (package-propagated-inputs pkg)) (outputs '("out")) (build-system trivial-build-system) (arguments (list #:modules '((guix build utils)) #:builder #~(begin (use-modules (guix build utils)) (let* ((addon-id #$(assq-ref (package-properties pkg) 'addon-id)) (moz-app-id "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}") (search-dir (string-append #$output "/lib/icecat/extensions/" moz-app-id))) ;; Icecat's iterates over `search-dir` for directories. If a ;; directory's name is not a valid add-on ID, it is ignored. See ;; `DirectoryLocation::readAddons()` in XPIProvider.jsm. ;; This directory has to be a symlink, because Icecat's ;; `_readLinkFile(aFile)` calls `normalize()` only if `aFile` is a ;; symlink. ;; Normalizing is required because Icecat compares the add-on path ;; against its local database to know if there is an extension ;; update. We want the add-on path to be the package store path, ;; so that a path change is detected every time the package is ;; updated. See `updateExistingAddon()` in XPIDatabase.jsm, with ;; our patch `icecat-compare-paths.patch`. ;; We don't want the add-on path to be the profile store path, ;; which would change too often. We don't want the add-on path to ;; be hard-coded either because it would never change (but it ;; wouldn't make sense anyway). (mkdir-p search-dir) (symlink (in-vicinity (ungexp pkg pkg-output) addon-id) (in-vicinity search-dir addon-id))))))))