~ruther/guix-local

a3316166bccaa3ac68c81a2d60962694ed62b507 — Janneke Nieuwenhuizen 1 year, 10 months ago 922fe03
gnu: doc++: Fix build with gcc-14.

* gnu/packages/patches/doc++-gcc-14.patch: New fdile.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/documentation.scm (doc++)[source]: Use it.

Change-Id: Ifb388a5e45c1a4a5031b327e06de97774dc761a1
3 files changed, 191 insertions(+), 2 deletions(-)

M gnu/local.mk
M gnu/packages/documentation.scm
A gnu/packages/patches/doc++-gcc-14.patch
M gnu/local.mk => gnu/local.mk +1 -0
@@ 1197,6 1197,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/dicedb-remove-init-from-config-subpkg.patch	\
  %D%/packages/patches/directfb-davinci-glibc-228-compat.patch	\
  %D%/packages/patches/dkimproxy-add-ipv6-support.patch		\
  %D%/packages/patches/doc++-gcc-14.patch			\
  %D%/packages/patches/docbook-utils-documentation-edits.patch	\
  %D%/packages/patches/docbook-utils-escape-characters.patch	\
  %D%/packages/patches/docbook-utils-remove-jade-sp.patch	\

M gnu/packages/documentation.scm => gnu/packages/documentation.scm +3 -2
@@ 12,7 12,7 @@
;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2022 Maxim Cournoyer <maxim.counoyer@gmail.com>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023, 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024 Felix Gruber <felgru@posteo.net>
;;;
;;; This file is part of GNU Guix.


@@ 280,7 280,8 @@ output is not available.")
               (base32
                "0i37zlxl8g352s4hzpdx0657k5x3czh3xcsfr27irc708gb277pn"))
              (patches (search-patches "doc++-include-directives.patch"
                                       "doc++-segfault-fix.patch"))))
                                       "doc++-segfault-fix.patch"
                                       "doc++-gcc-14.patch"))))
    (build-system gnu-build-system)
    (native-inputs
     (list flex gettext-minimal))

A gnu/packages/patches/doc++-gcc-14.patch => gnu/packages/patches/doc++-gcc-14.patch +187 -0
@@ 0,0 1,187 @@
Upstream-status: Not presented upstream.

--- doc++-3.4.10/src/doc2dbxml.ll.orig	2025-01-02 19:35:28.284584323 +0100
+++ doc++-3.4.10/src/doc2dbxml.ll	2025-01-02 19:36:30.316732013 +0100
@@ -57,8 +57,8 @@
 static int	skip          = 0;
 static int	tab           = 0;
 static int	yyLineNr      = 0;
-static Entry*	ref           = 0;
-static Entry*	noref         = ref + 1;
+static Entry*	g_ref    = 0;
+static Entry*	noref         = g_ref + 1;
 static char	yyFileName[264];
 static bool		mathmode      = false;
 static int	tabFlag	      = 0;
@@ -147,28 +147,28 @@
 			}
 
 <Ref>[^}]*		{
-			if(ref == 0)
+			if(g_ref == 0)
 			    {
 			    McString tmp = yytext;
-			    ref = getRefEntry(tmp, current);
+			    g_ref = getRefEntry(tmp, current);
 			    }
 			REJECT;
 			}
 
 <Ref>"}"		{
-			if(ref && ref != noref)
+			if(g_ref && g_ref != noref)
 			    {
 			    fprintf(out, " ($\\rightarrow$ ");
-			    if(MAKE_DOC(ref))
+			    if(MAKE_DOC(g_ref))
 				{
-				ref->dumpNumber(out);
+				g_ref->dumpNumber(out);
 				fprintf(out, ",");
 				}
 			    fprintf(out, " {\\em page }\\pageref{cxx.");
-			    ref->dumpNumber(out);
+			    g_ref->dumpNumber(out);
 			    fprintf(out, "})");
 			    }
-			ref = 0;
+			g_ref = 0;
 			BEGIN(0);
 			}
 
--- doc++-3.4.10/src/doc2dbsgml.ll.orig	2025-01-02 19:39:08.061103757 +0100
+++ doc++-3.4.10/src/doc2dbsgml.ll	2025-01-02 19:39:52.201206812 +0100
@@ -54,8 +54,8 @@
 static int	skip          = 0;
 static int	tab           = 0;
 static int	yyLineNr      = 0;
