[PATCH 0/2] Add output in ‘make-icecat-extension’ for each Firefox variant.

  • Done
  • quality assurance status badge
Details
One participant
  • Clément Lassieur
Owner
unassigned
Submitted by
Clément Lassieur
Severity
normal
C
C
Clément Lassieur wrote on 7 Jan 01:02 +0100
(address . guix-patches@gnu.org)(name . Clément Lassieur)(address . clement@lassieur.org)
cover.1704584830.git.clement@lassieur.org
Hi, this patch allows to install extensions specifically for icecat, or for
torbrowser. One can test it like this:

guix shell --no-cwd -E DISPLAY -CNF \
icecat ublock-origin-icecat -- icecat # ublock
guix shell --no-cwd -E DISPLAY -CNF \
icecat ublock-origin-icecat:icecat -- icecat # ublock
guix shell --no-cwd -E DISPLAY -CNF \
icecat ublock-origin-icecat:torbrowser -- icecat # no ublock
guix shell --no-cwd -E DISPLAY -CNF \
torbrowser ublock-origin-icecat:icecat -- torbrowser # no ublock

Clément Lassieur (2):
gnu: Move comment in ‘make-icecat-extension’.
gnu: Add output in ‘make-icecat-extension’ for each Firefox variant.

gnu/build/icecat-extension.scm | 60 ++++++++++++++++++++--------------
gnu/packages/tor.scm | 11 ++++++-
2 files changed, 45 insertions(+), 26 deletions(-)


base-commit: be1d05c10766a979dd0720b677889ed950d3b895
--
2.41.0
C
C
Clément Lassieur wrote on 7 Jan 01:05 +0100
[PATCH 1/2] gnu: Move comment in ‘make- icecat-extension’.
(address . 68298@debbugs.gnu.org)(name . Clément Lassieur)(address . clement@lassieur.org)
f8e1bfec80cc11d6c1cc2b7b77c06f5a92cfd688.1704584830.git.clement@lassieur.org
* gnu/build/icecat-extension.scm (make-icecat-extension)[arguments]: Move
comment so that next commit there is more readable.

Change-Id: I70009d1e928b3f394be25467b090ef9aab6bf1d1
---
gnu/build/icecat-extension.scm | 38 +++++++++++++++++-----------------
1 file changed, 19 insertions(+), 19 deletions(-)

