unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#68298] [PATCH 0/2] Add output in ‘make-icecat-extension’ for each Firefox variant.
@ 2024-01-07  0:02 Clément Lassieur
  2024-01-07  0:05 ` [bug#68298] [PATCH 1/2] gnu: Move comment in ‘make-icecat-extension’ Clément Lassieur
  2024-01-07  0:05 ` [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
  0 siblings, 2 replies; 5+ messages in thread
From: Clément Lassieur @ 2024-01-07  0:02 UTC (permalink / raw)
  To: 68298; +Cc: Clément Lassieur, Clément Lassieur, Jonathan Brielmaier

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





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#68298] [PATCH 1/2] gnu: Move comment in ‘make-icecat-extension’.
  2024-01-07  0:02 [bug#68298] [PATCH 0/2] Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
@ 2024-01-07  0:05 ` Clément Lassieur
  2024-01-07  0:05 ` [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
  1 sibling, 0 replies; 5+ messages in thread
From: Clément Lassieur @ 2024-01-07  0:05 UTC (permalink / raw)
  To: 68298; +Cc: Clément Lassieur, Clément Lassieur, Jonathan Brielmaier

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

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





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant.
  2024-01-07  0:02 [bug#68298] [PATCH 0/2] Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
  2024-01-07  0:05 ` [bug#68298] [PATCH 1/2] gnu: Move comment in ‘make-icecat-extension’ Clément Lassieur
@ 2024-01-07  0:05 ` Clément Lassieur
  2024-01-07  0:12   ` Clément Lassieur
  2024-01-12 17:54   ` bug#68298: " Clément Lassieur
  1 sibling, 2 replies; 5+ messages in thread
From: Clément Lassieur @ 2024-01-07  0:05 UTC (permalink / raw)
  To: 68298; +Cc: Clément Lassieur, Clément Lassieur, Jonathan Brielmaier

* 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
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant.
  2024-01-07  0:05 ` [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
@ 2024-01-07  0:12   ` Clément Lassieur
  2024-01-12 17:54   ` bug#68298: " Clément Lassieur
  1 sibling, 0 replies; 5+ messages in thread
From: Clément Lassieur @ 2024-01-07  0:12 UTC (permalink / raw)
  To: 68298; +Cc: Jonathan Brielmaier

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

> * 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.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#68298: [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant.
  2024-01-07  0:05 ` [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
  2024-01-07  0:12   ` Clément Lassieur
@ 2024-01-12 17:54   ` Clément Lassieur
  1 sibling, 0 replies; 5+ messages in thread
From: Clément Lassieur @ 2024-01-12 17:54 UTC (permalink / raw)
  To: 68298-done; +Cc: Jonathan Brielmaier

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:

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




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-01-12 17:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-07  0:02 [bug#68298] [PATCH 0/2] Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
2024-01-07  0:05 ` [bug#68298] [PATCH 1/2] gnu: Move comment in ‘make-icecat-extension’ Clément Lassieur
2024-01-07  0:05 ` [bug#68298] [PATCH 2/2] gnu: Add output in ‘make-icecat-extension’ for each Firefox variant Clément Lassieur
2024-01-07  0:12   ` Clément Lassieur
2024-01-12 17:54   ` bug#68298: " Clément Lassieur

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).