[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
?
Your comment

This issue is archived.

To comment on this conversation send an email to 68298@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 68298
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch