From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: 41118@debbugs.gnu.org
Cc: Leo Famulari <leo@famulari.name>
Subject: [bug#41118] [PATCH V2] gnu: inkscape: Update to 1.0.
Date: Thu, 07 May 2020 00:37:35 -0400 [thread overview]
Message-ID: <87wo5oz7g0.fsf@gmail.com> (raw)
In-Reply-To: <87y2q41l9d.fsf@gmail.com> (Maxim Cournoyer's message of "Wed, 06 May 2020 23:23:10 -0400")
[-- Attachment #1: Type: text/plain, Size: 213 bytes --]
Hi again,
Here's a v2 for the Inkscape 1.0 patch. It adds a couple optional
dependencies that are nice to have. Thanks to Nicolò Balzarotti who
shared another Inkscape 1.0 patch on guix-devel.
Maxim
[-- Attachment #2: 0013_V2-gnu-inkscape-Update-to-1.0.patch --]
[-- Type: text/x-patch, Size: 14957 bytes --]
From 30e39891c1e502bc325ce3d853d91238f5f61ca7 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Mon, 6 Jan 2020 16:37:44 -0500
Subject: [PATCH] gnu: inkscape: Update to 1.0.
* gnu/packages/inkscape.scm (inkscape)[version]: Update to 1.0.
[origin]: Remove the obsolete Poppler patch. Add a macro to remove bundled
libraries where possible.
[inputs]: Upgrade gtk+-2 and gtkmm-2 to their current version. Add autotrace,
gdl-minimal, lib2geom, libjpeg, libsoup, gtkspell3, libcdr, libwpd, libwpg and
libvisio. Upgrade python-2 to its current version, and move it...
[native-inputs]: ...here. Add imagemagick and googletest.
[arguments]: Enable tests, specifying the test target as "check". Move the
check phase after the install phase. Remove the obsoleted
adjust-for-new-poppler phase. Add a set-home phase to quiet Inkscape
warnings. Add a disable-latex-export-tests phase to skip failing tests.
[license]: Change to GPLv3+, although upstream says GPLv2+, due to an
unresolved license incompatibility when building with the external lib2geom
library.
* gnu/packages/patches/inkscape-poppler-0.76.patch: Delete file.
* gnu/local.mk: Unregister it.
---
gnu/local.mk | 1 -
gnu/packages/inkscape.scm | 193 ++++++++++++++----
.../patches/inkscape-poppler-0.76.patch | 36 ----
3 files changed, 154 insertions(+), 76 deletions(-)
delete mode 100644 gnu/packages/patches/inkscape-poppler-0.76.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 86efba5d2d..da8ac7c130 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1089,7 +1089,6 @@ dist_patch_DATA = \
%D%/packages/patches/ilmbase-fix-tests.patch \
%D%/packages/patches/ilmbase-openexr-pkg-config.patch \
%D%/packages/patches/inetutils-hurd.patch \
- %D%/packages/patches/inkscape-poppler-0.76.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 26d4642547..65d6e5687b 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,8 +31,13 @@
#: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)
@@ -46,64 +52,173 @@
(define-public inkscape
(package
(name "inkscape")
- (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
- "0pjinhjibfsz1aywdpgpj3k23xrsszpj4a1ya5562dkv2yl2vv2p"))))
+ (version "1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://media.inkscape.org/dl/"
+ "resources/file/"
+ "inkscape-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1fwl7yjkykqb86555k4fm24inhc40mrvxqwgl2v2vi9alv8j7hc9"))
+ (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
+ #: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)))))
(inputs
`(("aspell" ,aspell)
- ("gtkmm" ,gtkmm-2)
- ("gtk" ,gtk+-2)
+ ("autotrace" ,autotrace)
+ ("gdl" ,gdl-minimal)
+ ("gtkmm" ,gtkmm)
+ ("gtk" ,gtk+)
+ ("gtkspell3" ,gtkspell3)
("gsl" ,gsl)
("poppler" ,poppler)
+ ;;("libcroco" ,libcroco) ;see comment in origin snippet above
+ ("lib2geom" ,lib2geom)
+ ;; ("libdepixelize" ,libdepixelize) ;build is currently broken
+ ("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
+ ;;("libuemf" ,libuemf) ;see comment in origin snippet above
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("libgc" ,libgc)
+ ("libsoup" ,libsoup-minimal)
+ ("libcdr" ,libcdr)
+ ("libvisio" ,libvisio)
+ ("libwpd" ,libwpd)
+ ("libwpg" ,libwpg)
("freetype" ,freetype)
("popt" ,popt)
("potrace" ,potrace)
- ("python" ,python-2)
("lcms" ,lcms)
("boost" ,boost)))
(native-inputs
- `(("intltool" ,intltool)
+ `(("imagemagick" ,imagemagick) ;for tests
+ ("intltool" ,intltool)
("glib" ,glib "bin")
+ ("googletest" ,googletest)
("perl" ,perl)
- ("pkg-config" ,pkg-config)))
- ;; FIXME: tests require gmock
- (arguments
- `(#:tests? #f
- #: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 '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)))))
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-wrapper)))
(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:gpl2+)))
+ ;; The external, unbundled lib2geom library effective license is GPLv3+,
+ ;; given it links against the GNU Scientific Library, which in turn means
+ ;; that the license of Inkscape should also be GPLv3+, when built this way
+ ;; (see: https://gitlab.com/inkscape/inkscape/issues/784).
+ (license license:gpl3+)))
diff --git a/gnu/packages/patches/inkscape-poppler-0.76.patch b/gnu/packages/patches/inkscape-poppler-0.76.patch
deleted file mode 100644
index 08e8303892..0000000000
--- a/gnu/packages/patches/inkscape-poppler-0.76.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-This patch adds support for Poppler 0.76 and later.
-
-Taken from upstream:
-<https://gitlab.com/inkscape/inkscape/commit/e831b034746f8dc3c3c1b88372751f6dcb974831>
-
-diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
-index 8484984bdf..4f798e35bf 100644
---- a/src/extension/internal/pdfinput/pdf-parser.cpp
-+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
-@@ -421,7 +421,7 @@ void PdfParser::parse(Object *obj, GBool topLevel) {
- error(errInternal, -1, "Weird page contents");
- return;
- }
-- parser = new Parser(xref, new Lexer(xref, obj), gFalse);
-+ parser = new _POPPLER_NEW_PARSER(xref, obj);
- go(topLevel);
- delete parser;
- parser = nullptr;
-diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
-index 61a15083a0..5e8bc4ae90 100644
---- a/src/extension/internal/pdfinput/poppler-transition-api.h
-+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
-@@ -14,6 +14,13 @@
-
- #include <glib/poppler-features.h>
-
-+#if POPPLER_CHECK_VERSION(0, 76, 0)
-+#define _POPPLER_NEW_PARSER(xref, obj) Parser(xref, obj, gFalse)
-+#else
-+#define _POPPLER_NEW_PARSER(xref, obj) Parser(xref, new Lexer(xref, obj), gFalse)
-+#endif
-+
-+
- #if POPPLER_CHECK_VERSION(0, 72, 0)
- #define getCString c_str
- #endif
--
2.26.2
next prev parent reply other threads:[~2020-05-07 4:39 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-07 3:23 [bug#41118] [PATCH] gnu: inkscape: Update to 1.0 Maxim Cournoyer
2020-05-07 4:37 ` Maxim Cournoyer [this message]
2020-05-07 15:20 ` Leo Famulari
2020-05-15 13:36 ` Maxim Cournoyer
2020-05-15 14:43 ` Leo Famulari
2020-05-16 3:53 ` Maxim Cournoyer
2020-05-16 11:05 ` Marius Bakke
2020-05-16 18:59 ` Maxim Cournoyer
2020-05-07 15:27 ` Leo Famulari
2020-05-07 15:30 ` Leo Famulari
2020-05-28 3:34 ` Maxim Cournoyer
2020-05-28 13:39 ` Leo Famulari
2020-06-01 3:14 ` bug#41118: " Maxim Cournoyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wo5oz7g0.fsf@gmail.com \
--to=maxim.cournoyer@gmail.com \
--cc=41118@debbugs.gnu.org \
--cc=leo@famulari.name \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).