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 [
66 libpng
67 cairo
68 libjpeg
69 librsvg
70 lensfun
71 libspiro
72 maxflow
73 netsurf.libnsgif
74 pango
75 poly2tri-c
76 poppler
77 bzip2
78 libraw
79 libwebp
80 gexiv2
81 openexr
82 suitesparse
83 ]
84 ++ lib.optionals stdenv.cc.isClang [
85 llvmPackages.openmp
86 ]
87 ++ lib.optionals withLuaJIT [
88 luajit
89 ];
90
91 # for gegl-4.0.pc
92 propagatedBuildInputs = [
93 glib
94 json-glib
95 babl
96 ];
97
98 mesonFlags =
99 [
100 "-Dmrg=disabled" # not sure what that is
101 "-Dsdl2=disabled"
102 "-Dpygobject=disabled"
103 "-Dlibav=disabled"
104 "-Dlibv4l=disabled"
105 "-Dlibv4l2=disabled"
106 # Disabled due to multiple vulnerabilities, see
107 # https://github.com/NixOS/nixpkgs/pull/73586
108 "-Djasper=disabled"
109 ]
110 ++ lib.optionals (!withLuaJIT) [
111 "-Dlua=disabled"
112 ];
113
114 postPatch = ''
115 chmod +x tests/opencl/opencl_test.sh
116 patchShebangs tests/ff-load-save/tests_ff_load_save.sh tests/opencl/opencl_test.sh tools/xml_insert.sh
117 '';
118
119 postFixup = ''
120 # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
121 moveToOutput "share/doc" "$devdoc"
122 '';
123
124 # tests fail to connect to the com.apple.fonts daemon in sandboxed mode
125 doCheck = !stdenv.hostPlatform.isDarwin;
126
127 passthru = {
128 tests = {
129 inherit gimp;
130 };
131 };
132
133 meta = with lib; {
134 description = "Graph-based image processing framework";
135 homepage = "https://www.gegl.org";
136 license = licenses.lgpl3Plus;
137 maintainers = with maintainers; [ jtojnar ];
138 platforms = platforms.unix;
139 };
140})