download: Don't report the progress too fast.
[jackhill/guix/guix.git] / gnu / packages / gtk.scm
CommitLineData
3a08a411
AE
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
b9743865 3;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
b9acdad7 4;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
b38e45d8 5;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
a6035fc1 6;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
136770c9 7;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
dfbce50c 8;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
3bc45449 9;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
c900f843 10;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
a20608a5 11;;; Coypright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
5b003972 12;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
b7807bb2 13;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
3c8ba11a 14;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
9b381643 15;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
97b66a91 16;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is>
61af2675 17;;; Coypright © 2017 Roel Janssen <roel@gnu.org>
3a08a411
AE
18;;;
19;;; This file is part of GNU Guix.
20;;;
21;;; GNU Guix is free software; you can redistribute it and/or modify it
22;;; under the terms of the GNU General Public License as published by
23;;; the Free Software Foundation; either version 3 of the License, or (at
24;;; your option) any later version.
25;;;
26;;; GNU Guix is distributed in the hope that it will be useful, but
27;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29;;; GNU General Public License for more details.
30;;;
31;;; You should have received a copy of the GNU General Public License
32;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33
34(define-module (gnu packages gtk)
b5b73a82 35 #:use-module ((guix licenses) #:prefix license:)
b38e45d8 36 #:use-module (guix utils)
3a08a411
AE
37 #:use-module (guix packages)
38 #:use-module (guix download)
a9276c12 39 #:use-module (guix git-download)
3a08a411 40 #:use-module (guix build-system gnu)
0b96fb2a 41 #:use-module (guix build-system python)
e926ba71 42 #:use-module (guix build-system waf)
b837e658 43 #:use-module (gnu packages)
3bc45449 44 #:use-module (gnu packages algebra)
1a51fe27 45 #:use-module (gnu packages autotools)
61af2675 46 #:use-module (gnu packages base)
1a51fe27 47 #:use-module (gnu packages texinfo)
136770c9 48 #:use-module (gnu packages check)
6131c43d 49 #:use-module (gnu packages compression)
3bc45449 50 #:use-module (gnu packages docbook)
9c0c77f8 51 #:use-module (gnu packages enchant)
6131c43d 52 #:use-module (gnu packages fontutils)
982b3574 53 #:use-module (gnu packages freedesktop)
3bc45449 54 #:use-module (gnu packages gettext)
6131c43d 55 #:use-module (gnu packages ghostscript)
31b254a3 56 #:use-module (gnu packages gl)
3a08a411 57 #:use-module (gnu packages glib)
95d439b2 58 #:use-module (gnu packages gnome)
a2609b41 59 #:use-module (gnu packages icu4c)
e55354b8 60 #:use-module (gnu packages image)
9b381643 61 #:use-module (gnu packages libffi)
6131c43d 62 #:use-module (gnu packages pdf)
8b79a547 63 #:use-module (gnu packages perl)
6131c43d 64 #:use-module (gnu packages pkg-config)
3bc45449 65 #:use-module (gnu packages pretty-print)
6131c43d 66 #:use-module (gnu packages python)
8e70e6d2 67 #:use-module (gnu packages guile)
37cb3a69 68 #:use-module (gnu packages cups)
8e70e6d2 69 #:use-module (gnu packages xml)
6c0e878e
LC
70 #:use-module (gnu packages xorg)
71 #:use-module (gnu packages xdisorg))
3a08a411
AE
72
73(define-public atk
74 (package
75 (name "atk")
df54e0b3 76 (version "2.24.0")
3a08a411
AE
77 (source (origin
78 (method url-fetch)
3b8e4347 79 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
80 (version-major+minor version) "/"
81 name "-" version ".tar.xz"))
3a08a411
AE
82 (sha256
83 (base32
df54e0b3 84 "0jbs90vacl95mwgvmqsizi1bwx5sw0rz70r9knksfwwch2dalbdv"))))
3a08a411 85 (build-system gnu-build-system)
cd0466eb
SB
86 (outputs '("out" "doc"))
87 (arguments
88 `(#:configure-flags
89 (list (string-append "--with-html-dir="
90 (assoc-ref %outputs "doc")
91 "/share/gtk-doc/html"))))
13a9e291 92 (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
141aed80
LC
93 (native-inputs
94 `(("pkg-config" ,pkg-config)
426adbe8 95 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 96 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
c5cc5006 97 (synopsis "GNOME accessibility toolkit")
3a08a411
AE
98 (description
99 "ATK provides the set of accessibility interfaces that are implemented
35b9e423 100by other toolkits and applications. Using the ATK interfaces, accessibility
3a08a411
AE
101tools have full access to view and control running applications.")
102 (license license:lgpl2.0+)
103 (home-page "https://developer.gnome.org/atk/")))
6131c43d
AE
104
105(define-public cairo
106 (package
107 (name "cairo")
b3822954 108 (version "1.14.8")
6131c43d
AE
109 (source (origin
110 (method url-fetch)
b3822954 111 (uri (string-append "https://cairographics.org/releases/cairo-"
6131c43d
AE
112 version ".tar.xz"))
113 (sha256
114 (base32
b3822954 115 "082ypjlh03ss5616amgjp9ap3xwwccyh2knyyrj1a4d4x65dkwni"))
bc118f1a 116 (patches (search-patches "cairo-CVE-2016-9082.patch"))))
6131c43d
AE
117 (build-system gnu-build-system)
118 (propagated-inputs
119 `(("fontconfig" ,fontconfig)
120 ("freetype" ,freetype)
121 ("glib" ,glib)
122 ("libpng" ,libpng)
123 ("libx11" ,libx11)
124 ("libxext" ,libxext)
125 ("libxrender" ,libxrender)
126 ("pixman" ,pixman)))
127 (inputs
128 `(("ghostscript" ,ghostscript)
129 ("libspectre" ,libspectre)
6131c43d 130 ("poppler" ,poppler)
6131c43d
AE
131 ("xextproto" ,xextproto)
132 ("zlib" ,zlib)))
c4c4cc05
JD
133 (native-inputs
134 `(("pkg-config" ,pkg-config)
135 ("python" ,python-wrapper)))
6131c43d 136 (arguments
77888fae
MW
137 `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
138 #:configure-flags '("--enable-tee"))) ; needed for GNU Icecat
6131c43d
AE
139 (synopsis "2D graphics library")
140 (description
141 "Cairo is a 2D graphics library with support for multiple output devices.
142Currently supported output targets include the X Window System (via both
143Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
35b9e423 144output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
6131c43d
AE
145
146Cairo is designed to produce consistent output on all output media while
147taking advantage of display hardware acceleration when available
148eg. through the X Render Extension).
149
150The cairo API provides operations similar to the drawing operators of
35b9e423 151PostScript and PDF. Operations in cairo including stroking and filling cubic
6131c43d 152Bézier splines, transforming and compositing translucent images, and
35b9e423 153antialiased text rendering. All drawing operations can be transformed by any
e881752c 154affine transformation (scale, rotation, shear, etc.).")
6131c43d 155 (license license:lgpl2.1) ; or Mozilla Public License 1.1
b3822954 156 (home-page "https://cairographics.org/")))
a2609b41 157
40b3f523
DC
158(define-public cairo-xcb
159 (package
160 (inherit cairo)
161 (name "cairo-xcb")
162 (inputs
163 `(("mesa" ,mesa)
164 ,@(package-inputs cairo)))
165 (arguments
166 `(#:tests? #f
167 #:configure-flags
168 '("--enable-xlib-xcb" "--enable-gl" "--enable-egl")))
169 (synopsis "2D graphics library (with X11 support)")))
170
a2609b41
AE
171(define-public harfbuzz
172 (package
173 (name "harfbuzz")
b4a6497c 174 (version "1.4.6")
a2609b41 175 (source (origin
fd9b3b43 176 (method url-fetch)
5cc3096c 177 (uri (string-append "https://www.freedesktop.org/software/"
fd9b3b43
SB
178 "harfbuzz/release/harfbuzz-"
179 version ".tar.bz2"))
180 (sha256
181 (base32
b4a6497c 182 "14yj514yfy373np3gxk930a443j1zgnwg6mm0kdzzjr0rn0qp9r1"))))
a2609b41 183 (build-system gnu-build-system)
0a129f39
SB
184 (outputs '("out"
185 "bin")) ; 160K, only hb-view depend on cairo
a2609b41 186 (inputs
fd9b3b43
SB
187 `(("cairo" ,cairo)))
188 (propagated-inputs
189 ;; There are all in the Requires or Requires.private field of '.pc'.
190 `(("glib" ,glib)
27383915 191 ("graphite2" ,graphite2)
c4c4cc05
JD
192 ("icu4c" ,icu4c)))
193 (native-inputs
a30a0455
SB
194 `(("gobject-introspection" ,gobject-introspection)
195 ("pkg-config" ,pkg-config)
ac462e52 196 ("python" ,python-2))) ; incompatible with Python 3 (print syntax)
27383915 197 (arguments
a30a0455 198 `(#:configure-flags `("--with-graphite2"
eb6afbcd
SB
199 "--with-gobject"
200 ,(string-append
201 "--bindir=" (assoc-ref %outputs "bin") "/bin"))))
35b9e423 202 (synopsis "OpenType text shaping engine")
a2609b41
AE
203 (description
204 "HarfBuzz is an OpenType text shaping engine.")
205 (license (license:x11-style "file://COPYING"
206 "See 'COPYING' in the distribution."))
61320932 207 (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
4b9adff9
AE
208
209(define-public pango
210 (package
211 (name "pango")
9d5aadb3 212 (version "1.40.6")
4b9adff9
AE
213 (source (origin
214 (method url-fetch)
dca1b58d
FB
215 (uri (string-append "mirror://gnome/sources/pango/"
216 (version-major+minor version) "/"
217 name "-" version ".tar.xz"))
4b9adff9
AE
218 (sha256
219 (base32
9d5aadb3 220 "0wz5b5knpw4gfvz3ny8l6h2ca3bpqqyh55mffkyzgsd1hdrjn5fa"))))
4b9adff9 221 (build-system gnu-build-system)
cf2135ff 222 (propagated-inputs
4b9adff9 223 `(("cairo" ,cairo)
4169a4bc
AE
224 ("harfbuzz" ,harfbuzz)))
225 (inputs
9a5acb54
JL
226 `(("zlib" ,zlib)
227
228 ;; Some packages, such as Openbox, expect Pango to be built with the
229 ;; optional libxft support.
230 ("libxft" ,libxft)))
c4c4cc05 231 (native-inputs
141aed80 232 `(("pkg-config" ,pkg-config)
426adbe8 233 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 234 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
4b9adff9
AE
235 (synopsis "GNOME text and font handling library")
236 (description
237 "Pango is the core text and font handling library used in GNOME
35b9e423 238applications. It has extensive support for the different writing systems
4b9adff9
AE
239used throughout the world.")
240 (license license:lgpl2.0+)
241 (home-page "https://developer.gnome.org/pango/")))
527e7961 242
5698b8b8
JD
243(define-public pangox-compat
244 (package
245 (name "pangox-compat")
246 (version "0.0.2")
247 (source (origin
248 (method url-fetch)
b38e45d8
EB
249 (uri (string-append "mirror://gnome/sources/" name "/"
250 (version-major+minor version) "/"
251 name "-" version ".tar.xz"))
5698b8b8
JD
252 (sha256
253 (base32
254 "0ip0ziys6mrqqmz4n71ays0kf5cs1xflj1gfpvs4fgy2nsrr482m"))))
255 (build-system gnu-build-system)
256 (inputs
257 `(("glib" ,glib)
258 ("pango" ,pango)))
259 (native-inputs
260 `(("intltool" ,intltool)
261 ("pkg-config" ,pkg-config)))
262 (home-page "https://developer.gnome.org/pango")
35b9e423 263 (synopsis "Obsolete pango functions")
5698b8b8
JD
264 (description "Pangox was a X backend to pango. It is now obsolete and no
265longer provided by recent pango releases. pangox-compat provides the
266functions which were removed.")
267 (license license:lgpl2.0+)))
268
e926ba71
RW
269(define-public ganv
270 (package
271 (name "ganv")
272 (version "1.4.2")
273 (source (origin
274 (method url-fetch)
275 (uri (string-append "http://download.drobilla.net/ganv-"
ea7f3349 276 version ".tar.bz2"))
e926ba71
RW
277 (sha256
278 (base32
279 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
280 (build-system waf-build-system)
ea7f3349
LC
281 (arguments
282 `(#:phases (alist-cons-before
d8c317df 283 'configure 'set-flags
ea7f3349 284 (lambda* (#:key outputs #:allow-other-keys)
d8c317df
SB
285 ;; Compile with C++11, required by gtkmm.
286 (setenv "CXXFLAGS" "-std=c++11")
ea7f3349
LC
287 ;; Allow 'bin/ganv_bench' to find libganv-1.so.
288 (setenv "LDFLAGS"
289 (string-append "-Wl,-rpath="
290 (assoc-ref outputs "out") "/lib")))
291 %standard-phases)
292 #:tests? #f)) ; no check target
e926ba71
RW
293 (inputs
294 `(("gtk" ,gtk+-2)
295 ("gtkmm" ,gtkmm-2)))
296 (native-inputs
297 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
298 ("pkg-config" ,pkg-config)))
299 (home-page "http://drobilla.net/software/ganv/")
300 (synopsis "GTK+ widget for interactive graph-like environments")
301 (description
302 "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
303graph-like environments, e.g. modular synths or finite state machine
304diagrams.")
305 (license license:gpl3+)))
95d439b2 306
a9276c12
RW
307(define-public ganv-devel
308 (let ((commit "31685d283e9b811b61014f820c42807f4effa071")
309 (revision "1"))
310 (package
311 (inherit ganv)
312 (name "ganv")
313 (version (string-append "1.4.2-" revision "."
314 (string-take commit 9)))
315 (source (origin
316 (method git-fetch)
317 (uri (git-reference
318 (url "http://git.drobilla.net/ganv.git")
319 (commit commit)))
320 (sha256
321 (base32
322 "0xmbykdl42jn9cgzrqrys5lng67d26nk5xq10wkkvjqldiwdck56")))))))
323
c900f843 324(define-public gtksourceview-2
95d439b2
JD
325 (package
326 (name "gtksourceview")
327 (version "2.10.5") ; This is the last version which builds against gtk+2
328 (source (origin
329 (method url-fetch)
b38e45d8
EB
330 (uri (string-append "mirror://gnome/sources/" name "/"
331 (version-major+minor version) "/"
332 name "-" version ".tar.bz2"))
95d439b2
JD
333 (sha256
334 (base32
335 "07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5"))))
336 (build-system gnu-build-system)
c4c4cc05 337 (native-inputs
44add1ce 338 `(("intltool" ,intltool)
221ed17a 339 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
bd05ea41
SB
340 ("pkg-config" ,pkg-config)
341 ;; For testing.
342 ("xorg-server" ,xorg-server)
343 ("shared-mime-info" ,shared-mime-info)))
68d85de1
TUBK
344 (propagated-inputs
345 ;; As per the pkg-config file.
bd05ea41
SB
346 `(("gtk" ,gtk+-2)
347 ("libxml2" ,libxml2)))
95d439b2
JD
348 (arguments
349 `(#:phases
350 ;; Unfortunately, some of the tests in "make check" are highly dependent
351 ;; on the environment therefore, some black magic is required.
352 (alist-cons-before
353 'check 'start-xserver
354 (lambda* (#:key inputs #:allow-other-keys)
355 (let ((xorg-server (assoc-ref inputs "xorg-server"))
356 (mime (assoc-ref inputs "shared-mime-info")))
357
358 ;; There must be a running X server and make check doesn't start one.
359 ;; Therefore we must do it.
360 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
361 (setenv "DISPLAY" ":1")
362
363 ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
364 (system "ln -s gtksourceview gtksourceview-2.0")
365 (setenv "XDG_DATA_HOME" (getcwd))
366
367 ;; Finally, the mimetypes must be available.
368 (setenv "XDG_DATA_DIRS" (string-append mime "/share/")) ))
369 %standard-phases)))
370 (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
371 (description
372 "GtkSourceView is a portable C library that extends the standard GTK+
373framework for multiline text editing with support for configurable syntax
374highlighting, unlimited undo/redo, search and replace, a completion framework,
375printing and other features typical of a source code editor.")
376 (license license:lgpl2.0+)
377 (home-page "https://developer.gnome.org/gtksourceview/")))
378
c900f843
DH
379(define-public gtksourceview
380 (package
381 (name "gtksourceview")
097b80e1 382 (version "3.24.4")
c900f843
DH
383 (source (origin
384 (method url-fetch)
385 (uri (string-append "mirror://gnome/sources/" name "/"
386 (version-major+minor version) "/"
387 name "-" version ".tar.xz"))
388 (sha256
389 (base32
097b80e1 390 "14x738xrz9q8qz13xd7dys748ryxyq2srbqyaa9r7n47h2av2zr0"))))
c900f843
DH
391 (build-system gnu-build-system)
392 (arguments
393 '(#:phases
394 (modify-phases %standard-phases
395 (add-before
396 'check 'pre-check
397 (lambda* (#:key inputs #:allow-other-keys)
398 (let ((xorg-server (assoc-ref inputs "xorg-server")))
399 ;; Tests require a running X server.
400 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
401 (setenv "DISPLAY" ":1")
402 ;; For the missing /etc/machine-id.
403 (setenv "DBUS_FATAL_WARNINGS" "0")
404 #t))))))
405 (native-inputs
406 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
407 ("intltool" ,intltool)
b3546174 408 ("itstool" ,itstool)
c900f843
DH
409 ("gobject-introspection" ,gobject-introspection)
410 ("pkg-config" ,pkg-config)
411 ("vala" ,vala)
412 ;; For testing.
413 ("xorg-server" ,xorg-server)
414 ("shared-mime-info" ,shared-mime-info)))
415 (propagated-inputs
416 ;; gtksourceview-3.0.pc refers to all these.
417 `(("glib" ,glib)
418 ("gtk+" ,gtk+)
419 ("libxml2" ,libxml2)))
420 (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
421 (synopsis "GNOME source code widget")
422 (description "GtkSourceView is a text widget that extends the standard
423GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax
424highlighting and other features typical of a source code editor.")
425 (license license:lgpl2.1+)))
426
527e7961
AE
427(define-public gdk-pixbuf
428 (package
429 (name "gdk-pixbuf")
ad472397 430 (replacement gdk-pixbuf-2.36.10)
2ff8deae 431 (version "2.36.6")
527e7961
AE
432 (source (origin
433 (method url-fetch)
b38e45d8
EB
434 (uri (string-append "mirror://gnome/sources/" name "/"
435 (version-major+minor version) "/"
436 name "-" version ".tar.xz"))
527e7961
AE
437 (sha256
438 (base32
2ff8deae 439 "034279k49ydawnagqd7b1rz741n20k4y3grybzwp26zd146bjpj5"))
8c6b077b 440 (patches (search-patches "gdk-pixbuf-list-dir.patch"))))
527e7961 441 (build-system gnu-build-system)
48f46dc3 442 (arguments
a63a73dc
SB
443 '(#:configure-flags '("--with-x11")
444 #:phases
445 (modify-phases %standard-phases
446 (add-after
447 'unpack 'disable-failing-tests
448 (lambda _
449 (substitute* "tests/Makefile.in"
fe08b6e1
EF
450 ;; XXX FIXME: This test fails on armhf machines with:
451 ;; SKIP Not enough memory to load bitmap image
452 ;; ERROR: cve-2015-4491 - too few tests run (expected 4, got 2)
a63a73dc
SB
453 (("cve-2015-4491\\$\\(EXEEXT\\) ") "")
454 ;; XXX FIXME: This test fails with:
455 ;; ERROR:pixbuf-jpeg.c:74:test_type9_rotation_exif_tag:
456 ;; assertion failed (error == NULL): Data differ
457 ;; (gdk-pixbuf-error-quark, 0)
458 (("pixbuf-jpeg\\$\\(EXEEXT\\) ") ""))
459 #t)))))
6983ba56
SB
460 (propagated-inputs
461 `(;; Required by gdk-pixbuf-2.0.pc
462 ("glib" ,glib)
463 ("libpng" ,libpng)
464 ;; Used for testing and required at runtime.
465 ("shared-mime-info" ,shared-mime-info)))
1b5758a6
SB
466 (inputs
467 `(("libjpeg" ,libjpeg)
48f46dc3 468 ("libtiff" ,libtiff)
224276ab 469 ("libx11" ,libx11)))
c4c4cc05 470 (native-inputs
141aed80 471 `(("pkg-config" ,pkg-config)
426adbe8 472 ("glib" ,glib "bin") ; glib-mkenums, etc.
b3546174 473 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
527e7961
AE
474 (synopsis "GNOME image loading and manipulation library")
475 (description
476 "GdkPixbuf is a library for image loading and manipulation developed
477in the GNOME project.")
478 (license license:lgpl2.0+)
479 (home-page "https://developer.gnome.org/gdk-pixbuf/")))
cf2135ff 480
34dc3907
SB
481;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
482;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the
483;; closure size.
484(define-public gdk-pixbuf+svg
e60d3a55 485 (package (inherit gdk-pixbuf)
34dc3907 486 (name "gdk-pixbuf+svg")
ad472397 487 (replacement gdk-pixbuf+svg-2.36.10)
34dc3907
SB
488 (inputs
489 `(("librsvg" ,librsvg)
490 ,@(package-inputs gdk-pixbuf)))
491 (arguments
492 '(#:configure-flags '("--with-x11")
493 #:tests? #f ; tested by the gdk-pixbuf package already
494 #:phases
495 (modify-phases %standard-phases
496 (add-after 'install 'register-svg-loader
497 (lambda* (#:key inputs outputs #:allow-other-keys)
498 (let* ((out (assoc-ref outputs "out"))
499 (librsvg (assoc-ref inputs "librsvg"))
500 (loaders
501 (append
502 (find-files out "^libpixbufloader-.*\\.so$")
503 (find-files librsvg "^libpixbufloader-.*\\.so$")))
504 (gdk-pixbuf-query-loaders
505 (string-append out "/bin/gdk-pixbuf-query-loaders")))
506 (zero? (apply system* `(,gdk-pixbuf-query-loaders
507 "--update-cache" ,@loaders)))))))))
508 (synopsis
509 "GNOME image loading and manipulation library, with SVG support")))
510
ad472397
MB
511;; Graft replacement packages to fix these vulnerabilities.
512;; https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2862
513;; https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-2870
514;; https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6311
515(define-public gdk-pixbuf-2.36.10
516 (package (inherit gdk-pixbuf)
517 (version "2.36.A")
518 (source (origin
519 (method url-fetch)
520 (uri (string-append "mirror://gnome/sources/gdk-pixbuf/2.36/"
521 "gdk-pixbuf-2.36.10.tar.xz"))
522 (sha256
523 (base32
524 "1klsjkdbashd8yb8xjsc9ff3bz32n2id5s79nrrmqiw9df4zmxpq"))))))
525
526(define-public gdk-pixbuf+svg-2.36.10
527 (package (inherit gdk-pixbuf+svg)
528 (version "2.36.A")
529 (source (origin (inherit (package-source gdk-pixbuf-2.36.10))))))
530
f3fb92e5
AE
531(define-public at-spi2-core
532 (package
533 (name "at-spi2-core")
feaf6a14 534 (version "2.24.1")
f3fb92e5
AE
535 (source (origin
536 (method url-fetch)
537 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
538 (version-major+minor version) "/"
539 name "-" version ".tar.xz"))
f3fb92e5
AE
540 (sha256
541 (base32
feaf6a14 542 "0nwvjmd30rgq6d1zznavx0bdfa1xwv3jl8wnkbkwzaipp5jd140y"))))
f3fb92e5 543 (build-system gnu-build-system)
068a53c3 544 (outputs '("out" "doc"))
f3fb92e5 545 (arguments
b19d6805 546 '(#:configure-flags
068a53c3
SB
547 (list (string-append "--with-html-dir="
548 (assoc-ref %outputs "doc")
549 "/share/gtk-doc/html"))
50cc7f41 550 #:phases
af108677 551 (modify-phases %standard-phases
3a4de6b2 552 (replace 'check
af108677
SB
553 ;; Run test-suite under a dbus session.
554 (lambda _
37fe56cf
SB
555 ;; Don't fail on missing '/etc/machine-id'.
556 (setenv "DBUS_FATAL_WARNINGS" "0")
af108677 557 (zero? (system* "dbus-launch" "make" "check")))))))
c6a552da
SB
558 (propagated-inputs
559 ;; atspi-2.pc refers to all these.
560 `(("dbus" ,dbus)
561 ("glib" ,glib)))
562 (inputs
563 `(("libxi" ,libxi)
564 ("libxtst" ,libxtst)))
c4c4cc05 565 (native-inputs
50cc7f41
SB
566 `(("gobject-introspection" ,gobject-introspection)
567 ("intltool" ,intltool)
568 ("pkg-config" ,pkg-config)))
f3fb92e5
AE
569 (synopsis "Assistive Technology Service Provider Interface, core components")
570 (description
571 "The Assistive Technology Service Provider Interface, core components,
572is part of the GNOME accessibility project.")
573 (license license:lgpl2.0+)
574 (home-page "https://projects.gnome.org/accessibility/")))
575
5fda4784
AE
576(define-public at-spi2-atk
577 (package
578 (name "at-spi2-atk")
04881396 579 (version "2.24.1")
5fda4784
AE
580 (source (origin
581 (method url-fetch)
582 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
583 (version-major+minor version) "/"
584 name "-" version ".tar.xz"))
5fda4784
AE
585 (sha256
586 (base32
04881396 587 "0zcmsq7g4jg5dpmfzkyfpa0v6hx4119c4qwkdblzzf3l9yn91p30"))))
5fda4784 588 (build-system gnu-build-system)
5fda4784 589 (arguments
57fcd224
SB
590 '(#:phases
591 (modify-phases %standard-phases
3a4de6b2 592 (replace 'check
57fcd224
SB
593 ;; Run test-suite under a dbus session.
594 (lambda _
5fba12ec 595 (setenv "DBUS_FATAL_WARNINGS" "0")
57fcd224 596 (zero? (system* "dbus-launch" "make" "check")))))))
6967cc3f
SB
597 (propagated-inputs
598 `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
599 (inputs
600 `(("atk" ,atk)))
c4c4cc05 601 (native-inputs
6967cc3f
SB
602 `(("dbus" ,dbus) ; for testing
603 ("pkg-config" ,pkg-config)))
5fda4784
AE
604 (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
605 (description
606 "The Assistive Technology Service Provider Interface
607is part of the GNOME accessibility project.")
608 (license license:lgpl2.0+)
609 (home-page "https://projects.gnome.org/accessibility/")))
610
8b79a547 611(define-public gtk+-2
cf2135ff
AE
612 (package
613 (name "gtk+")
3de764f7 614 (version "2.24.31")
cf2135ff
AE
615 (source (origin
616 (method url-fetch)
1c8362a8 617 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
618 (version-major+minor version) "/"
619 name "-" version ".tar.xz"))
cf2135ff
AE
620 (sha256
621 (base32
3de764f7 622 "0n26jm09n03nqbd00d2ij63xrby3vik56sk5yj6w1vy768kr5hb8"))
6983ba56 623 (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
711670c0 624 "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
6983ba56 625 "gtk2-theme-paths.patch"))))
cf2135ff 626 (build-system gnu-build-system)
6b1f2388 627 (outputs '("out" "doc"))
4169a4bc 628 (propagated-inputs
cf2135ff 629 `(("atk" ,atk)
6983ba56 630 ("gdk-pixbuf" ,gdk-pixbuf+svg)
4169a4bc 631 ("pango" ,pango)))
dfbce50c
SB
632 (inputs
633 `(("cups" ,cups)
634 ("libxcomposite" ,libxcomposite)
635 ("libxcursor" ,libxcursor)
636 ("libxdamage" ,libxdamage)
637 ("libxi" ,libxi)
638 ("libxinerama" ,libxinerama)
639 ("libxrandr" ,libxrandr)))
c4c4cc05 640 (native-inputs
1c8362a8 641 `(("perl" ,perl)
b94a6ca0 642 ("gettext" ,gettext-minimal)
426adbe8 643 ("glib" ,glib "bin")
9d297fae 644 ("gobject-introspection" ,gobject-introspection)
1c8362a8
AE
645 ("pkg-config" ,pkg-config)
646 ("python-wrapper" ,python-wrapper)))
cf2135ff 647 (arguments
b19d6805 648 `(#:configure-flags
6b1f2388
SB
649 (list "--with-xinput=yes"
650 (string-append "--with-html-dir="
651 (assoc-ref %outputs "doc")
652 "/share/gtk-doc/html"))
9d297fae 653 #:phases
d4bf49b1
EB
654 (alist-cons-before
655 'configure 'disable-tests
656 (lambda _
657 ;; FIXME: re-enable tests requiring an X server
658 (substitute* "gtk/Makefile.in"
659 (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits .")))
2a6afac9
RW
660 %standard-phases)))
661 (native-search-paths
662 (list (search-path-specification
663 (variable "GUIX_GTK2_PATH")
664 (files '("lib/gtk-2.0")))))
0327ced2 665 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
cf2135ff
AE
666 (description
667 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
35b9e423 668graphical user interfaces. Offering a complete set of widgets, GTK+ is
cf2135ff
AE
669suitable for projects ranging from small one-off tools to complete
670application suites.")
671 (license license:lgpl2.0+)
672 (home-page "http://www.gtk.org/")))
8e70e6d2 673
8b79a547
AE
674(define-public gtk+
675 (package (inherit gtk+-2)
b38e45d8 676 (name "gtk+")
2d5785ad
MW
677 ;; NOTE: When updating the version of 'gtk+', the hash of 'mate-themes' in
678 ;; mate.scm will also need to be updated.
9a1100ca 679 (version "3.22.15")
8b79a547
AE
680 (source (origin
681 (method url-fetch)
b38e45d8
EB
682 (uri (string-append "mirror://gnome/sources/" name "/"
683 (version-major+minor version) "/"
684 name "-" version ".tar.xz"))
8b79a547
AE
685 (sha256
686 (base32
9a1100ca 687 "1nqgb71vx222g9fd2p017948hqybnyi69xs3n2d64clim7115868"))
234e7980
RW
688 (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
689 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
7b808d76 690 (outputs '("out" "bin" "doc"))
0e112540 691 (propagated-inputs
8b79a547 692 `(("at-spi2-atk" ,at-spi2-atk)
0e112540 693 ("atk" ,atk)
6983ba56 694 ("gdk-pixbuf" ,gdk-pixbuf+svg)
31b254a3 695 ("libepoxy" ,libepoxy)
a572dca8 696 ("libxcursor" ,libxcursor)
8b79a547
AE
697 ("libxi" ,libxi)
698 ("libxinerama" ,libxinerama)
982b3574 699 ("libxkbcommon" ,libxkbcommon)
9e5c0927 700 ("libxdamage" ,libxdamage)
982b3574
KK
701 ("mesa" ,mesa)
702 ("pango" ,pango)
703 ("wayland" ,wayland)
704 ("wayland-protocols" ,wayland-protocols)))
0e112540 705 (inputs
6983ba56 706 `(("libxml2" ,libxml2)
1cb16f1e
SB
707 ;; XXX: colord depends on mozjs (through polkit), which fails on
708 ;; on non-intel systems now.
709 ;;("colord" ,colord)
a572dca8 710 ("cups" ,cups) ;for printing support
a2651b54
SB
711 ;; XXX: rest depends on p11-kit, which fails on mips64el now.
712 ;;("rest" ,rest)
a572dca8 713 ("json-glib" ,json-glib)))
c4c4cc05 714 (native-inputs
141aed80 715 `(("perl" ,perl)
426adbe8 716 ("glib" ,glib "bin")
b94a6ca0 717 ("gettext" ,gettext-minimal)
8b79a547 718 ("pkg-config" ,pkg-config)
141aed80 719 ("gobject-introspection" ,gobject-introspection)
8b79a547 720 ("python-wrapper" ,python-wrapper)
da79e82b
LF
721 ;; By using a special xorg-server for GTK+'s tests, we reduce the impact
722 ;; of updating xorg-server directly on the master branch.
3433413b 723 ("xorg-server" ,xorg-server-1.19.3)))
8b79a547 724 (arguments
3433413b 725 `(#:disallowed-references (,xorg-server-1.19.3)
da79e82b 726 ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes
260b07a7
LC
727 ;; to "doc".
728 #:configure-flags (list (string-append "--with-html-dir="
729 (assoc-ref %outputs "doc")
982b3574
KK
730 "/share/gtk-doc/html")
731 ;; The header file <gdk/gdkwayland.h> is required
732 ;; by gnome-control-center
733 "--enable-wayland-backend"
734 ;; This is necessary to build both backends.
735 "--enable-x11-backend")
e4360e16
JD
736 #:phases (modify-phases %standard-phases
737 (add-before 'configure 'pre-configure
738 (lambda _
739 ;; Disable most tests, failing in the chroot with the message:
740 ;; D-Bus library appears to be incorrectly set up; failed to read
741 ;; machine uuid: Failed to open "/etc/machine-id": No such file or
742 ;; directory.
743 ;; See the manual page for dbus-uuidgen to correct this issue.
744 (substitute* "testsuite/Makefile.in"
745 (("SUBDIRS = gdk gtk a11y css reftests")
746 "SUBDIRS = gdk"))
4c8c2b0f
SB
747 #t))
748 (add-after 'install 'move-desktop-files
749 ;; Move desktop files into 'bin' to avoid cycle references.
750 (lambda* (#:key outputs #:allow-other-keys)
751 (let ((out (assoc-ref outputs "out"))
752 (bin (assoc-ref outputs "bin")))
753 (mkdir-p (string-append bin "/share"))
754 (rename-file (string-append out "/share/applications")
755 (string-append bin "/share/applications"))
756 #t))))))
4828ff91
RW
757 (native-search-paths
758 (list (search-path-specification
759 (variable "GUIX_GTK3_PATH")
760 (files '("lib/gtk-3.0")))))))
5fda4784 761
8e70e6d2
LC
762;;;
763;;; Guile bindings.
764;;;
765
766(define-public guile-cairo
767 (package
768 (name "guile-cairo")
769 (version "1.4.1")
770 (source (origin
b9743865
LC
771 (method url-fetch)
772 (uri (string-append
773 "http://download.gna.org/guile-cairo/guile-cairo-"
774 version
775 ".tar.gz"))
776 (sha256
777 (base32
778 "1f5nd9n46n6cwfl1byjml02q3y2hgn7nkx98km1czgwarxl7ws3x"))))
8e70e6d2
LC
779 (build-system gnu-build-system)
780 (arguments
0f11f640
LC
781 '(#:modules ((guix build utils)
782 (guix build gnu-build-system)
783 (ice-9 popen)
784 (ice-9 rdelim))
785
786 #:phases (modify-phases %standard-phases
b9743865
LC
787 (add-before 'configure 'set-module-directory
788 (lambda* (#:key outputs #:allow-other-keys)
789 ;; Install modules under $out/share/guile/site/2.0.
0f11f640
LC
790 (let ((out (assoc-ref outputs "out"))
791 (effective
792 (read-line
793 (open-pipe* OPEN_READ "guile" "-c"
794 "(display (effective-version))"))))
b9743865
LC
795 (substitute* "Makefile.in"
796 (("scmdir = ([[:graph:]]+).*" _ value)
0f11f640 797 (string-append "scmdir = " value "/" effective "\n")))
b9743865
LC
798 (substitute* "cairo/Makefile.in"
799 (("moduledir = ([[:graph:]]+).*" _ value)
800 (string-append "moduledir = "
0f11f640
LC
801 "$(prefix)/share/guile/site/"
802 effective "/cairo\n'")))
803 #t)))
b9743865
LC
804 (add-after 'install 'install-missing-file
805 (lambda* (#:key outputs #:allow-other-keys)
806 ;; By default 'vector-types.scm' is not installed, so do
807 ;; it here.
0f11f640
LC
808 (let ((out (assoc-ref outputs "out"))
809 (effective
810 (read-line
811 (open-pipe* OPEN_READ "guile" "-c"
812 "(display (effective-version))"))))
813 (install-file "cairo/vector-types.scm"
814 (string-append out "/share/guile/site/"
815 effective "/cairo"))
816 #t))))))
8e70e6d2 817 (inputs
5ace0919 818 `(("guile-lib" ,guile-lib)
8e70e6d2 819 ("expat" ,expat)
1b0f266e 820 ("guile" ,guile-2.2)))
49710cea
LC
821 (propagated-inputs
822 ;; The .pc file refers to 'cairo'.
823 `(("cairo" ,cairo)))
c4c4cc05 824 (native-inputs
b9743865 825 `(("pkg-config" ,pkg-config)))
8e70e6d2
LC
826 (home-page "http://www.nongnu.org/guile-cairo/")
827 (synopsis "Cairo bindings for GNU Guile")
828 (description
829 "Guile-Cairo wraps the Cairo graphics library for Guile Scheme.
830Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API
831stable, providing a firm base on which to do graphics work. Finally, and
832importantly, it is pleasant to use. You get a powerful and well-maintained
833graphics library with all of the benefits of Scheme: memory management,
834exceptions, macros, and a dynamic programming environment.")
835 (license license:lgpl3+)))
66663503 836
1a51fe27 837(define-public guile-rsvg
1b0f266e
LC
838 ;; Use a recent snapshot that supports Guile 2.2 and beyond.
839 (let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678")
840 (revision "0"))
841 (package
842 (name "guile-rsvg")
843 (version (string-append "2.18.1-" revision "."
844 (string-take commit 7)))
845 (source (origin
846 (method url-fetch)
847 (uri (string-append "https://gitlab.com/wingo/guile-rsvg/"
848 "repository/archive.tar.gz?ref="
849 commit))
850 (sha256
851 (base32
852 "0vdzjx8l5nc4y2xjqs0g1rqn1zrwfsm30brh5gz00r1x41a2pvv2"))
853 (patches (search-patches "guile-rsvg-pkgconfig.patch"))
854 (modules '((guix build utils)))
855 (snippet
856 '(substitute* (find-files "." "Makefile\\.am")
857 (("/share/guile/site")
858 "/share/guile/site/@GUILE_EFFECTIVE_VERSION@")))
859 (file-name (string-append name "-" version ".tar.gz"))))
860 (build-system gnu-build-system)
861 (arguments
862 `(#:phases (modify-phases %standard-phases
d10092b8 863 (add-after 'unpack 'bootstrap
1b0f266e
LC
864 (lambda _
865 (zero? (system* "autoreconf" "-vfi")))))))
866 (native-inputs `(("pkg-config" ,pkg-config)
867 ("autoconf" ,autoconf)
868 ("automake" ,automake)
869 ("libtool" ,libtool)
870 ("texinfo" ,texinfo)))
871 (inputs `(("guile" ,guile-2.2)
872 ("librsvg" ,librsvg)
873 ("guile-lib" ,guile-lib))) ;for (unit-test)
874 (propagated-inputs `(("guile-cairo" ,guile-cairo)))
875 (synopsis "Render SVG images using Cairo from Guile")
876 (description
877 "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
1a51fe27 878images onto Cairo surfaces.")
1b0f266e
LC
879 (home-page "http://wingolog.org/projects/guile-rsvg/")
880 (license license:lgpl2.1+))))
7ca0dbc3 881
cdd383e9
LC
882(define-public guile-present
883 (package
884 (name "guile-present")
885 (version "0.3.0")
886 (source (origin
887 (method url-fetch)
888 (uri (string-append "http://wingolog.org/pub/guile-present/"
889 "guile-present-" version ".tar.gz"))
890 (sha256
891 (base32
892 "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
fc1adab1 893 (patches (search-patches "guile-present-coding.patch"))
cdd383e9
LC
894 (modules '((guix build utils)))
895 (snippet
896 '(substitute* "Makefile.in"
897 (("godir = .*$")
898 "godir = $(moddir)\n")))))
899 (build-system gnu-build-system)
900 (arguments
901 '(#:phases (alist-cons-after
902 'install 'post-install
903 (lambda* (#:key inputs outputs #:allow-other-keys)
904 (let* ((out (assoc-ref outputs "out"))
905 (bin (string-append out "/bin"))
906 (guile (assoc-ref inputs "guile")))
907 (substitute* (find-files bin ".*")
908 (("guile")
909 (string-append guile "/bin/guile -L "
910 out "/share/guile/site/2.0 -C "
911 out "/share/guile/site/2.0 ")))))
912 %standard-phases)))
913 (native-inputs `(("pkg-config" ,pkg-config)))
1b0f266e 914 (inputs `(("guile" ,guile-2.2)))
cdd383e9
LC
915 (propagated-inputs
916 ;; These are used by the (present …) modules.
5ace0919 917 `(("guile-lib" ,guile-lib)
cdd383e9
LC
918 ("guile-cairo" ,guile-cairo)
919 ("guile-rsvg" ,guile-rsvg)))
920 (home-page "http://wingolog.org/software/guile-present/")
921 (synopsis "Create SVG or PDF presentations in Guile")
922 (description
923 "Guile-Present defines a declarative vocabulary for presentations,
924together with tools to render presentation documents as SVG or PDF.
925Guile-Present can be used to make presentations programmatically, but also
926includes a tools to generate PDF presentations out of Org mode and Texinfo
927documents.")
928 (license license:lgpl3+)))
7ca0dbc3 929
9b381643
PH
930(define-public guile-gnome
931 (package
932 (name "guile-gnome")
1b0f266e 933 (version "2.16.5")
9b381643
PH
934 (source (origin
935 (method url-fetch)
936 (uri
937 (string-append "mirror://gnu/" name
938 "/guile-gnome-platform/guile-gnome-platform-"
939 version ".tar.gz"))
940 (sha256
941 (base32
1b0f266e 942 "1gnf3j96nip5kl99a268i0dy1hj7s1cfs66sps3zwysnkd7qr399"))))
9b381643
PH
943 (build-system gnu-build-system)
944 (native-inputs
945 `(("pkg-config" ,pkg-config)
946 ("atk" ,atk)
947 ;;("corba" ,corba) ; not packaged yet
948 ("gconf" ,gconf)
949 ("gobject-introspection" ,gobject-introspection)
950 ;;("gthread" ,gthread) ; not packaged yet
951 ("gnome-vfs" ,gnome-vfs)
952 ("gdk-pixbuf" ,gdk-pixbuf)
953 ("gtk+" ,gtk+-2)
954 ("libglade" ,libglade)
955 ("libgnome" ,libgnome)
956 ("libgnomecanvas" ,libgnomecanvas)
957 ("libgnomeui" ,libgnomeui)
958 ("pango" ,pango)
959 ("libffi" ,libffi)
960 ("glib" ,glib)))
1b0f266e 961 (inputs `(("guile" ,guile-2.2)))
9b381643
PH
962 (propagated-inputs
963 `(("guile-cairo" ,guile-cairo)
964 ("g-wrap" ,g-wrap)
5ace0919 965 ("guile-lib" ,guile-lib)))
9b381643
PH
966 (arguments
967 `(#:tests? #f ;FIXME
968 #:phases (modify-phases %standard-phases
969 (add-before 'configure 'pre-configure
970 (lambda* (#:key outputs #:allow-other-keys)
971 (let ((out (assoc-ref outputs "out")))
972 (substitute* (find-files "." "^Makefile.in$")
973 (("guilesite :=.*guile/site" all)
1b0f266e 974 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
9b381643
PH
975 #t))))))
976 (outputs '("out" "debug"))
977 (synopsis "Guile interface for GTK+ programming for GNOME")
978 (description
979 "Includes guile-clutter, guile-gnome-gstreamer,
980guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
6fd52309 981 (home-page "https://www.gnu.org/software/guile-gnome/")
1b0f266e
LC
982 (license license:gpl2+)
983 (properties '((upstream-name . "guile-gnome-platform")
984 (ftp-directory . "/gnu/guile-gnome/guile-gnome-platform")))))
9b381643 985
66663503
LC
986;;;
987;;; C++ bindings.
988;;;
989
990(define-public cairomm
991 (package
992 (name "cairomm")
5a52e86e 993 (version "1.12.2")
66663503 994 (source (origin
2079087c 995 (method url-fetch)
5a52e86e
EF
996 (uri (string-append "https://www.cairographics.org/releases/"
997 name "-" version ".tar.gz"))
2079087c
SB
998 (sha256
999 (base32
5a52e86e 1000 "16fmigxsaz85c3lgcls7biwyz8zy8c8h3jndfm54cxxas3a7zi25"))))
66663503
LC
1001 (build-system gnu-build-system)
1002 (arguments
1003 ;; The examples lack -lcairo.
1004 '(#:make-flags '("LDFLAGS=-lcairo")))
c4c4cc05 1005 (native-inputs `(("pkg-config" ,pkg-config)))
66663503
LC
1006 (propagated-inputs
1007 `(("libsigc++" ,libsigc++)
1008 ("freetype" ,freetype)
1009 ("fontconfig" ,fontconfig)
1010 ("cairo" ,cairo)))
5a52e86e 1011 (home-page "https://cairographics.org/")
66663503
LC
1012 (synopsis "C++ bindings to the Cairo 2D graphics library")
1013 (description
1014 "Cairomm provides a C++ programming interface to the Cairo 2D graphics
1015library.")
1016 (license license:lgpl2.0+)))
c5cc5006
LC
1017
1018(define-public pangomm
1019 (package
1020 (name "pangomm")
3086d9b9 1021 (version "2.40.1")
c5cc5006
LC
1022 (source (origin
1023 (method url-fetch)
b38e45d8
EB
1024 (uri (string-append "mirror://gnome/sources/" name "/"
1025 (version-major+minor version) "/"
1026 name "-" version ".tar.xz"))
c5cc5006
LC
1027 (sha256
1028 (base32
3086d9b9 1029 "1bz3gciff23bpw9bqc4v2l3lkq9w7394v3a4jxkvx0ap5lmfwqlp"))))
c5cc5006 1030 (build-system gnu-build-system)
c4c4cc05 1031 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
1032 (propagated-inputs
1033 `(("cairo" ,cairo)
1034 ("cairomm" ,cairomm)
1035 ("glibmm" ,glibmm)
1036 ("pango" ,pango)))
1037 (home-page "http://www.pango.org/")
1038 (synopsis "C++ interface to the Pango text rendering library")
1039 (description
1040 "Pangomm provides a C++ programming interface to the Pango text rendering
1041library.")
1042 (license license:lgpl2.1+)))
1043
1044(define-public atkmm
1045 (package
1046 (name "atkmm")
5b003972 1047 (version "2.24.2")
c5cc5006
LC
1048 (source (origin
1049 (method url-fetch)
b38e45d8
EB
1050 (uri (string-append "mirror://gnome/sources/" name "/"
1051 (version-major+minor version) "/"
1052 name "-" version ".tar.xz"))
c5cc5006
LC
1053 (sha256
1054 (base32
5b003972 1055 "1gaqwhviadsmy0fsr47686yglv1p4mpkamj0in127bz2b5bki5gz"))))
c5cc5006 1056 (build-system gnu-build-system)
c4c4cc05 1057 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
1058 (propagated-inputs
1059 `(("glibmm" ,glibmm) ("atk" ,atk)))
1060 (home-page "http://www.gtkmm.org")
1061 (synopsis "C++ interface to the ATK accessibility library")
1062 (description
1063 "ATKmm provides a C++ programming interface to the ATK accessibility
1064toolkit.")
1065 (license license:lgpl2.1+)))
1066
1067(define-public gtkmm
1068 (package
1069 (name "gtkmm")
b1d6910e 1070 (version "3.22.0")
c5cc5006
LC
1071 (source (origin
1072 (method url-fetch)
b38e45d8
EB
1073 (uri (string-append "mirror://gnome/sources/" name "/"
1074 (version-major+minor version) "/"
1075 name "-" version ".tar.xz"))
c5cc5006
LC
1076 (sha256
1077 (base32
b1d6910e 1078 "1x8l0ny6r3ym53z82q9d5fan4m9vi93xy3b3hj1hrclgc95lvnh5"))))
c5cc5006 1079 (build-system gnu-build-system)
ff5c33fe 1080 (native-inputs `(("pkg-config" ,pkg-config)
ba470833
LC
1081 ("glib" ,glib "bin") ;for 'glib-compile-resources'
1082 ("xorg-server" ,xorg-server)))
c5cc5006
LC
1083 (propagated-inputs
1084 `(("pangomm" ,pangomm)
1085 ("cairomm" ,cairomm)
1086 ("atkmm" ,atkmm)
1087 ("gtk+" ,gtk+)
1088 ("glibmm" ,glibmm)))
ba470833
LC
1089 (arguments
1090 '(#:phases (modify-phases %standard-phases
1091 (add-before 'check 'run-xvfb
1092 (lambda* (#:key inputs #:allow-other-keys)
1093 (let ((xorg-server (assoc-ref inputs "xorg-server")))
1094 ;; Tests such as 'object_move/test' require a running
1095 ;; X server.
1096 (system (string-append xorg-server "/bin/Xvfb :1 &"))
1097 (setenv "DISPLAY" ":1")
1098 ;; Don't fail because of the missing /etc/machine-id.
1099 (setenv "DBUS_FATAL_WARNINGS" "0")
1100 #t))))))
c5cc5006
LC
1101 (home-page "http://gtkmm.org/")
1102 (synopsis
1103 "C++ interface to the GTK+ graphical user interface library")
1104 (description
1105 "gtkmm is the official C++ interface for the popular GUI library GTK+.
1106Highlights include typesafe callbacks, and a comprehensive set of widgets that
1107are easily extensible via inheritance. You can create user interfaces either
1108in code or with the Glade User Interface designer, using libglademm. There's
1109extensive documentation, including API reference and a tutorial.")
1110 (license license:lgpl2.1+)))
9c086443
JD
1111
1112
1113(define-public gtkmm-2
1114 (package (inherit gtkmm)
b38e45d8 1115 (name "gtkmm")
124596f2 1116 (version "2.24.5")
9c086443
JD
1117 (source (origin
1118 (method url-fetch)
b38e45d8
EB
1119 (uri (string-append "mirror://gnome/sources/" name "/"
1120 (version-major+minor version) "/"
1121 name "-" version ".tar.xz"))
9c086443
JD
1122 (sha256
1123 (base32
124596f2 1124 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
3ad29c9e
SB
1125 (arguments
1126 '(#:configure-flags '("CPPFLAGS=-std=c++11"))) ; required by libsigc++
ff5c33fe 1127 (native-inputs `(("pkg-config" ,pkg-config)))
9c086443
JD
1128 (propagated-inputs
1129 `(("pangomm" ,pangomm)
1130 ("cairomm" ,cairomm)
1131 ("atkmm" ,atkmm)
1132 ("gtk+" ,gtk+-2)
1133 ("glibmm" ,glibmm)))))
fbcfa730
EB
1134
1135(define-public python-pycairo
1136 (package
1137 (name "python-pycairo")
1138 (version "1.10.0")
1139 (source
1140 (origin
1141 (method url-fetch)
1142 (uri (string-append "http://cairographics.org/releases/pycairo-"
1143 version ".tar.bz2"))
1144 (sha256
1145 (base32
b837e658 1146 "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s"))
fc1adab1 1147 (patches (search-patches "pycairo-wscript.patch"))))
b837e658 1148 (build-system waf-build-system)
fbcfa730 1149 (native-inputs
b837e658
SB
1150 `(("pkg-config" ,pkg-config)
1151 ("python-waf" ,python-waf)))
fbcfa730
EB
1152 (propagated-inputs ;pycairo.pc references cairo
1153 `(("cairo" ,cairo)))
1154 (arguments
1155 `(#:tests? #f
b837e658
SB
1156 #:phases
1157 (modify-phases %standard-phases
1158 (add-before
1159 'configure 'patch-waf
1160 (lambda* (#:key inputs #:allow-other-keys)
1161 ;; The bundled `waf' doesn't work with python-3.4.x.
1162 (copy-file (assoc-ref %build-inputs "python-waf") "./waf"))))))
fbcfa730
EB
1163 (home-page "http://cairographics.org/pycairo/")
1164 (synopsis "Python bindings for cairo")
1165 (description
1166 "Pycairo is a set of Python bindings for the Cairo graphics library.")
7ec42f1d
LC
1167 (license license:lgpl3+)
1168 (properties `((python2-variant . ,(delay python2-pycairo))))))
fbcfa730 1169
7ca0dbc3 1170(define-public python2-pycairo
7ec42f1d 1171 (package (inherit (strip-python2-variant python-pycairo))
7ca0dbc3 1172 (name "python2-pycairo")
fbcfa730
EB
1173 (version "1.10.0")
1174 (source
1175 (origin
1176 (method url-fetch)
1177 (uri (string-append "http://cairographics.org/releases/py2cairo-"
1178 version ".tar.bz2"))
1179 (sha256
1180 (base32
1181 "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k"))))
1182 (arguments
1183 `(#:python ,python-2
b837e658
SB
1184 ,@(substitute-keyword-arguments (package-arguments python-pycairo)
1185 ((#:phases phases)
1186 `(alist-delete 'patch-waf ,phases))
1187 ((#:native-inputs native-inputs)
1188 `(alist-delete "python-waf" ,native-inputs)))))
fbcfa730 1189 ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
0d6a8339 1190 (license (list license:lgpl2.1 license:mpl1.1))))
fbcfa730
EB
1191
1192(define-public python2-pygtk
1193 (package
1194 (name "python2-pygtk")
1195 (version "2.24.0")
1196 (source
1197 (origin
1198 (method url-fetch)
966a543b 1199 (uri (string-append "mirror://gnome/sources"
fbcfa730
EB
1200 "/pygtk/" (version-major+minor version)
1201 "/pygtk-" version ".tar.bz2"))
1202 (sha256
1203 (base32
1204 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
1205 (build-system gnu-build-system)
594e7b47
LC
1206 (outputs '("out"
1207 "doc")) ;13 MiB of gtk-doc HTML
fbcfa730
EB
1208 (native-inputs
1209 `(("pkg-config" ,pkg-config)))
1210 (inputs
1211 `(("python" ,python-2)
6ab4712d 1212 ("libglade" ,libglade)
fbcfa730
EB
1213 ("glib" ,glib)))
1214 (propagated-inputs
7ca0dbc3 1215 `(("python-pycairo" ,python2-pycairo) ;loaded at runtime
fbcfa730
EB
1216 ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
1217 ("gtk+" ,gtk+-2)))
1218 (arguments
1219 `(#:tests? #f
ae115bc7 1220 #:phases (modify-phases %standard-phases
594e7b47
LC
1221 (add-before 'configure 'set-gtk-doc-directory
1222 (lambda* (#:key outputs #:allow-other-keys)
1223 ;; Install documentation to "doc".
1224 (let ((doc (assoc-ref outputs "doc")))
1225 (substitute* "docs/Makefile.in"
1226 (("TARGET_DIR = \\$\\(datadir\\)")
1227 (string-append "TARGET_DIR = " doc))))))
ae115bc7
LC
1228 (add-after 'configure 'fix-codegen
1229 (lambda* (#:key inputs #:allow-other-keys)
1230 (substitute* "pygtk-codegen-2.0"
1231 (("^prefix=.*$")
1232 (string-append
1233 "prefix="
1234 (assoc-ref inputs "python-pygobject") "\n")))))
1235 (add-after 'install 'install-pth
1236 (lambda* (#:key inputs outputs #:allow-other-keys)
1237 ;; pygtk's modules are stored in a subdirectory of
1238 ;; python's site-packages directory. Add a .pth file so
1239 ;; that python will add that subdirectory to its module
1240 ;; search path.
1241 (let* ((out (assoc-ref outputs "out"))
1242 (site (string-append out "/lib/python"
1243 ,(version-major+minor
1244 (package-version python-2))
1245 "/site-packages")))
1246 (call-with-output-file (string-append site "/pygtk.pth")
1247 (lambda (port)
1248 (format port "gtk-2.0~%")))))))))
fbcfa730
EB
1249 (home-page "http://www.pygtk.org/")
1250 (synopsis "Python bindings for GTK+")
1251 (description
1252 "PyGTK allows you to write full featured GTK programs in Python. It is
d1e4ad1b 1253targeted at GTK 2.x, and can be used in conjunction with gnome-python to
fbcfa730
EB
1254write GNOME applications.")
1255 (license license:lgpl2.1+)))
136770c9
PW
1256
1257(define-public girara
1258 (package
1259 (name "girara")
24bbd9e1 1260 (version "0.2.7")
136770c9
PW
1261 (source (origin
1262 (method url-fetch)
1263 (uri
1264 (string-append "https://pwmt.org/projects/girara/download/girara-"
1265 version ".tar.gz"))
1266 (sha256
1267 (base32
24bbd9e1 1268 "1r9jbhf9n40zj4ddqv1q5spijpjm683nxg4hr5lnir4a551s7rlq"))))
136770c9 1269 (native-inputs `(("pkg-config" ,pkg-config)
b94a6ca0 1270 ("gettext" ,gettext-minimal)))
136770c9
PW
1271 (inputs `(("gtk+" ,gtk+)
1272 ("check" ,check)))
1273 (arguments
1274 `(#:make-flags
1275 `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
1276 "COLOR=0" "CC=gcc")
1277 #:test-target "test"
1278 #:tests? #f ; Tests fail with "Gtk cannot open display:"
1279 #:phases
1280 (alist-delete 'configure %standard-phases)))
1281 (build-system gnu-build-system)
1282 (home-page "https://pwmt.org/projects/girara/")
1283 (synopsis "Library for minimalistic gtk+3 user interfaces")
1284 (description "Girara is a library that implements a user interface that
1285focuses on simplicity and minimalism. Currently based on GTK+, a
1286cross-platform widget toolkit, it provides an interface that focuses on three
1287main components: a so-called view widget that represents the actual
1288application, an input bar that is used to execute commands of the
1289application and the status bar which provides the user with current
1290information.")
1291 (license license:zlib)))
3bc45449
AW
1292
1293(define-public gtk-doc
1294 (package
1295 (name "gtk-doc")
9d19e18d 1296 (version "1.25")
3bc45449
AW
1297 (source (origin
1298 (method url-fetch)
1299 (uri (string-append "mirror://gnome/sources/" name "/"
1300 (version-major+minor version) "/"
1301 name "-" version ".tar.xz"))
1302 (sha256
1303 (base32
9d19e18d 1304 "0hpxcij9xx9ny3gs9p0iz4r8zslw8wqymbyababiyl7603a6x90y"))))
3bc45449
AW
1305 (build-system gnu-build-system)
1306 (arguments
6ad08117
AE
1307 `(#:parallel-tests? #f
1308 #:phases
b4787e71 1309 (modify-phases %standard-phases
a20608a5
RW
1310 (add-before 'build 'set-HOME
1311 (lambda _
1312 ;; FIXME: dblatex with texlive-union does not find the built
1313 ;; metafonts, so it tries to generate them in HOME.
1314 (setenv "HOME" "/tmp")
1315 #t))
1316 (add-before 'configure 'fix-docbook
b4787e71
AW
1317 (lambda* (#:key inputs #:allow-other-keys)
1318 (substitute* "configure"
1319 ;; The configure check is overzealous about making sure that
1320 ;; things are in place -- it uses the xmlcatalog tool to make
1321 ;; sure that docbook-xsl is available, but this tool can only
1322 ;; look in one catalog file, unlike the $XML_CATALOG_FILES
1323 ;; variable that Guix defines. Fool the test by using the
1324 ;; docbook-xsl catalog explicitly and get on with life.
1325 (("\"\\$XML_CATALOG_FILE\" \
1326\"http://docbook.sourceforge.net/release/xsl/")
4ed737b2
MW
1327 (string-append (car (find-files (assoc-ref inputs "docbook-xsl")
1328 "^catalog.xml$"))
1329 " \"http://docbook.sourceforge.net/release/xsl/")))
1330 #t)))
b4787e71 1331 #:configure-flags
3bc45449
AW
1332 (list (string-append "--with-xml-catalog="
1333 (assoc-ref %build-inputs "docbook-xml")
1334 "/xml/dtd/docbook/catalog.xml"))))
1335 (native-inputs
1336 `(("pkg-config" ,pkg-config)
1337 ("itstool" ,itstool)
1338 ("libxml" ,libxml2)
b94a6ca0 1339 ("gettext" ,gettext-minimal)
3bc45449
AW
1340 ("bc" ,bc)))
1341 (inputs
1342 `(("perl" ,perl)
1343 ("python" ,python)
1344 ("xsltproc" ,libxslt)
1345 ("dblatex" ,dblatex)
1346 ("docbook-xml" ,docbook-xml-4.3)
1347 ("docbook-xsl" ,docbook-xsl)
1348 ("source-highlight" ,source-highlight)
1349 ("glib" ,glib)))
1350 (home-page "http://www.gtk.org/gtk-doc/")
1351 (synopsis "Documentation generator from C source code")
1352 (description
a124bbd2 1353 "GTK-Doc generates API documentation from comments added to C code. It is
3bc45449
AW
1354typically used to document the public API of GTK+ and GNOME libraries, but it
1355can also be used to document application code.")
1356 (license license:gpl2+)))
9ba5198c
FH
1357
1358(define-public gtk-engines
1359 (package
1360 (name "gtk-engines")
1361 (version "2.20.2")
1362 (source (origin
1363 (method url-fetch)
1364 (uri (string-append "mirror://gnome/sources/" name "/"
1365 (version-major+minor version) "/"
1366 name "-" version ".tar.bz2"))
1367 (sha256
1368 (base32
1369 "1db65pb0j0mijmswrvpgkdabilqd23x22d95hp5kwxvcramq1dhm"))))
1370 (build-system gnu-build-system)
1371 (arguments
1372 `(#:configure-flags
1373 `("--enable-animation")))
1374 (native-inputs
1375 `(("pkg-config" ,pkg-config)
1376 ("intltool" ,intltool)))
9fff9e64
SB
1377 (inputs
1378 ;; Don't propagate GTK+ to reduce "profile pollution".
9ba5198c 1379 `(("gtk+" ,gtk+-2))) ; required by gtk-engines-2.pc
f032d0be 1380 (home-page "https://live.gnome.org/GnomeArt")
9ba5198c
FH
1381 (synopsis "Theming engines for GTK+ 2.x")
1382 (description
1383 "This package contains the standard GTK+ 2.x theming engines including
1384Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,
1385Redmond95 and ThinIce.")
1386 (license (list license:gpl2+ license:lgpl2.1+))))
b7807bb2
FH
1387
1388(define-public murrine
1389 (package
1390 (name "murrine")
1391 (version "0.98.2")
1392 (source (origin
1393 (method url-fetch)
1394 (uri (string-append "mirror://gnome/sources/" name "/"
1395 (version-major+minor version) "/"
1396 name "-" version ".tar.xz"))
1397 (sha256
1398 (base32
1399 "129cs5bqw23i76h3nmc29c9mqkm9460iwc8vkl7hs4xr07h8mip9"))))
1400 (build-system gnu-build-system)
1401 (arguments
1402 `(#:configure-flags
1403 `("--enable-animation"
1404 "--enable-animationrtl")))
1405 (native-inputs
1406 `(("pkg-config" ,pkg-config)
1407 ("intltool" ,intltool)))
1408 (propagated-inputs
1409 `(("gtk+" ,gtk+-2)))
f032d0be 1410 (home-page "https://live.gnome.org/GnomeArt")
b7807bb2
FH
1411 (synopsis "Cairo-based theming engine for GTK+ 2.x")
1412 (description
1413 "Murrine is a cairo-based GTK+ theming engine. It is named after the
1414glass artworks done by Venicians glass blowers.")
1415 (license license:gpl2+)))
9c0c77f8
KY
1416
1417(define-public gtkspell3
1418 (package
1419 (name "gtkspell3")
1420 (version "3.0.8")
1421 (source (origin
1422 (method url-fetch)
1423 (uri (string-append "mirror://sourceforge/gtkspell/"
1424 version "/" name "-" version ".tar.gz"))
1425 (sha256
1426 (base32
1427 "1zrz5pz4ryvcssk898liynmy2wyxgj95ak7mp2jv7x62yzihq6h1"))))
1428 (build-system gnu-build-system)
1429 (native-inputs
1430 `(("intltool" ,intltool)
1431 ("pkg-config" ,pkg-config)))
1432 (inputs
1433 `(("enchant" ,enchant)
1434 ("gobject-introspection" ,gobject-introspection)
1435 ("gtk+" ,gtk+)
1436 ("pango" ,pango)))
1437 (home-page "http://gtkspell.sourceforge.net")
1438 (synopsis "Spell-checking addon for GTK's TextView widget")
1439 (description
1440 "GtkSpell provides word-processor-style highlighting and replacement of
1441misspelled words in a GtkTextView widget.")
1442 (license license:gpl2+)))
37355498 1443
1444(define-public clipit
1445 (package
1446 (name "clipit")
1447 (version "1.4.2")
1448 (source (origin
1449 (method url-fetch)
1450 (uri (string-append
1451 "https://github.com/downloads/ClipIt/clipit-"
1452 version ".tar.gz"))
1453 (sha256
1454 (base32
1455 "0jrwn8qfgb15rwspdp1p8hb1nc0ngmpvgr87d4k3lhlvqg2cfqva"))))
1456 (build-system gnu-build-system)
1457 (native-inputs
1458 `(("intltool" ,intltool)
1459 ("pkg-config" ,pkg-config)))
1460 (inputs
1461 `(("gtk+" ,gtk+-2)))
1462 (home-page "https://github.com/CristianHenzel/ClipIt")
1463 (synopsis "Lightweight GTK+ clipboard manager")
1464 (description
1465 "ClipIt is a clipboard manager with features such as a history, search
1466thereof, global hotkeys and clipboard item actions. It was forked from
1467Parcellite and adds bugfixes and features.")
1468 (license license:gpl2+)))
61af2675
RJ
1469
1470(define-public graphene
1471 (package
1472 (name "graphene")
1473 (version "1.6.0")
1474 (source (origin
1475 (method url-fetch)
1476 (uri (string-append
1477 "https://github.com/ebassi/graphene/archive/"
1478 version ".tar.gz"))
1479 (file-name (string-append name "-" version ".tar.gz"))
1480 (sha256
1481 (base32 "1zd2daj7y590wnzn4jw0niyc4fnzgxrcl9i7nwhy8b25ks2hz5wq"))))
1482 (build-system gnu-build-system)
1483 (arguments
1484 `(#:configure-flags '("--enable-introspection=yes")
1485 #:phases
1486 (modify-phases %standard-phases
1487 (add-before 'configure 'autogen
1488 (lambda _
1489 (zero? (system* "./autogen.sh")))))))
1490 (native-inputs
1491 `(("autoconf" ,autoconf)
1492 ("which" ,which)
1493 ("pkg-config" ,pkg-config)
1494 ("automake" ,automake)
1495 ("libtool" ,libtool)))
1496 (inputs
1497 `(("python" ,python)
1498 ("python-2" ,python-2)
1499 ("glib" ,glib)
1500 ("gobject-introspection" ,gobject-introspection)))
1501 (home-page "http://ebassi.github.io/graphene")
1502 (synopsis "Thin layer of graphic data types")
1503 (description "This library provides graphic types and their relative API;
1504it does not deal with windowing system surfaces, drawing, scene graphs, or
1505input.")
1506 (license license:expat)))