diff mbox series

[bug#51428,core-update-frozen,17/20] profiles: Add a gdk-pixbuf-loaders-cache-file hook.

Message ID 20211027045151.9889-17-maxim.cournoyer@gmail.com
State Accepted
Headers show
Series [bug#51428,core-update-frozen,01/13] build: glib-or-gtk-build-system: Simplify the wrap-all-programs phase. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Maxim Cournoyer Oct. 27, 2021, 4:51 a.m. UTC
This paves the way toward properly fixing https://issues.guix.gnu.org/50957.

* guix/profiles.scm (gdk-pixbuf-loaders-cache-file): Add procedure...
(%default-profile-hooks): ... and register it as a profile hook.
---
 guix/profiles.scm | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

Comments

Ludovic Courtès Oct. 27, 2021, 2:45 p.m. UTC | #1
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

> This paves the way toward properly fixing https://issues.guix.gnu.org/50957.
>
> * guix/profiles.scm (gdk-pixbuf-loaders-cache-file): Add procedure...
> (%default-profile-hooks): ... and register it as a profile hook.

[...]

> +  (mlet %store-monad ((%gdk-pixbuf (manifest-lookup-package
> +                                    manifest "gdk-pixbuf"))

You could call it ‘gdk-pixbuf?’ since it’s used as a boolean.

> +        (gexp->derivation "gdk-pixbuf-loaders-cache-file" build
> +                          #:local-build? #t
> +                          #:substitutable? #f
> +                          #:properties
> +                          '((type . profile-hook)
> +                            (hook . gdk-pixbuf-loaders-cache-file)))

No showstopper but we should eventually add this to (guix status) for
nicer reporting.

My 2¢,
Ludo’.
Maxim Cournoyer Oct. 27, 2021, 5:51 p.m. UTC | #2
Hello,

Ludovic Courtès <ludo@gnu.org> writes:

> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> This paves the way toward properly fixing https://issues.guix.gnu.org/50957.
>>
>> * guix/profiles.scm (gdk-pixbuf-loaders-cache-file): Add procedure...
>> (%default-profile-hooks): ... and register it as a profile hook.
>
> [...]
>
>> +  (mlet %store-monad ((%gdk-pixbuf (manifest-lookup-package
>> +                                    manifest "gdk-pixbuf"))
>
> You could call it ‘gdk-pixbuf?’ since it’s used as a boolean.
>
>> +        (gexp->derivation "gdk-pixbuf-loaders-cache-file" build
>> +                          #:local-build? #t
>> +                          #:substitutable? #f
>> +                          #:properties
>> +                          '((type . profile-hook)
>> +                            (hook . gdk-pixbuf-loaders-cache-file)))

Good idea; done:

modified   guix/profiles.scm
@@ -1167,8 +1167,8 @@ (define (gdk-pixbuf-loaders-cache-file manifest)
   (define gdk-pixbuf                    ;lazy reference
     (module-ref (resolve-interface '(gnu packages gtk)) 'gdk-pixbuf))
 
-  (mlet %store-monad ((%gdk-pixbuf (manifest-lookup-package
-                                    manifest "gdk-pixbuf"))
+  (mlet %store-monad ((%gdk-pixbuf? (manifest-lookup-package
+                                     manifest "gdk-pixbuf"))
                       (gdk-pixbuf-bin -> (file-append gdk-pixbuf "/bin")))
     (define build
       (with-imported-modules (source-module-closure
@@ -1178,7 +1178,7 @@ (define build
             (setenv "PATH" (string-append #$gdk-pixbuf-bin ":" (getenv "PATH")))
             (generate-gdk-pixbuf-loaders-cache '#$(manifest-inputs manifest)
                                                (list #$output)))))
-    (if %gdk-pixbuf
+    (if %gdk-pixbuf?
         (gexp->derivation "gdk-pixbuf-loaders-cache-file" build
                           #:local-build? #t
                           #:substitutable? #f
                           
> No showstopper but we should eventually add this to (guix status) for
> nicer reporting.
>
> My 2¢,
> Ludo’.

Thanks, I was wondering why the hook message output looked different.

Done, like:

modified   guix/status.scm
@@ -381,6 +381,8 @@ (define (hook-message hook-type)
      (G_ "building CA certificate bundle..."))
     ('emacs-subdirs
      (G_ "listing Emacs sub-directories..."))
+    ('gdk-pixbuf-loaders-cache-file
+     (G_ "generating GdkPixbuf loaders cache..."))
     ('glib-schemas
      (G_ "generating GLib schema cache..."))
     ('gtk-icon-themes

Maxim
diff mbox series

Patch

diff --git a/guix/profiles.scm b/guix/profiles.scm
index 9494684228..bdc0d52626 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -7,7 +7,7 @@ 
 ;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
-;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2017, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
@@ -1161,6 +1161,32 @@  (define build
                     `((type . profile-hook)
                       (hook . emacs-subdirs))))
 
+(define (gdk-pixbuf-loaders-cache-file manifest)
+  "Return a derivation that produces a loaders cache file for every gdk-pixbuf
+loaders discovered in MANIFEST."
+  (define gdk-pixbuf                    ;lazy reference
+    (module-ref (resolve-interface '(gnu packages gtk)) 'gdk-pixbuf))
+
+  (mlet %store-monad ((%gdk-pixbuf (manifest-lookup-package
+                                    manifest "gdk-pixbuf"))
+                      (gdk-pixbuf-bin -> (file-append gdk-pixbuf "/bin")))
+    (define build
+      (with-imported-modules (source-module-closure
+                              '((guix build glib-or-gtk-build-system)))
+        #~(begin
+            (use-modules (guix build glib-or-gtk-build-system))
+            (setenv "PATH" (string-append #$gdk-pixbuf-bin ":" (getenv "PATH")))
+            (generate-gdk-pixbuf-loaders-cache '#$(manifest-inputs manifest)
+                                               (list #$output)))))
+    (if %gdk-pixbuf
+        (gexp->derivation "gdk-pixbuf-loaders-cache-file" build
+                          #:local-build? #t
+                          #:substitutable? #f
+                          #:properties
+                          '((type . profile-hook)
+                            (hook . gdk-pixbuf-loaders-cache-file)))
+        (return #f))))
+
 (define (glib-schemas manifest)
   "Return a derivation that unions all schemas from manifest entries and
 creates the Glib 'gschemas.compiled' file."
@@ -1672,6 +1698,7 @@  (define %default-profile-hooks
         ghc-package-cache-file
         ca-certificate-bundle
         emacs-subdirs
+        gdk-pixbuf-loaders-cache-file
         glib-schemas
         gtk-icon-themes
         gtk-im-modules