apteryx pushed a commit to branch core-updates-frozen-batched-changes in repository guix.
commit c790d77886806a1ec2660fe1c2e0d66f97db2c76 Author: Maxim Cournoyer <[email protected]> AuthorDate: Sat Oct 2 21:28:24 2021 -0400 profiles: Add a gdk-pixbuf-loaders-cache-file hook. 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/status.scm (hook-message): Register it here too. --- guix/profiles.scm | 29 ++++++++++++++++++++++++++++- guix/status.scm | 2 ++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/guix/profiles.scm b/guix/profiles.scm index 9494684..5686b1f 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus <[email protected]> ;;; Copyright © 2016 Chris Marusich <[email protected]> ;;; Copyright © 2017 Huang Ying <[email protected]> -;;; Copyright © 2017 Maxim Cournoyer <[email protected]> +;;; Copyright © 2017, 2021 Maxim Cournoyer <[email protected]> ;;; Copyright © 2019 Kyle Meyer <[email protected]> ;;; Copyright © 2019 Mathieu Othacehe <[email protected]> ;;; Copyright © 2020 Danny Milosavljevic <[email protected]> @@ -1161,6 +1161,32 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." `((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 @@ the entries in MANIFEST." ghc-package-cache-file ca-certificate-bundle emacs-subdirs + gdk-pixbuf-loaders-cache-file glib-schemas gtk-icon-themes gtk-im-modules diff --git a/guix/status.scm b/guix/status.scm index f351a56..eefe183 100644 --- a/guix/status.scm +++ b/guix/status.scm @@ -381,6 +381,8 @@ the current build phase." (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
