linux_xanmod: 5.11.14 -> 5.11.15
[NixPkgs.git] / pkgs / development / libraries / gdk-pixbuf / default.nix
blob2d8e60d06a735efb3a4ae04deb8439c0bef912e8
1 { stdenv
2 , fetchurl
3 , nixosTests
4 , fixDarwinDylibNames
5 , meson
6 , ninja
7 , pkg-config
8 , gettext
9 , python3
10 , libxml2
11 , libxslt
12 , docbook-xsl-nons
13 , docbook_xml_dtd_43
14 , gtk-doc
15 , glib
16 , libtiff
17 , libjpeg
18 , libpng
19 , gnome3
20 , gobject-introspection
21 , doCheck ? false
22 , makeWrapper
23 , lib
26 stdenv.mkDerivation rec {
27   pname = "gdk-pixbuf";
28   version = "2.42.2";
30   outputs = [ "out" "dev" "man" "devdoc" "installedTests" ];
32   src = fetchurl {
33     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
34     sha256 = "05ggmzwvrxq9w4zcvmrnnd6qplsmb4n95lj4q607c7arzlf6mil3";
35   };
37   patches = [
38     # Move installed tests to a separate output
39     ./installed-tests-path.patch
40   ];
42   nativeBuildInputs = [
43     meson
44     ninja
45     pkg-config
46     gettext
47     python3
48     libxml2
49     libxslt
50     docbook-xsl-nons
51     docbook_xml_dtd_43
52     gtk-doc
53     gobject-introspection
54     makeWrapper
55     glib
56   ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
58   propagatedBuildInputs = [
59     glib
60     libtiff
61     libjpeg
62     libpng
63   ];
65   mesonFlags = [
66     "-Dgtk_doc=true"
67     "-Dintrospection=${if gobject-introspection != null then "enabled" else "disabled"}"
68     "-Dgio_sniffing=false"
69   ];
71   postPatch = ''
72     chmod +x build-aux/* # patchShebangs only applies to executables
73     patchShebangs build-aux
75     substituteInPlace tests/meson.build --subst-var-by installedtestsprefix "$installedTests"
76   '';
78   postInstall =
79     # meson erroneously installs loaders with .dylib extension on Darwin.
80     # Their @rpath has to be replaced before gdk-pixbuf-query-loaders looks at them.
81     lib.optionalString stdenv.isDarwin ''
82       for f in $out/${passthru.moduleDir}/*.dylib; do
83           install_name_tool -change @rpath/libgdk_pixbuf-2.0.0.dylib $out/lib/libgdk_pixbuf-2.0.0.dylib $f
84           mv $f ''${f%.dylib}.so
85       done
86     ''
87     # All except one utility seem to be only useful during building.
88     + ''
89       moveToOutput "bin" "$dev"
90       moveToOutput "bin/gdk-pixbuf-thumbnailer" "$out"
91     '' + lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
92       # We need to install 'loaders.cache' in lib/gdk-pixbuf-2.0/2.10.0/
93       $dev/bin/gdk-pixbuf-query-loaders --update-cache
94     '';
96   # The fixDarwinDylibNames hook doesn't patch binaries.
97   preFixup = lib.optionalString stdenv.isDarwin ''
98     for f in $out/bin/* $dev/bin/*; do
99         install_name_tool -change @rpath/libgdk_pixbuf-2.0.0.dylib $out/lib/libgdk_pixbuf-2.0.0.dylib $f
100     done
101   '';
103   preInstall = ''
104     PATH=$PATH:$out/bin # for install script
105   '';
107   # The tests take an excessive amount of time (> 1.5 hours) and memory (> 6 GB).
108   inherit doCheck;
110   setupHook = ./setup-hook.sh;
112   separateDebugInfo = stdenv.isLinux;
114   passthru = {
115     updateScript = gnome3.updateScript {
116       packageName = pname;
117     };
119     tests = {
120       installedTests = nixosTests.installed-tests.gdk-pixbuf;
121     };
123     # gdk_pixbuf_moduledir variable from gdk-pixbuf-2.0.pc
124     moduleDir = "lib/gdk-pixbuf-2.0/2.10.0/loaders";
125   };
127   meta = with lib; {
128     description = "A library for image loading and manipulation";
129     homepage = "https://gitlab.gnome.org/GNOME/gdk-pixbuf";
130     maintainers = [ maintainers.eelco ] ++ teams.gnome.members;
131     license = licenses.lgpl21Plus;
132     platforms = platforms.unix;
133   };