diff mbox series

[bug#68556,gnome-team,v6,2/7] gnu: gnome-shell-extensions: Wrap the extensions.

Message ID a20507bdaba341e147c631d527249f40e5d2f9d1.1706984229.git.vivien@planete-kraus.eu
State New
Headers show
Series Wrap the extensions with (guix build utils) tools | expand

Commit Message

Vivien Kraus Jan. 19, 2024, 10:36 p.m. UTC
The top-level modules that are wrapped are the /extension.js and /prefs.js of
every extension sub-directory. The GI_TYPELIB_PATH used contains glib for
every extension, and gnome-menus for Applications Menu.

* gnu/packages/gnome.scm (gnome-shell-extensions) [#:phases]: Add
'wrap-extensions.
[native-inputs]: Add gobject-introspection.
[inputs]: Add gnome-menus and glib.
[propagated-imputs]: Remove glib.

Change-Id: I58b79ca92fbceebb9bbb150102fa428022e3eb63
---
 gnu/packages/gnome.scm | 32 +++++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

Comments

Liliana Marie Prikler Feb. 3, 2024, 11:45 p.m. UTC | #1
Am Freitag, dem 19.01.2024 um 23:36 +0100 schrieb Vivien Kraus:
> The top-level modules that are wrapped are the /extension.js and
> /prefs.js of
> every extension sub-directory. The GI_TYPELIB_PATH used contains glib
> for
> every extension, and gnome-menus for Applications Menu.
> 
> * gnu/packages/gnome.scm (gnome-shell-extensions) [#:phases]: Add
> 'wrap-extensions.
> [native-inputs]: Add gobject-introspection.
> [inputs]: Add gnome-menus and glib.
> [propagated-imputs]: Remove glib.
> 
> Change-Id: I58b79ca92fbceebb9bbb150102fa428022e3eb63
> ---
>  gnu/packages/gnome.scm | 32 +++++++++++++++++++++++++++++---
>  1 file changed, 29 insertions(+), 3 deletions(-)
> 
> diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> index 6919576eae..b92cea6b17 100644
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -10726,13 +10726,39 @@ (define-public gnome-shell-extensions
>                 
> "1aq1n75m1svsv0ppg66n9qch26rhjxcv3q33a3skf7hsydr5wd4c"))))
>      (build-system meson-build-system)
>      (arguments
> -     '(#:configure-flags '("-Dextension_set=all")))
> +     (list
> +      #:configure-flags #~'("-Dextension_set=all")
> +      #:phases
> +      #~(modify-phases %standard-phases
> +          (add-after 'unpack 'wrap-extensions
> +            (lambda _
> +              (use-modules (ice-9 textual-ports)
> +                           (guix build utils))
> +              (for-each
> +               (lambda (file-to-wrap)
> +                 (with-atomic-file-replacement file-to-wrap
> +                   (lambda (source wrapped)
> +                     (format wrapped "'~a'.split(':').forEach("
> +                             (getenv "GI_TYPELIB_PATH"))
> +                     (display
> +                      (string-append "path =>
> imports.gi.GIRepository.Repository"
> +                                    
> ".prepend_search_path(path));\n")
> +                      wrapped)
> +                     (let ((input-size
> +                            (begin
> +                              (seek source 0 SEEK_END)
> +                              (ftell source))))
> +                       (seek source 0 SEEK_SET)
> +                       (sendfile wrapped source input-size)))))
Why send-file instead of dump-port?
> +               (find-files "extensions"
> "(extension|prefs)\\.js")))))))
>      (native-inputs
>       (list `(,glib "bin")
>             gettext-minimal
> +           gobject-introspection        ; to set GI_TYPELIB_PATH
>             pkg-config))
> -    (propagated-inputs
> -     (list glib))
> +    (inputs
> +     (list glib
> +           gnome-menus))                ; for Applications Menu
>      (synopsis "Extensions for GNOME Shell")
>      (description "GNOME Shell extensions modify and extend GNOME
> Shell
>  functionality and behavior.")
Cheers
diff mbox series

Patch

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 6919576eae..b92cea6b17 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -10726,13 +10726,39 @@  (define-public gnome-shell-extensions
                 "1aq1n75m1svsv0ppg66n9qch26rhjxcv3q33a3skf7hsydr5wd4c"))))
     (build-system meson-build-system)
     (arguments
-     '(#:configure-flags '("-Dextension_set=all")))
+     (list
+      #:configure-flags #~'("-Dextension_set=all")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'wrap-extensions
+            (lambda _
+              (use-modules (ice-9 textual-ports)
+                           (guix build utils))
+              (for-each
+               (lambda (file-to-wrap)
+                 (with-atomic-file-replacement file-to-wrap
+                   (lambda (source wrapped)
+                     (format wrapped "'~a'.split(':').forEach("
+                             (getenv "GI_TYPELIB_PATH"))
+                     (display
+                      (string-append "path => imports.gi.GIRepository.Repository"
+                                     ".prepend_search_path(path));\n")
+                      wrapped)
+                     (let ((input-size
+                            (begin
+                              (seek source 0 SEEK_END)
+                              (ftell source))))
+                       (seek source 0 SEEK_SET)
+                       (sendfile wrapped source input-size)))))
+               (find-files "extensions" "(extension|prefs)\\.js")))))))
     (native-inputs
      (list `(,glib "bin")
            gettext-minimal
+           gobject-introspection        ; to set GI_TYPELIB_PATH
            pkg-config))
-    (propagated-inputs
-     (list glib))
+    (inputs
+     (list glib
+           gnome-menus))                ; for Applications Menu
     (synopsis "Extensions for GNOME Shell")
     (description "GNOME Shell extensions modify and extend GNOME Shell
 functionality and behavior.")