Toggle diff (55 lines)
diff --git a/gnu/build/icecat-extension.scm b/gnu/build/icecat-extension.scm
index e6927c79df19..9013ab0fac05 100644
--- a/gnu/build/icecat-extension.scm
+++ b/gnu/build/icecat-extension.scm
@@ -42,29 +42,29 @@ (define* (make-icecat-extension pkg #:optional (pkg-output "out"))
#:builder
#~(begin
(use-modules (guix build utils))
+ ;; 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).
(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)
--
2.41.0
C
C
Clément Lassieur wrote on 7 Jan 01:05 +0100
[PATCH 2/2] gnu: Add output in ‘make-ic ecat-extension’ for each Firefox variant.
(address . 68298@debbugs.gnu.org)(name . Clément Lassieur)(address . clement@lassieur.org)
7589f9fabe96ed501e5d8b5eac7ec21dcdfc2589.1704584830.git.clement@lassieur.org
* gnu/build/icecat-extension.scm (make-icecat-extension)[arguments]: Loop
through all variants and for each variant, symlink the add-on there, and in
the main output too.
* gnu/packages/tor.scm (torbrowser)[arguments]: Add a 'fix-system-dir' phase
so that the system directory is not shared between variants.
[propagated-inputs]: Propagate only the "torbrowser" output of
noscript/icecat.
[native-search-paths]: Use TORBROWSER_SYSTEM_DIR instead of inheriting from
the icecat package.

Change-Id: I409bae5c317e98d1bd308eb64a66f1ce1a304bcc
---
gnu/build/icecat-extension.scm | 28 +++++++++++++++++++---------
gnu/packages/tor.scm | 11 ++++++++++-
2 files changed, 29 insertions(+), 10 deletions(-)

Toggle diff (74 lines)
diff --git a/gnu/build/icecat-extension.scm b/gnu/build/icecat-extension.scm
index 9013ab0fac05..b5d44e3b5559 100644
--- a/gnu/build/icecat-extension.scm
+++ b/gnu/build/icecat-extension.scm
@@ -34,7 +34,7 @@ (define* (make-icecat-extension pkg #:optional (pkg-output "out"))
(native-inputs '())
(inputs '())
(propagated-inputs (package-propagated-inputs pkg))
- (outputs '("out"))
+ (outputs '("out" "icecat" "torbrowser"))
(build-system trivial-build-system)
(arguments
(list
@@ -61,11 +61,21 @@ (define* (make-icecat-extension pkg #:optional (pkg-output "out"))
;; 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).
- (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)))
-
- (mkdir-p search-dir)
- (symlink (in-vicinity (ungexp pkg pkg-output) addon-id)
- (in-vicinity search-dir addon-id))))))))
+ (for-each
+ (lambda (variant)
+ (let* ((addon-id #$(assq-ref (package-properties pkg) 'addon-id))
+ (moz-app-id "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}")
+ (search-dir
+ (lambda (out)
+ (string-append (assoc-ref %outputs out) "/lib/" variant
+ "/extensions/" moz-app-id)))
+ (symlink-addon
+ (lambda (out)
+ (mkdir-p (search-dir out))
+ (symlink (in-vicinity (ungexp pkg pkg-output) addon-id)
+ (in-vicinity (search-dir out) addon-id)))))
+ (symlink-addon variant)
+ ;; Symlink to the main output so that a user can install the
+ ;; add-on for all of the Firefox variants at once.
+ (symlink-addon "out")))
+ (cdr '#$outputs)))))))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index b81944ee6b96..c46f48a808da 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -563,6 +563,10 @@ (define-public torbrowser
#$flags))
((#:phases phases)
#~(modify-phases #$phases
+ (add-after 'apply-guix-specific-patches 'fix-system-dir
+ (lambda _
+ (substitute* "toolkit/xre/nsXREDirProvider.cpp"
+ (("ICECAT_SYSTEM_DIR") "TORBROWSER_SYSTEM_DIR"))))
(add-before 'configure 'setenv
(lambda _
(setenv "CONFIG_SHELL" (which "bash"))
@@ -758,7 +762,12 @@ (define-public torbrowser
tor-client
torbrowser-assets)))
(propagated-inputs
- (list noscript/icecat))
+ (list `(,noscript/icecat "torbrowser")))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "TORBROWSER_SYSTEM_DIR")
+ (separator #f) ;single entry
+ (files '("lib/torbrowser")))))
(home-page "https://www.torproject.org")
(synopsis "Anonymous browser derived from Mozilla Firefox")
(description
--
2.41.0
C
C
Clément Lassieur wrote on 7 Jan 01:12 +0100
Re: [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant.
(address . 68298@debbugs.gnu.org)(name . Jonathan Brielmaier)(address . jonathan.brielmaier@web.de)
87r0iu0znb.fsf@lassieur.org
On Sun, Jan 07 2024, Clément Lassieur wrote:

Toggle quote (10 lines)
> * gnu/build/icecat-extension.scm (make-icecat-extension)[arguments]: Loop
> through all variants and for each variant, symlink the add-on there, and in
> the main output too.
> * gnu/packages/tor.scm (torbrowser)[arguments]: Add a 'fix-system-dir' phase
> so that the system directory is not shared between variants.
> [propagated-inputs]: Propagate only the "torbrowser" output of
> noscript/icecat.
> [native-search-paths]: Use TORBROWSER_SYSTEM_DIR instead of inheriting from
> the icecat package.

I forgot

[outputs]: Add "icecat" and "torbrowser".


Also, the first patch is just so that the second is clearer.
C
C
Clément Lassieur wrote on 12 Jan 18:54 +0100
(address . 68298-done@debbugs.gnu.org)(name . Jonathan Brielmaier)(address . jonathan.brielmaier@web.de)
878r4ul9nt.fsf@lassieur.org
I no longer think this is a good idea because
- it adds a lot of complexity
- extensions are disabled by default on Tor Browser
- if one wants to run Tor Browser with a specific set of extensions,
they can still use 'guix shell'.

Closing as wontfix.

On Sun, Jan 07 2024, Clément Lassieur wrote:

Toggle quote (88 lines)
> * gnu/build/icecat-extension.scm (make-icecat-extension)[arguments]: Loop
> through all variants and for each variant, symlink the add-on there, and in
> the main output too.
> * gnu/packages/tor.scm (torbrowser)[arguments]: Add a 'fix-system-dir' phase
> so that the system directory is not shared between variants.
> [propagated-inputs]: Propagate only the "torbrowser" output of
> noscript/icecat.
> [native-search-paths]: Use TORBROWSER_SYSTEM_DIR instead of inheriting from
> the icecat package.
>
> Change-Id: I409bae5c317e98d1bd308eb64a66f1ce1a304bcc
> ---
> gnu/build/icecat-extension.scm | 28 +++++++++++++++++++---------
> gnu/packages/tor.scm | 11 ++++++++++-
> 2 files changed, 29 insertions(+), 10 deletions(-)
>
> diff --git a/gnu/build/icecat-extension.scm b/gnu/build/icecat-extension.scm
> index 9013ab0fac05..b5d44e3b5559 100644
> --- a/gnu/build/icecat-extension.scm
> +++ b/gnu/build/icecat-extension.scm
> @@ -34,7 +34,7 @@ (define* (make-icecat-extension pkg #:optional (pkg-output "out"))
> (native-inputs '())
> (inputs '())
> (propagated-inputs (package-propagated-inputs pkg))
> - (outputs '("out"))
> + (outputs '("out" "icecat" "torbrowser"))
> (build-system trivial-build-system)
> (arguments
> (list
> @@ -61,11 +61,21 @@ (define* (make-icecat-extension pkg #:optional (pkg-output "out"))
> ;; 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).
> - (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)))
> -
> - (mkdir-p search-dir)
> - (symlink (in-vicinity (ungexp pkg pkg-output) addon-id)
> - (in-vicinity search-dir addon-id))))))))
> + (for-each
> + (lambda (variant)
> + (let* ((addon-id #$(assq-ref (package-properties pkg) 'addon-id))
> + (moz-app-id "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}")
> + (search-dir
> + (lambda (out)
> + (string-append (assoc-ref %outputs out) "/lib/" variant
> + "/extensions/" moz-app-id)))
> + (symlink-addon
> + (lambda (out)
> + (mkdir-p (search-dir out))
> + (symlink (in-vicinity (ungexp pkg pkg-output) addon-id)
> + (in-vicinity (search-dir out) addon-id)))))
> + (symlink-addon variant)
> + ;; Symlink to the main output so that a user can install the
> + ;; add-on for all of the Firefox variants at once.
> + (symlink-addon "out")))
> + (cdr '#$outputs)))))))
> diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
> index b81944ee6b96..c46f48a808da 100644
> --- a/gnu/packages/tor.scm
> +++ b/gnu/packages/tor.scm
> @@ -563,6 +563,10 @@ (define-public torbrowser
> #$flags))
> ((#:phases phases)
> #~(modify-phases #$phases
> + (add-after 'apply-guix-specific-patches 'fix-system-dir
> + (lambda _
> + (substitute* "toolkit/xre/nsXREDirProvider.cpp"
> + (("ICECAT_SYSTEM_DIR") "TORBROWSER_SYSTEM_DIR"))))
> (add-before 'configure 'setenv
> (lambda _
> (setenv "CONFIG_SHELL" (which "bash"))
> @@ -758,7 +762,12 @@ (define-public torbrowser
> tor-client
> torbrowser-assets)))
> (propagated-inputs
> - (list noscript/icecat))
> + (list `(,noscript/icecat "torbrowser")))
> + (native-search-paths
> + (list (search-path-specification
> + (variable "TORBROWSER_SYSTEM_DIR")
> + (separator #f) ;single entry
> + (files '("lib/torbrowser")))))
> (home-page "https://www.torproject.org")
> (synopsis "Anonymous browser derived from Mozilla Firefox")
> (description
Closed
C
C
Clément Lassieur wrote on 12 Jan 18:55 +0100
(no subject)
(address . control@debbugs.gnu.org)
871qaml9m9.fsf@lassieur.org
tags 68298 wontfix
?