diff options
-rw-r--r-- | gnu/packages/inkscape.scm | 192 |
1 files changed, 100 insertions, 92 deletions
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm index 9792b2b890..190215f1d5 100644 --- a/gnu/packages/inkscape.scm +++ b/gnu/packages/inkscape.scm @@ -28,6 +28,7 @@ #: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) @@ -58,7 +59,8 @@ #: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 @@ -156,86 +158,90 @@ 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") + #: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 ;; 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 _ + (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 (list aspell autotrace @@ -245,7 +251,6 @@ endif()~%~%" gtk+ gtkspell3 gsl - imagemagick ;for libMagickCore and libMagickWand poppler lib2geom libjpeg-turbo @@ -271,7 +276,7 @@ endif()~%~%" python-lxml)) (native-inputs (list gettext-minimal - imagemagick ;for tests + imagemagick/stable ;for tests `(,glib "bin") googletest perl @@ -300,19 +305,22 @@ as the native format.") (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 + (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 + python-cssselect))) ;to render qrcode (properties (alist-delete 'hidden? (package-properties inkscape/stable))))) |