diff options
Diffstat (limited to 'gnu/packages/gtk.scm')
-rw-r--r-- | gnu/packages/gtk.scm | 1441 |
1 files changed, 854 insertions, 587 deletions
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index d92b9aa3e4..5e9c9feabe 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -24,7 +24,7 @@ ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> -;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Leo Famulari <leo@famulari.name> ;;; Copyright © 2021 Simon Streit <simon@netpanic.org> ;;; @@ -45,6 +45,7 @@ (define-module (gnu packages gtk) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix packages) #:use-module (guix download) @@ -60,6 +61,8 @@ #:use-module (gnu packages algebra) #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages boost) + #:use-module (gnu packages build-tools) #:use-module (gnu packages texinfo) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -74,10 +77,14 @@ #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) + #:use-module (gnu packages graphviz) #:use-module (gnu packages icu4c) #:use-module (gnu packages image) + #:use-module (gnu packages iso-codes) #:use-module (gnu packages libffi) #:use-module (gnu packages linux) + #:use-module (gnu packages m4) + #:use-module (gnu packages man) #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) @@ -89,6 +96,7 @@ #:use-module (gnu packages guile-xyz) #:use-module (gnu packages cups) #:use-module (gnu packages version-control) + #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) @@ -99,86 +107,103 @@ (define-public atk (package - (name "atk") - (version "2.34.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1jwp16r6p5z66k4b2v8zlzhyshhwlmyi27ippkrgqr8jsary7w6l")))) - (build-system meson-build-system) - (propagated-inputs `(("glib" ,glib))) ; required by atk.pc - (native-inputs - `(("pkg-config" ,pkg-config) - ("gettext" ,gettext-minimal) - ("glib" ,glib "bin") ; glib-mkenums, etc. - ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc. - (synopsis "GNOME accessibility toolkit") - (description - "ATK provides the set of accessibility interfaces that are implemented + (name "atk") + (version "2.36.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1217cmmykjgkkim0zr1lv5j13733m4w5vipmy4ivw0ll6rz28xpv")))) + (build-system meson-build-system) + (arguments + `(#:glib-or-gtk? #t)) ; To wrap binaries and/or compile schemas + (propagated-inputs `(("glib" ,glib))) ; required by atk.pc + (native-inputs + `(("gettext" ,gettext-minimal) + ("glib" ,glib "bin") ; glib-mkenums, etc. + ("gobject-introspection" ,gobject-introspection) ; g-ir-compiler, etc. + ("pkg-config" ,pkg-config))) + (synopsis "GNOME accessibility toolkit") + (description + "ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and control running applications.") - (license license:lgpl2.0+) - (home-page "https://developer.gnome.org/atk/"))) + (license license:lgpl2.1+) + (home-page "https://wiki.gnome.org/Accessibility"))) (define-public cairo (package - (name "cairo") - (version "1.16.0") - (source (origin - (method url-fetch) - (uri (string-append "https://cairographics.org/releases/cairo-" - version ".tar.xz")) - (patches (search-patches "cairo-CVE-2018-19876.patch" - "cairo-CVE-2020-35492.patch")) - (sha256 - (base32 - "0c930mk5xr2bshbdljv005j3j8zr47gqmkry3q6qgvqky6rjjysy")))) - (build-system gnu-build-system) - (propagated-inputs - `(("fontconfig" ,fontconfig) - ("freetype" ,freetype) - ("glib" ,glib) - ("libpng" ,libpng) - ("libx11" ,libx11) - ("libxext" ,libxext) - ("libxrender" ,libxrender) - ("pixman" ,pixman))) - (inputs - `(("ghostscript" ,ghostscript) - ("libspectre" ,libspectre) - ("poppler" ,poppler) - ("xorgproto" ,xorgproto) - ("zlib" ,zlib))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("python" ,python-wrapper))) + (name "cairo") + (version "1.16.0") + (source + (origin + (method url-fetch) + (uri + (string-append "https://cairographics.org/releases/cairo-" + version ".tar.xz")) + (sha256 + (base32 "0c930mk5xr2bshbdljv005j3j8zr47gqmkry3q6qgvqky6rjjysy")) + (patches (search-patches + "cairo-CVE-2018-19876.patch" + "cairo-CVE-2020-35492.patch")))) + (build-system glib-or-gtk-build-system) + (outputs '("out" "doc")) (arguments - `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html - #:configure-flags '("--enable-tee" ;needed for GNU Icecat - "--enable-xml" ;for cairo-xml support - "--disable-static"))) - (synopsis "2D graphics library") - (description - "Cairo is a 2D graphics library with support for multiple output devices. -Currently supported output targets include the X Window System (via both -Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file -output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB. - -Cairo is designed to produce consistent output on all output media while -taking advantage of display hardware acceleration when available -eg. through the X Render Extension). - -The cairo API provides operations similar to the drawing operators of -PostScript and PDF. Operations in cairo including stroking and filling cubic -Bézier splines, transforming and compositing translucent images, and -antialiased text rendering. All drawing operations can be transformed by any -affine transformation (scale, rotation, shear, etc.).") - (license license:lgpl2.1) ; or Mozilla Public License 1.1 - (home-page "https://cairographics.org/"))) + `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html + #:configure-flags + (list + "--disable-static" + ;; XXX: To be enabled. + ;; "--enable-gallium=yes" + ;; "--enable-gl=yes" + ;; " --enable-glesv2=yes" + ;; "--enable-glesv3=yes" + ;; "--enable-cogl=yes" + ;; "--enable-directfb=yes" + ;; "--enable-vg=yes" + "--enable-tee=yes" ;needed for GNU IceCat + "--enable-xml=yes" ;for cairo-xml support + (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")))) + (native-inputs + `(("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (inputs + `(("drm" ,libdrm) + ("ghostscript" ,ghostscript) + ("libspectre" ,libspectre) + ("poppler" ,poppler))) + (propagated-inputs + `( ;; ("cogl" ,cogl) + ;; ("directfb" ,directfb) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("glib" ,glib) + ;; ("gtk+" ,gtk+) + ("libpng" ,libpng) + ;; ("librsvg" ,librsvg) + ;; ("opengl" ,mesa) + ("pixman" ,pixman) + ("x11" ,libx11) + ("xcb" ,libxcb) + ("xext" ,libxext) + ("xrender" ,libxrender))) + (synopsis "Multi-platform 2D graphics library") + (description "Cairo is a 2D graphics library with support for multiple output +devices. Currently supported output targets include the X Window System (via +both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file +output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.") + (home-page "https://cairographics.org/") + (license + ;; This project is dual-licensed. + (list + license:lgpl2.1+ + license:mpl1.1)))) (define-public cairo-sans-poppler ;; Variant used to break the dependency cycle between Poppler and Cairo. @@ -201,15 +226,15 @@ affine transformation (scale, rotation, shear, etc.).") (define-public harfbuzz (package (name "harfbuzz") - (version "2.6.4") + (version "2.8.1") (source (origin (method url-fetch) - (uri (string-append "https://www.freedesktop.org/software/" - "harfbuzz/release/harfbuzz-" + (uri (string-append "https://github.com/harfbuzz/harfbuzz" + "/releases/download/" version "/harfbuzz-" version ".tar.xz")) (sha256 (base32 - "04iwq13w6zkdhljmsxrzgg4fyh04qnwfn57rgrl9kmijc7cvh4wl")))) + "000ki4nwi3vfy3qflkgkiyj4jhhb6xl0c8ygv6af5x2bxiizc921")))) (build-system gnu-build-system) (outputs '("out" "bin")) ; 160K, only hb-view depend on cairo @@ -253,11 +278,13 @@ affine transformation (scale, rotation, shear, etc.).") (build-system gnu-build-system) (outputs '("out" "doc")) (arguments - `(#:configure-flags - (list - (string-append "--with-html-docdir=" - (assoc-ref %outputs "doc") - "/share/doc/datrie/html")))) + (list #:configure-flags + #~(list (string-append "--with-html-docdir=" #$output:doc + "/share/doc/datrie/html")) + + ;; Several tests refer to the 'test.tri' file, leading to race + ;; conditions when running tests in parallel. + #:parallel-tests? #f)) (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) @@ -301,54 +328,61 @@ applications.") (define-public pango (package - (name "pango") - (version "1.44.7") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/pango/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (patches (search-patches "pango-skip-libthai-test.patch")) - (sha256 - (base32 - "07qvxa2sk90chp1l12han6vxvy098mc37sdqcznyywyv2g6bd9b6")))) - (build-system meson-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'disable-cantarell-tests - (lambda _ - (substitute* "tests/meson.build" - ;; XXX FIXME: These tests require "font-cantarell", but - ;; adding it here would introduce a circular dependency. - (("\\[ 'test-harfbuzz'.*") "") - (("\\[ 'test-itemize'.*") "") - (("\\[ 'test-layout'.*") "")) - #t))))) - (propagated-inputs - ;; These are all in Requires or Requires.private of the '.pc' files. - `(("cairo" ,cairo) - ("fribidi" ,fribidi) - ("fontconfig" ,fontconfig) - ("freetype" ,freetype) - ("glib" ,glib) - ("harfbuzz" ,harfbuzz) - - ;; Some packages, such as Openbox, expect Pango to be built with the - ;; optional libxft support. - ("libxft" ,libxft))) - (inputs - `(("zlib" ,zlib))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("glib" ,glib "bin") ; glib-mkenums, etc. - ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc. - (synopsis "GNOME text and font handling library") - (description - "Pango is the core text and font handling library used in GNOME -applications. It has extensive support for the different writing systems -used throughout the world.") - (license license:lgpl2.0+) - (home-page "https://developer.gnome.org/pango/"))) + (name "pango") + (version "1.48.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/pango/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (patches (search-patches "pango-skip-libthai-test.patch")) + (sha256 + (base32 + "0ym3cvajy2asapj8xbhfpy05rak79afrhi32hiss0w900vxi72a1")))) + (build-system meson-build-system) + (arguments + '(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas + #:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-cantarell-tests + (lambda _ + (substitute* "tests/meson.build" + ;; XXX FIXME: These tests require "font-cantarell", but + ;; adding it here would introduce a circular dependency. + (("\\[ 'test-layout'.*") "") + (("\\[ 'test-itemize'.*") "") + (("\\[ 'test-font'.*") "") + (("\\[ 'test-harfbuzz'.*") "")) + #t))))) + (propagated-inputs + ;; These are all in Requires or Requires.private of the '.pc' files. + `(("cairo" ,cairo) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("fribidi" ,fribidi) + ("glib" ,glib) + ("harfbuzz" ,harfbuzz) + ("libthai" ,libthai) + ;; Some packages, such as Openbox, expect Pango to be built with the + ;; optional libxft support. + ("libxft" ,libxft) + ("libxrender" ,libxrender))) + (inputs + `(("zlib" ,zlib))) + (native-inputs + `(("glib" ,glib "bin") ; glib-mkenums, etc. + ("gobject-introspection" ,gobject-introspection) ; g-ir-compiler, etc. + ("help2man" ,help2man) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (synopsis "Text and font handling library") + (description "Pango is a library for laying out and rendering of text, with +an emphasis on internationalization. Pango can be used anywhere that text +layout is needed, though most of the work on Pango so far has been done in the +context of the GTK+ widget toolkit. Pango forms the core of text and font +handling for GTK+-2.x.") + (home-page "https://pango.gnome.org/") + (license license:lgpl2.0+))) (define-public pango-1.42 (package @@ -560,64 +594,74 @@ highlighting and other features typical of a source code editor.") (define-public gdk-pixbuf (package - (name "gdk-pixbuf") - (version "2.40.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (patches (search-patches "gdk-pixbuf-CVE-2020-29385.patch")) - (sha256 - (base32 - "1rnlx9yfw970maxi2x6niaxmih5la11q1ilr7gzshz2kk585k0hm")))) - (build-system meson-build-system) - (arguments - `(#:configure-flags '("-Dinstalled_tests=false") - #:phases - (modify-phases %standard-phases - (add-after - 'unpack 'disable-failing-tests - (lambda _ - (substitute* "tests/meson.build" - ;; XXX FIXME: This test fails on armhf machines with: - ;; SKIP Not enough memory to load bitmap image - ;; ERROR: cve-2015-4491 - too few tests run (expected 4, got 2) - ((".*'cve-2015-4491'.*") "") - ;; XXX FIXME: This test fails with: - ;; ERROR:pixbuf-jpeg.c:74:test_type9_rotation_exif_tag: - ;; assertion failed (error == NULL): Data differ - ;; (gdk-pixbuf-error-quark, 0) - ((".*'pixbuf-jpeg'.*") "")) - #t)) - ;; The slow tests take longer than the specified timeout. - ,@(if (any (cute string=? <> (%current-system)) - '("armhf-linux" "aarch64-linux")) - '((replace 'check - (lambda _ - (invoke "meson" "test" "--timeout-multiplier" "5")))) - '())))) - (propagated-inputs - `(;; Required by gdk-pixbuf-2.0.pc - ("glib" ,glib) - ("libpng" ,libpng) - ;; Used for testing and required at runtime. - ("shared-mime-info" ,shared-mime-info))) - (inputs - `(("libjpeg" ,libjpeg-turbo) - ("libtiff" ,libtiff) - ("libx11" ,libx11))) - (native-inputs - `(("pkg-config" ,pkg-config) + (name "gdk-pixbuf") + (version "2.42.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0k9f9177qxaryaxprwrhqnv5p2gdq4a8i6y05gm98qa8izc5v77y")))) + (build-system meson-build-system) + (arguments + `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas + #:configure-flags '("-Dinstalled_tests=false" "-Djasper=true") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-docbook + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "docs" + (substitute* "meson.build" + (("http://docbook.sourceforge.net/release/xsl/current/") + (string-append (assoc-ref inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-1.79.2/"))) + (substitute* (find-files "." "\\.xml$") + (("http://www.oasis-open.org/docbook/xml/4\\.3/") + (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook/")))) + #t)) + (add-before 'configure 'disable-failing-tests + (lambda _ + (substitute* "tests/meson.build" + (("\\[ 'pixbuf-fail', \\['conform', 'slow'\\], \\],") + "")) + #t)) + ;; The slow tests take longer than the specified timeout. + ,@(if (any (cute string=? <> (%current-system)) + '("armhf-linux" "aarch64-linux")) + '((replace 'check + (lambda _ + (invoke "meson" "test" "--timeout-multiplier" "5")))) + '())))) + (propagated-inputs + `( ;; Required by gdk-pixbuf-2.0.pc + ("glib" ,glib) + ;; Required by gdk-pixbuf-xlib-2.0.pc + ("libx11" ,libx11) + ;; Used for testing and required at runtime. + ("shared-mime-info" ,shared-mime-info))) + (inputs + `(("jasper" ,jasper) + ("libjpeg" ,libjpeg-turbo) + ("libpng" ,libpng) + ("libtiff" ,libtiff))) + (native-inputs + `(("docbook-xml" ,docbook-xml-4.3) + ("docbook-xsl" ,docbook-xsl) ("gettext" ,gettext-minimal) - ("glib" ,glib "bin") ; glib-mkenums, etc. - ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc. - (synopsis "GNOME image loading and manipulation library") - (description - "GdkPixbuf is a library for image loading and manipulation developed -in the GNOME project.") - (license license:lgpl2.0+) - (home-page "https://developer.gnome.org/gdk-pixbuf/"))) + ("glib" ,glib "bin") ; glib-mkenums, etc. + ("gobject-introspection" ,gobject-introspection) ; g-ir-compiler, etc. + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt))) + (synopsis "Image loading library") + (description "GdkPixbuf is a library that loads image data in various +formats and stores it as linear buffers in memory. The buffers can then be +scaled, composited, modified, saved, or rendered.") + (home-page "https://wiki.gnome.org/Projects/GdkPixbuf") + (license license:lgpl2.1+))) ;; To build gdk-pixbuf with SVG support, we need librsvg, and librsvg depends ;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the @@ -629,10 +673,9 @@ in the GNOME project.") `(("librsvg" ,librsvg) ,@(package-inputs gdk-pixbuf))) (arguments - '(#:configure-flags '("-Dinstalled-tests=false") - #:tests? #f ; tested by the gdk-pixbuf package already - #:phases - (modify-phases %standard-phases + (substitute-keyword-arguments (package-arguments gdk-pixbuf) + ((#:phases phases) + `(modify-phases ,phases (add-after 'install 'register-svg-loader (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -646,78 +689,89 @@ in the GNOME project.") (apply invoke gdk-pixbuf-query-loaders "--update-cache" - loaders))))))) - (synopsis - "GNOME image loading and manipulation library, with SVG support"))) + loaders)))))))) + (synopsis "Image loading library, with SVG support"))) (define-public at-spi2-core (package - (name "at-spi2-core") - (version "2.34.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1ihixwhh3c16q6253qj9gf69741rb2pi51822a4rylsfcyywsafn")))) - (build-system meson-build-system) - (outputs '("out" "doc")) - (arguments - '(#:configure-flags - (list "-Ddocs=true") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'set-documentation-path - (lambda* (#:key outputs #:allow-other-keys) - ;; Ensure that the cross-references point to the "doc" output. - (substitute* "doc/libatspi/meson.build" - (("docpath =.*") - (string-append "docpath = '" (assoc-ref outputs "doc") "/share/gtk-doc/html'\n"))) - #t)) - (add-before 'install 'prepare-doc-directory - (lambda* (#:key outputs #:allow-other-keys) - (mkdir-p (string-append (assoc-ref outputs "doc") "/share")) - #t)) - (add-after 'install 'move-documentation - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (doc (assoc-ref outputs "doc"))) - (copy-recursively - (string-append out "/share/gtk-doc") - (string-append doc "/share/gtk-doc")) - (delete-file-recursively - (string-append out "/share/gtk-doc"))) - #t)) - (add-after 'install 'check - (lambda _ - (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME - ;; Run test-suite under a dbus session. - (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service - (string-append %output "/share")) - ;; Don't fail on missing '/etc/machine-id'. - (setenv "DBUS_FATAL_WARNINGS" "0") ; - (invoke "dbus-launch" "ninja" "test"))) + (name "at-spi2-core") + (version "2.40.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0a9l6cfxynjn6jcp29d72i75xbkrzs1l5kmqcwmfal801b9sg5j1")))) + (build-system meson-build-system) + (outputs '("out" "doc")) + (arguments + '(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas + #:configure-flags + (list "-Ddocs=true") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-documentation-path + (lambda* (#:key outputs #:allow-other-keys) + ;; Ensure that the cross-references point to the "doc" output. + (substitute* "doc/libatspi/meson.build" + (("docpath =.*") + (string-append "docpath = '" (assoc-ref outputs "doc") "/share/gtk-doc/html'\n"))) + #t)) + (add-before 'install 'prepare-doc-directory + (lambda* (#:key outputs #:allow-other-keys) + (mkdir-p (string-append (assoc-ref outputs "doc") "/share")) + #t)) + (add-after 'unpack 'patch-docbook-sgml + (lambda* (#:key inputs #:allow-other-keys) + (let* ((xmldoc (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook"))) + (substitute* "doc/libatspi/libatspi-docs.sgml" + (("http://.*/docbookx\\.dtd") + (string-append xmldoc "/docbookx.dtd"))) + #t))) + (add-after 'install 'move-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (copy-recursively + (string-append out "/share/gtk-doc") + (string-append doc "/share/gtk-doc")) + (delete-file-recursively + (string-append out "/share/gtk-doc"))) + #t)) + (add-after 'install 'check + (lambda _ + (setenv "HOME" (getenv "TMPDIR")) ; xfconfd requires a writable HOME + ;; Run test-suite under a dbus session. + (setenv "XDG_DATA_DIRS" ; for finding org.xfce.Xfconf.service + (string-append %output "/share")) + ;; Don't fail on missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0") ; + (invoke "dbus-launch" "ninja" "test"))) (delete 'check)))) - (propagated-inputs - ;; atspi-2.pc refers to all these. - `(("dbus" ,dbus) - ("glib" ,glib) - ("libxi" ,libxi) - ("libxtst" ,libxtst))) - (native-inputs - `(("gettext" ,gettext-minimal) - ("gobject-introspection" ,gobject-introspection) - ("gtk-doc" ,gtk-doc/stable) - ("glib" ,glib "bin") - ("pkg-config" ,pkg-config))) - (synopsis "Assistive Technology Service Provider Interface, core components") - (description - "The Assistive Technology Service Provider Interface, core components, + (propagated-inputs + ;; atspi-2.pc refers to all these. + `(("dbus" ,dbus) + ("glib" ,glib) + ("libx11" ,libx11) + ("libxi" ,libxi) + ("libxtst" ,libxtst))) + (native-inputs + `(("docbook-xml" ,docbook-xml-4.3) + ("gettext" ,gettext-minimal) + ("glib" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("gtk-doc" ,gtk-doc) + ("pkg-config" ,pkg-config) + ("python" ,python-wrapper))) + (synopsis "Assistive Technology Service Provider Interface, core components") + (description + "The Assistive Technology Service Provider Interface, core components, is part of the GNOME accessibility project.") - (license license:lgpl2.0+) - (home-page "https://projects.gnome.org/accessibility/"))) + (license license:lgpl2.1+) + (home-page "https://wiki.gnome.org/Accessibility/"))) ;;; A minimal variant used to prevent a cycle with Inkscape. (define at-spi2-core-minimal @@ -739,199 +793,273 @@ is part of the GNOME accessibility project.") (define-public at-spi2-atk (package - (name "at-spi2-atk") - (version "2.34.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "05ncp7s5nddjinffs26mcvpbd63vk1m3cv5y530p3plgfhqgjvbp")))) - (build-system meson-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'check - ;; Run test-suite under a dbus session. - (lambda _ - (setenv "DBUS_FATAL_WARNINGS" "0") - (invoke "dbus-launch" "meson" "test")))))) - (propagated-inputs - ;; TODO: Replace by at-spi2-core-minimal in the next staging window, or - ;; when Inkscape 0.92 is upgraded to 1.0 to avoid a cycle. - `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc - (inputs - `(("atk" ,atk))) - (native-inputs - `(("pkg-config" ,pkg-config) - ;; For tests. - ("dbus" ,dbus) - ("libxml2" ,libxml2))) - (synopsis "Assistive Technology Service Provider Interface, ATK bindings") - (description - "The Assistive Technology Service Provider Interface + (name "at-spi2-atk") + (version "2.38.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0ks6r9sx27l80n3a7yjmkilxv48cqj183wc7cap3caw2myjhi86g")))) + (build-system meson-build-system) + (arguments + `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas + #:phases + (modify-phases %standard-phases + (replace 'check + ;; Run test-suite under a dbus session. + (lambda _ + (setenv "DBUS_FATAL_WARNINGS" "0") + (invoke "dbus-launch" "meson" "test")))))) + (propagated-inputs + ;; TODO: Replace by at-spi2-core-minimal in the next staging window, or + ;; when Inkscape 0.92 is upgraded to 1.0 to avoid a cycle. + `(("at-spi2-core" ,at-spi2-core))) ; required by atk-bridge-2.0.pc + (inputs + `(("atk" ,atk) + ("glib" ,glib))) + (native-inputs + `(("dbus" ,dbus) ; For tests + ("gobject-introspection" ,gobject-introspection) + ("libxml2" ,libxml2) + ("pkg-config" ,pkg-config))) + (synopsis "Assistive Technology Service Provider Interface, ATK bindings") + (description + "The Assistive Technology Service Provider Interface is part of the GNOME accessibility project.") - (license license:lgpl2.0+) - (home-page "https://projects.gnome.org/accessibility/"))) + (license license:lgpl2.1+) + (home-page "https://wiki.gnome.org/Accessibility/"))) (define-public gtk+-2 (package - (name "gtk+") - (version "2.24.32") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "0bjq7ja9gwcv6n5q4qkvdjjx40wsdiikksz1zqxvxsm5vlyskj5n")) - (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch" - "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch" - "gtk2-theme-paths.patch")))) - (build-system gnu-build-system) - (outputs '("out" "bin" "doc")) - (propagated-inputs - `(("atk" ,atk) - ("gdk-pixbuf" ,gdk-pixbuf+svg) - ("pango" ,pango))) - (inputs - `(("cups" ,cups) - ("libxcomposite" ,libxcomposite) - ("libxcursor" ,libxcursor) - ("libxdamage" ,libxdamage) - ("libxi" ,libxi) - ("libxinerama" ,libxinerama) - ("libxrandr" ,libxrandr))) - (native-inputs - `(("perl" ,perl) - ("gettext" ,gettext-minimal) - ("glib" ,glib "bin") - ("gobject-introspection" ,gobject-introspection) - ("pkg-config" ,pkg-config) - ("python-wrapper" ,python-wrapper))) - (arguments - `(#:configure-flags - (list "--with-xinput=yes" - (string-append "--with-html-dir=" - (assoc-ref %outputs "doc") - "/share/gtk-doc/html")) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'disable-tests - (lambda _ - ;; FIXME: re-enable tests requiring an X server - (substitute* "gtk/Makefile.in" - (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits .")) - #t)) - (add-after 'install 'remove-cache - (lambda* (#:key outputs #:allow-other-keys) - (for-each + (name "gtk+") + (version "2.24.33") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1nn6kks1zyvb5xikr9y2k7r9bwjy1g4b0m0s66532bclymbwfamc")) + (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch" + "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch" + "gtk2-theme-paths.patch")))) + (build-system gnu-build-system) + (outputs '("out" "bin" "doc")) + (propagated-inputs + `(("atk" ,atk) + ("cairo" ,cairo) + ;; SVG support is optional and requires librsvg, which pulls in rust. + ;; Rust is not supported well on every architecture yet. + ("gdk-pixbuf" ,(if (string-prefix? "x86_64" (or (%current-target-system) + (%current-system))) + gdk-pixbuf+svg + gdk-pixbuf)) + ("glib" ,glib) + ("pango" ,pango))) + (inputs + `(("cups" ,cups) + ("libx11" ,libx11) + ("libxcomposite" ,libxcomposite) + ("libxcursor" ,libxcursor) + ("libxext" ,libxext) + ("libxdamage" ,libxdamage) + ("libxi" ,libxi) + ("libxinerama" ,libxinerama) + ("libxkbcommon" ,libxkbcommon) + ("libxrandr" ,libxrandr) + ("libxrender" ,libxrender) + ("libxshmfence" ,libxshmfence))) + (native-inputs + `(("gettext" ,gettext-minimal) + ("glib" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("intltool" ,intltool) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-wrapper" ,python-wrapper) + ("xorg-server" ,xorg-server-for-tests))) + (arguments + `(#:parallel-tests? #f + #:configure-flags + (list "--with-xinput=yes" + (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + (substitute* "gtk/Makefile.in" + (("aliasfilescheck\\.sh") "")) + (substitute* "gtk/tests/recentmanager.c" + (("g_test_add_func \\(\"/recent-manager.*;") "")) + (substitute* "gtk/tests/defaultvalue.c" + (("return g_test_run\\(\\);") "")) + #t)) + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 +extension GLX &") + (setenv "DISPLAY" ":1") + ;; Tests write to $HOME. + (setenv "HOME" (getcwd)) + ;; Tests look for $XDG_RUNTIME_DIR. + (setenv "XDG_RUNTIME_DIR" (getcwd)) + ;; For missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0") + #t)) + (add-after 'install 'remove-cache + (lambda* (#:key outputs #:allow-other-keys) + (for-each delete-file (find-files (assoc-ref outputs "out") "immodules.cache")) - #t))))) - (native-search-paths - (list (search-path-specification - (variable "GUIX_GTK2_PATH") - (files '("lib/gtk-2.0"))))) - (synopsis "Cross-platform toolkit for creating graphical user interfaces") - (description - "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating + #t))))) + (native-search-paths + (list (search-path-specification + (variable "GUIX_GTK2_PATH") + (files '("lib/gtk-2.0"))))) + (search-paths native-search-paths) + (synopsis "Cross-platform toolkit for creating graphical user interfaces") + (description + "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off tools to complete application suites.") - (license license:lgpl2.0+) - (home-page "https://www.gtk.org/"))) + (license license:lgpl2.0+) + (home-page "https://www.gtk.org/"))) (define-public gtk+ - (package (inherit gtk+-2) - (name "gtk+") - (version "3.24.24") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "12ipk1d376bai9v820qzhxba93kkh5abi6mhyqr4hwjvqmkl77fc")) - (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch" - "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch")))) - (propagated-inputs - `(("at-spi2-atk" ,at-spi2-atk) - ("atk" ,atk) - ("gdk-pixbuf" ,gdk-pixbuf+svg) - ("libepoxy" ,libepoxy) - ("libxcursor" ,libxcursor) - ("libxi" ,libxi) - ("libxinerama" ,libxinerama) - ("libxkbcommon" ,libxkbcommon) - ("libxdamage" ,libxdamage) - ("libxrandr" ,libxrandr) - ("mesa" ,mesa) - ("pango" ,pango) - ("wayland" ,wayland) - ("wayland-protocols" ,wayland-protocols))) - (inputs - `(("libxml2" ,libxml2) - ;; XXX: colord depends on mozjs (through polkit), which fails on - ;; on non-intel systems now. - ;;("colord" ,colord) - ("cups" ,cups) ;for printing support - ;; XXX: rest depends on p11-kit, which fails on mips64el now. - ;;("rest" ,rest) - ("json-glib" ,json-glib))) - (native-inputs - `(("perl" ,perl) - ("glib" ,glib "bin") - ("gettext" ,gettext-minimal) - ("pkg-config" ,pkg-config) - ("gobject-introspection" ,gobject-introspection) - ("python-wrapper" ,python-wrapper) - ;; By using a special xorg-server for GTK+'s tests, we reduce the impact - ;; of updating xorg-server directly on the master branch. - ("xorg-server" ,xorg-server-for-tests))) - (arguments - `(#:disallowed-references (,xorg-server-for-tests) - ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes - ;; to "doc". - #:configure-flags (list (string-append "--with-html-dir=" - (assoc-ref %outputs "doc") - "/share/gtk-doc/html") - ;; The header file <gdk/gdkwayland.h> is required - ;; by gnome-control-center - "--enable-wayland-backend" - ;; This is necessary to build both backends. - "--enable-x11-backend" - ;; This enables the HTML5 websocket backend. - "--enable-broadway-backend") - #:phases (modify-phases %standard-phases - (add-before 'configure 'pre-configure - (lambda _ - ;; Disable most tests, failing in the chroot with the message: - ;; D-Bus library appears to be incorrectly set up; failed to read - ;; machine uuid: Failed to open "/etc/machine-id": No such file or - ;; directory. - ;; See the manual page for dbus-uuidgen to correct this issue. - (substitute* "testsuite/Makefile.in" - (("SUBDIRS = gdk gtk a11y css reftests") - "SUBDIRS = gdk")) - #t)) - (add-after 'install 'move-desktop-files - ;; Move desktop files into 'bin' to avoid cycle references. - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (bin (assoc-ref outputs "bin"))) - (mkdir-p (string-append bin "/share")) - (rename-file (string-append out "/share/applications") - (string-append bin "/share/applications")) - #t)))))) - (native-search-paths - (list (search-path-specification - (variable "GUIX_GTK3_PATH") - (files '("lib/gtk-3.0"))))))) + (package + (inherit gtk+-2) + (name "gtk+") + (version "3.24.27") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "09ksflq5j257bf5zn8q2nnf2flicg9qqgfy7za79z7rkf1shc77p")) + (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch" + "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch")))) + (propagated-inputs + `(("atk" ,atk) + ("at-spi2-atk" ,at-spi2-atk) + ("cairo" ,cairo) + ("fribidi" ,fribidi) + ("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ;; SVG support is optional and requires librsvg, which pulls in rust. + ;; Rust is not supported well on every architecture yet. + ("gdk-pixbuf" ,(if (string-prefix? "x86_64" (or (%current-target-system) + (%current-system))) + gdk-pixbuf+svg + gdk-pixbuf)) + ("glib" ,glib) + ("libcloudproviders" ,libcloudproviders) + ("libepoxy" ,libepoxy) + ("libx11" ,libx11) + ("libxcomposite" ,libxcomposite) + ("libxcursor" ,libxcursor) + ("libxdamage" ,libxdamage) + ("libxext" ,libxext) + ("libxfixes" ,libxfixes) + ("libxi" ,libxi) + ("libxinerama" ,libxinerama) + ("libxkbcommon" ,libxkbcommon) + ("libxrandr" ,libxrandr) + ("libxrender" ,libxrender) + ("mesa" ,mesa) + ("pango" ,pango) + ("wayland" ,wayland) + ("wayland-protocols" ,wayland-protocols))) + (inputs + `(("colord" ,colord) + ("cups" ,cups) + ("graphene" ,graphene) + ("harfbuzz" ,harfbuzz) + ("iso-codes" ,iso-codes) + ("json-glib" ,json-glib) + ("libxml2" ,libxml2) + ("rest" ,rest))) + (native-inputs + `(("docbook-xml" ,docbook-xml-4.1.2) + ("gettext" ,gettext-minimal) + ("glib" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("hicolor-icon-theme" ,hicolor-icon-theme) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-wrapper" ,python-wrapper) + ("sassc" ,sassc) + ;; By using a special xorg-server for GTK+'s tests, we reduce the impact + ;; of updating xorg-server directly on the master branch. + ("xorg-server" ,xorg-server-for-tests) + ("xsltproc" ,libxslt))) + (arguments + `(#:disallowed-references (,xorg-server-for-tests) + ;; 47 MiB goes to "out" (24 of which is locale data!), and 26 MiB goes + ;; to "doc". + #:configure-flags (list (string-append "--with-html-dir=" + (assoc-ref %outputs "doc") + "/share/gtk-doc/html") + "--enable-cloudproviders" + ;; The header file <gdk/gdkwayland.h> is required + ;; by gnome-control-center + "--enable-wayland-backend" + ;; This is necessary to build both backends. + "--enable-x11-backend" + ;; This enables the HTML5 websocket backend. + "--enable-broadway-backend") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + (substitute* "testsuite/gtk/Makefile.in" + (("builderparser cellarea check-icon-names check-cursor-names") + "builderparser cellarea check-cursor-names") + (("notify no-gtk-init object objects-finalize papersize rbtree") + "no-gtk-init papersize rbtree") + (("stylecontext templates textbuffer textiter treemodel treepath") + "stylecontext textbuffer textiter treemodel treepath")) + (substitute* "testsuite/a11y/Makefile.in" + (("accessibility-dump tree-performance text children derive") + "tree-performance text children derive")) + (substitute* "testsuite/reftests/Makefile.in" + (("TEST_PROGS = gtk-reftest") + "TEST_PROGS = ")) + #t)) + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 +extension GLX &") + (setenv "DISPLAY" ":1") + ;; Tests write to $HOME. + (setenv "HOME" (getcwd)) + ;; Tests look for $XDG_RUNTIME_DIR. + (setenv "XDG_RUNTIME_DIR" (getcwd)) + ;; For missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0") + #t)) + (add-after 'install 'move-desktop-files + ;; Move desktop files into 'bin' to avoid cycle references. + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bin (assoc-ref outputs "bin"))) + (mkdir-p (string-append bin "/share")) + (rename-file (string-append out "/share/applications") + (string-append bin "/share/applications")) + #t)))))) + (native-search-paths + (list (search-path-specification + (variable "GUIX_GTK3_PATH") + (files '("lib/gtk-3.0"))))))) ;;; ;;; Guile bindings. @@ -1248,23 +1376,45 @@ guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.") (define-public cairomm (package (name "cairomm") - (version "1.12.2") + (version "1.16.0") (source (origin (method url-fetch) (uri (string-append "https://www.cairographics.org/releases/" - name "-" version ".tar.gz")) + name "-" version ".tar.xz")) (sha256 (base32 - "16fmigxsaz85c3lgcls7biwyz8zy8c8h3jndfm54cxxas3a7zi25")))) - (build-system gnu-build-system) + "1ya4y7qa000cjawqwswbqv26y5icfkmhs5iiiil4dxgrqn91923y")))) + (build-system meson-build-system) + (outputs '("out" "doc")) (arguments - ;; The examples lack -lcairo. - '(#:make-flags '("LDFLAGS=-lcairo"))) - (native-inputs `(("pkg-config" ,pkg-config))) + `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas + #:configure-flags + (list + "-Dbuild-documentation=true" + "-Dboost-shared=true") + #:phases + (modify-phases %standard-phases + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (mkdir-p (string-append doc "/share")) + (rename-file + (string-append out "/share/doc") + (string-append doc "/share/doc")) + #t)))))) + (native-inputs + `(("boost" ,boost) + ("dot" ,graphviz) + ("doxygen" ,doxygen) + ("mm-common" ,mm-common) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt))) + (inputs + `(("fontconfig" ,fontconfig))) (propagated-inputs `(("libsigc++" ,libsigc++) - ("freetype" ,freetype) - ("fontconfig" ,fontconfig) ("cairo" ,cairo))) (home-page "https://cairographics.org/") (synopsis "C++ bindings to the Cairo 2D graphics library") @@ -1273,37 +1423,61 @@ guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.") library.") (license license:lgpl2.0+))) -(define-public cairomm-1.13 +(define-public cairomm-1.14 (package (inherit cairomm) (name "cairomm") - (version "1.13.1") + (version "1.14.2") (source (origin (method url-fetch) (uri (string-append "https://www.cairographics.org/releases/" - name "-" version ".tar.gz")) + name "-" version ".tar.xz")) (sha256 - (base32 "1xlfl0fm5mgv53lr8xjv2kqsk3bz67qkk6qzvbrqmbvbvvbqp9wp")))) + (base32 "1qwdj9xw1w651kqwh82nipbryimm1ir5n3c6q34nphsx576bj9h1")))) (propagated-inputs - `(("cairo" ,cairo) - ("sigc++" ,libsigc++))))) + `(("libsigc++" ,libsigc++-2) + ,@(package-propagated-inputs cairomm))))) (define-public pangomm (package (name "pangomm") - (version "2.42.0") + (version "2.48.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "0mmzxp3wniaafkxr30sb22mq9x44xckb5d60h1bl99lkzxks0vfa")))) - (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config))) + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0y2vyp6azvhrii6rzs89kr08wg8z1p562awyr812131zqdsd83ly")))) + (build-system meson-build-system) + (outputs '("out" "doc")) + (arguments + `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas + #:configure-flags + (list + "-Dbuild-documentation=true") + #:phases + (modify-phases %standard-phases + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (mkdir-p (string-append doc "/share")) + (rename-file + (string-append out "/share/doc") + (string-append doc "/share/doc")) + #t)))))) + (native-inputs + `(("dot" ,graphviz) + ("doxygen" ,doxygen) + ("m4" ,m4) + ("mm-common" ,mm-common) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt))) (propagated-inputs `(("cairo" ,cairo) ("cairomm" ,cairomm) @@ -1316,11 +1490,11 @@ library.") library.") (license license:lgpl2.1+))) -(define-public pangomm-2.42 +(define-public pangomm-2.46 (package (inherit pangomm) (name "pangomm") - (version "2.42.1") + (version "2.46.0") (source (origin (method url-fetch) @@ -1329,102 +1503,186 @@ library.") (version-major+minor version) "/" name "-" version ".tar.xz")) (sha256 - (base32 "03zli5amizhv9bfklwfq7xyf0b5dagchx1lnz9f0v1rhk69h9gql")))) + (base32 "06zczkaxf5p5kjgnzrfylzi40w9a8lxpndgs7rpn12qrsq27sy6k")))) (propagated-inputs - `(("cairomm" ,cairomm-1.13) + `(("cairomm" ,cairomm-1.14) ("glibmm" ,glibmm-2.64) ("pango" ,pango))))) (define-public atkmm (package (name "atkmm") - (version "2.28.0") + (version "2.36.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "0fnxrspxkhhbrjphqrpvl3zjm66n50s4cywrrrwkhbflgy8zqk2c")))) - (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config))) + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "0wwr0663jrqx2klsasffd9wpk3kqnwisj1y3ahdkjdk5hzrsjgy9")))) + (build-system meson-build-system) + (outputs '("out" "doc")) + (arguments + `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas + #:configure-flags + (list + "-Dbuild-documentation=true") + #:phases + (modify-phases %standard-phases + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (mkdir-p (string-append doc "/share")) + (rename-file + (string-append out "/share/doc") + (string-append doc "/share/doc")) + #t)))))) + (native-inputs + `(("dot" ,graphviz) + ("doxygen" ,doxygen) + ("m4" ,m4) + ("mm-common" ,mm-common) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt))) (propagated-inputs `(("glibmm" ,glibmm) ("atk" ,atk))) - (home-page "https://www.gtkmm.org") - (synopsis "C++ interface to the ATK accessibility library") - (description - "ATKmm provides a C++ programming interface to the ATK accessibility -toolkit.") - (license license:lgpl2.1+))) + (synopsis "C++ bindings for ATK") + (description "ATKmm is the C++ binding for the ATK library.") + (home-page "https://wiki.gnome.org/Accessibility") + (license + (list + ;; Library + license:lgpl2.1+ + ;; Tools + license:gpl2+)))) + +(define-public atkmm-2.28 + (package + (inherit atkmm) + (name "atkmm") + (version "2.28.1") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 "1b8vycqzr3lfvk2l73f4kk74hj48081zbh9r1r2ilr3h8xh7cs0i")))) + (propagated-inputs + `(("glibmm" ,glibmm-2.64) + ,@(package-propagated-inputs atkmm))))) (define-public gtkmm (package (name "gtkmm") - (version "3.24.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1hxdnhavjyvbcpxhd5z17l9fj4182028s66lc0s16qqqrldhjwbd")))) - (build-system gnu-build-system) - (native-inputs `(("pkg-config" ,pkg-config) - ("glib" ,glib "bin") ;for 'glib-compile-resources' - ("xorg-server" ,xorg-server-for-tests))) + (version "3.24.4") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 "0hv7pviln4cpjvpz7m7ga5krcsbibqzixdcn0dwzpz0cx71p3swv")))) + (build-system meson-build-system) + (outputs '("out" "doc")) + (arguments + `(#:configure-flags '("-Dbuild-documentation=true") + #:phases + (modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 +extension GLX &") + (setenv "DISPLAY" ":1") + ;; For missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0") + #t)) + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (mkdir-p (string-append doc "/share")) + (rename-file + (string-append out "/share/doc") + (string-append doc "/share/doc")) + #t)))))) + (native-inputs + `(("dot" ,graphviz) + ("doxygen" ,doxygen) + ("glib:bin" ,glib "bin") + ("m4" ,m4) + ("mm-common" ,mm-common) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt) + ("xorg-server" ,xorg-server-for-tests))) (propagated-inputs - `(("pangomm" ,pangomm) - ("cairomm" ,cairomm) - ("atkmm" ,atkmm) + `(("atkmm" ,atkmm-2.28) + ("cairomm" ,cairomm-1.14) + ("glibmm" ,glibmm) ("gtk+" ,gtk+) - ("glibmm" ,glibmm))) - (arguments - `(#:disallowed-references (,xorg-server-for-tests) - #:phases (modify-phases %standard-phases - (add-before 'check 'run-xvfb - (lambda* (#:key inputs #:allow-other-keys) - (let ((xorg-server (assoc-ref inputs "xorg-server"))) - ;; Tests such as 'object_move/test' require a running - ;; X server. - (system (string-append xorg-server "/bin/Xvfb :1 &")) - (setenv "DISPLAY" ":1") - ;; Don't fail because of the missing /etc/machine-id. - (setenv "DBUS_FATAL_WARNINGS" "0") - #t)))))) + ("pangomm" ,pangomm-2.46))) + (synopsis "C++ Interfaces for GTK+ and GNOME") + (description "GTKmm is the official C++ interface for the popular GUI +library GTK+. Highlights include typesafe callbacks, and a comprehensive set of +widgets that are easily extensible via inheritance. You can create user +interfaces either in code or with the Glade User Interface designer, using +libglademm. There's extensive documentation, including API reference and a +tutorial.") (home-page "https://gtkmm.org/") - (synopsis - "C++ interface to the GTK+ graphical user interface library") - (description - "gtkmm is the official C++ interface for the popular GUI library GTK+. -Highlights include typesafe callbacks, and a comprehensive set of widgets that -are easily extensible via inheritance. You can create user interfaces either -in code or with the Glade User Interface designer, using libglademm. There's -extensive documentation, including API reference and a tutorial.") - (license license:lgpl2.1+))) - + (license + (list + ;; Library + license:lgpl2.1+ + ;; Tools + license:gpl2+)))) (define-public gtkmm-2 - (package (inherit gtkmm) + (package + (inherit gtkmm) (name "gtkmm") (version "2.24.5") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006")))) - (arguments '()) - (native-inputs `(("pkg-config" ,pkg-config))) + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006")))) + (build-system gnu-build-system) + (arguments + (substitute-keyword-arguments (package-arguments gtkmm) + ((#:modules modules %gnu-build-system-modules) + `((srfi srfi-1) + ,@modules)) + ((#:configure-flags flags) + `(fold delete + ,flags + '("-Dbuild-documentation=true"))))) + (native-inputs + `(("dot" ,graphviz) + ("doxygen" ,doxygen) + ("m4" ,m4) + ("mm-common" ,mm-common) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("xsltproc" ,libxslt) + ("xorg-server" ,xorg-server-for-tests))) (propagated-inputs - `(("pangomm" ,pangomm) - ("cairomm" ,cairomm) - ("atkmm" ,atkmm) + `(("atkmm" ,atkmm-2.28) + ("cairomm" ,cairomm-1.14) + ("glibmm" ,glibmm-2.64) ("gtk+" ,gtk+-2) - ("glibmm" ,glibmm))))) + ("pangomm" ,pangomm-2.46))))) (define-public gtksourceviewmm (package @@ -1461,7 +1719,7 @@ printing and other features typical of a source code editor.") (define-public python-pycairo (package (name "python-pycairo") - (version "1.19.1") + (version "1.20.0") (source (origin (method url-fetch) @@ -1469,7 +1727,7 @@ printing and other features typical of a source code editor.") version "/pycairo-" version ".tar.gz")) (sha256 (base32 - "111fav9m1iagw3nh2ws2vzkjh34r97yl7rdlpvsngsqg521k251c")))) + "1326aa2ybhhhrvz3n4p22z5sic25m016ddb5yq0hvbprnw6a35an")))) (build-system python-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1788,7 +2046,7 @@ information.") (define-public gtk-doc (package (name "gtk-doc") - (version "1.28") + (version "1.32") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1796,8 +2054,9 @@ information.") name "-" version ".tar.xz")) (sha256 (base32 - "05apmwibkmn1icx05l8aw241lhymcx01zvk5i499cb150bijj7li")))) - (build-system gnu-build-system) + "0z4h1dggpimygdp719l457jvqilps4qcfpk31jmj3jqpzcsg03ny")))) + (build-system glib-or-gtk-build-system) + (outputs '("out" "help")) (arguments `(#:parallel-tests? #f #:phases @@ -1805,31 +2064,22 @@ information.") (add-after 'unpack 'patch-gtk-doc-scan (lambda* (#:key inputs #:allow-other-keys) (substitute* "gtk-doc.xsl" - (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl") - (string-append (assoc-ref inputs "docbook-xsl") - "/xml/xsl/docbook-xsl-" - ,(package-version docbook-xsl) - "/html/chunk.xsl")) - (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml") - (string-append (assoc-ref inputs "docbook-xsl") - "/xml/xsl/docbook-xsl-" - ,(package-version docbook-xsl) - "/common/en.xml"))) + (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl") + (string-append (assoc-ref inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl) + "/html/chunk.xsl")) + (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml") + (string-append (assoc-ref inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl) + "/common/en.xml"))) #t)) - (add-after 'patch-gtk-doc-scan 'patch-test-out + (add-after 'unpack 'disable-failing-tests (lambda _ - ;; sanity.sh counts the number of status lines. Since our - ;; texlive regenerates the fonts every time and the font - ;; generator metafont outputs a lot of extra lines, this - ;; test would always fail. Disable it for now. (substitute* "tests/Makefile.in" - (("empty.sh sanity.sh") "empty.sh")) - #t)) - (add-before 'build 'set-HOME - (lambda _ - ;; FIXME: dblatex with texlive-union does not find the built - ;; metafonts, so it tries to generate them in HOME. - (setenv "HOME" "/tmp") + (("annotations.sh bugs.sh empty.sh fail.sh gobject.sh program.sh") + "")) #t)) (add-before 'configure 'fix-docbook (lambda* (#:key inputs #:allow-other-keys) @@ -1851,36 +2101,53 @@ information.") (let ((out (assoc-ref outputs "out"))) (for-each (lambda (prog) (wrap-program prog - `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))) + `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))) (find-files (string-append out "/bin"))) #t)))) #:configure-flags (list (string-append "--with-xml-catalog=" (assoc-ref %build-inputs "docbook-xml") - "/xml/dtd/docbook/catalog.xml")))) + "/xml/dtd/docbook/catalog.xml") + (string-append "--with-help-dir=" + (assoc-ref %outputs "help") + "/share/help")))) (native-inputs - `(("pkg-config" ,pkg-config) + `(("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ("itstool" ,itstool) - ("libxml" ,libxml2) - ("gettext" ,gettext-minimal) - ("bc" ,bc))) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-wrapper" ,python-wrapper))) (inputs - `(("perl" ,perl) - ("python" ,python) - ("xsltproc" ,libxslt) + `(("bc" ,bc) ("dblatex" ,dblatex) ("docbook-xml" ,docbook-xml-4.3) ("docbook-xsl" ,docbook-xsl) - ("source-highlight" ,source-highlight) ("glib" ,glib) - ("python-six" ,python-six))) - (home-page "https://www.gtk.org/gtk-doc/") - (synopsis "Documentation generator from C source code") - (description - "GTK-Doc generates API documentation from comments added to C code. It is -typically used to document the public API of GTK+ and GNOME libraries, but it -can also be used to document application code.") - (license license:gpl2+))) + ("libxml2" ,libxml2) + ("libxslt" ,libxslt) + ("python" ,python) + ("python-anytree" ,python-anytree) + ("python-lxml" ,python-lxml) + ("python-parameterized" ,python-parameterized) + ("python-pygments" ,python-pygments) + ("python-unittest2" ,python-unittest2) + ("source-highlight" ,source-highlight) + ("yelp-tools" ,yelp-tools))) + (home-page "https://wiki.gnome.org/DocumentationProject/GtkDoc") + (synopsis "GTK+ DocBook Documentation Generator") + (description "GtkDoc is a tool used to extract API documentation from C-code +like Doxygen, but handles documentation of GObject (including signals and +properties) that makes it very suitable for GTK+ apps and libraries. It uses +docbook for intermediate files and can produce html by default and pdf/man-pages +with some extra work.") + (license + (list + ;; Docs. + license:fdl1.1+ + ;; Others. + license:gpl2+)))) ;; This is a variant of the 'gtk-doc' package that is not updated often. It ;; is intended to be used as a native-input at build-time only. This allows |