-static Entry*	ref           = 0;
-static Entry*	noref         = ref + 1;
+static Entry*	g_ref           = 0;
+static Entry*	noref         = g_ref + 1;
 static char	yyFileName[264];
 static bool		mathmode      = false;
 static int	tabFlag	      = 0;
@@ -144,28 +144,28 @@
 			}
 
 <Ref>[^}]*		{
-			if(ref == 0)
+			if(g_ref == 0)
 			    {
 			    McString tmp = yytext;
-			    ref = getRefEntry(tmp, current);
+			    g_ref = getRefEntry(tmp, current);
 			    }
 			REJECT;
 			}
 
 <Ref>"}"		{
-			if(ref && ref != noref)
+			if(g_ref && g_ref != noref)
 			    {
 			    fprintf(out, " ($\\rightarrow$ ");
-			    if(MAKE_DOC(ref))
+			    if(MAKE_DOC(g_ref))
 				{
-				ref->dumpNumber(out);
+				g_ref->dumpNumber(out);
 				fprintf(out, ",");
 				}
 			    fprintf(out, " {\\em page }\\pageref{cxx.");
-			    ref->dumpNumber(out);
+			    g_ref->dumpNumber(out);
 			    fprintf(out, "})");
 			    }
-			ref = 0;
+			g_ref = 0;
 			BEGIN(0);
 			}
 
--- doc++-3.4.10/src/doc2tex.ll.orig	2025-01-02 19:40:11.785252404 +0100
+++ doc++-3.4.10/src/doc2tex.ll	2025-01-02 19:40:39.181316047 +0100
@@ -59,8 +59,8 @@
 static int	yyLineNr	= 0;
 static int	texBracketCount	= 0;
 static McString	refStr		= "";
-static Entry*	ref		= 0;
-static Entry*	noref		= ref + 1;
+static Entry*	g_ref		= 0;
+static Entry*	noref		= g_ref + 1;
 static char	yyFileName[264];
 bool		mathmode	= false;
 static int	tabFlag		= 0;
@@ -186,30 +186,30 @@
 			}
 
 <Ref>[^}]*		{
-			if(ref == 0)
+			if(g_ref == 0)
 			    {
 			    refStr = McString(yytext, 0, yyleng - 2);
-			    ref = getRefEntry(refStr, current);
+			    g_ref = getRefEntry(refStr, current);
 			    }
 			REJECT;
 			}
 
 <Ref>"}"		{
-			if(ref && ref != noref)
+			if(g_ref && g_ref != noref)
 			    {
 			    fprintf(out, " ($\\rightarrow$ ");
-			    if(MAKE_DOC(ref))
+			    if(MAKE_DOC(g_ref))
 				{
-				ref->dumpNumber(out);
+				g_ref->dumpNumber(out);
 				fprintf(out, ",");
 				}
 			    fprintf(out, " {\\em page }\\pageref{cxx.");
-			    ref->dumpNumber(out);
+			    g_ref->dumpNumber(out);
 			    fprintf(out, "})");
 			    }
 			else
 			    fprintf(out, refStr.c_str());
-			ref = 0;
+			g_ref = 0;
 			refStr.clear();
 			BEGIN(0);
 			}
@@ -246,28 +246,28 @@
 			}
 
 <Link>[^ ]*		{
-			if(ref == 0)
+			if(g_ref == 0)
 			    {
 			    McString tmp = yytext;
-			    ref = getRefEntry(tmp, current);
+			    g_ref = getRefEntry(tmp, current);
 			    }
 			REJECT;
 			}
 
 <Link>"}"		{
-			if(ref && ref != noref)
+			if(g_ref && g_ref != noref)
 			    {
 			    fprintf(out, " ($\\rightarrow$ ");
-			    if(MAKE_DOC(ref))
+			    if(MAKE_DOC(g_ref))
 				{
-				ref->dumpNumber(out);
+				g_ref->dumpNumber(out);
 				fprintf(out, ",");
 				}
 			    fprintf(out, " {\\em page }\\pageref{cxx.");
-			    ref->dumpNumber(out);
+			    g_ref->dumpNumber(out);
 			    fprintf(out, "})");
 			    }
-			ref = 0;
+			g_ref = 0;
 			BEGIN(0);
 			}