diff mbox series

[bug#65479,core-updates,v2,07/62] gnu: docbook-utils: Import patches from debian.

Message ID dd229d3a7357a415c0670e9591ad8c74821b60cb.1695478390.git.mirai@makinata.eu
State New
Headers show
Series Docbook & XML/SGML improvements. | expand

Commit Message

Bruno Victal Sept. 23, 2023, 2:19 p.m. UTC
* gnu/packages/docbook.scm (docbook-utils)[source]: Import patches from debian.
Drop snippet for patching OpenSP and OpenJade.
[arguments]<:phases>: Add 'autoreconf phase.
[native-inputs]: Add autoconf, automake and libtool.
* gnu/packages/patches/docbook-utils-documentation-edits.patch: New file.
* gnu/packages/patches/docbook-utils-escape-characters.patch: Ditto.
* gnu/packages/patches/docbook-utils-remove-jade-sp.patch: Ditto.
* gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch: Ditto.
* gnu/packages/patches/docbook-utils-source-date-epoch.patch: Ditto.
* gnu/packages/patches/docbook-utils-use-date-element.patch: Ditto.
* gnu/local.mk: Register them.
---
 gnu/local.mk                                  |   6 +
 gnu/packages/docbook.scm                      |  24 +-
 .../docbook-utils-documentation-edits.patch   | 100 ++++++++
 .../docbook-utils-escape-characters.patch     |  34 +++
 .../docbook-utils-remove-jade-sp.patch        | 215 ++++++++++++++++++
 ...book-utils-respect-refentry-for-name.patch |  34 +++
 .../docbook-utils-source-date-epoch.patch     |  29 +++
 .../docbook-utils-use-date-element.patch      |  61 +++++
 8 files changed, 496 insertions(+), 7 deletions(-)
 create mode 100644 gnu/packages/patches/docbook-utils-documentation-edits.patch
 create mode 100644 gnu/packages/patches/docbook-utils-escape-characters.patch
 create mode 100644 gnu/packages/patches/docbook-utils-remove-jade-sp.patch
 create mode 100644 gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch
 create mode 100644 gnu/packages/patches/docbook-utils-source-date-epoch.patch
 create mode 100644 gnu/packages/patches/docbook-utils-use-date-element.patch
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index c399a94e6b..ea923be41d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1070,6 +1070,12 @@  dist_patch_DATA =						\
   %D%/packages/patches/diffutils-fix-signal-processing.patch	\
   %D%/packages/patches/directfb-davinci-glibc-228-compat.patch	\
   %D%/packages/patches/dkimproxy-add-ipv6-support.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	\
+  %D%/packages/patches/docbook-utils-respect-refentry-for-name.patch	\
+  %D%/packages/patches/docbook-utils-source-date-epoch.patch	\
+  %D%/packages/patches/docbook-utils-use-date-element.patch	\
   %D%/packages/patches/doc++-include-directives.patch		\
   %D%/packages/patches/doc++-segfault-fix.patch			\
   %D%/packages/patches/dovecot-opensslv3.patch			\
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 47d3a04479..994aa57f18 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -773,18 +773,20 @@  (define-public docbook-utils
               (sha256
                (base32
                 "1scj5vgw1xz872pq54a89blcxqqm11p90yzv8a9mqq57x27apyj8"))
+              (patches
+               (search-patches "docbook-utils-documentation-edits.patch"
+                               "docbook-utils-escape-characters.patch"
+                               "docbook-utils-remove-jade-sp.patch"
+                               "docbook-utils-respect-refentry-for-name.patch"
+                               "docbook-utils-use-date-element.patch"
+                               "docbook-utils-source-date-epoch.patch"))
               (modules '((guix build utils)))
               (snippet
                #~(begin
                    ;; Patch build system.
-                   (substitute* (find-files "." "\\.in$")
+                   (substitute* (find-files "." "\\.((in)|(am))$")
                      ;; Do not hard-code SGML_CATALOG_FILES.
-                     ((".*SGML_CATALOG_FILES=/etc/sgml/catalog.*") "")
-                     ;; Use OpenSP and OpenJade.
-                     (("\\bjade\\b")
-                      "openjade")
-                     (("\\bnsgmls\\b")
-                      "onsgmls"))
+                     ((".*SGML_CATALOG_FILES=/etc/sgml/catalog.*") ""))
 
                    ;; Do not override the SGML_CATALOG_FILES environment
                    ;; variable.
@@ -805,6 +807,14 @@  (define-public docbook-utils
                       "CONVERT=")
                      (("\\[ -x /usr/bin/([^ ]+) \\]" _ command)
                       (format #f "command -v ~a > /dev/null" command)))))))
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'autoreconf
+            (lambda _
+              (invoke "autoreconf" "-vif"))))))
+    (native-inputs (list autoconf automake libtool))
     (build-system gnu-build-system)
     ;; Propagated for convenience.  All these tools are used at run time to
     ;; provide the complete functionality of the docbook-utils commands.
diff --git a/gnu/packages/patches/docbook-utils-documentation-edits.patch b/gnu/packages/patches/docbook-utils-documentation-edits.patch
new file mode 100644
index 0000000000..03c0a4abcf
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-documentation-edits.patch
@@ -0,0 +1,100 @@ 
+Description: Fix some typos in man pages
+Author: Mathieu Malaterre <malat@debian.org>
+
+Index: docbook-utils-0.6.14/doc/man/docbook2man-spec.pl.1
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/docbook2man-spec.pl.1	2012-05-09 18:39:17.932819095 +0200
++++ docbook-utils-0.6.14/doc/man/docbook2man-spec.pl.1	2012-05-09 18:39:24.780818845 +0200
+@@ -17,7 +17,7 @@
+ .SH "DESCRIPTION"
+ .PP
+ \fBdocbook2man\fR is a sgmlspl spec file that produced man
+-pages (using the -man macros) from DocBook RefEntry markup.
++pages (using the \-man macros) from DocBook RefEntry markup.
+ .PP
+ The program reads ESIS produced by nsgmls (or other SGML parsers) from
+ standard input.  Markup not found in RefEntry is discarded.
+Index: docbook-utils-0.6.14/doc/man/frontend-spec.7
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/frontend-spec.7	2012-05-09 18:41:45.172813778 +0200
++++ docbook-utils-0.6.14/doc/man/frontend-spec.7	2012-05-09 18:42:03.176813129 +0200
+@@ -10,7 +10,7 @@
+ .SH "DESCRIPTION"
+ .PP
+ \fBjw\fR(1) calls frontends like
+-\fIfrontends/docbook\fR to get the informations
++\fIfrontends/docbook\fR to get the information
+ specific to a given input format. The frontend knows which information
+ to return from the first command line parameter. It gets all necessary
+ data via environment variables ready to use.
+Index: docbook-utils-0.6.14/doc/man/jw.1
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/jw.1	2012-05-09 18:39:35.612818456 +0200
++++ docbook-utils-0.6.14/doc/man/jw.1	2012-05-09 18:40:51.736815708 +0200
+@@ -142,7 +142,7 @@
+ The following options apply to the conversion script:
+ .TP
+ \fB   -f \fIfrontend\fB | --frontend \fIfrontend\fB  \fR
+-Allows to specify another frontend than default \fIdocbook\fR\&.
++Allows one to specify another frontend than default \fIdocbook\fR\&.
+ The list of currently available frontends is:
+ .RS
+ .TP
+@@ -156,13 +156,13 @@
+ .RE
+ .TP
+ \fB   -b \fIbackend\fB | --backend \fIbackend\fB  \fR
+-Allows to specify another backend than default
++Allows one to specify another backend than default
+ \fIHTML\fR\&. The list of currently available
+ backends is:
+ .RS
+ .TP
+ \fB\fIdvi\fB\fR
+-Converts to DVI (DeVice Independant
++Converts to DVI (DeVice Independent
+ files) by calling \fBJade\fR or
+ \fBOpenJade\fR\&.
+ .TP
+@@ -210,7 +210,7 @@
+ .RE
+ .TP
+ \fB   -c \fIfile\fB | --cat \fIfile\fB  \fR
+-Allows to use an extra SGML Open Catalog that will list
++Allows one to use an extra SGML Open Catalog that will list
+ other files like customization style sheets, adaptations to the
+ DocBook Document Type Definition, special character entities,
+ etc. This catalog is added to the list of catalogs determined
+@@ -241,7 +241,7 @@
+ are specified on the command line.
+ .TP
+ \fB   -d \fIfile\fB|default|none | --dsl \fIfile\fB|default|none  \fR
+-Allows to use a customized style sheet instead
++Allows one to use a customized style sheet instead
+ of the default one.
+ 
+ A "target" starting with a hash mark "#" can be appended
+Index: docbook-utils-0.6.14/doc/man/sgmldiff.1
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/sgmldiff.1	2012-05-09 18:41:13.316814927 +0200
++++ docbook-utils-0.6.14/doc/man/sgmldiff.1	2012-05-09 18:41:38.032814038 +0200
+@@ -17,7 +17,7 @@
+ 
+ .SH "DESCRIPTION"
+ .PP
+-This perl script allows to determine the structural differences
++This perl script allows one to determine the structural differences
+ between two SGML files. It compares the files, regardless of what
+ is in between the tags, to only focus on the markup. Its output
+ is similar to \fBdiff\fR(1)\&.
+@@ -62,8 +62,8 @@
+ Lines 5 to 7 of the first file have been changed
+ into lines 8 to 10 of the second line.
+ In addition to those summaries, the lines of the first file are
+-shown preceeded by '<' and the lines of the second file are
+-shown preceeded by '>".
++shown preceded by '<' and the lines of the second file are
++shown preceded by '>".
+ .SH "OPTIONS"
+ .PP
+ Here is the list of actions that can be requested to
diff --git a/gnu/packages/patches/docbook-utils-escape-characters.patch b/gnu/packages/patches/docbook-utils-escape-characters.patch
new file mode 100644
index 0000000000..58fca8bace
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-escape-characters.patch
@@ -0,0 +1,34 @@ 
+Description: incorrectly strips whitespace (patch included)
+ In the previous upload, docbook2man was patched to escape the special
+ characters . and ' at the beginning of a line (see #399947).
+ Unfortunately that patch was incorrect -- as well as escaping the special
+ characters, it also removes all whitespace from the beginning of
+ affected lines.  As a result, if you are in a block where whitespace
+ matters (such as <screen>...</screen>) then the output is now incorrect.
+ 
+ This is very easy to fix -- just match the whitespace and preserve it,
+ instead of tossing it away.  The full patch (just two lines) is included
+ below.
+Author: Ben Burton <bab@debian.org>
+Forwarded: not-needed
+Bug-Debian: http://bugs.debian.org/528334
+
+Edit by Bruno Victal <mirai@makinata.eu>:
+ Patch was edited so that it could be applied against the original
+ docbook-utils-0.6.14 sources.
+
+Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl
+===================================================================
+--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl	2012-05-09 18:59:42.584774885 +0200
++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl	2012-05-09 19:00:34.788773002 +0200
+@@ -1212,8 +1212,8 @@
+ 	$_[0] =~ s/\\/\\\\/g;
+ 
+ 	# Escape dots and single quotes in column 1
+-	$_[0] =~ s/^\./\\\&\./;
+-	$_[0] =~ s/^\'/\\\&\'/;
++	$_[0] =~ s/^([ \t]*)\./$1\\\&\./;
++	$_[0] =~ s/^([ \t]*)\'/$1\\\&\'/;
+ 
+ 	# In non-'pre'-type elements:
+ 	if(!$nocollapse_whitespace) {
diff --git a/gnu/packages/patches/docbook-utils-remove-jade-sp.patch b/gnu/packages/patches/docbook-utils-remove-jade-sp.patch
new file mode 100644
index 0000000000..8aae51373f
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-remove-jade-sp.patch
@@ -0,0 +1,215 @@ 
+Description: Change dependencies on jade and sp to openjade and opensp
+Author: Neil Roeth <neil@debian.org>
+Last-Update: 2016-07-24
+
+Edit by Bruno Victal <mirai@makinata.eu>:
+  Patch was edited so that it could be applied against the original
+  docbook-utils-0.6.14 sources.
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/doc/HTML/Makefile.am
++++ b/doc/HTML/Makefile.am
+@@ -1,4 +1,4 @@
+-htmldir	  = $(docdir)/html/docbook-utils-@VERSION@
++htmldir	  = $(docdir)/html
+ html_DATA = api.html \
+ 	backend-spec.html \
+ 	docbook2man.html \
+@@ -25,6 +25,6 @@
+ 		$(top_srcdir)/doc/refentry/sgmldiff.sgml
+ 	SGML_CATALOG_FILES=/etc/sgml/catalog \
+ 	SGML_SEARCH_PATH=$(top_srcdir):$(top_srcdir)/doc:.. \
+-		jade -t sgml -i html -d $(top_srcdir)/docbook-utils.dsl\#html \
++		openjade -t sgml -i html -d $(top_srcdir)/docbook-utils.dsl\#html \
+ 			-V '%use-id-as-filename%' $<
+ 
+--- a/doc/man/Makefile.am
++++ b/doc/man/Makefile.am
+@@ -12,5 +12,5 @@
+ 		$(top_srcdir)/helpers/docbook2man-spec.pl
+ 	SGML_CATALOG_FILES=/etc/sgml/catalog \
+ 	SGML_SEARCH_PATH=$(top_srcdir)/doc:.. \
+-		nsgmls $< | \
++		onsgmls $< | \
+ 		sgmlspl $(top_srcdir)/helpers/docbook2man-spec.pl
+--- a/backends/man.in
++++ b/backends/man.in
+@@ -7,8 +7,8 @@
+ TMPDIR=`mktemp -d /tmp/man.XXXXXX` || \
+  { echo >&2 "man backend: could not create secure temporary directory"; exit 1;}
+ trap 'rm -rf "${TMPDIR}"' EXIT
+-nsgmls $SGML_FILE > "${TMPDIR}/nsgmls.tmp"
+-sgmlspl $HELPER <"${TMPDIR}/nsgmls.tmp" 2>"${TMPDIR}/errs"
++onsgmls $SGML_FILE > "${TMPDIR}/onsgmls.tmp"
++sgmlspl $HELPER <"${TMPDIR}/onsgmls.tmp" 2>"${TMPDIR}/errs"
+ if [ $? -ne 0 ]
+ then
+   cat "${TMPDIR}/errs"
+@@ -18,7 +18,7 @@
+ if grep unresolved "${TMPDIR}/errs" >/dev/null 2>&1
+ then
+   echo "Resolving references.."
+-  sgmlspl $HELPER <"${TMPDIR}/nsgmls.tmp"
++  sgmlspl $HELPER <"${TMPDIR}/onsgmls.tmp"
+   if [ $? -ne 0 ]
+   then exit 1
+   fi
+--- a/backends/texi.in
++++ b/backends/texi.in
+@@ -3,7 +3,7 @@
+ # This program is under GPL license. See LICENSE file for details.
+ 
+ # Convert to texinfo
+-nsgmls $SGML_FILE | sgmlspl $SGML_BASE_DIR/docbook/utils-@VERSION@/helpers/docbook2texi-spec.pl >$SGML_FILE_NAME.texi
++onsgmls $SGML_FILE | sgmlspl docbook2texi-spec.pl >$SGML_FILE_NAME.texi
+ if [ $? -ne 0 ]
+ then exit 1
+ fi
+--- a/bin/sgmldiff.in
++++ b/bin/sgmldiff.in
+@@ -22,13 +22,13 @@
+ 
+ use strict;
+ use integer;
+-use vars qw($nsgmls $errors $errorlog $VERSION);
++use vars qw($onsgmls $errors $errorlog $VERSION);
+ use Getopt::Long 2.01;
+ 
+ $VERSION = 1.03;
+ 
+-my $nsgmls;
+-$nsgmls = "@jade_bindir@/nsgmls";
++my $onsgmls;
++$onsgmls = "@jade_bindir@/onsgmls";
+ 
+ #----------------------------------------------------------------------
+ # TODO:
+@@ -37,7 +37,7 @@
+ # - Wait for suggestions ;-)
+ # 
+ # Note: the input file need not be valid, nor is it necessary to have 
+-# the DTDs.  nsgmls always returns a structure.
++# the DTDs.  onsgmls always returns a structure.
+ #----------------------------------------------------------------------
+ 
+ # Get file name
+@@ -141,11 +141,11 @@
+ unlink $diff2;
+ 
+ #---------------------------------------------------------------------
+-# Process nsgmls output: keep all stuff that is important for the
++# Process onsgmls output: keep all stuff that is important for the
+ # structure comparison.  Make two structures: one that is diffed
+ # (without text) (DIFF) and one that is used to present the
+ # differences to the user (@full).  For more info: see SP
+-# documentation, nsgmls output format.
++# documentation, onsgmls output format.
+ 
+ sub prepare {
+     my($filename,$todiffname) = @_;
+@@ -161,7 +161,7 @@
+     my @line_numbered = ();
+     my $line = 0;
+ 
+-    open(ESIS, "$nsgmls -l $errors $errorlog -onotation-sysid -oid -oempty $filename | ");  #-oentity generates strange output; ? -ononsgml
++    open(ESIS, "$onsgmls -l $errors $errorlog -onotation-sysid -oid -oempty $filename | ");  #-oentity generates strange output; ? -ononsgml
+     open(DIFF, "> $todiffname");
+     while (<ESIS>) {
+ 	chomp $_;
+@@ -375,7 +375,7 @@
+ };
+ 
+ #----------------------------------------------------------------------
+-# Normalise data text from nsgmls (i.e. don't print the escaped text).
++# Normalise data text from onsgmls (i.e. don't print the escaped text).
+ sub normalise_text {
+     my($string,$prefix) = @_;
+     my $result = "$prefix";
+--- a/configure.in
++++ b/configure.in
+@@ -21,7 +21,7 @@
+ 
+ dnl Checks for programs.
+ jade_bindirs="/usr/bin /usr/local/bin"
+-AC_FIND_PROGRAM(nsgmls, $jade_bindirs, jade_bindir)
++AC_FIND_PROGRAM(onsgmls, $jade_bindirs, jade_bindir)
+ AC_SUBST(jade_bindir)
+ 
+ perl_bindirs="/usr/bin /usr/local/bin"
+--- a/doc/refentry/docbook2man-spec.pl.sgml
++++ b/doc/refentry/docbook2man-spec.pl.sgml
+@@ -19,7 +19,7 @@
+ <!-- docbook2man-spec.pl BREAKAGE HERE! -->
+ 
+ <CmdSynopsis>
+-<Command>nsgmls</command>
++<Command>onsgmls</command>
+ <Arg><Replaceable>sgml document</replaceable></Arg>
+ <Command>| sgmlspl</command>
+ <Arg choice=req>docbook2man-spec.pl</arg>
+@@ -35,7 +35,7 @@
+ </Para>
+ 
+ <Para>
+-The program reads ESIS produced by nsgmls (or other SGML parsers) from
++The program reads ESIS produced by onsgmls (or other SGML parsers) from
+ standard input.  Markup not found in RefEntry is discarded.
+ </Para>
+ 
+--- a/doc/refentry/docbook2texi-spec.pl.sgml
++++ b/doc/refentry/docbook2texi-spec.pl.sgml
+@@ -20,7 +20,7 @@
+ <!-- docbook2man-spec.pl BREAKAGE HERE! -->
+ 
+ <CmdSynopsis>
+-<Command>nsgmls</command>
++<Command>onsgmls</command>
+ <Arg><Replaceable>sgml document</replaceable></Arg>
+ <Command>| sgmlspl</command>
+ <Arg choice=req>docbook2texi-spec.pl</arg>
+@@ -37,7 +37,7 @@
+ </Para>
+ 
+ <Para>
+-The program reads ESIS produced by nsgmls (or other SGML parsers) from
++The program reads ESIS produced by onsgmls (or other SGML parsers) from
+ standard input.  Currently the document element must be <SGMLTag>Book</sgmltag>,
+ otherwise the results are undefined.
+ </Para>
+--- a/doc/refentry/jw.sgml
++++ b/doc/refentry/jw.sgml
+@@ -630,7 +630,7 @@
+     <manvolnum>1</manvolnum></citerefentry>,
+     <citerefentry><refentrytitle>install-catalog</refentrytitle>
+     <manvolnum>8</manvolnum></citerefentry>,
+-    <citerefentry><refentrytitle>nsgmls</refentrytitle>
++    <citerefentry><refentrytitle>onsgmls</refentrytitle>
+     <manvolnum>1</manvolnum></citerefentry>, <ulink
+     url="http://sources.redhat.com/docbook-tools/">docbook-utils
+     homepage</ulink>.</para>
+--- a/doc/refentry/sgmldiff.sgml
++++ b/doc/refentry/sgmldiff.sgml
+@@ -238,10 +238,10 @@
+         <glossterm>
+ <!-- Next line  is a hack to force a paragraph break in the man-page. -->
+ <cmdsynopsis> <command></command> </cmdsynopsis>
+-          <citerefentry> <refentrytitle>nsgmls</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>
++          <citerefentry> <refentrytitle>onsgmls</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>
+         </glossterm>
+         <glossdef>
+-          <para>a base component of <application>Jade</application> DSSSL engine</para>
++          <para>a base component of <application>OpenJade</application> DSSSL engine</para>
+         </glossdef>
+       </glossentry>
+ 
+--- a/helpers/docbook2man-spec.pl
++++ b/helpers/docbook2man-spec.pl
+@@ -7,7 +7,7 @@
+ The SGMLSpm package from CPAN.  This contains the sgmlspl script which
+ is used to grok this file.  Use it like this:
+ 
+-nsgmls some-docbook-document.sgml | sgmlspl docbook2man-spec.pl
++onsgmls some-docbook-document.sgml | sgmlspl docbook2man-spec.pl
+ 
+ =head1 DESCRIPTION
+ 
diff --git a/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch b/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch
new file mode 100644
index 0000000000..d577fed748
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch
@@ -0,0 +1,34 @@ 
+Description: docbook2man should translate the NAME section according to the REFENTRY's lang attribute
+ Currently, docbook2man translates the NAME section according to the lang
+ attribute provided to the REFNAMEDIV tag.
+ When a lang attribute is specified in the REFENTRY tag and no lang
+ attribute is specified with the REFNAMEDIV, the lang attribute of the
+ REFENTRY should be used.
+Author: Nicolas François <nicolas.francois@centraliens.net>
+Forwarded: not-needed
+Bug-Debian: http://bugs.debian.org/394511
+
+Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl
+===================================================================
+--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl	2012-05-09 18:55:53.276783163 +0200
++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl	2012-05-09 18:58:04.792778418 +0200
+@@ -359,11 +359,14 @@
+ # NAME section
+ man_sgml('<REFNAMEDIV>', sub {
+ 	my %words = qw( fr NOM es NOMBRE de NAME );
+-	if (defined($_[0]->attribute('LANG')->value)) {
+-	my $id = $_[0]->attribute('LANG')->value;
+-	my $ad = $words{$id};
+-	output("\n.SH $ad\n");}
+-	else {output("\n.SH NAME\n");}
++	# Use the REFNAMEDIV's lang attribute, and default to the
++	# REFENTRY's lang attribute.
++	my $lang = $_[0]->attribute('LANG')->value;
++	$lang = $manpage_lang unless defined $lang;
++	if (defined($lang) and defined $words{lc($lang)}) {
++		my $ad = $words{lc($lang)};
++		output("\n.SH $ad\n");}
++	else {	output("\n.SH NAME\n");}
+ });
+ 
+ sgml('<REFNAME>', \&save_cdata);
diff --git a/gnu/packages/patches/docbook-utils-source-date-epoch.patch b/gnu/packages/patches/docbook-utils-source-date-epoch.patch
new file mode 100644
index 0000000000..ee3510a1d0
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-source-date-epoch.patch
@@ -0,0 +1,29 @@ 
+Author: Reiner Herrmann <reiner@reiner-h.de>
+Description: Support SOURCE_DATE_EPOCH for timestamps
+ To allow generating documents in a reproducible way,
+ allow overriding the timestamp through the environment.
+ .
+ See also: https://reproducible-builds.org/specs/source-date-epoch/
+Bug-Debian: https://bugs.debian.org/800797
+
+--- a/helpers/docbook2man-spec.pl
++++ b/helpers/docbook2man-spec.pl
+@@ -57,6 +57,7 @@
+ use SGMLS;			# Use the SGMLS package.
+ use SGMLS::Output;		# Use stack-based output.
+ use SGMLS::Refs;
++use POSIX qw(strftime setlocale LC_TIME);
+ 
+ ########################################################################
+ # SGMLSPL script produced automatically by the script sgmlspl.pl
+@@ -279,6 +280,10 @@
+ _END_BANNER
+ 
+ 	my $date = `date "+%d %B %Y"`;
++	if ($ENV{SOURCE_DATE_EPOCH}) {
++		setlocale(LC_TIME, "C");
++		$date = strftime("%d %B %Y", gmtime($ENV{SOURCE_DATE_EPOCH} || time));
++	}
+ 	my $manpage_date = $manpage_date || $date ;
+ 
+ 	output '.TH "';
diff --git a/gnu/packages/patches/docbook-utils-use-date-element.patch b/gnu/packages/patches/docbook-utils-use-date-element.patch
new file mode 100644
index 0000000000..192233d41f
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-use-date-element.patch
@@ -0,0 +1,61 @@ 
+Description: patch to get the <date> from the sgml file
+ For the moment, docbook2man doesn't use the tag date in <date> </date>
+ to but `date "+%d %B %Y"`, and thus depend on the current locale.
+ 
+ <refentry>
+   <docinfo>
+     <date>06 September 2003</>
+   </docinfo>
+ </refentry>
+ 
+ A patch against /usr/share/perl5/sgmlspl-specs/docbook2man-spec.pl
+ allows to use the date written in the source SGML file (which can be
+ localized) instead of the current date.
+ 
+ However, if no correct date tag is present in the SGML file, the date
+ written in the manpage will depend on the current locale.
+Author: Simon Paillard <simon.paillard@resel.enst-bretagne.fr>
+Forwarded: not-needed
+Bug-Debian: http://bugs.debian.org/214982
+
+Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl
+===================================================================
+--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl	2012-05-09 18:27:28.000000000 +0200
++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl	2012-05-09 18:55:53.276783163 +0200
+@@ -278,8 +278,9 @@
+ .\\" etc. to Steve Cheng <steve\@ggi-project.org>.
+ _END_BANNER
+ 
+-	my $manpage_date = `date "+%d %B %Y"`;
+-		
++	my $date = `date "+%d %B %Y"`;
++	my $manpage_date = $manpage_date || $date ;
++
+ 	output '.TH "';
+ 	
+ 	# If the title is not mixed-case, convention says to
+@@ -292,7 +293,7 @@
+ 	}
+ 	
+ 	output  '" "', fold_string($manpage_sect), 
+-		'" "', fold_string(`date "+%d %B %Y"`), 
++		'" "', fold_string($manpage_date), 
+ 		'" "', $manpage_misc, 
+ 		'" "', $manpage_manual, 
+ 		"\"\n";
+@@ -568,6 +569,15 @@
+ sgml('</ATTRIBUTION>', sub { $_[0]->parent->ext->{'attribution'} = pop_output(); });
+ 
+ 
++sgml('<DATE>', sub {
++	save_cdata();
++});
++sgml('</DATE>', sub { 
++	$manpage_date = fold_string(pop_output());
++	$raw_cdata--;
++});
++
++
+ # IGNORE.
+ sgml('<DOCINFO>', sub { push_output('nul'); });
+ sgml('</DOCINFO>', sub { pop_output(); });