Subject: [core-updates PATCH 09/20] gnu: pstoedit: Update to 4.00.

From: Maxim Cournoyer <[email-masked]>
Date: Thu, 22 Feb 2024 11:10:08 -0500

* gnu/packages/graphics.scm (pstoedit): Update to 4.00.
[source]: Apply patches.
[arguments]: New field.
[inputs]: Remove labels.  Add glib and pango.
* gnu/packages/patches/pstoedit-fix-gcc12.patch: New file.
* gnu/packages/patches/pstoedit-fix-plainC.patch: Likewise.
* gnu/packages/patches/pstoedit-pkglibdir.patch: Likewise.
* gnu/local.mk (dist_patch_DATA): Register them.

Change-Id: Ia17dae0ebc3e08b573b02431b10cc689a72a07dd
---

 gnu/local.mk                                  |  3 ++
 gnu/packages/graphics.scm                     | 31 ++++++++----
 gnu/packages/patches/pstoedit-fix-gcc12.patch | 12 +++++
 .../patches/pstoedit-fix-plainC.patch         | 47 +++++++++++++++++++
 gnu/packages/patches/pstoedit-pkglibdir.patch | 19 ++++++++
 5 files changed, 104 insertions(+), 8 deletions(-)
 create mode 100644 gnu/packages/patches/pstoedit-fix-gcc12.patch
 create mode 100644 gnu/packages/patches/pstoedit-fix-plainC.patch
 create mode 100644 gnu/packages/patches/pstoedit-pkglibdir.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 34cdf6564d..9db2e39c45 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1908,6 +1908,9 @@ dist_patch_DATA =						\
   %D%/packages/patches/psm-disable-memory-stats.patch		\
   %D%/packages/patches/psm-ldflags.patch			\
   %D%/packages/patches/psm-repro.patch				\
+  %D%/packages/patches/pstoedit-fix-gcc12.patch			\
+  %D%/packages/patches/pstoedit-fix-plainC.patch		\
+  %D%/packages/patches/pstoedit-pkglibdir.patch			\
   %D%/packages/patches/pulseaudio-fix-mult-test.patch		\
   %D%/packages/patches/pulseaudio-longer-test-timeout.patch	\
   %D%/packages/patches/pulseview-qt515-compat.patch		\
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index e04834670d..17a388beea 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -21,7 +21,7 @@
 ;;; Copyright © 2020 Jakub Kądziołka <[email-masked]>
 ;;; Copyright © 2020, 2021 Nicolas Goaziou <[email-masked]>
 ;;; Copyright © 2020 Raghav Gururajan <[email-masked]>
-;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <[email-masked]>
 ;;; Copyright © 2020 Gabriel Arazas <[email-masked]>
 ;;; Copyright © 2021 Antoine Côté <[email-masked]>
 ;;; Copyright © 2021 Andy Tai <[email-masked]>
@@ -976,23 +976,38 @@ (define-public python-booleanoperations
 (define-public pstoedit
   (package
     (name "pstoedit")
-    (version "3.77")
+    ;; Do not yet upgrade to 4.0.0, as its include file fails to compile for C
+    ;; project (see: https://github.com/reviczky/pstoedit/issues/2).
+    (version "4.00")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/pstoedit/pstoedit/"
                                   version "/pstoedit-" version ".tar.gz"))
               (sha256
                (base32
-                "02av76j75g5sq3bg353yl6dlllda9ihmmk4c8hvgiscix816nv4s"))))
+                "1sk2mhrjgnlz4a1650p3qxrv6av6qc66ibmy48ckspx7mfp7snh7"))
+              (patches
+               (search-patches "pstoedit-fix-gcc12.patch"
+                               "pstoedit-fix-plainC.patch"
+                               "pstoedit-pkglibdir.patch"))))
     (build-system gnu-build-system)
