gnu: r-txtplot: Move to (gnu packages cran).
[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>
0dc8c908 3;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
bc915629 4;;; Copyright © 2014, 2015, 2017, 2018, 2019 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>
698ec949 11;;; Coypright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
60bf8154 12;;; Copyright © 2016, 2017 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>
47956fa0 16;;; Copyright © 2016 ng0 <ng0@n0.is>
82862153 17;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
46a1a602 18;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
82862153 19;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
4e028d7a 20;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
6009cdb4 21;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
50ee7e93 22;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
a32ecb50 23;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net>
4ad7e7e6 24;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
3a08a411
AE
25;;;
26;;; This file is part of GNU Guix.
27;;;
28;;; GNU Guix is free software; you can redistribute it and/or modify it
29;;; under the terms of the GNU General Public License as published by
30;;; the Free Software Foundation; either version 3 of the License, or (at
31;;; your option) any later version.
32;;;
33;;; GNU Guix is distributed in the hope that it will be useful, but
34;;; WITHOUT ANY WARRANTY; without even the implied warranty of
35;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36;;; GNU General Public License for more details.
37;;;
38;;; You should have received a copy of the GNU General Public License
39;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
40
41(define-module (gnu packages gtk)
b5b73a82 42 #:use-module ((guix licenses) #:prefix license:)
b38e45d8 43 #:use-module (guix utils)
3a08a411
AE
44 #:use-module (guix packages)
45 #:use-module (guix download)
a9276c12 46 #:use-module (guix git-download)
2223cbde 47 #:use-module (guix build-system glib-or-gtk)
3a08a411 48 #:use-module (guix build-system gnu)
bba29e10 49 #:use-module (guix build-system meson)
4e028d7a 50 #:use-module (guix build-system perl)
0b96fb2a 51 #:use-module (guix build-system python)
e926ba71 52 #:use-module (guix build-system waf)
b837e658 53 #:use-module (gnu packages)
3bc45449 54 #:use-module (gnu packages algebra)
1a51fe27 55 #:use-module (gnu packages autotools)
61af2675 56 #:use-module (gnu packages base)
1a51fe27 57 #:use-module (gnu packages texinfo)
136770c9 58 #:use-module (gnu packages check)
6131c43d 59 #:use-module (gnu packages compression)
3bc45449 60 #:use-module (gnu packages docbook)
9c0c77f8 61 #:use-module (gnu packages enchant)
6131c43d 62 #:use-module (gnu packages fontutils)
982b3574 63 #:use-module (gnu packages freedesktop)
13236d30 64 #:use-module (gnu packages fribidi)
3bc45449 65 #:use-module (gnu packages gettext)
6131c43d 66 #:use-module (gnu packages ghostscript)
31b254a3 67 #:use-module (gnu packages gl)
3a08a411 68 #:use-module (gnu packages glib)
95d439b2 69 #:use-module (gnu packages gnome)
a2609b41 70 #:use-module (gnu packages icu4c)
e55354b8 71 #:use-module (gnu packages image)
9b381643 72 #:use-module (gnu packages libffi)
2ea3bfe7 73 #:use-module (gnu packages linux)
6131c43d 74 #:use-module (gnu packages pdf)
8b79a547 75 #:use-module (gnu packages perl)
6131c43d 76 #:use-module (gnu packages pkg-config)
3bc45449 77 #:use-module (gnu packages pretty-print)
6131c43d 78 #:use-module (gnu packages python)
44d10b1f 79 #:use-module (gnu packages python-xyz)
8e70e6d2 80 #:use-module (gnu packages guile)
0791437f 81 #:use-module (gnu packages guile-xyz)
37cb3a69 82 #:use-module (gnu packages cups)
8e70e6d2 83 #:use-module (gnu packages xml)
6c0e878e 84 #:use-module (gnu packages xorg)
56a88478
EF
85 #:use-module (gnu packages xdisorg)
86 #:use-module (srfi srfi-1)
87 #:use-module (srfi srfi-26))
3a08a411
AE
88
89(define-public atk
90 (package
91 (name "atk")
5f07df17 92 (version "2.32.0")
3a08a411
AE
93 (source (origin
94 (method url-fetch)
3b8e4347 95 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
96 (version-major+minor version) "/"
97 name "-" version ".tar.xz"))
3a08a411
AE
98 (sha256
99 (base32
5f07df17
MB
100 "1k4i817bd2w5b9z394f2yyx95591l2746wa40am0vvz4gzdgwhfb"))))
101 (build-system meson-build-system)
13a9e291 102 (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
141aed80
LC
103 (native-inputs
104 `(("pkg-config" ,pkg-config)
5f07df17 105 ("gettext" ,gettext-minimal)
426adbe8 106 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 107 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
c5cc5006 108 (synopsis "GNOME accessibility toolkit")
3a08a411
AE
109 (description
110 "ATK provides the set of accessibility interfaces that are implemented
35b9e423 111by other toolkits and applications. Using the ATK interfaces, accessibility
3a08a411
AE
112tools have full access to view and control running applications.")
113 (license license:lgpl2.0+)
114 (home-page "https://developer.gnome.org/atk/")))
6131c43d
AE
115
116(define-public cairo
117 (package
118 (name "cairo")
d1ee69a9 119 (version "1.16.0")
6131c43d
AE
120 (source (origin
121 (method url-fetch)
b3822954 122 (uri (string-append "https://cairographics.org/releases/cairo-"
6131c43d
AE
123 version ".tar.xz"))
124 (sha256
125 (base32
d1ee69a9 126 "0c930mk5xr2bshbdljv005j3j8zr47gqmkry3q6qgvqky6rjjysy"))))
6131c43d
AE
127 (build-system gnu-build-system)
128 (propagated-inputs
129 `(("fontconfig" ,fontconfig)
130 ("freetype" ,freetype)
131 ("glib" ,glib)
132 ("libpng" ,libpng)
133 ("libx11" ,libx11)
134 ("libxext" ,libxext)
135 ("libxrender" ,libxrender)
136 ("pixman" ,pixman)))
137 (inputs
138 `(("ghostscript" ,ghostscript)
139 ("libspectre" ,libspectre)
6131c43d 140 ("poppler" ,poppler)
caf90259 141 ("xorgproto" ,xorgproto)
6131c43d 142 ("zlib" ,zlib)))
c4c4cc05
JD
143 (native-inputs
144 `(("pkg-config" ,pkg-config)
145 ("python" ,python-wrapper)))
6131c43d 146 (arguments
77888fae
MW
147 `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
148 #:configure-flags '("--enable-tee"))) ; needed for GNU Icecat
6131c43d
AE
149 (synopsis "2D graphics library")
150 (description
151 "Cairo is a 2D graphics library with support for multiple output devices.
152Currently supported output targets include the X Window System (via both
153Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
35b9e423 154output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
6131c43d
AE
155
156Cairo is designed to produce consistent output on all output media while
157taking advantage of display hardware acceleration when available
158eg. through the X Render Extension).
159
160The cairo API provides operations similar to the drawing operators of
35b9e423 161PostScript and PDF. Operations in cairo including stroking and filling cubic
6131c43d 162Bézier splines, transforming and compositing translucent images, and
35b9e423 163antialiased text rendering. All drawing operations can be transformed by any
e881752c 164affine transformation (scale, rotation, shear, etc.).")
6131c43d 165 (license license:lgpl2.1) ; or Mozilla Public License 1.1
b3822954 166 (home-page "https://cairographics.org/")))
a2609b41 167
40b3f523
DC
168(define-public cairo-xcb
169 (package
170 (inherit cairo)
171 (name "cairo-xcb")
172 (inputs
173 `(("mesa" ,mesa)
174 ,@(package-inputs cairo)))
175 (arguments
176 `(#:tests? #f
177 #:configure-flags
178 '("--enable-xlib-xcb" "--enable-gl" "--enable-egl")))
179 (synopsis "2D graphics library (with X11 support)")))
180
a2609b41
AE
181(define-public harfbuzz
182 (package
183 (name "harfbuzz")
9011f748 184 (version "2.5.3")
a2609b41 185 (source (origin
fd9b3b43 186 (method url-fetch)
5cc3096c 187 (uri (string-append "https://www.freedesktop.org/software/"
fd9b3b43 188 "harfbuzz/release/harfbuzz-"
731d471a 189 version ".tar.xz"))
fd9b3b43
SB
190 (sha256
191 (base32
9011f748 192 "0p45xk5bblsw8lfs7y7z80b4rvda9f2hlpr28flkrfmpjz3hvl7y"))))
a2609b41 193 (build-system gnu-build-system)
0a129f39
SB
194 (outputs '("out"
195 "bin")) ; 160K, only hb-view depend on cairo
a2609b41 196 (inputs
fd9b3b43
SB
197 `(("cairo" ,cairo)))
198 (propagated-inputs
199 ;; There are all in the Requires or Requires.private field of '.pc'.
200 `(("glib" ,glib)
27383915 201 ("graphite2" ,graphite2)
c4c4cc05
JD
202 ("icu4c" ,icu4c)))
203 (native-inputs
1c4b72cb
MB
204 `(("glib:bin" ,glib "bin") ;for glib-mkenums
205 ("gobject-introspection" ,gobject-introspection)
a30a0455 206 ("pkg-config" ,pkg-config)
7005f8cb
MB
207 ("python" ,python-wrapper)
208 ("which" ,which)))
27383915 209 (arguments
a30a0455 210 `(#:configure-flags `("--with-graphite2"
eb6afbcd
SB
211 "--with-gobject"
212 ,(string-append
213 "--bindir=" (assoc-ref %outputs "bin") "/bin"))))
35b9e423 214 (synopsis "OpenType text shaping engine")
a2609b41
AE
215 (description
216 "HarfBuzz is an OpenType text shaping engine.")
217 (license (license:x11-style "file://COPYING"
218 "See 'COPYING' in the distribution."))
61320932 219 (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
4b9adff9
AE
220
221(define-public pango
222 (package
223 (name "pango")
7b0faf32 224 (version "1.42.4")
4b9adff9
AE
225 (source (origin
226 (method url-fetch)
dca1b58d
FB
227 (uri (string-append "mirror://gnome/sources/pango/"
228 (version-major+minor version) "/"
229 name "-" version ".tar.xz"))
4b9adff9
AE
230 (sha256
231 (base32
7b0faf32 232 "17bwb7dgbncrfsmchlib03k9n3xaalirb39g3yb43gg8cg6p8aqx"))))
4b9adff9 233 (build-system gnu-build-system)
cf2135ff 234 (propagated-inputs
60a32a2d 235 ;; These are all in Requires or Requires.private of the '.pc' files.
4b9adff9 236 `(("cairo" ,cairo)
698ec949 237 ("fribidi" ,fribidi)
60a32a2d
MB
238 ("fontconfig" ,fontconfig)
239 ("freetype" ,freetype)
240 ("glib" ,glib)
4169a4bc
AE
241 ("harfbuzz" ,harfbuzz)))
242 (inputs
698ec949 243 `(("zlib" ,zlib)
9a5acb54
JL
244
245 ;; Some packages, such as Openbox, expect Pango to be built with the
246 ;; optional libxft support.
247 ("libxft" ,libxft)))
c4c4cc05 248 (native-inputs
141aed80 249 `(("pkg-config" ,pkg-config)
426adbe8 250 ("glib" ,glib "bin") ; glib-mkenums, etc.
141aed80 251 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
4b9adff9
AE
252 (synopsis "GNOME text and font handling library")
253 (description
254 "Pango is the core text and font handling library used in GNOME
35b9e423 255applications. It has extensive support for the different writing systems
4b9adff9
AE
256used throughout the world.")
257 (license license:lgpl2.0+)
258 (home-page "https://developer.gnome.org/pango/")))
527e7961 259
5698b8b8
JD
260(define-public pangox-compat
261 (package
262 (name "pangox-compat")
263 (version "0.0.2")
264 (source (origin
265 (method url-fetch)
b38e45d8
EB
266 (uri (string-append "mirror://gnome/sources/" name "/"
267 (version-major+minor version) "/"
268 name "-" version ".tar.xz"))
5698b8b8
JD
269 (sha256
270 (base32
271 "0ip0ziys6mrqqmz4n71ays0kf5cs1xflj1gfpvs4fgy2nsrr482m"))))
272 (build-system gnu-build-system)
273 (inputs
274 `(("glib" ,glib)
275 ("pango" ,pango)))
276 (native-inputs
277 `(("intltool" ,intltool)
278 ("pkg-config" ,pkg-config)))
279 (home-page "https://developer.gnome.org/pango")
35b9e423 280 (synopsis "Obsolete pango functions")
5698b8b8
JD
281 (description "Pangox was a X backend to pango. It is now obsolete and no
282longer provided by recent pango releases. pangox-compat provides the
283functions which were removed.")
284 (license license:lgpl2.0+)))
285
e926ba71
RW
286(define-public ganv
287 (package
288 (name "ganv")
289 (version "1.4.2")
290 (source (origin
291 (method url-fetch)
0d0252e4 292 (uri (string-append "https://download.drobilla.net/ganv-"
ea7f3349 293 version ".tar.bz2"))
e926ba71
RW
294 (sha256
295 (base32
296 "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
297 (build-system waf-build-system)
ea7f3349 298 (arguments
dc1d3cde
KK
299 `(#:phases
300 (modify-phases %standard-phases
301 (add-before 'configure 'set-flags
302 (lambda* (#:key outputs #:allow-other-keys)
dc1d3cde
KK
303 ;; Allow 'bin/ganv_bench' to find libganv-1.so.
304 (setenv "LDFLAGS"
305 (string-append "-Wl,-rpath="
306 (assoc-ref outputs "out") "/lib"))
307 #t)))
22ce8b56 308 #:python ,python-2 ;XXX: The bundled waf fails with Python 3.7.0.
ea7f3349 309 #:tests? #f)) ; no check target
e926ba71
RW
310 (inputs
311 `(("gtk" ,gtk+-2)
312 ("gtkmm" ,gtkmm-2)))
313 (native-inputs
314 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
315 ("pkg-config" ,pkg-config)))
0d0252e4 316 (home-page "https://drobilla.net/software/ganv/")
e926ba71
RW
317 (synopsis "GTK+ widget for interactive graph-like environments")
318 (description
319 "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
320graph-like environments, e.g. modular synths or finite state machine
321diagrams.")
322 (license license:gpl3+)))
95d439b2 323
a9276c12 324(define-public ganv-devel
ab8f4a70 325 (let ((commit "12f7d6b0438c94dd87f773a92eee3453d971846e")
a9276c12
RW
326 (revision "1"))
327 (package
328 (inherit ganv)
329 (name "ganv")
ab8f4a70 330 (version (string-append "1.5.4-" revision "."
a9276c12
RW
331 (string-take commit 9)))
332 (source (origin
333 (method git-fetch)
334 (uri (git-reference
0d0252e4 335 (url "https://git.drobilla.net/ganv.git")
a9276c12 336 (commit commit)))
4a885c65 337 (file-name (git-file-name name version))
a9276c12
RW
338 (sha256
339 (base32
ab8f4a70 340 "1cr8w02lr6bk9mkxa12j3imq721b2an2yn4bj5wnwmpm91ddn2gi")))))))
a9276c12 341
c900f843 342(define-public gtksourceview-2
95d439b2
JD
343 (package
344 (name "gtksourceview")
345 (version "2.10.5") ; This is the last version which builds against gtk+2
346 (source (origin
347 (method url-fetch)
b38e45d8
EB
348 (uri (string-append "mirror://gnome/sources/" name "/"
349 (version-major+minor version) "/"
350 name "-" version ".tar.bz2"))
95d439b2
JD
351 (sha256
352 (base32
db6dd04c
JL
353 "07hrabhpl6n8ajz10s0d960jdwndxs87szxyn428mpxi8cvpg1f5"))
354 (patches
355 (search-patches
356 "gtksourceview-2-add-default-directory.patch"))))
95d439b2 357 (build-system gnu-build-system)
c4c4cc05 358 (native-inputs
44add1ce 359 `(("intltool" ,intltool)
221ed17a 360 ("glib" ,glib "bin") ; for glib-genmarshal, etc.
bd05ea41
SB
361 ("pkg-config" ,pkg-config)
362 ;; For testing.
363 ("xorg-server" ,xorg-server)
364 ("shared-mime-info" ,shared-mime-info)))
68d85de1
TUBK
365 (propagated-inputs
366 ;; As per the pkg-config file.
bd05ea41
SB
367 `(("gtk" ,gtk+-2)
368 ("libxml2" ,libxml2)))
95d439b2
JD
369 (arguments
370 `(#:phases
371 ;; Unfortunately, some of the tests in "make check" are highly dependent
372 ;; on the environment therefore, some black magic is required.
dc1d3cde
KK
373 (modify-phases %standard-phases
374 (add-before 'check 'start-xserver
375 (lambda* (#:key inputs #:allow-other-keys)
376 (let ((xorg-server (assoc-ref inputs "xorg-server"))
377 (mime (assoc-ref inputs "shared-mime-info")))
95d439b2 378
dc1d3cde
KK
379 ;; There must be a running X server and make check doesn't start one.
380 ;; Therefore we must do it.
381 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
382 (setenv "DISPLAY" ":1")
95d439b2 383
dc1d3cde
KK
384 ;; The .lang files must be found in $XDG_DATA_HOME/gtksourceview-2.0
385 (system "ln -s gtksourceview gtksourceview-2.0")
386 (setenv "XDG_DATA_HOME" (getcwd))
95d439b2 387
dc1d3cde
KK
388 ;; Finally, the mimetypes must be available.
389 (setenv "XDG_DATA_DIRS" (string-append mime "/share/")))
390 #t)))))
95d439b2
JD
391 (synopsis "Widget that extends the standard GTK+ 2.x 'GtkTextView' widget")
392 (description
393 "GtkSourceView is a portable C library that extends the standard GTK+
394framework for multiline text editing with support for configurable syntax
395highlighting, unlimited undo/redo, search and replace, a completion framework,
396printing and other features typical of a source code editor.")
397 (license license:lgpl2.0+)
398 (home-page "https://developer.gnome.org/gtksourceview/")))
399
c900f843
DH
400(define-public gtksourceview
401 (package
402 (name "gtksourceview")
44d9e575 403 (version "4.2.0")
c900f843
DH
404 (source (origin
405 (method url-fetch)
f7e4dd5d 406 (uri (string-append "mirror://gnome/sources/gtksourceview/"
c900f843 407 (version-major+minor version) "/"
f7e4dd5d 408 "gtksourceview-" version ".tar.xz"))
c900f843
DH
409 (sha256
410 (base32
44d9e575 411 "0xgnjj7jd56wbl99s76sa1vjq9bkz4mdsxwgwlcphg689liyncf4"))))
c900f843
DH
412 (build-system gnu-build-system)
413 (arguments
414 '(#:phases
415 (modify-phases %standard-phases
416 (add-before
417 'check 'pre-check
418 (lambda* (#:key inputs #:allow-other-keys)
419 (let ((xorg-server (assoc-ref inputs "xorg-server")))
420 ;; Tests require a running X server.
421 (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
422 (setenv "DISPLAY" ":1")
423 ;; For the missing /etc/machine-id.
424 (setenv "DBUS_FATAL_WARNINGS" "0")
425 #t))))))
426 (native-inputs
427 `(("glib:bin" ,glib "bin") ; for glib-genmarshal, etc.
428 ("intltool" ,intltool)
b3546174 429 ("itstool" ,itstool)
c900f843
DH
430 ("gobject-introspection" ,gobject-introspection)
431 ("pkg-config" ,pkg-config)
432 ("vala" ,vala)
433 ;; For testing.
434 ("xorg-server" ,xorg-server)
435 ("shared-mime-info" ,shared-mime-info)))
436 (propagated-inputs
437 ;; gtksourceview-3.0.pc refers to all these.
438 `(("glib" ,glib)
439 ("gtk+" ,gtk+)
440 ("libxml2" ,libxml2)))
441 (home-page "https://wiki.gnome.org/Projects/GtkSourceView")
442 (synopsis "GNOME source code widget")
443 (description "GtkSourceView is a text widget that extends the standard
444GTK+ text widget GtkTextView. It improves GtkTextView by implementing syntax
445highlighting and other features typical of a source code editor.")
446 (license license:lgpl2.1+)))
447
c5989b03
RW
448(define-public gtksourceview-3
449 (package (inherit gtksourceview)
450 (name "gtksourceview")
08185081 451 (version "3.24.10")
c5989b03
RW
452 (source (origin
453 (method url-fetch)
454 (uri (string-append "mirror://gnome/sources/" name "/"
455 (version-major+minor version) "/"
456 name "-" version ".tar.xz"))
457 (sha256
458 (base32
08185081 459 "16ym7jwiki4s1pilwr4incx0yg7ll94f1cajrnpndkxxs36hcm5b"))))))
c5989b03 460
527e7961
AE
461(define-public gdk-pixbuf
462 (package
463 (name "gdk-pixbuf")
c4e0a99c 464 (version "2.38.1")
527e7961
AE
465 (source (origin
466 (method url-fetch)
b38e45d8
EB
467 (uri (string-append "mirror://gnome/sources/" name "/"
468 (version-major+minor version) "/"
469 name "-" version ".tar.xz"))
527e7961
AE
470 (sha256
471 (base32
c4e0a99c 472 "0fmbjgjcyym3qg46f64qgl7icdm4ii77flyc1mhk244rp8vgi7zi"))))
a34ce330 473 (build-system meson-build-system)
48f46dc3 474 (arguments
83a40cbf 475 `(#:configure-flags '("-Dinstalled_tests=false")
a63a73dc
SB
476 #:phases
477 (modify-phases %standard-phases
478 (add-after
479 'unpack 'disable-failing-tests
480 (lambda _
a34ce330 481 (substitute* "tests/meson.build"
fe08b6e1
EF
482 ;; XXX FIXME: This test fails on armhf machines with:
483 ;; SKIP Not enough memory to load bitmap image
484 ;; ERROR: cve-2015-4491 - too few tests run (expected 4, got 2)
a34ce330 485 ((".*'cve-2015-4491'.*") "")
a63a73dc
SB
486 ;; XXX FIXME: This test fails with:
487 ;; ERROR:pixbuf-jpeg.c:74:test_type9_rotation_exif_tag:
488 ;; assertion failed (error == NULL): Data differ
489 ;; (gdk-pixbuf-error-quark, 0)
56a88478 490 ((".*'pixbuf-jpeg'.*") ""))
a34ce330 491 #t))
56a88478
EF
492 ;; The slow tests take longer than the specified timeout.
493 ,@(if (any (cute string=? <> (%current-system))
494 '("armhf-linux" "aarch64-linux"))
495 '((replace 'check
496 (lambda _
497 (invoke "meson" "test" "--timeout-multiplier" "5"))))
498 '())
a34ce330
MB
499 (add-before 'configure 'aid-install-script
500 (lambda* (#:key outputs #:allow-other-keys)
501 ;; "build-aux/post-install.sh" invokes `gdk-pixbuf-query-loaders`
502 ;; for updating loader.cache, but it's not on PATH. Make it use
503 ;; the one we're installing. XXX: Won't work when cross-compiling.
504 (substitute* "build-aux/post-install.sh"
505 (("gdk-pixbuf-query-loaders" match)
506 (string-append (assoc-ref outputs "out") "/bin/" match)))
507 #t)))))
6983ba56
SB
508 (propagated-inputs
509 `(;; Required by gdk-pixbuf-2.0.pc
510 ("glib" ,glib)
511 ("libpng" ,libpng)
512 ;; Used for testing and required at runtime.
513 ("shared-mime-info" ,shared-mime-info)))
1b5758a6
SB
514 (inputs
515 `(("libjpeg" ,libjpeg)
48f46dc3 516 ("libtiff" ,libtiff)
224276ab 517 ("libx11" ,libx11)))
c4c4cc05 518 (native-inputs
141aed80 519 `(("pkg-config" ,pkg-config)
a34ce330 520 ("gettext" ,gettext-minimal)
426adbe8 521 ("glib" ,glib "bin") ; glib-mkenums, etc.
b3546174 522 ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
527e7961
AE
523 (synopsis "GNOME image loading and manipulation library")
524 (description
525 "GdkPixbuf is a library for image loading and manipulation developed
526in the GNOME project.")
527 (license license:lgpl2.0+)
528 (home-page "https://developer.gnome.org/gdk-pixbuf/")))
cf2135ff 529
34dc3907
SB
530;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends
531;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the
532;; closure size.
533(define-public gdk-pixbuf+svg
e60d3a55 534 (package (inherit gdk-pixbuf)
34dc3907
SB
535 (name "gdk-pixbuf+svg")
536 (inputs
537 `(("librsvg" ,librsvg)
538 ,@(package-inputs gdk-pixbuf)))
539 (arguments
a34ce330 540 '(#:configure-flags '("-Dinstalled-tests=false")
34dc3907
SB
541 #:tests? #f ; tested by the gdk-pixbuf package already
542 #:phases
543 (modify-phases %standard-phases
544 (add-after 'install 'register-svg-loader
545 (lambda* (#:key inputs outputs #:allow-other-keys)
546 (let* ((out (assoc-ref outputs "out"))
547 (librsvg (assoc-ref inputs "librsvg"))
548 (loaders
549 (append
550 (find-files out "^libpixbufloader-.*\\.so$")
551 (find-files librsvg "^libpixbufloader-.*\\.so$")))
552 (gdk-pixbuf-query-loaders
553 (string-append out "/bin/gdk-pixbuf-query-loaders")))
0c5c788f
MW
554 (apply invoke
555 gdk-pixbuf-query-loaders
556 "--update-cache"
557 loaders)))))))
34dc3907
SB
558 (synopsis
559 "GNOME image loading and manipulation library, with SVG support")))
560
f3fb92e5
AE
561(define-public at-spi2-core
562 (package
563 (name "at-spi2-core")
ab43d1f8 564 (version "2.32.1")
f3fb92e5
AE
565 (source (origin
566 (method url-fetch)
567 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
568 (version-major+minor version) "/"
569 name "-" version ".tar.xz"))
f3fb92e5
AE
570 (sha256
571 (base32
ab43d1f8 572 "0lqd7gsl471v6538iighkvb21gjglcb9pklvas32rjpsxcvsjaiw"))))
8c5b884c 573 (build-system meson-build-system)
068a53c3 574 (outputs '("out" "doc"))
f3fb92e5 575 (arguments
b19d6805 576 '(#:configure-flags
5254f17e 577 (list "-Ddocs=true")
50cc7f41 578 #:phases
af108677 579 (modify-phases %standard-phases
8c5b884c
RW
580 (add-after 'unpack 'set-documentation-path
581 (lambda* (#:key outputs #:allow-other-keys)
582 ;; Ensure that the cross-references point to the "doc" output.
583 (substitute* "doc/libatspi/meson.build"
584 (("docpath =.*")
585 (string-append "docpath = '" (assoc-ref outputs "doc") "/share/gtk-doc/html'\n")))
586 #t))
587 (add-before 'install 'prepare-doc-directory
588 (lambda* (#:key outputs #:allow-other-keys)
589 (mkdir-p (string-append (assoc-ref outputs "doc") "/share"))
590 #t))
591 (add-after 'install 'move-documentation
592 (lambda* (#:key outputs #:allow-other-keys)
593 (let ((out (assoc-ref outputs "out"))
594 (doc (assoc-ref outputs "doc")))
595 (copy-recursively
596 (string-append out "/share/gtk-doc")
597 (string-append doc "/share/gtk-doc"))
598 (delete-file-recursively
599 (string-append out "/share/gtk-doc")))
600 #t))
601 (add-after 'install 'check
602 (lambda _
603 (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME
604 ;; Run test-suite under a dbus session.
605 (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service
606 (string-append %output "/share"))
607 ;; Don't fail on missing '/etc/machine-id'.
608 (setenv "DBUS_FATAL_WARNINGS" "0") ;
609 (invoke "dbus-launch" "ninja" "test")))
610 (delete 'check))))
c6a552da
SB
611 (propagated-inputs
612 ;; atspi-2.pc refers to all these.
613 `(("dbus" ,dbus)
5254f17e
MB
614 ("glib" ,glib)
615 ("libxi" ,libxi)
c6a552da 616 ("libxtst" ,libxtst)))
c4c4cc05 617 (native-inputs
50cc7f41 618 `(("gobject-introspection" ,gobject-introspection)
8c5b884c
RW
619 ("gtk-doc" ,gtk-doc)
620 ("glib" ,glib "bin")
50cc7f41
SB
621 ("intltool" ,intltool)
622 ("pkg-config" ,pkg-config)))
f3fb92e5
AE
623 (synopsis "Assistive Technology Service Provider Interface, core components")
624 (description
625 "The Assistive Technology Service Provider Interface, core components,
626is part of the GNOME accessibility project.")
627 (license license:lgpl2.0+)
628 (home-page "https://projects.gnome.org/accessibility/")))
629
5fda4784
AE
630(define-public at-spi2-atk
631 (package
632 (name "at-spi2-atk")
3ea5a8ee 633 (version "2.32.0")
5fda4784
AE
634 (source (origin
635 (method url-fetch)
636 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
637 (version-major+minor version) "/"
638 name "-" version ".tar.xz"))
5fda4784
AE
639 (sha256
640 (base32
3ea5a8ee
MB
641 "0p54wx6f6q7s8w0b1j0sgw87pikllp79q5g3lfiwqazs779ycl8b"))))
642 (build-system meson-build-system)
5fda4784 643 (arguments
57fcd224
SB
644 '(#:phases
645 (modify-phases %standard-phases
3a4de6b2 646 (replace 'check
57fcd224
SB
647 ;; Run test-suite under a dbus session.
648 (lambda _
5fba12ec 649 (setenv "DBUS_FATAL_WARNINGS" "0")
3ea5a8ee 650 (invoke "dbus-launch" "meson" "test"))))))
6967cc3f
SB
651 (propagated-inputs
652 `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc
653 (inputs
654 `(("atk" ,atk)))
c4c4cc05 655 (native-inputs
3ea5a8ee
MB
656 `(("pkg-config" ,pkg-config)
657 ;; For tests.
658 ("dbus" ,dbus)
659 ("libxml2" ,libxml2)))
5fda4784
AE
660 (synopsis "Assistive Technology Service Provider Interface, ATK bindings")
661 (description
662 "The Assistive Technology Service Provider Interface
663is part of the GNOME accessibility project.")
664 (license license:lgpl2.0+)
665 (home-page "https://projects.gnome.org/accessibility/")))
666
8b79a547 667(define-public gtk+-2
cf2135ff
AE
668 (package
669 (name "gtk+")
f55ef78b 670 (version "2.24.32")
cf2135ff
AE
671 (source (origin
672 (method url-fetch)
1c8362a8 673 (uri (string-append "mirror://gnome/sources/" name "/"
b38e45d8
EB
674 (version-major+minor version) "/"
675 name "-" version ".tar.xz"))
cf2135ff
AE
676 (sha256
677 (base32
f55ef78b 678 "0bjq7ja9gwcv6n5q4qkvdjjx40wsdiikksz1zqxvxsm5vlyskj5n"))
6983ba56 679 (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
711670c0 680 "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
f55ef78b 681 "gtk2-theme-paths.patch"))))
cf2135ff 682 (build-system gnu-build-system)
6b1f2388 683 (outputs '("out" "doc"))
4169a4bc 684 (propagated-inputs
cf2135ff 685 `(("atk" ,atk)
6983ba56 686 ("gdk-pixbuf" ,gdk-pixbuf+svg)
4169a4bc 687 ("pango" ,pango)))
dfbce50c
SB
688 (inputs
689 `(("cups" ,cups)
690 ("libxcomposite" ,libxcomposite)
691 ("libxcursor" ,libxcursor)
692 ("libxdamage" ,libxdamage)
693 ("libxi" ,libxi)
694 ("libxinerama" ,libxinerama)
695 ("libxrandr" ,libxrandr)))
c4c4cc05 696 (native-inputs
1c8362a8 697 `(("perl" ,perl)
b94a6ca0 698 ("gettext" ,gettext-minimal)
426adbe8 699 ("glib" ,glib "bin")
9d297fae 700 ("gobject-introspection" ,gobject-introspection)
1c8362a8
AE
701 ("pkg-config" ,pkg-config)
702 ("python-wrapper" ,python-wrapper)))
cf2135ff 703 (arguments
b19d6805 704 `(#:configure-flags
6b1f2388
SB
705 (list "--with-xinput=yes"
706 (string-append "--with-html-dir="
707 (assoc-ref %outputs "doc")
708 "/share/gtk-doc/html"))
9d297fae 709 #:phases
d4bf49b1
EB
710 (alist-cons-before
711 'configure 'disable-tests
712 (lambda _
713 ;; FIXME: re-enable tests requiring an X server
714 (substitute* "gtk/Makefile.in"
31ca0901
MW
715 (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
716 #t)
2a6afac9
RW
717 %standard-phases)))
718 (native-search-paths
719 (list (search-path-specification
720 (variable "GUIX_GTK2_PATH")
721 (files '("lib/gtk-2.0")))))
0327ced2 722 (synopsis "Cross-platform toolkit for creating graphical user interfaces")
cf2135ff
AE
723 (description
724 "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
35b9e423 725graphical user interfaces. Offering a complete set of widgets, GTK+ is
cf2135ff
AE
726suitable for projects ranging from small one-off tools to complete
727application suites.")
728 (license license:lgpl2.0+)
24d6cc1d 729 (home-page "https://www.gtk.org/")))
8e70e6d2 730
8b79a547
AE
731(define-public gtk+
732 (package (inherit gtk+-2)
b38e45d8 733 (name "gtk+")
1648530f 734 (version "3.24.10")
8b79a547
AE
735 (source (origin
736 (method url-fetch)
b38e45d8
EB
737 (uri (string-append "mirror://gnome/sources/" name "/"
738 (version-major+minor version) "/"
739 name "-" version ".tar.xz"))
8b79a547
AE
740 (sha256
741 (base32
1648530f 742 "00qvq1r96ikdalv7xzgng1kad9i0rcahqk01gwhxl3xrw83z3a1m"))
234e7980 743 (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch"
87d336e2 744 "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch"))))
7b808d76 745 (outputs '("out" "bin" "doc"))
0e112540 746 (propagated-inputs
8b79a547 747 `(("at-spi2-atk" ,at-spi2-atk)
0e112540 748 ("atk" ,atk)
6983ba56 749 ("gdk-pixbuf" ,gdk-pixbuf+svg)
31b254a3 750 ("libepoxy" ,libepoxy)
a572dca8 751 ("libxcursor" ,libxcursor)
8b79a547
AE
752 ("libxi" ,libxi)
753 ("libxinerama" ,libxinerama)
982b3574 754 ("libxkbcommon" ,libxkbcommon)
9e5c0927 755 ("libxdamage" ,libxdamage)
982b3574
KK
756 ("mesa" ,mesa)
757 ("pango" ,pango)
758 ("wayland" ,wayland)
759 ("wayland-protocols" ,wayland-protocols)))
0e112540 760 (inputs
6983ba56 761 `(("libxml2" ,libxml2)
1cb16f1e
SB
762 ;; XXX: colord depends on mozjs (through polkit), which fails on
763 ;; on non-intel systems now.
764 ;;("colord" ,colord)
a572dca8 765 ("cups" ,cups) ;for printing support
a2651b54
SB
766 ;; XXX: rest depends on p11-kit, which fails on mips64el now.
767 ;;("rest" ,rest)
a572dca8 768 ("json-glib" ,json-glib)))
c4c4cc05 769 (native-inputs
141aed80 770 `(("perl" ,perl)
426adbe8 771 ("glib" ,glib "bin")
b94a6ca0 772 ("gettext" ,gettext-minimal)
8b79a547 773 ("pkg-config" ,pkg-config)
141aed80 774 ("gobject-introspection" ,gobject-introspection)
8b79a547 775 ("python-wrapper" ,python-wrapper)
da79e82b
LF
776 ;; By using a special xorg-server for GTK+'s tests, we reduce the impact
777 ;; of updating xorg-server directly on the master branch.
60ecc10f 778 ("xorg-server" ,xorg-server-for-tests)))
8b79a547 779 (arguments
60ecc10f 780 `(#:disallowed-references (,xorg-server-for-tests)
da79e82b 781 ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes
260b07a7
LC
782 ;; to "doc".
783 #:configure-flags (list (string-append "--with-html-dir="
784 (assoc-ref %outputs "doc")
982b3574
KK
785 "/share/gtk-doc/html")
786 ;; The header file <gdk/gdkwayland.h> is required
787 ;; by gnome-control-center
788 "--enable-wayland-backend"
789 ;; This is necessary to build both backends.
150e2301
DM
790 "--enable-x11-backend"
791 ;; This enables the HTML5 websocket backend.
792 "--enable-broadway-backend")
e4360e16
JD
793 #:phases (modify-phases %standard-phases
794 (add-before 'configure 'pre-configure
795 (lambda _
796 ;; Disable most tests, failing in the chroot with the message:
797 ;; D-Bus library appears to be incorrectly set up; failed to read
798 ;; machine uuid: Failed to open "/etc/machine-id": No such file or
799 ;; directory.
800 ;; See the manual page for dbus-uuidgen to correct this issue.
801 (substitute* "testsuite/Makefile.in"
802 (("SUBDIRS = gdk gtk a11y css reftests")
803 "SUBDIRS = gdk"))
4c8c2b0f
SB
804 #t))
805 (add-after 'install 'move-desktop-files
806 ;; Move desktop files into 'bin' to avoid cycle references.
807 (lambda* (#:key outputs #:allow-other-keys)
808 (let ((out (assoc-ref outputs "out"))
809 (bin (assoc-ref outputs "bin")))
810 (mkdir-p (string-append bin "/share"))
811 (rename-file (string-append out "/share/applications")
812 (string-append bin "/share/applications"))
813 #t))))))
4828ff91
RW
814 (native-search-paths
815 (list (search-path-specification
816 (variable "GUIX_GTK3_PATH")
817 (files '("lib/gtk-3.0")))))))
5fda4784 818
8e70e6d2
LC
819;;;
820;;; Guile bindings.
821;;;
822
823(define-public guile-cairo
824 (package
825 (name "guile-cairo")
2bc8b2af 826 (version "1.10.0")
8e70e6d2 827 (source (origin
b9743865 828 (method url-fetch)
2bc8b2af
LC
829 (uri (string-append "mirror://savannah/guile-cairo/guile-cairo-"
830 version ".tar.gz"))
b9743865
LC
831 (sha256
832 (base32
2bc8b2af
LC
833 "0p6xrhf2k6n5dybn88050za7h90gnd7534n62l53vsca187pwgdf"))
834 (modules '((guix build utils)))
835 (snippet
836 (begin
837 '(begin
838 ;; Install Scheme files in …/guile/site/X.Y.
839 (substitute* (find-files "." "^Makefile\\.in$")
840 (("^(.*)dir = (.*)/guile/site(.*)" _ name prefix suffix)
841 (string-append name "dir = " prefix
842 "/guile/site/@GUILE_EFFECTIVE_VERSION@"
843 suffix)))
844 #t)))))
8e70e6d2 845 (build-system gnu-build-system)
8e70e6d2 846 (inputs
5ace0919 847 `(("guile-lib" ,guile-lib)
8e70e6d2 848 ("expat" ,expat)
1b0f266e 849 ("guile" ,guile-2.2)))
49710cea
LC
850 (propagated-inputs
851 ;; The .pc file refers to 'cairo'.
852 `(("cairo" ,cairo)))
c4c4cc05 853 (native-inputs
b9743865 854 `(("pkg-config" ,pkg-config)))
340978d7 855 (home-page "https://www.nongnu.org/guile-cairo/")
8e70e6d2
LC
856 (synopsis "Cairo bindings for GNU Guile")
857 (description
858 "Guile-Cairo wraps the Cairo graphics library for Guile Scheme.
859Guile-Cairo is complete, wrapping almost all of the Cairo API. It is API
860stable, providing a firm base on which to do graphics work. Finally, and
861importantly, it is pleasant to use. You get a powerful and well-maintained
862graphics library with all of the benefits of Scheme: memory management,
863exceptions, macros, and a dynamic programming environment.")
864 (license license:lgpl3+)))
66663503 865
1a51fe27 866(define-public guile-rsvg
1b0f266e
LC
867 ;; Use a recent snapshot that supports Guile 2.2 and beyond.
868 (let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678")
869 (revision "0"))
870 (package
871 (name "guile-rsvg")
872 (version (string-append "2.18.1-" revision "."
873 (string-take commit 7)))
874 (source (origin
875 (method url-fetch)
876 (uri (string-append "https://gitlab.com/wingo/guile-rsvg/"
877 "repository/archive.tar.gz?ref="
878 commit))
879 (sha256
880 (base32
881 "0vdzjx8l5nc4y2xjqs0g1rqn1zrwfsm30brh5gz00r1x41a2pvv2"))
882 (patches (search-patches "guile-rsvg-pkgconfig.patch"))
883 (modules '((guix build utils)))
884 (snippet
6cbee49d
MW
885 '(begin
886 (substitute* (find-files "." "Makefile\\.am")
887 (("/share/guile/site")
888 "/share/guile/site/@GUILE_EFFECTIVE_VERSION@"))
889 #t))
1b0f266e
LC
890 (file-name (string-append name "-" version ".tar.gz"))))
891 (build-system gnu-build-system)
df17d508
MW
892 (arguments
893 `(#:phases (modify-phases %standard-phases
894 (replace 'bootstrap
895 (lambda _
896 (invoke "autoreconf" "-vfi"))))))
1b0f266e
LC
897 (native-inputs `(("pkg-config" ,pkg-config)
898 ("autoconf" ,autoconf)
899 ("automake" ,automake)
900 ("libtool" ,libtool)
901 ("texinfo" ,texinfo)))
902 (inputs `(("guile" ,guile-2.2)
903 ("librsvg" ,librsvg)
904 ("guile-lib" ,guile-lib))) ;for (unit-test)
905 (propagated-inputs `(("guile-cairo" ,guile-cairo)))
906 (synopsis "Render SVG images using Cairo from Guile")
907 (description
908 "Guile-RSVG wraps the RSVG library for Guile, allowing you to render SVG
1a51fe27 909images onto Cairo surfaces.")
1b0f266e
LC
910 (home-page "http://wingolog.org/projects/guile-rsvg/")
911 (license license:lgpl2.1+))))
7ca0dbc3 912
cdd383e9
LC
913(define-public guile-present
914 (package
915 (name "guile-present")
916 (version "0.3.0")
917 (source (origin
918 (method url-fetch)
919 (uri (string-append "http://wingolog.org/pub/guile-present/"
920 "guile-present-" version ".tar.gz"))
921 (sha256
922 (base32
923 "1qam447m05sxxv6x8dlzg7qnyfc4dh8apjw1idpfhpns671gfr6m"))
b290a631 924 (patches (search-patches "guile-present-coding.patch"))))
cdd383e9
LC
925 (build-system gnu-build-system)
926 (arguments
dc1d3cde
KK
927 '(#:phases
928 (modify-phases %standard-phases
929 (add-after 'install 'post-install
930 (lambda* (#:key inputs outputs #:allow-other-keys)
931 (let* ((out (assoc-ref outputs "out"))
932 (bin (string-append out "/bin"))
933 (guile (assoc-ref inputs "guile")))
934 (substitute* (find-files bin ".*")
935 (("guile")
936 (string-append guile "/bin/guile -L "
937 out "/share/guile/site/2.0 -C "
938 out "/share/guile/site/2.0 "))))
939 #t)))))
cdd383e9 940 (native-inputs `(("pkg-config" ,pkg-config)))
1b0f266e 941 (inputs `(("guile" ,guile-2.2)))
cdd383e9
LC
942 (propagated-inputs
943 ;; These are used by the (present …) modules.
5ace0919 944 `(("guile-lib" ,guile-lib)
cdd383e9
LC
945 ("guile-cairo" ,guile-cairo)
946 ("guile-rsvg" ,guile-rsvg)))
947 (home-page "http://wingolog.org/software/guile-present/")
948 (synopsis "Create SVG or PDF presentations in Guile")
949 (description
950 "Guile-Present defines a declarative vocabulary for presentations,
951together with tools to render presentation documents as SVG or PDF.
952Guile-Present can be used to make presentations programmatically, but also
953includes a tools to generate PDF presentations out of Org mode and Texinfo
954documents.")
955 (license license:lgpl3+)))
7ca0dbc3 956
9b381643
PH
957(define-public guile-gnome
958 (package
959 (name "guile-gnome")
1b0f266e 960 (version "2.16.5")
9b381643
PH
961 (source (origin
962 (method url-fetch)
963 (uri
964 (string-append "mirror://gnu/" name
965 "/guile-gnome-platform/guile-gnome-platform-"
966 version ".tar.gz"))
967 (sha256
968 (base32
1b0f266e 969 "1gnf3j96nip5kl99a268i0dy1hj7s1cfs66sps3zwysnkd7qr399"))))
9b381643
PH
970 (build-system gnu-build-system)
971 (native-inputs
972 `(("pkg-config" ,pkg-config)
973 ("atk" ,atk)
974 ;;("corba" ,corba) ; not packaged yet
975 ("gconf" ,gconf)
976 ("gobject-introspection" ,gobject-introspection)
977 ;;("gthread" ,gthread) ; not packaged yet
978 ("gnome-vfs" ,gnome-vfs)
979 ("gdk-pixbuf" ,gdk-pixbuf)
980 ("gtk+" ,gtk+-2)
981 ("libglade" ,libglade)
982 ("libgnome" ,libgnome)
983 ("libgnomecanvas" ,libgnomecanvas)
984 ("libgnomeui" ,libgnomeui)
985 ("pango" ,pango)
986 ("libffi" ,libffi)
987 ("glib" ,glib)))
1b0f266e 988 (inputs `(("guile" ,guile-2.2)))
9b381643
PH
989 (propagated-inputs
990 `(("guile-cairo" ,guile-cairo)
991 ("g-wrap" ,g-wrap)
5ace0919 992 ("guile-lib" ,guile-lib)))
9b381643
PH
993 (arguments
994 `(#:tests? #f ;FIXME
995 #:phases (modify-phases %standard-phases
996 (add-before 'configure 'pre-configure
997 (lambda* (#:key outputs #:allow-other-keys)
998 (let ((out (assoc-ref outputs "out")))
999 (substitute* (find-files "." "^Makefile.in$")
1000 (("guilesite :=.*guile/site" all)
1b0f266e 1001 (string-append all "/@GUILE_EFFECTIVE_VERSION@")))
9b381643
PH
1002 #t))))))
1003 (outputs '("out" "debug"))
1004 (synopsis "Guile interface for GTK+ programming for GNOME")
1005 (description
1006 "Includes guile-clutter, guile-gnome-gstreamer,
1007guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
6fd52309 1008 (home-page "https://www.gnu.org/software/guile-gnome/")
1b0f266e
LC
1009 (license license:gpl2+)
1010 (properties '((upstream-name . "guile-gnome-platform")
1011 (ftp-directory . "/gnu/guile-gnome/guile-gnome-platform")))))
9b381643 1012
66663503
LC
1013;;;
1014;;; C++ bindings.
1015;;;
1016
1017(define-public cairomm
1018 (package
1019 (name "cairomm")
5a52e86e 1020 (version "1.12.2")
66663503 1021 (source (origin
2079087c 1022 (method url-fetch)
5a52e86e
EF
1023 (uri (string-append "https://www.cairographics.org/releases/"
1024 name "-" version ".tar.gz"))
2079087c
SB
1025 (sha256
1026 (base32
5a52e86e 1027 "16fmigxsaz85c3lgcls7biwyz8zy8c8h3jndfm54cxxas3a7zi25"))))
66663503
LC
1028 (build-system gnu-build-system)
1029 (arguments
1030 ;; The examples lack -lcairo.
1031 '(#:make-flags '("LDFLAGS=-lcairo")))
c4c4cc05 1032 (native-inputs `(("pkg-config" ,pkg-config)))
66663503
LC
1033 (propagated-inputs
1034 `(("libsigc++" ,libsigc++)
1035 ("freetype" ,freetype)
1036 ("fontconfig" ,fontconfig)
1037 ("cairo" ,cairo)))
5a52e86e 1038 (home-page "https://cairographics.org/")
66663503
LC
1039 (synopsis "C++ bindings to the Cairo 2D graphics library")
1040 (description
1041 "Cairomm provides a C++ programming interface to the Cairo 2D graphics
1042library.")
1043 (license license:lgpl2.0+)))
c5cc5006
LC
1044
1045(define-public pangomm
1046 (package
1047 (name "pangomm")
13b0a85d 1048 (version "2.42.0")
c5cc5006
LC
1049 (source (origin
1050 (method url-fetch)
b38e45d8
EB
1051 (uri (string-append "mirror://gnome/sources/" name "/"
1052 (version-major+minor version) "/"
1053 name "-" version ".tar.xz"))
c5cc5006
LC
1054 (sha256
1055 (base32
13b0a85d 1056 "0mmzxp3wniaafkxr30sb22mq9x44xckb5d60h1bl99lkzxks0vfa"))))
c5cc5006 1057 (build-system gnu-build-system)
c4c4cc05 1058 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
1059 (propagated-inputs
1060 `(("cairo" ,cairo)
1061 ("cairomm" ,cairomm)
1062 ("glibmm" ,glibmm)
1063 ("pango" ,pango)))
1064 (home-page "http://www.pango.org/")
1065 (synopsis "C++ interface to the Pango text rendering library")
1066 (description
1067 "Pangomm provides a C++ programming interface to the Pango text rendering
1068library.")
1069 (license license:lgpl2.1+)))
1070
1071(define-public atkmm
1072 (package
1073 (name "atkmm")
3ec19e96 1074 (version "2.28.0")
c5cc5006
LC
1075 (source (origin
1076 (method url-fetch)
b38e45d8
EB
1077 (uri (string-append "mirror://gnome/sources/" name "/"
1078 (version-major+minor version) "/"
1079 name "-" version ".tar.xz"))
c5cc5006
LC
1080 (sha256
1081 (base32
3ec19e96 1082 "0fnxrspxkhhbrjphqrpvl3zjm66n50s4cywrrrwkhbflgy8zqk2c"))))
c5cc5006 1083 (build-system gnu-build-system)
c4c4cc05 1084 (native-inputs `(("pkg-config" ,pkg-config)))
c5cc5006
LC
1085 (propagated-inputs
1086 `(("glibmm" ,glibmm) ("atk" ,atk)))
8e933cb3 1087 (home-page "https://www.gtkmm.org")
c5cc5006
LC
1088 (synopsis "C++ interface to the ATK accessibility library")
1089 (description
1090 "ATKmm provides a C++ programming interface to the ATK accessibility
1091toolkit.")
1092 (license license:lgpl2.1+)))
1093
1094(define-public gtkmm
1095 (package
1096 (name "gtkmm")
b3cbae38 1097 (version "3.24.2")
c5cc5006
LC
1098 (source (origin
1099 (method url-fetch)
b38e45d8
EB
1100 (uri (string-append "mirror://gnome/sources/" name "/"
1101 (version-major+minor version) "/"
1102 name "-" version ".tar.xz"))
c5cc5006
LC
1103 (sha256
1104 (base32
b3cbae38 1105 "1hxdnhavjyvbcpxhd5z17l9fj4182028s66lc0s16qqqrldhjwbd"))))
c5cc5006 1106 (build-system gnu-build-system)
ff5c33fe 1107 (native-inputs `(("pkg-config" ,pkg-config)
ba470833 1108 ("glib" ,glib "bin") ;for 'glib-compile-resources'
60ecc10f 1109 ("xorg-server" ,xorg-server-for-tests)))
c5cc5006
LC
1110 (propagated-inputs
1111 `(("pangomm" ,pangomm)
1112 ("cairomm" ,cairomm)
1113 ("atkmm" ,atkmm)
1114 ("gtk+" ,gtk+)
1115 ("glibmm" ,glibmm)))
ba470833 1116 (arguments
c8f2050a 1117 `(#:disallowed-references (,xorg-server-for-tests)
29c7b4d6 1118 #:phases (modify-phases %standard-phases
ba470833
LC
1119 (add-before 'check 'run-xvfb
1120 (lambda* (#:key inputs #:allow-other-keys)
1121 (let ((xorg-server (assoc-ref inputs "xorg-server")))
1122 ;; Tests such as 'object_move/test' require a running
1123 ;; X server.
1124 (system (string-append xorg-server "/bin/Xvfb :1 &"))
1125 (setenv "DISPLAY" ":1")
1126 ;; Don't fail because of the missing /etc/machine-id.
1127 (setenv "DBUS_FATAL_WARNINGS" "0")
1128 #t))))))
8e933cb3 1129 (home-page "https://gtkmm.org/")
c5cc5006
LC
1130 (synopsis
1131 "C++ interface to the GTK+ graphical user interface library")
1132 (description
1133 "gtkmm is the official C++ interface for the popular GUI library GTK+.
1134Highlights include typesafe callbacks, and a comprehensive set of widgets that
1135are easily extensible via inheritance. You can create user interfaces either
1136in code or with the Glade User Interface designer, using libglademm. There's
1137extensive documentation, including API reference and a tutorial.")
1138 (license license:lgpl2.1+)))
9c086443
JD
1139
1140
1141(define-public gtkmm-2
1142 (package (inherit gtkmm)
b38e45d8 1143 (name "gtkmm")
124596f2 1144 (version "2.24.5")
9c086443
JD
1145 (source (origin
1146 (method url-fetch)
b38e45d8
EB
1147 (uri (string-append "mirror://gnome/sources/" name "/"
1148 (version-major+minor version) "/"
1149 name "-" version ".tar.xz"))
9c086443
JD
1150 (sha256
1151 (base32
124596f2 1152 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
c8f2050a 1153 (arguments '())
ff5c33fe 1154 (native-inputs `(("pkg-config" ,pkg-config)))
9c086443
JD
1155 (propagated-inputs
1156 `(("pangomm" ,pangomm)
1157 ("cairomm" ,cairomm)
1158 ("atkmm" ,atkmm)
1159 ("gtk+" ,gtk+-2)
1160 ("glibmm" ,glibmm)))))
fbcfa730 1161
e07a4489
MB
1162(define-public gtksourceviewmm
1163 (package
1164 (name "gtksourceviewmm")
1165 (version "3.18.0")
1166 (source (origin
1167 (method url-fetch)
1168 (uri (string-append "mirror://gnome/sources/" name "/"
1169 (version-major+minor version) "/"
1170 name "-" version ".tar.xz"))
1171 (sha256
1172 (base32 "0fgvmhm4h4qmxig87qvangs6ijw53mi40siz7pixlxbrsgiil22i"))))
1173 (build-system gnu-build-system)
1174 (native-inputs
1175 `(("pkg-config" ,pkg-config)))
1176 (propagated-inputs
1177 ;; In 'Requires' of gtksourceviewmm-3.0.pc.
1178 `(("glibmm" ,glibmm)
1179 ("gtkmm" ,gtkmm)
a3d1a348 1180 ("gtksourceview" ,gtksourceview-3)))
e07a4489
MB
1181 (synopsis "C++ interface to the GTK+ 'GtkTextView' widget")
1182 (description
1183 "gtksourceviewmm is a portable C++ library that extends the standard GTK+
1184framework for multiline text editing with support for configurable syntax
1185highlighting, unlimited undo/redo, search and replace, a completion framework,
1186printing and other features typical of a source code editor.")
1187 (license license:lgpl2.1+)
1188 (home-page "https://developer.gnome.org/gtksourceview/")))
1189
1190;;;
1191;;; Python bindings.
1192;;;
1193
fbcfa730
EB
1194(define-public python-pycairo
1195 (package
1196 (name "python-pycairo")
b49e1e81 1197 (version "1.17.1")
fbcfa730
EB
1198 (source
1199 (origin
1200 (method url-fetch)
6009cdb4
AI
1201 (uri (string-append "https://github.com/pygobject/pycairo/releases/download/v"
1202 version "/pycairo-" version ".tar.gz"))
fbcfa730
EB
1203 (sha256
1204 (base32
b49e1e81 1205 "165n0g7gp2a0qi8558snvfans17x83jv2lv7bx4vr1rxjbn3a2hg"))))
6009cdb4 1206 (build-system python-build-system)
fbcfa730 1207 (native-inputs
b837e658 1208 `(("pkg-config" ,pkg-config)
6009cdb4 1209 ("python-pytest" ,python-pytest)))
fbcfa730
EB
1210 (propagated-inputs ;pycairo.pc references cairo
1211 `(("cairo" ,cairo)))
6009cdb4 1212 (home-page "https://cairographics.org/pycairo/")
fbcfa730
EB
1213 (synopsis "Python bindings for cairo")
1214 (description
1215 "Pycairo is a set of Python bindings for the Cairo graphics library.")
7ec42f1d
LC
1216 (license license:lgpl3+)
1217 (properties `((python2-variant . ,(delay python2-pycairo))))))
fbcfa730 1218
7ca0dbc3 1219(define-public python2-pycairo
6009cdb4
AI
1220 (let ((pycairo (package-with-python2
1221 (strip-python2-variant python-pycairo))))
1222 (package
1223 (inherit pycairo)
1224 (propagated-inputs
1225 `(("python2-funcsigs" ,python2-funcsigs)
1226 ,@(package-propagated-inputs pycairo)))
1227 ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
1228 (license (list license:lgpl2.1 license:mpl1.1)))))
fbcfa730
EB
1229
1230(define-public python2-pygtk
1231 (package
1232 (name "python2-pygtk")
1233 (version "2.24.0")
1234 (source
1235 (origin
1236 (method url-fetch)
966a543b 1237 (uri (string-append "mirror://gnome/sources"
fbcfa730
EB
1238 "/pygtk/" (version-major+minor version)
1239 "/pygtk-" version ".tar.bz2"))
1240 (sha256
1241 (base32
1242 "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
1243 (build-system gnu-build-system)
594e7b47
LC
1244 (outputs '("out"
1245 "doc")) ;13 MiB of gtk-doc HTML
fbcfa730
EB
1246 (native-inputs
1247 `(("pkg-config" ,pkg-config)))
1248 (inputs
1249 `(("python" ,python-2)
6ab4712d 1250 ("libglade" ,libglade)
fbcfa730
EB
1251 ("glib" ,glib)))
1252 (propagated-inputs
7ca0dbc3 1253 `(("python-pycairo" ,python2-pycairo) ;loaded at runtime
fbcfa730
EB
1254 ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
1255 ("gtk+" ,gtk+-2)))
1256 (arguments
1257 `(#:tests? #f
ae115bc7 1258 #:phases (modify-phases %standard-phases
594e7b47
LC
1259 (add-before 'configure 'set-gtk-doc-directory
1260 (lambda* (#:key outputs #:allow-other-keys)
1261 ;; Install documentation to "doc".
1262 (let ((doc (assoc-ref outputs "doc")))
1263 (substitute* "docs/Makefile.in"
1264 (("TARGET_DIR = \\$\\(datadir\\)")
1265 (string-append "TARGET_DIR = " doc))))))
ae115bc7
LC
1266 (add-after 'configure 'fix-codegen
1267 (lambda* (#:key inputs #:allow-other-keys)
1268 (substitute* "pygtk-codegen-2.0"
1269 (("^prefix=.*$")
1270 (string-append
1271 "prefix="
1272 (assoc-ref inputs "python-pygobject") "\n")))))
1273 (add-after 'install 'install-pth
1274 (lambda* (#:key inputs outputs #:allow-other-keys)
1275 ;; pygtk's modules are stored in a subdirectory of
1276 ;; python's site-packages directory. Add a .pth file so
1277 ;; that python will add that subdirectory to its module
1278 ;; search path.
1279 (let* ((out (assoc-ref outputs "out"))
1280 (site (string-append out "/lib/python"
1281 ,(version-major+minor
1282 (package-version python-2))
1283 "/site-packages")))
1284 (call-with-output-file (string-append site "/pygtk.pth")
1285 (lambda (port)
1286 (format port "gtk-2.0~%")))))))))
fbcfa730
EB
1287 (home-page "http://www.pygtk.org/")
1288 (synopsis "Python bindings for GTK+")
1289 (description
1290 "PyGTK allows you to write full featured GTK programs in Python. It is
d1e4ad1b 1291targeted at GTK 2.x, and can be used in conjunction with gnome-python to
fbcfa730
EB
1292write GNOME applications.")
1293 (license license:lgpl2.1+)))
136770c9 1294
4e028d7a
AV
1295(define-public perl-cairo
1296 (package
1297 (name "perl-cairo")
2767beb3 1298 (version "1.107")
4e028d7a
AV
1299 (source (origin
1300 (method url-fetch)
1301 (uri (string-append
1302 "mirror://cpan/authors/id/X/XA/XAOC/Cairo-"
1303 version ".tar.gz"))
1304 (sha256
1305 (base32
2767beb3 1306 "0sg1gf1f2pjq7pji0zsv4rbi3bzpsx82z98k7yqxafzrvlkf27ay"))))
4e028d7a
AV
1307 (build-system perl-build-system)
1308 (native-inputs
1309 `(("perl-extutils-depends" ,perl-extutils-depends)
1310 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1311 (inputs
1312 `(("cairo" ,cairo)))
9aba9b12 1313 (home-page "https://metacpan.org/release/Cairo")
4e028d7a
AV
1314 (synopsis "Perl interface to the cairo 2d vector graphics library")
1315 (description "Cairo provides Perl bindings for the vector graphics library
1316cairo. It supports multiple output targets, including PNG, PDF and SVG. Cairo
1317produces identical output on all those targets.")
1318 (license license:lgpl2.1+)))
1319
b5bbcda3
AV
1320(define-public perl-gtk2
1321 (package
1322 (name "perl-gtk2")
8524b1b8 1323 (version "1.24993")
b5bbcda3
AV
1324 (source (origin
1325 (method url-fetch)
1326 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Gtk2-"
1327 version ".tar.gz"))
1328 (sha256
1329 (base32
8524b1b8 1330 "0ry9jfvfgdwzalxcvwsgr7plhk3agx7p40l0fqdf3vrf7ds47i29"))))
b5bbcda3
AV
1331 (build-system perl-build-system)
1332 (native-inputs
1333 `(("perl-extutils-depends" ,perl-extutils-depends)
1334 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1335 (inputs
1336 `(("gtk+" ,gtk+-2)))
1337 (propagated-inputs
1338 `(("perl-pango" ,perl-pango)))
9aba9b12 1339 (home-page "https://metacpan.org/release/Gtk2")
b5bbcda3
AV
1340 (synopsis "Perl interface to the 2.x series of the Gimp Toolkit library")
1341 (description "Perl bindings to the 2.x series of the Gtk+ widget set.
1342This module allows you to write graphical user interfaces in a Perlish and
1343object-oriented way, freeing you from the casting and memory management in C,
1344yet remaining very close in spirit to original API.")
1345 (license license:lgpl2.1+)))
1346
ee6911c7
AV
1347(define-public perl-pango
1348 (package
1349 (name "perl-pango")
1350 (version "1.227")
1351 (source (origin
1352 (method url-fetch)
1353 (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/Pango-"
1354 version ".tar.gz"))
1355 (sha256
1356 (base32
1357 "0wdcidnfnb6nm79fzfs39ivawj3x8m98a147fmcxgv1zvwia9c1l"))))
1358 (build-system perl-build-system)
1359 (native-inputs
1360 `(("perl-extutils-depends" ,perl-extutils-depends)
1361 ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)))
1362 (inputs
1363 `(("pango" ,pango)))
1364 (propagated-inputs
1365 `(("perl-cairo" ,perl-cairo)
1366 ("perl-glib" ,perl-glib)))
9aba9b12 1367 (home-page "https://metacpan.org/release/Pango")
ee6911c7
AV
1368 (synopsis "Layout and render international text")
1369 (description "Pango is a library for laying out and rendering text, with an
1370emphasis on internationalization. Pango can be used anywhere that text layout
1371is needed, but using Pango in conjunction with Cairo and/or Gtk2 provides a
1372complete solution with high quality text handling and graphics rendering.
1373
1374Dynamically loaded modules handle text layout for particular combinations of
1375script and font backend. Pango provides a wide selection of modules, including
1376modules for Hebrew, Arabic, Hangul, Thai, and a number of Indic scripts.
1377Virtually all of the world's major scripts are supported.
1378
1379In addition to the low level layout rendering routines, Pango includes
1380@code{Pango::Layout}, a high level driver for laying out entire blocks of text,
1381and routines to assist in editing internationalized text.")
1382 (license license:lgpl2.1+)))
1383
136770c9
PW
1384(define-public girara
1385 (package
1386 (name "girara")
e59a9cf7 1387 (version "0.3.2")
136770c9
PW
1388 (source (origin
1389 (method url-fetch)
1390 (uri
1391 (string-append "https://pwmt.org/projects/girara/download/girara-"
bba29e10 1392 version ".tar.xz"))
136770c9
PW
1393 (sha256
1394 (base32
e59a9cf7 1395 "1kc6n1mxjxa7wvwnqy94qfg8l9jvx9qrvrr2kc7m4g0z20x3a00p"))))
136770c9 1396 (native-inputs `(("pkg-config" ,pkg-config)
b82d5b09 1397 ("check" ,check)
bf38d5be 1398 ("gettext" ,gettext-minimal)
7d24c26e 1399 ("glib:bin" ,glib "bin")
60ecc10f 1400 ("xorg-server" ,xorg-server-for-tests)))
b82d5b09
MB
1401 ;; Listed in 'Requires.private' of 'girara.pc'.
1402 (propagated-inputs `(("gtk+" ,gtk+)))
136770c9 1403 (arguments
bba29e10 1404 `(#:phases (modify-phases %standard-phases
7d24c26e
MB
1405 (add-before 'check 'start-xserver
1406 ;; Tests require a running X server.
1407 (lambda* (#:key inputs #:allow-other-keys)
1408 (let ((xorg-server (assoc-ref inputs "xorg-server"))
1409 (display ":1"))
1410 (setenv "DISPLAY" display)
3e6b398a
MB
1411
1412 ;; On busy machines, tests may take longer than
1413 ;; the default of four seconds.
1414 (setenv "CK_DEFAULT_TIMEOUT" "20")
1415
7d24c26e
MB
1416 ;; Don't fail due to missing '/etc/machine-id'.
1417 (setenv "DBUS_FATAL_WARNINGS" "0")
1418 (zero? (system (string-append xorg-server "/bin/Xvfb "
1419 display " &")))))))))
bba29e10 1420 (build-system meson-build-system)
136770c9
PW
1421 (home-page "https://pwmt.org/projects/girara/")
1422 (synopsis "Library for minimalistic gtk+3 user interfaces")
1423 (description "Girara is a library that implements a user interface that
1424focuses on simplicity and minimalism. Currently based on GTK+, a
1425cross-platform widget toolkit, it provides an interface that focuses on three
1426main components: a so-called view widget that represents the actual
1427application, an input bar that is used to execute commands of the
1428application and the status bar which provides the user with current
1429information.")
1430 (license license:zlib)))
3bc45449
AW
1431
1432(define-public gtk-doc
1433 (package
1434 (name "gtk-doc")
7a1bb44a 1435 (version "1.28")
3bc45449
AW
1436 (source (origin
1437 (method url-fetch)
1438 (uri (string-append "mirror://gnome/sources/" name "/"
1439 (version-major+minor version) "/"
1440 name "-" version ".tar.xz"))
1441 (sha256
1442 (base32
7a1bb44a 1443 "05apmwibkmn1icx05l8aw241lhymcx01zvk5i499cb150bijj7li"))))
3bc45449
AW
1444 (build-system gnu-build-system)
1445 (arguments
6ad08117
AE
1446 `(#:parallel-tests? #f
1447 #:phases
b4787e71 1448 (modify-phases %standard-phases
36ba88da
DM
1449 (add-after 'unpack 'patch-gtk-doc-scan
1450 (lambda* (#:key inputs #:allow-other-keys)
1451 (substitute* "gtk-doc.xsl"
1452 (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
1453 (string-append (assoc-ref inputs "docbook-xsl")
1454 "/xml/xsl/docbook-xsl-"
1455 ,(package-version docbook-xsl)
50ee7e93
PN
1456 "/html/chunk.xsl"))
1457 (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml")
1458 (string-append (assoc-ref inputs "docbook-xsl")
1459 "/xml/xsl/docbook-xsl-"
1460 ,(package-version docbook-xsl)
1461 "/common/en.xml")))
36ba88da
DM
1462 #t))
1463 (add-after 'patch-gtk-doc-scan 'patch-test-out
1464 (lambda _
1465 ;; sanity.sh counts the number of status lines. Since our
1466 ;; texlive regenerates the fonts every time and the font
1467 ;; generator metafont outputs a lot of extra lines, this
1468 ;; test would always fail. Disable it for now.
1469 (substitute* "tests/Makefile.in"
1470 (("empty.sh sanity.sh") "empty.sh"))
1471 #t))
a20608a5
RW
1472 (add-before 'build 'set-HOME
1473 (lambda _
1474 ;; FIXME: dblatex with texlive-union does not find the built
1475 ;; metafonts, so it tries to generate them in HOME.
1476 (setenv "HOME" "/tmp")
1477 #t))
1478 (add-before 'configure 'fix-docbook
b4787e71
AW
1479 (lambda* (#:key inputs #:allow-other-keys)
1480 (substitute* "configure"
1481 ;; The configure check is overzealous about making sure that
1482 ;; things are in place -- it uses the xmlcatalog tool to make
1483 ;; sure that docbook-xsl is available, but this tool can only
1484 ;; look in one catalog file, unlike the $XML_CATALOG_FILES
1485 ;; variable that Guix defines. Fool the test by using the
1486 ;; docbook-xsl catalog explicitly and get on with life.
1487 (("\"\\$XML_CATALOG_FILE\" \
1488\"http://docbook.sourceforge.net/release/xsl/")
4ed737b2
MW
1489 (string-append (car (find-files (assoc-ref inputs "docbook-xsl")
1490 "^catalog.xml$"))
1491 " \"http://docbook.sourceforge.net/release/xsl/")))
d86a7c64
RW
1492 #t))
1493 (add-after 'install 'wrap-executables
1494 (lambda* (#:key outputs #:allow-other-keys)
1495 (let ((out (assoc-ref outputs "out")))
1496 (for-each (lambda (prog)
1497 (wrap-program prog
1498 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))))
1499 (find-files (string-append out "/bin")))
1500 #t))))
b4787e71 1501 #:configure-flags
3bc45449
AW
1502 (list (string-append "--with-xml-catalog="
1503 (assoc-ref %build-inputs "docbook-xml")
1504 "/xml/dtd/docbook/catalog.xml"))))
1505 (native-inputs
1506 `(("pkg-config" ,pkg-config)
1507 ("itstool" ,itstool)
1508 ("libxml" ,libxml2)
b94a6ca0 1509 ("gettext" ,gettext-minimal)
3bc45449
AW
1510 ("bc" ,bc)))
1511 (inputs
1512 `(("perl" ,perl)
1513 ("python" ,python)
1514 ("xsltproc" ,libxslt)
1515 ("dblatex" ,dblatex)
1516 ("docbook-xml" ,docbook-xml-4.3)
1517 ("docbook-xsl" ,docbook-xsl)
1518 ("source-highlight" ,source-highlight)
9c708566
DM
1519 ("glib" ,glib)
1520 ("python-six" ,python-six)))
24d6cc1d 1521 (home-page "https://www.gtk.org/gtk-doc/")
3bc45449
AW
1522 (synopsis "Documentation generator from C source code")
1523 (description
a124bbd2 1524 "GTK-Doc generates API documentation from comments added to C code. It is
3bc45449
AW
1525typically used to document the public API of GTK+ and GNOME libraries, but it
1526can also be used to document application code.")
1527 (license license:gpl2+)))
9ba5198c
FH
1528
1529(define-public gtk-engines
1530 (package
1531 (name "gtk-engines")
1532 (version "2.20.2")
1533 (source (origin
1534 (method url-fetch)
1535 (uri (string-append "mirror://gnome/sources/" name "/"
1536 (version-major+minor version) "/"
1537 name "-" version ".tar.bz2"))
1538 (sha256
1539 (base32
1540 "1db65pb0j0mijmswrvpgkdabilqd23x22d95hp5kwxvcramq1dhm"))))
1541 (build-system gnu-build-system)
1542 (arguments
1543 `(#:configure-flags
1544 `("--enable-animation")))
1545 (native-inputs
1546 `(("pkg-config" ,pkg-config)
1547 ("intltool" ,intltool)))
9fff9e64
SB
1548 (inputs
1549 ;; Don't propagate GTK+ to reduce "profile pollution".
9ba5198c 1550 `(("gtk+" ,gtk+-2))) ; required by gtk-engines-2.pc
f032d0be 1551 (home-page "https://live.gnome.org/GnomeArt")
9ba5198c
FH
1552 (synopsis "Theming engines for GTK+ 2.x")
1553 (description
1554 "This package contains the standard GTK+ 2.x theming engines including
1555Clearlooks, Crux, High Contrast, Industrial, LighthouseBlue, Metal, Mist,
1556Redmond95 and ThinIce.")
1557 (license (list license:gpl2+ license:lgpl2.1+))))
b7807bb2
FH
1558
1559(define-public murrine
1560 (package
1561 (name "murrine")
1562 (version "0.98.2")
1563 (source (origin
1564 (method url-fetch)
1565 (uri (string-append "mirror://gnome/sources/" name "/"
1566 (version-major+minor version) "/"
1567 name "-" version ".tar.xz"))
1568 (sha256
1569 (base32
1570 "129cs5bqw23i76h3nmc29c9mqkm9460iwc8vkl7hs4xr07h8mip9"))))
1571 (build-system gnu-build-system)
1572 (arguments
1573 `(#:configure-flags
1574 `("--enable-animation"
1575 "--enable-animationrtl")))
1576 (native-inputs
1577 `(("pkg-config" ,pkg-config)
1578 ("intltool" ,intltool)))
1579 (propagated-inputs
1580 `(("gtk+" ,gtk+-2)))
f032d0be 1581 (home-page "https://live.gnome.org/GnomeArt")
b7807bb2
FH
1582 (synopsis "Cairo-based theming engine for GTK+ 2.x")
1583 (description
1584 "Murrine is a cairo-based GTK+ theming engine. It is named after the
1585glass artworks done by Venicians glass blowers.")
1586 (license license:gpl2+)))
9c0c77f8
KY
1587
1588(define-public gtkspell3
1589 (package
1590 (name "gtkspell3")
3be65cde 1591 (version "3.0.9")
9c0c77f8
KY
1592 (source (origin
1593 (method url-fetch)
1594 (uri (string-append "mirror://sourceforge/gtkspell/"
3be65cde 1595 version "/" name "-" version ".tar.xz"))
9c0c77f8
KY
1596 (sha256
1597 (base32
3be65cde 1598 "09jdicmpipmj4v84gnkqwbmj4lh8v0i6pn967rb9jx4zg2ia9x54"))))
9c0c77f8
KY
1599 (build-system gnu-build-system)
1600 (native-inputs
1601 `(("intltool" ,intltool)
4ad7e7e6
GL
1602 ("pkg-config" ,pkg-config)
1603 ("vala" ,vala)))
9c0c77f8 1604 (inputs
c1d59b3c 1605 `(("gobject-introspection" ,gobject-introspection)
9c0c77f8
KY
1606 ("gtk+" ,gtk+)
1607 ("pango" ,pango)))
cd49e478 1608 (propagated-inputs
c1d59b3c 1609 `(("enchant" ,enchant-1.6))) ;gtkspell3-3.0.pc refers to it
9c0c77f8
KY
1610 (home-page "http://gtkspell.sourceforge.net")
1611 (synopsis "Spell-checking addon for GTK's TextView widget")
1612 (description
1613 "GtkSpell provides word-processor-style highlighting and replacement of
1614misspelled words in a GtkTextView widget.")
1615 (license license:gpl2+)))
37355498 1616
1617(define-public clipit
1618 (package
1619 (name "clipit")
85355683
TGR
1620 (version "1.4.4")
1621 (source
1622 (origin
1623 (method git-fetch)
1624 (uri (git-reference
1625 (url "https://github.com/CristianHenzel/ClipIt.git")
1626 (commit (string-append "v" version))))
1627 (file-name (git-file-name name version))
1628 (sha256
1629 (base32 "05xi29v2y0rvb33fmvrz7r9j4l858qj7ngwd7dp4pzpkkaybjln0"))))
37355498 1630 (build-system gnu-build-system)
1631 (native-inputs
85355683
TGR
1632 `(("autoconf" ,autoconf)
1633 ("automake" ,automake)
1634 ("intltool" ,intltool)
37355498 1635 ("pkg-config" ,pkg-config)))
1636 (inputs
1637 `(("gtk+" ,gtk+-2)))
1638 (home-page "https://github.com/CristianHenzel/ClipIt")
1639 (synopsis "Lightweight GTK+ clipboard manager")
1640 (description
1641 "ClipIt is a clipboard manager with features such as a history, search
1642thereof, global hotkeys and clipboard item actions. It was forked from
1643Parcellite and adds bugfixes and features.")
1644 (license license:gpl2+)))
61af2675
RJ
1645
1646(define-public graphene
1647 (package
1648 (name "graphene")
1649 (version "1.6.0")
1650 (source (origin
1651 (method url-fetch)
1652 (uri (string-append
1653 "https://github.com/ebassi/graphene/archive/"
1654 version ".tar.gz"))
1655 (file-name (string-append name "-" version ".tar.gz"))
1656 (sha256
1657 (base32 "1zd2daj7y590wnzn4jw0niyc4fnzgxrcl9i7nwhy8b25ks2hz5wq"))))
1658 (build-system gnu-build-system)
1659 (arguments
64a1ddba 1660 `(#:configure-flags '("--enable-introspection=yes")))
61af2675
RJ
1661 (native-inputs
1662 `(("autoconf" ,autoconf)
1663 ("which" ,which)
1664 ("pkg-config" ,pkg-config)
1665 ("automake" ,automake)
1666 ("libtool" ,libtool)))
1667 (inputs
1668 `(("python" ,python)
1669 ("python-2" ,python-2)
1670 ("glib" ,glib)
1671 ("gobject-introspection" ,gobject-introspection)))
1672 (home-page "http://ebassi.github.io/graphene")
1673 (synopsis "Thin layer of graphic data types")
1674 (description "This library provides graphic types and their relative API;
1675it does not deal with windowing system surfaces, drawing, scene graphs, or
1676input.")
1677 (license license:expat)))
57d70dba 1678
e2f36385
KK
1679(define-public spread-sheet-widget
1680 (package
1681 (name "spread-sheet-widget")
1682 (version "0.3")
1683 (source
1684 (origin
1685 (method url-fetch)
1686 (uri (string-append "https://alpha.gnu.org/gnu/ssw/"
22e68554 1687 "spread-sheet-widget-" version ".tar.gz"))
e2f36385
KK
1688 (sha256
1689 (base32 "1h93yyh2by6yrmkwqg38nd5knids05k5nqzcihc1hdwgzg3c4b8y"))))
1690 (build-system gnu-build-system)
1691 (native-inputs
22e68554 1692 `(("glib" ,glib "bin") ; for glib-genmarshal, etc.
e2f36385
KK
1693 ("pkg-config" ,pkg-config)))
1694 ;; In 'Requires' of spread-sheet-widget.pc.
1695 (propagated-inputs
1696 `(("glib" ,glib)
1697 ("gtk+" ,gtk+)))
1698 (home-page "https://www.gnu.org/software/ssw/")
1699 (synopsis "Gtk+ widget for dealing with 2-D tabular data")
1700 (description
1701 "GNU Spread Sheet Widget is a library for Gtk+ which provides a widget for
1702viewing and manipulating 2 dimensional tabular data in a manner similar to many
1703popular spread sheet programs.")
1704 (license license:gpl3+)))
1705
2ea3bfe7
TGR
1706(define-public volumeicon
1707 (package
1708 (name "volumeicon")
1709 (version "0.5.1")
1710 (source
1711 (origin
1712 (method url-fetch)
1713 (uri (string-append "http://nullwise.com/files/volumeicon/volumeicon-"
1714 version ".tar.gz"))
1715 (sha256
1716 (base32 "182xl2w8syv6ky2h2bc9imc6ap8pzh0p7rp63hh8nw0xm38c3f14"))))
1717 (build-system gnu-build-system)
1718 (arguments
1719 `(#:configure-flags
1720 (list "--enable-notify"))) ; optional libnotify support
1721 (native-inputs
1722 `(("intltool" ,intltool)
1723 ("pkg-config" ,pkg-config)))
1724 (inputs
1725 `(("alsa-lib" ,alsa-lib)
1726 ("gtk+" ,gtk+)
1727 ("libnotify" ,libnotify)))
1728 (home-page "http://nullwise.com/volumeicon.html")
1729 (synopsis "System tray volume applet")
1730 (description
1731 "Volume Icon is a volume indicator and control applet for @acronym{the
1732Advanced Linux Sound Architecture, ALSA}. It sits in the system tray,
1733independent of your desktop environment, and supports global key bindings.")
1734 (license (list license:expat ; src/{bind.c,keybinder.h}
1735 license:isc ; src/alsa_volume_mapping.c
1736 license:gpl3)))) ; the rest & combined work
1737
57d70dba
MIP
1738(define-public yad
1739 (package
1740 (name "yad")
2223cbde 1741 (version "5.0")
57d70dba
MIP
1742 (source
1743 (origin
1744 (method git-fetch)
1745 (uri (git-reference
1746 (url "https://github.com/v1cont/yad.git")
1747 (commit (string-append "v" version))))
1748 (file-name (git-file-name name version))
1749 (sha256
2223cbde
TGR
1750 (base32 "07rd61hvilsxxrj7lf8c9k0a8glj07s48m7ya8d45030r90g3lvc"))))
1751 (build-system glib-or-gtk-build-system)
57d70dba
MIP
1752 (arguments
1753 `(#:configure-flags
2223cbde
TGR
1754 ;; Passing --enable-foo will silently disable foo if prerequisite
1755 ;; inputs are missing, not abort the build as one might expect.
1756 ;; ‘--enable-html’ adds a huge webkitgtk dependency. It was never
1757 ;; present in the past and nobody complained.
1758 '("--enable-icon-browser"
1759 "--enable-spell") ; gspell checking support
57d70dba
MIP
1760 #:phases
1761 (modify-phases %standard-phases
2223cbde 1762 (add-after 'bootstrap 'intltoolize
57d70dba 1763 (lambda _
2223cbde 1764 (invoke "intltoolize" "--force" "--automake"))))))
57d70dba 1765 (inputs
2223cbde
TGR
1766 `(("gspell" ,gspell)
1767 ("gtk+" ,gtk+)))
57d70dba
MIP
1768 (native-inputs
1769 `(("autoconf" ,autoconf)
1770 ("automake" ,automake)
1771 ("intltool" ,intltool)
1772 ("pkg-config" ,pkg-config)))
1773 (home-page "https://sourceforge.net/projects/yad-dialog/")
1774 (synopsis "GTK+ dialog boxes for shell scripts")
1775 (description
1776 "This program allows you to display GTK+ dialog boxes from command line or
1777shell scripts. Example of how to use @code{yad} can be consulted at
1778@url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.")
1779 (license license:gpl3+)))
a32ecb50
MP
1780
1781(define-public libdbusmenu
1782 (package
1783 (name "libdbusmenu")
1784 (version "16.04.0")
1785 (source
1786 (origin
1787 (method url-fetch)
1788 (uri (string-append "https://launchpad.net/libdbusmenu/"
1789 (version-major+minor version) "/" version
1790 "/+download/libdbusmenu-" version ".tar.gz"))
1791 (sha256
1792 (base32 "12l7z8dhl917iy9h02sxmpclnhkdjryn08r8i4sr8l3lrlm4mk5r"))))
1793 (build-system gnu-build-system)
1794 (arguments
1795 `(#:configure-flags
1796 '("--sysconfdir=/etc"
1797 "--localstatedir=/var"
1798 ;; The shebang of the generated test files should be patched before
1799 ;; enabling tests.
1800 "--disable-tests")
1801 #:make-flags
1802 `(,(string-append "typelibdir=" (assoc-ref %outputs "out")
1803 "/lib/girepository-1.0"))
1804 #:phases
1805 (modify-phases %standard-phases
1806 (add-before 'configure 'set-environment
1807 (lambda _
1808 (setenv "HAVE_VALGRIND_TRUE" "")
1809 (setenv "HAVE_VALGRIND_FALSE" "#")
1810 #t)))))
1811 (inputs
1812 `(("glib" ,glib)
1813 ("gtk+" ,gtk+)
1814 ("gtk+-2" ,gtk+-2)))
1815 (native-inputs
1816 `(("glib:bin" ,glib "bin")
1817 ("gnome-doc-utils" ,gnome-doc-utils)
1818 ("gobject-introspection" ,gobject-introspection)
1819 ("intltool" ,intltool)
1820 ("json-glib" ,json-glib)
1821 ("pkg-config" ,pkg-config)
1822 ("python" ,python-2)
1823 ("vala" ,vala)))
1824 (home-page "https://launchpad.net/libdbusmenu")
1825 (synopsis "Library for passing menus over DBus")
1826 (description "@code{libdbusmenu} passes a menu structure across DBus so
1827that a program can create a menu simply without worrying about how it is
1828displayed on the other side of the bus.")
0dc8c908
LC
1829
1830 ;; Dual-licensed under either LGPLv2.1 or LGPLv3.
1831 (license (list license:lgpl2.1 license:lgpl3))))