1{
2 lib,
3 stdenv,
4 fetchurl,
5 pkg-config,
6 vala,
7 gi-docgen,
8 gobject-introspection,
9 glib,
10 babl,
11 libpng,
12 llvmPackages,
13 cairo,
14 libjpeg,
15 librsvg,
16 lensfun,
17 libspiro,
18 maxflow,
19 netsurf,
20 pango,
21 poly2tri-c,
22 poppler,
23 bzip2,
24 json-glib,
25 gettext,
26 meson,
27 ninja,
28 libraw,
29 gexiv2,
30 libwebp,
31 luajit,
32 openexr,
33 suitesparse,
34 withLuaJIT ? lib.meta.availableOn stdenv.hostPlatform luajit,
35 gimp,
36}:
37
38stdenv.mkDerivation (finalAttrs: {
39 pname = "gegl";
40 version = "0.4.62";
41
42 outputs = [
43 "out"
44 "dev"
45 "devdoc"
46 ];
47 outputBin = "dev";
48
49 src = fetchurl {
50 url = "https://download.gimp.org/pub/gegl/${lib.versions.majorMinor finalAttrs.version}/gegl-${finalAttrs.version}.tar.xz";
51 hash = "sha256-WIdXY3Hr8dnpB5fRDkuafxZYIo1IJ1g+eeHbPZRQXGw=";
52 };
53
54 nativeBuildInputs = [
55 pkg-config
56 gettext
57 meson
58 ninja
59 vala
60 gobject-introspection
61 gi-docgen
62 ];
63
64 buildInputs = [
65 libpng
66 cairo
67 libjpeg
68 librsvg
69 lensfun
70 libspiro
71 maxflow
72 netsurf.libnsgif
73 pango
74 poly2tri-c
75 poppler
76 bzip2
77 libraw
78 libwebp
79 gexiv2
80 openexr
81 suitesparse
82 ]
83 ++ lib.optionals stdenv.cc.isClang [
84 llvmPackages.openmp
85 ]
86 ++ lib.optionals withLuaJIT [
87 luajit
88 ];
89
90 # for gegl-4.0.pc
91 propagatedBuildInputs = [
92 glib
93 json-glib
94 babl
95 ];
96
97 mesonFlags = [
98 "-Dmrg=disabled" # not sure what that is
99 "-Dsdl2=disabled"
100 "-Dpygobject=disabled"
101 "-Dlibav=disabled"
102 "-Dlibv4l=disabled"
103 "-Dlibv4l2=disabled"
104 # Disabled due to multiple vulnerabilities, see
105 # https://github.com/NixOS/nixpkgs/pull/73586
106 "-Djasper=disabled"
107 ]
108 ++ lib.optionals (!withLuaJIT) [
109 "-Dlua=disabled"
110 ];
111
112 postPatch = ''
113 chmod +x tests/opencl/opencl_test.sh
114 patchShebangs tests/ff-load-save/tests_ff_load_save.sh tests/opencl/opencl_test.sh tools/xml_insert.sh
115 '';
116
117 postFixup = ''
118 # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
119 moveToOutput "share/doc" "$devdoc"
120 '';
121
122 # tests fail to connect to the com.apple.fonts daemon in sandboxed mode
123 doCheck = !stdenv.hostPlatform.isDarwin;
124
125 passthru = {
126 tests = {
127 inherit gimp;
128 };
129 };
130
131 meta = with lib; {
132 description = "Graph-based image processing framework";
133 homepage = "https://www.gegl.org";
134 license = licenses.lgpl3Plus;
135 maintainers = with maintainers; [ jtojnar ];
136 platforms = platforms.unix;
137 };
138})