From 49821433242c4f44cff038a039ead3bc9741fbf1 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sun, 14 Jun 2015 15:59:52 +0200 Subject: [PATCH] gdkpixbuf: simplify setup hook, don't create per-package loaders.cache --- .../libraries/gdk-pixbuf/setup-hook.sh | 26 +++++++------------ .../development/libraries/librsvg/default.nix | 9 ++++++- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh index 06e820633b84..ba7ab82f50b4 100644 --- a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh +++ b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh @@ -1,23 +1,15 @@ findGdkPixbufLoaders() { - if [ -n "$out" ] && [ -z "$IN_NIX_SHELL" ]; then - - # set pixbuf loaders.cache for this package - - local loadersDir="$out/lib/gdk-pixbuf-loaders-2.0/$name" - mkdir -p "$loadersDir" - - if [ -f "$1/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" ]; then - cat "$1/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" >> "$loadersDir/loaders.cache" + # choose the longest loaders.cache + local loadersCache="$1/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" + if [ -f "$loadersCache" ]; then + if [ -f "$GDK_PIXBUF_MODULE_FILE" ]; then + if [ $(cat "$loadersCache"|wc -l) -gt $(cat "$GDK_PIXBUF_MODULE_FILE"|wc -l) ]; then + export GDK_PIXBUF_MODULE_FILE="$loadersCache" + fi + else + export GDK_PIXBUF_MODULE_FILE="$loadersCache" fi - - if [ -f "$1/lib/gdk-pixbuf/loaders.cache" ]; then - cat "$1/lib/gdk-pixbuf/loaders.cache" >> "$loadersDir/loaders.cache" - fi - - # note, this is not a search path - export GDK_PIXBUF_MODULE_FILE=$(readlink -e "$loadersDir/loaders.cache") - fi } diff --git a/pkgs/development/libraries/librsvg/default.nix b/pkgs/development/libraries/librsvg/default.nix index 9589298ecd50..4c22c988c790 100644 --- a/pkgs/development/libraries/librsvg/default.nix +++ b/pkgs/development/libraries/librsvg/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation rec { # The loaders.cache can be used by setting GDK_PIXBUF_MODULE_FILE to # point to this file in a wrapper. postConfigure = '' - GDK_PIXBUF=$out/lib/gdk-pixbuf + GDK_PIXBUF=$out/lib/gdk-pixbuf-2.0/2.10.0 mkdir -p $GDK_PIXBUF/loaders sed -e "s#gdk_pixbuf_moduledir = .*#gdk_pixbuf_moduledir = $GDK_PIXBUF/loaders#" \ -i gdk-pixbuf-loader/Makefile @@ -43,4 +43,11 @@ stdenv.mkDerivation rec { sed -e "s#\$(GDK_PIXBUF_QUERYLOADERS)#GDK_PIXBUF_MODULEDIR=$GDK_PIXBUF/loaders \$(GDK_PIXBUF_QUERYLOADERS)#" \ -i gdk-pixbuf-loader/Makefile ''; + + # Merge gdkpixbuf and librsvg loaders + postInstall = '' + mv $GDK_PIXBUF/loaders.cache $GDK_PIXBUF/loaders.cache.tmp + cat ${gdk_pixbuf}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache $GDK_PIXBUF/loaders.cache.tmp > $GDK_PIXBUF/loaders.cache + rm $GDK_PIXBUF/loaders.cache.tmp + ''; }