Unlike previously, we now fail loudly when a package not containing a gdk-pixbuf modules is passed.
38 lines
930 B
Nix
38 lines
930 B
Nix
{
|
|
runCommand,
|
|
pkg-config,
|
|
gdk-pixbuf,
|
|
lib,
|
|
stdenv,
|
|
buildPackages,
|
|
}:
|
|
|
|
{
|
|
extraLoaders,
|
|
}:
|
|
|
|
let
|
|
# Get packages to generate the cache for. We always include gdk-pixbuf.
|
|
loaderPackages = [
|
|
gdk-pixbuf
|
|
] ++ extraLoaders;
|
|
in
|
|
|
|
# Generate the cache file by running gdk-pixbuf-query-loaders for each
|
|
# package and concatenating the results.
|
|
runCommand "gdk-pixbuf-loaders.cache" {
|
|
preferLocalBuild = true;
|
|
} ''
|
|
(
|
|
for package in ${lib.escapeShellArgs loaderPackages}; do
|
|
module_dir="$package/${gdk-pixbuf.moduleDir}"
|
|
if [[ ! -d "$module_dir" ]]; then
|
|
echo "Error: gdkPixbufCacheBuilder: Passed package “''${package}” does not contain GdkPixbuf loaders in “${gdk-pixbuf.moduleDir}”." 1>&2
|
|
exit 1
|
|
fi
|
|
GDK_PIXBUF_MODULEDIR="$module_dir" \
|
|
${stdenv.hostPlatform.emulator buildPackages} ${gdk-pixbuf.dev}/bin/gdk-pixbuf-query-loaders
|
|
done
|
|
) > "$out"
|
|
''
|