+    (arguments
+     ;; Avoid keeping extraneous references to libtool exhaustively listed
+     ;; dependencies.
+     (list #:configure-flags #~(list "LDFLAGS=-Wl,--as-needed")))
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("ghostscript" ,ghostscript)
-       ("imagemagick" ,imagemagick)
-       ("libplot" ,plotutils)
-       ("libjpeg" ,libjpeg-turbo)
-       ("zlib" ,zlib)))               ;else libp2edrvmagick++.so fails to link
+     (list ghostscript
+           imagemagick
+           plotutils
+           libjpeg-turbo
+           libzip
+           ;; The following inputs are pulled in by libtool, from the
+           ;; imagemagick library files (.la), which records all its
+           ;; transitive dependencies.
+           glib
+           pango))
     (home-page "http://www.pstoedit.net/")
     (synopsis "Converter for PostScript and PDF graphics")
     (description "The @code{pstoedit} utility allows translating graphics
diff --git a/gnu/packages/patches/pstoedit-fix-gcc12.patch b/gnu/packages/patches/pstoedit-fix-gcc12.patch
new file mode 100644
index 0000000000..4aeeaff818
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-fix-gcc12.patch
@@ -0,0 +1,12 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+--- a/src/drvpptx.orig.cpp	2021-08-29 16:25:45.000000000 +0200
++++ b/src/drvpptx.cpp	2022-01-28 11:57:44.765756339 +0100
+@@ -65,6 +65,7 @@
+ #define ZIP_EXTERN extern
+ 
+ #include <zip.h>
++#include <memory>
+ 
+ #ifdef _MSC_VER
+ // MS VC++ Windows
diff --git a/gnu/packages/patches/pstoedit-fix-plainC.patch b/gnu/packages/patches/pstoedit-fix-plainC.patch
new file mode 100644
index 0000000000..684c5043be
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-fix-plainC.patch
@@ -0,0 +1,47 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+diff --git a/src/pstoedit.cpp b/src/pstoedit.cpp
+index a718f37..ac0df37 100755
+--- a/src/pstoedit.cpp
++++ b/src/pstoedit.cpp
+@@ -327,6 +327,11 @@ extern FILE *yyin;				// used by lexer
+ 						// otherwise we could declare it locally where it is used
+ 
+ 
++extern "C" DLLEXPORT void loadpstoeditplugins_plainC(const char *progname, int verbose)
++{
++  return loadpstoeditplugins(progname, cerr, (bool) verbose);
++}
++
+ static void usage(ostream & outstream, bool forTeX, bool withdetails, bool withcategories )
+ {
+ 	if (withcategories) {
+diff --git a/src/pstoedit.h b/src/pstoedit.h
+index 294b3c2..74ebf2a 100755
+--- a/src/pstoedit.h
++++ b/src/pstoedit.h
+@@ -100,8 +100,13 @@ void clearPstoeditDriverInfo_plainC(struct DriverDescription_S * ptr);
+ 
+ #ifdef __cplusplus
+ extern "C" DLLEXPORT
+-#endif
+ void loadpstoeditplugins(const char* progname, std::ostream & errstream, bool verbose);
++#endif
++
++#ifdef __cplusplus
++extern "C" DLLEXPORT
++#endif
++void loadpstoeditplugins_plainC(const char* progname, int verbose);
+ 
+ #ifdef __cplusplus
+ extern "C" DLLEXPORT
+--- a/src/pstoedit.orig.h	2023-07-22 19:27:43.691166652 +0200
++++ b/src/pstoedit.h	2023-07-22 19:31:18.897952130 +0200
+@@ -37,6 +37,7 @@
+ #endif
+ 
+ #include "pstoedll.h"
++#include <stdbool.h>
+ 
+ typedef int (*execute_interpreter_function)(int argc, const char * const argv[]);
+ 
diff --git a/gnu/packages/patches/pstoedit-pkglibdir.patch b/gnu/packages/patches/pstoedit-pkglibdir.patch
new file mode 100644
index 0000000000..0734913593
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-pkglibdir.patch
@@ -0,0 +1,19 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+--- a/config/pstoedit.pc.orig.in	2018-04-16 14:26:28.000000000 +0200
++++ b/config/pstoedit.pc.in	2020-10-05 14:37:16.750980762 +0200
+@@ -1,7 +1,7 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+-includedir=@includedir@
++includedir=@includedir@/pstoedit
+ 
+ Name: pstoedit
+ Description: converts PostScript(TM) and PDF files to other vector graphic formats
+@@ -8,4 +8,4 @@
+ Version: @VERSION@.0
+ Requires: 
+ Libs: -L@libdir@ -lpstoedit @CXX_STD_LIB@ @CXX_RUNTIME_LIB@ @LIBLD_LDFLAGS@
+-Cflags: -I@includedir@
++Cflags: -I@includedir@/pstoedit
-- 
2.41.0