summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/inkscape.scm192
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)))))