Subject: [PATCH 2/2] gnu: transfig: Fix "multiple definition" errors with GCC 10+.

From: Ivan Vilata i Balaguer <[email-masked]>
Date: Mon, 7 Mar 2022 00:47:32 +0100

* gnu/packages/patches/transfig-gcc10-fno-common.patch: New patch.
* gnu/packages/xfig.scm (transfig)[source]<origin>: Use patch
"transfig-gcc10-fno-common.patch" to avoid "multiple definition" errors with
GCC 10+ and "-f-no-common".
---
 .../patches/transfig-gcc10-fno-common.patch   | 33 +++++++++++++++++++
 gnu/packages/xfig.scm                         |  5 ++-
 2 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/transfig-gcc10-fno-common.patch

diff --git a/gnu/packages/patches/transfig-gcc10-fno-common.patch b/gnu/packages/patches/transfig-gcc10-fno-common.patch
new file mode 100644
index 0000000000..ebe9236533
--- /dev/null
+++ b/gnu/packages/patches/transfig-gcc10-fno-common.patch
@@ -0,0 +1,33 @@
+Fixes "multiple definition" errors when building with GCC 10+.
+
+Based on <https://bugs.gentoo.org/show_bug.cgi?id=706706>.
+--- a/fig2dev/dev/gensvg.c	2010-07-01 22:41:16.000000000 +0200
++++ b/fig2dev/dev/gensvg.c	2022-02-27 20:02:33.379945500 +0100
+@@ -230,10 +230,12 @@
+ };
+ 
+ /* arrowhead arrays */
+-Point   points[50], fillpoints[50], clippoints[50];
+-int     npoints, nfillpoints, nclippoints;
+-int     arrowx1, arrowy1;	/* first point of object */
+-int     arrowx2, arrowy2;	/* second point of object */
++Point   fillpoints[50];
++int     nfillpoints;
++extern Point   points[50], clippoints[50];
++extern int     npoints, nclippoints;
++extern int     arrowx1, arrowy1;	/* first point of object */
++extern int     arrowx2, arrowy2;	/* second point of object */
+ 
+ static int tileno=0; /* number of current tile */ 
+ 
+--- a/fig2dev/fig2dev.h	2010-03-16 19:53:20.000000000 +0100
++++ b/fig2dev/fig2dev.h	2022-02-27 19:56:06.072253991 +0100
+@@ -126,7 +126,7 @@
+ extern char	*prog, *from, *to;
+ extern char	*name;
+ extern double	font_size;
+-Boolean	correct_font_size;	/* use correct font size */
++extern Boolean	correct_font_size;	/* use correct font size */
+ extern double	mag, fontmag;
+ extern FILE	*tfp;
+ 
diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm
index ad2f701ff1..1d4d17527c 100644
--- a/gnu/packages/xfig.scm
+++ b/gnu/packages/xfig.scm
@@ -86,7 +86,10 @@ (define-public transfig
                            version ".tar.gz"))
        (sha256
         (base32
-         "0i3p7qmg2w8qrad3pn42b0miwarql7yy0gpd49b1bpal6bqsiicf"))))
+         "0i3p7qmg2w8qrad3pn42b0miwarql7yy0gpd49b1bpal6bqsiicf"))
+       (patches
+        (search-patches
+         "transfig-gcc10-fno-common.patch")))) ; fix GCC10 build
     (build-system gnu-build-system)
     (native-inputs
      (list imake makedepend))
-- 
2.34.0

-- 
Ivan Vilata i Balaguer -- https://elvil.net/