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