;;; 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 © 2017 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
+;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages aspell)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages boost)
+ #:use-module (gnu packages check)
#:use-module (gnu packages glib)
+ #:use-module (gnu packages gnome)
+ #:use-module (gnu packages graphics)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages libreoffice)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages pdf)
#:use-module (gnu packages popt)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages xml)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages fontutils)
(define-public inkscape
(package
(name "inkscape")
- (version "0.92.3")
+ (version "0.92.4")
(source (origin
(method url-fetch)
(uri (string-append "https://media.inkscape.org/dl/"
"resources/file/"
"inkscape-" version ".tar.bz2"))
+ (patches (search-patches "inkscape-poppler-0.76.patch"))
(sha256
(base32
- "1chng2yw8dsjxc9gf92aqv7plj11cav8ax321wmakmv5bb09cch6"))
- (patches
- (list (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/inkscape/inkscape/commit/"
- "a600c6438fef2f4c06f9a4a7d933d99fb054a973.diff"))
- (file-name "inkscape-poppler-compat.patch")
- (sha256
- (base32
- "19dam5vsy571xszgjddl5g0958dmcsv0wvgxidp4bhj2lban222i")))
- (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/inkscape/inkscape/commit/"
- "fa1c469aa8c005e07bb8676d72af9f7c16fae3e0.diff"))
- (file-name "inkscape-poppler-compat2.patch")
- (sha256
- (base32
- "14k9yrfjz4nx3bz9dk91q74mc0i7rvl2qzkwhcy1br71yqjvngn5")))
- (search-patch "inkscape-poppler-compat3.patch")
- (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/inkscape/inkscape/commit/"
- "d047859d90cef3784e2d13e40887a70d8d517897.diff"))
- (file-name "inkscape-poppler-compat4.patch")
- (sha256
- (base32
- "0xdfg3q4g4m15z7wna4brjn5j4kr15qiqc2f25vcw2nnr6x54qcp")))
- (origin
- (method url-fetch)
- (uri (string-append "https://gitlab.com/inkscape/inkscape/commit/"
- "b3d59cc8106da3bf6020a6c47eeb3b8a7bbae1a9.diff"))
- (file-name "inkscape-poppler-compat5.patch")
- (sha256
- (base32
- "0haviy66q9szizmvb82msfj80bb3wgi1fnq3ml8fyfp8l90a1217")))))))
+ "0pjinhjibfsz1aywdpgpj3k23xrsszpj4a1ya5562dkv2yl2vv2p"))))
(build-system cmake-build-system)
(inputs
`(("aspell" ,aspell)
(lambda _
(substitute* "share/icons/application/CMakeLists.txt"
(("gtk-update-icon-cache") "true"))
+ #t))
+ (add-after 'unpack 'adjust-for-new-poppler
+ (lambda _
+ (substitute* (find-files "src/extension/internal/pdfinput")
+ ;; Needed for Poppler 0.82.
+ (("Unicode \\*u") "Unicode const *u")
+ ;; Needed for Poppler 0.83.
+ (("\\(GfxPath") "(const GfxPath")
+ (("GfxSubpath") "const GfxSubpath")
+ (("new GlobalParams\\(\\)")
+ "std::unique_ptr<GlobalParams>(new GlobalParams())")
+ (("new GlobalParams\\(poppler_datadir\\)")
+ "std::unique_ptr<GlobalParams>(new GlobalParams(poppler_datadir))"))
#t)))))
(home-page "https://inkscape.org/")
(synopsis "Vector graphics editor")
apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,
as the native format.")
(license license:gpl2+)))
+
+(define-public inkscape-1.0
+ (package
+ (name "inkscape")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://media.inkscape.org/dl/"
+ "resources/file/"
+ "inkscape-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1hjp5nnyx2m3miji6q4lcb6zgbi498v641dc7apkqqvayknrb4ng"))
+ (modules '((guix build utils)
+ (ice-9 format)))
+ (snippet
+ '(begin
+ (let-syntax
+ ;; XXX: The build system doesn't currently support using
+ ;; system libraries over bundled ones (see:
+ ;; https://gitlab.com/inkscape/inkscape/issues/876).
+ ((unbundle
+ (syntax-rules ()
+ ((_ (name source-dir use-pkg-config?) ...)
+ (begin
+ ;; Delete bundled source directories.
+ (delete-file-recursively source-dir) ...
+ (substitute* '("src/CMakeLists.txt"
+ "src/3rdparty/CMakeLists.txt")
+ (((string-append ".*add_subdirectory\\("
+ (basename source-dir) "\\).*"))
+ "") ...)
+ ;; Remove bundled entries from INKSCAPE_TARGET_LIBS.
+ (substitute* "src/CMakeLists.txt"
+ (((string-append name "_LIB.*")) "") ...)
+ ;; Register the external libraries, so that their
+ ;; headers are added to INKSCAPE_INCS_SYS and their
+ ;; shared libraries added to INKSCAPE_LIBS.
+ (if use-pkg-config?
+ (let* ((width (string-length "pkg_check_modules("))
+ (indent (string-join (make-list width " ") "")))
+ (substitute* "CMakeScripts/DefineDependsandFlags.cmake"
+ (("^pkg_check_modules\\(INKSCAPE_DEP REQUIRED.*" start)
+ (string-append start
+ (format #f "~a~a~%" indent name)))))
+ (substitute* "CMakeScripts/DefineDependsandFlags.cmake"
+ (("^find_package\\(Iconv REQUIRED\\).*" start)
+ (string-append (format #f "
+find_path(~a_INCLUDE_DIR NAMES ~:*~a/~:*~a.h ~:*~a.h)
+if(NOT ~:*~a_INCLUDE_DIR)
+ message(FATAL_ERROR \"~:*~a headers not found\")
+else()
+ list(APPEND INKSCAPE_INCS_SYS ${~:*~a_INCLUDE_DIR})
+endif()
+
+find_library(~:*~a_LIB NAMES ~:*~a)
+if(NOT ~:*~a_LIB)
+ message(FATAL_ERROR \"~:*~a library not found\")
+else()
+ list(APPEND INKSCAPE_LIBS ~:*~a_LIB)
+endif()~%~%"
+ name)
+ start)))) ...
+ ;; Fix the references to the headers of the
+ ;; unbundled libraries.
+ (substitute* (find-files "." "\\.h$|\\.cpp$")
+ (((string-append "#include (\"|<)3rdparty/"
+ (basename source-dir)) _ quote)
+ (string-append "#include " quote
+ (basename source-dir)))
+ ...))))))
+ (unbundle ("2geom" "src/2geom" #t)
+ ;; libcroco cannot be unbundled as it is heavily
+ ;; modified (see:
+ ;; https://gitlab.com/inkscape/inkscape/issues/876#note_276114904).
+ ;; ("croco" "src/3rdparty/libcroco" #t)
+ ;; FIXME: Unbundle the following libraries once they
+ ;; have been packaged.
+ ;; ("cola" "src/3rdparty/adaptagrams/libcola")
+ ;; ("avoid" "src/3rdparty/adaptagrams/libavoid")
+ ;; ("vpsc" "src/3rdparty/adaptagrams/libvpsc")
+ ;; libuemf cannot be unbundled as it slightly modified
+ ;; from upstream (see:
+ ;; https://gitlab.com/inkscape/inkscape/issues/973).
+ ;; ("uemf" "src/3rdparty/libuemf" #f)
+ ;; FIXME: libdepixelize upstream is ancient and doesn't
+ ;; build with a recent lib2geom
+ ;; (see: https://bugs.launchpad.net/libdepixelize/+bug/1862458).
+ ;;("depixelize" "src/3rdparty/libdepixelize")
+ ("autotrace" "src/3rdparty/autotrace" #t)))
+ ;; Lift the requirement on the double-conversion library, as
+ ;; it is only needed by lib2geom, which is now unbundled.
+ (substitute* "CMakeScripts/DefineDependsandFlags.cmake"
+ ((".*find_package\\(DoubleConversion.*") ""))
+ #t))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #t
+ #:test-target "check" ;otherwise some test binaries are missing
+ #:imported-modules (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-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 'patch-icon-cache-generator
+ (lambda _
+ (substitute* "share/icons/application/CMakeLists.txt"
+ (("gtk-update-icon-cache") "true"))
+ #t))
+ (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"))
+ #t))
+ (add-after 'unpack 'set-home
+ ;; Mute Inkscape warnings during tests.
+ (lambda _
+ (setenv "HOME" (getcwd))
+ (format #t "ARGS is set to: ~a" (getenv "ARGS"))
+ #t))
+ ;; 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")
+ `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))))
+ #t)))))
+ (inputs
+ `(("aspell" ,aspell)
+ ("autotrace" ,autotrace)
+ ("gdl" ,gdl-minimal)
+ ("gtkmm" ,gtkmm)
+ ("gtk" ,gtk+)
+ ("gtkspell3" ,gtkspell3)
+ ("gsl" ,gsl)
+ ("poppler" ,poppler)
+ ("lib2geom" ,lib2geom)
+ ("libjpeg" ,libjpeg-turbo)
+ ("libpng" ,libpng)
+ ("libxml2" ,libxml2)
+ ("libxslt" ,libxslt)
+ ("libgc" ,libgc)
+ ("libsoup" ,libsoup-minimal)
+ ("libcdr" ,libcdr)
+ ("libvisio" ,libvisio)
+ ("libwpd" ,libwpd)
+ ("libwpg" ,libwpg)
+ ("freetype" ,freetype)
+ ("popt" ,popt)
+ ("potrace" ,potrace)
+ ("lcms" ,lcms)
+ ("boost" ,boost)
+ ("python" ,python-wrapper)
+ ("python-scour" ,python-scour)
+ ("python-pyserial" ,python-pyserial)
+ ("python-numpy" ,python-numpy)
+ ("python-lxml" ,python-lxml)))
+ (native-inputs
+ `(("imagemagick" ,imagemagick) ;for tests
+ ("intltool" ,intltool)
+ ("glib" ,glib "bin")
+ ("googletest" ,googletest)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)))
+ (home-page "https://inkscape.org/")
+ (synopsis "Vector graphics editor")
+ (description "Inkscape is a vector graphics editor. What sets Inkscape
+apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,
+as the native format.")
+ (license license:gpl3+))) ;see the file COPYING