summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/gnome.scm16
1 files changed, 15 insertions, 1 deletions
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index ac10a8ff78..6b458c6400 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -610,7 +610,21 @@ dealing with different structured file formats.")
             ;; Likewise, create a separate 'loaders.cache' file.
             (("gdk_pixbuf_cache_file = .*$")
              "gdk_pixbuf_cache_file = $(gdk_pixbuf_moduledir).cache\n")))
-        %standard-phases)))
+        (alist-cons-after
+         'install 'generate-full-cache
+         (lambda* (#:key inputs outputs #:allow-other-keys)
+           (let ((loaders-directory 
+                  (string-append (assoc-ref outputs "out")
+                                 "/lib/gdk-pixbuf-2.0/2.0.10/loaders")))
+             (zero?
+              (system 
+               (string-append 
+                "gdk-pixbuf-query-loaders " 
+                loaders-directory "/libpixbufloader-svg.so "
+                (string-join (find-files (assoc-ref inputs "gdk-pixbuf") 
+                                         "libpixbufloader-.*\\.so") " ")
+                "> " loaders-directory ".cache")))))
+         %standard-phases))))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("glib" ,glib "bin")                               ; glib-mkenums, etc.