aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/inkscape.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/inkscape.scm')
-rw-r--r--gnu/packages/inkscape.scm302
1 files changed, 183 insertions, 119 deletions
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index aa2c6419a0..524277fc2b 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -1,13 +1,13 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016, 2018, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
-;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2023, 2024 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,10 +28,11 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
- #:use-module (gnu packages aspell)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages boost)
@@ -50,6 +51,7 @@
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages xml)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages fontutils)
@@ -58,21 +60,21 @@
#:use-module (srfi srfi-1))
;;; A variant of Inkscape intended to be bumped only on core-updates, to avoid
-;;; rebuilding 2k+ packages through dblatex.
+;;; rebuilding 2k+ packages through dblatex. It should only be used as a
+;;; native-input since it might not receive timely security updates.
(define-public inkscape/stable
(hidden-package
(package
(name "inkscape")
- (version "1.2.1")
+ (version "1.3.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://media.inkscape.org/dl/"
"resources/file/"
"inkscape-" version ".tar.xz"))
- (patches (search-patches "inkscape-poppler-compat.patch"))
(sha256
- (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))
+ (base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv"))
(modules '((guix build utils)
(ice-9 format)))
(snippet
@@ -156,123 +158,172 @@ endif()~%~%"
((".*find_package\\(DoubleConversion.*") ""))))))
(build-system cmake-build-system)
(arguments
- `(#:test-target "check" ;otherwise some test binaries are missing
- #:imported-modules (,@%cmake-build-system-modules
+ (list
+ #:test-target "check" ;otherwise some test binaries are missing
+ #:disallowed-references (list imagemagick/stable)
+ #:imported-modules `(,@%cmake-build-system-modules
(guix build glib-or-gtk-build-system))
- #:modules ((guix build cmake-build-system)
+ #:modules '((guix build cmake-build-system)
((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
(guix build utils))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
- (assoc-ref glib-or-gtk:%standard-phases
- 'generate-gdk-pixbuf-loaders-cache-file))
- (add-after 'unpack 'patch-icon-cache-generator
- (lambda _
- (substitute* "share/icons/application/CMakeLists.txt"
- (("gtk-update-icon-cache") "true"))))
- (add-after 'unpack 'disable-latex-export-tests
- ;; FIXME: For some reason the test.pdf_tex file generated by the
- ;; "--export-latex" lacks "some text" in its content when run in
- ;; the build environment. Skip the related tests.
- (lambda _
- (substitute* "testfiles/cli_tests/CMakeLists.txt"
- (("add_cli_test\\(export-latex")
- "message(TEST_DISABLED: export-latex"))))
- (add-after 'unpack 'disable-vertical-glyph-tests
- (lambda _
- ;; FIXME: These tests fail with newer Pango and Harfbuzz:
- ;; https://gitlab.com/inkscape/inkscape/-/issues/2917
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554
- ;; Simply providing older versions don't work, as we need
- ;; the full GTK stack; we could use package-input-rewriting
- ;; but then have to also downgrade pangomm and disable tests
- ;; in librsvg and GTK+. Just ignore for now.
- (substitute* "testfiles/rendering_tests/CMakeLists.txt"
- (("test-glyph-y-pos") "")
- (("text-glyphs-combining") "")
- (("text-glyphs-vertical") "")
- (("test-rtl-vertical") ""))))
- ,@(if (or (target-aarch64?)
- (target-ppc64le?)
- (target-riscv64?))
- `((add-after 'unpack 'disable-more-tests
- (lambda _
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035680690
- (substitute* "testfiles/CMakeLists.txt"
- (("lpe64-test") "#lpe64-test"))
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
- ;; According to upstream, this is a false positive.
- (substitute* "testfiles/rendering_tests/CMakeLists.txt"
- (("test-use") "#test-use"))
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
- ;; Allegedly a precision error in the gamma.
- (substitute* "testfiles/cli_tests/CMakeLists.txt"
- (("add_cli_test\\(export-png-color-mode-gray-8_png" all)
- (string-append "#" all))))))
- '())
- (add-after 'unpack 'set-home
- ;; Mute Inkscape warnings during tests.
- (lambda _
- (setenv "HOME" (getcwd))))
- ;; Move the check phase after the install phase, as when run in the
- ;; tests, Inkscape relies on files that are not yet installed, such
- ;; as the "share/inkscape/ui/units.xml" file.
- (delete 'check)
- (add-after 'install 'check
- (assoc-ref %standard-phases 'check))
- (add-after 'install 'glib-or-gtk-compile-schemas
- (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
- (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
- (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
- (add-after 'install 'wrap-program
+ ;; Disable imagemagick support in the stable variant, to reduce the
+ ;; number of dependents of the 'imagemagick' package.
+ #:configure-flags
+ #~(list "-DWITH_IMAGE_MAGICK=OFF"
+ ;; TODO: Remove after next release, since the problematic
+ ;; libsoup/soup.h include is no longer used.
+ (string-append "-DCMAKE_CXX_FLAGS=-I"
+ (search-input-directory %build-inputs
+ "/include/libsoup-2.4")))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
+ (assoc-ref glib-or-gtk:%standard-phases
+ 'generate-gdk-pixbuf-loaders-cache-file))
+ #$@(if (or (target-aarch64?)
+ (target-ppc64le?)
+ (target-riscv64?))
+ '((add-after 'unpack 'disable-more-tests
+ (lambda _
+ ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035680690
+ (substitute* "testfiles/CMakeLists.txt"
+ (("lpe64-test") "#lpe64-test")
+ ((" lpe-test") " #lpe-test")
+ (("add_subdirectory\\(lpe_tests\\)") ""))
+ ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
+ ;; According to upstream, this is a false positive.
+ (substitute* "testfiles/rendering_tests/CMakeLists.txt"
+ (("add_rendering_test\\(test-use" all)
+ (string-append "#" all)))
+ ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
+ ;; Allegedly a precision error in the gamma.
+ (substitute* "testfiles/cli_tests/CMakeLists.txt"
+ (("add_cli_test\\(export-png-color-mode-gray-8_png" all)
+ (string-append "#" all))
+ ;; These also seem to be failing due to precision errors.
+ (("add_pdfinput_test\\(font-(spacing|style) 1 draw-all" all)
+ (string-append "#" all))))))
+ '())
+ #$@(if (target-x86-32?)
+ '((add-after 'unpack 'fix-32bit-size_t-format
+ (lambda _
+ ;; Fix an error due to format type mismatch with 32-bit size_t.
+ (substitute* "testfiles/src/visual-bounds-test.cpp"
+ (("%lu") "%u")))))
+ '())
+ (add-after 'unpack 'set-home
+ ;; Mute Inkscape warnings during tests.
+ (lambda _
+ (setenv "HOME" (getcwd))))
+ ;; Move the check phase after the install phase, as when run in the
+ ;; tests, Inkscape relies on files that are not yet installed, such
+ ;; as the "share/inkscape/ui/units.xml" file.
+ (delete 'check)
+ (add-after 'install 'check
+ ;; Use ctest directly so that we can easily exclude problematic
+ ;; tests.
+ (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
+ (when tests?
+ ;; The following tests fails, perhaps due to building without
+ ;; ImageMagick (see:
+ ;; https://gitlab.com/inkscape/inbox/-/issues/10005).
+ (let ((job-count (if parallel-tests?
+ (number->string (parallel-job-count))
+ "1"))
+ (skipped-tests
+ (list "cli_export-type-caseinsensitive_check_output"
+ "cli_export-type_xaml_check_output"
+ "cli_export-height_export-use-hints_check_output"
+ "cli_export-plain-svg_check_output"
+ "cli_export-use-hints_export-id_check_output"
+ "cli_export-extension_svg_check_output"
+ "cli_export-extension_ps_check_output"
+ "cli_export-extension_eps_check_output"
+ "cli_export-extension_pdf_check_output"
+ "cli_export-plain-extension-svg_check_output"
+ ;; These fail non-deterministically (see:
+ ;; https://gitlab.com/inkscape/inbox/-/issues/10005).
+ "cli_export-ps-level_3_check_output"
+ "cli_export-ps-level_3_content_check_output"
+ "cli_export-ps-level_2_content_check_output"
+ "cli_export-ps-level_2_check_output"
+ ;; These fail on i686 but not x86-64
+ #$@(if (target-x86-32?)
+ '("cli_pdfinput-font-spacing_check_output"
+ "cli_pdfinput-font-style_check_output"
+ "cli_pdfinput-latex_check_output"
+ "cli_pdfinput-multi-page-sample_check_output"
+ "test_lpe")
+ '()))))
+ (invoke "make" "-j" job-count "tests")
+ (invoke "ctest" "-j" job-count
+ "--output-on-error"
+ "-E" (string-append
+ "(" (string-join skipped-tests "|") ")"))))))
+ (add-after 'install 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
+ (add-after 'install 'wrap-program
;; Ensure Python is available at runtime.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (wrap-program (string-append out "/bin/inkscape")
- `("GUIX_PYTHONPATH" prefix
- (,(getenv "GUIX_PYTHONPATH")))
- ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
- ;; its own icons in pure environments.
- `("GDK_PIXBUF_MODULE_FILE" =
- (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))))
+ (lambda* (#:key inputs #:allow-other-keys)
+ (wrap-program (string-append #$output "/bin/inkscape")
+ `("PATH" prefix
+ (,(dirname (search-input-file inputs "bin/python"))))
+ `("GUIX_PYTHONPATH" prefix
+ (,(getenv "GUIX_PYTHONPATH")))
+ ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
+ ;; its own icons in pure environments.
+ `("GDK_PIXBUF_MODULE_FILE" =
+ (,(getenv "GDK_PIXBUF_MODULE_FILE")))
+ ;; Ensure GObject Introspection typelibs are found.
+ `("GI_TYPELIB_PATH" ":" prefix
+ (,(getenv "GI_TYPELIB_PATH")))))))))
(inputs
- (list aspell
+ (list (librsvg-for-system) ;for the pixbuf loader
autotrace
bash-minimal
+ boost
+ freetype
gdl-minimal
- gtkmm-3
- gtk+
- gtkspell3
gsl
- poppler
+ gspell
+ gtk+
+ gtkmm-3
+ lcms
lib2geom
+ libcdr
+ libgc
libjpeg-turbo
libpng
- libxml2
- libxslt
- libgc
- (librsvg-for-system) ;for the pixbuf loader
libsoup-minimal-2
- libcdr
libvisio
libwpd
libwpg
- freetype
+ libxml2
+ libxslt
+ poppler
popt
potrace
- lcms
- boost
- python-wrapper
- python-scour
- python-pyserial
+ ;; These Python dependencies are used by the Inkscape extension
+ ;; management system. To verify that it is working, visit the
+ ;; Extensions -> Manage Extensions... menu.
+ python-appdirs
+ python-cssselect
+ python-lxml
python-numpy
- python-lxml))
+ python-pygobject
+ python-pyserial
+ python-requests
+ python-scour
+ python-wrapper
+ readline))
(native-inputs
- (list gettext-minimal
- imagemagick ;for tests
- `(,glib "bin")
+ (list `(,glib "bin")
+ bc
+ gettext-minimal
googletest
+ imagemagick/stable ;for tests
perl
pkg-config))
(home-page "https://inkscape.org/")
@@ -286,7 +337,7 @@ as the native format.")
(package
(inherit inkscape/stable)
(name "inkscape")
- (version "1.2.1")
+ (version "1.3.2")
(source
(origin
(inherit (package-source inkscape/stable))
@@ -295,23 +346,36 @@ as the native format.")
"resources/file/"
"inkscape-" version ".tar.xz"))
(sha256
- (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))))
+ (base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv"))))
(build-system cmake-build-system)
(arguments
(substitute-keyword-arguments (package-arguments inkscape/stable)
+ ((#:configure-flags flags ''())
+ ;; Enable ImageMagick support.
+ #~(delete "-DWITH_IMAGE_MAGICK=OFF" #$flags))
((#:phases phases)
- `(modify-phases ,phases
- (replace 'wrap-program
- ;; Ensure Python is available at runtime.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (wrap-program (string-append out "/bin/inkscape")
- `("GUIX_PYTHONPATH" prefix
- (,(getenv "GUIX_PYTHONPATH")))
- ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
- ;; its own icons in pure environments.
- `("GDK_PIXBUF_MODULE_FILE" =
- (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))))
+ #~(modify-phases #$phases
+ #$@(if (target-x86-32?)
+ #~() ;XXX: there are remaining failures on i686
+ #~((replace 'check
+ ;; Re-instate the tests disabled in inkscape/stable, now that
+ ;; their ImageMagick requirement is satisfied.
+ (assoc-ref %standard-phases 'check))))
+
+ (replace 'wrap-program
+ ;; Ensure Python is available at runtime.
+ (lambda _
+ (wrap-program (string-append #$output "/bin/inkscape")
+ `("GUIX_PYTHONPATH" prefix
+ (,(getenv "GUIX_PYTHONPATH")))
+ ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
+ ;; its own icons in pure environments.
+ `("GDK_PIXBUF_MODULE_FILE" =
+ (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))))
(inputs (modify-inputs (package-inputs inkscape/stable)
- (append python-cssselect))) ;to render qrcode
+ (append imagemagick))) ;for libMagickCore and libMagickWand
+ (native-inputs
+ (modify-inputs (package-native-inputs inkscape/stable)
+ ;; Only use 1 imagemagick across the package build.
+ (replace "imagemagick" imagemagick)))
(properties (alist-delete 'hidden? (package-properties inkscape/stable)))))