[linux] 01/02: Update patches for reproducible doc builds to match upstream
debian-kernel at lists.debian.org
debian-kernel at lists.debian.org
Mon Aug 17 08:39:28 UTC 2015
This is an automated email from the git hooks/post-receive script.
benh pushed a commit to branch master
in repository linux.
commit d97fca4d0aa617022d66d7cd338a4953e0eaca7e
Author: Ben Hutchings <ben at decadent.org.uk>
Date: Sun Aug 16 21:19:41 2015 +0200
Update patches for reproducible doc builds to match upstream
---
...-t-store-mtime-or-name-in-compressed-man-.patch | 31 +++++
.../all/docbook-fix-duplicate-man-pages.patch | 125 ---------------------
...-non-determinstic-installation-of-duplica.patch | 50 +++++++++
.../all/docbook-generate-consistent-ids.patch | 18 ++-
...ke-highlights-deterministic-in-kernel-doc.patch | 24 ----
...move-timestamps-from-compressed-man-pages.patch | 16 ---
...nel-doc-parse-kernel-doc-deterministicall.patch | 34 ++++++
...el-doc-use-kbuild_build_timestamp-as-man.patch} | 14 ++-
debian/patches/series | 8 +-
9 files changed, 147 insertions(+), 173 deletions(-)
diff --git a/debian/patches/bugfix/all/docbook-don-t-store-mtime-or-name-in-compressed-man-.patch b/debian/patches/bugfix/all/docbook-don-t-store-mtime-or-name-in-compressed-man-.patch
new file mode 100644
index 0000000..73c3701
--- /dev/null
+++ b/debian/patches/bugfix/all/docbook-don-t-store-mtime-or-name-in-compressed-man-.patch
@@ -0,0 +1,31 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Wed, 8 Jul 2015 20:06:44 +0100
+Subject: DocBook: Don't store mtime (or name) in compressed man pages
+Bug-Debian: https://bugs.debian.org/769844
+Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31872
+
+The mtime on a man page is the build time. As gzip stores the mtime
+and original name in the compressed file by default, this makes
+compressed man pages unreproducible. Neither of these are important
+metadata in this case, so turn this off.
+
+Reported-by: Jérémy Bobbio <lunar at debian.org>
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: Jonathan Corbet <corbet at lwn.net>
+---
+ Documentation/DocBook/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
+index b6a6a2e..11a4145 100644
+--- a/Documentation/DocBook/Makefile
++++ b/Documentation/DocBook/Makefile
+@@ -56,7 +56,7 @@ htmldocs: $(HTML)
+
+ MAN := $(patsubst %.xml, %.9, $(BOOKS))
+ mandocs: $(MAN)
+- find $(obj)/man -name '*.9' | xargs gzip -f
++ find $(obj)/man -name '*.9' | xargs gzip -nf
+
+ installmandocs: mandocs
+ mkdir -p /usr/local/man/man9/
diff --git a/debian/patches/bugfix/all/docbook-fix-duplicate-man-pages.patch b/debian/patches/bugfix/all/docbook-fix-duplicate-man-pages.patch
deleted file mode 100644
index dbd2e24..0000000
--- a/debian/patches/bugfix/all/docbook-fix-duplicate-man-pages.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 08 Jul 2015 00:32:38 +0100
-Subject: DocBook: Fix duplicate man pages
-Bug-Debian: https://bugs.debian.org/769844
-
-Some kernel-doc sections are included in multiple DocBook files. This
-means the mandocs target will generate the same manual page multiple
-times with different metadata (author name/address and manual title,
-taken from the including DocBook file). If it's invoked in a parallel
-build, the output is nondeterminstic.
-
-For each section that is duplicated, mark the less specific manual's
-inclusion as 'extra' and exclude it during conversion to manual pages.
-Use xmlif for this, as that is bundled with xmlto which we already
-use.
-
-I would have preferred to use more conventional markup for this, but
-each of the following approaches failed:
-
-1. Wrap the extra inclusions with a new element and add a template to
- the stylesheet to include/exclude them. Unfortunately DocBook XSL
- doesn't seem to support foreign elements at an intermediate level
- in the document tree.
-2. Use DocBook profiling. This works but requires passing an absolute
- path to the profile stylesheet to xmlto, so it's not portable.
-3. Use SGML marked sections. docbook2x can handle these but xmlto
- chokes on them.
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
---- a/Documentation/DocBook/Makefile
-+++ b/Documentation/DocBook/Makefile
-@@ -56,6 +56,13 @@ htmldocs: $(HTML)
-
- MAN := $(patsubst %.xml, %.9, $(BOOKS))
- mandocs: $(MAN)
-+ @dups=$$(sed -n 's/.*<refname>\([^<]*\)<\/refname>.*/\1/p' \
-+ $(obj)/*.xml.noextra | sort | uniq -d); \
-+ if [ -n "$$dups" ]; then \
-+ echo >&2 "The following manual pages are generated more than once:"; \
-+ printf >&2 '%s\n' "$$dups"; \
-+ exit 1; \
-+ fi
- find $(obj)/man -name '*.9' | xargs gzip -nf
-
- installmandocs: mandocs
-@@ -150,7 +157,7 @@ quiet_cmd_db2html = HTML $@
- cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
-
- quiet_cmd_db2man = MAN $@
-- cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; fi
-+ cmd_db2man = if grep -q refentry $<; then xmlif excludeextra=1 <$< >$<.noextra && xmlto man $(XMLTOFLAGS) -o $(obj)/man $<.noextra ; fi
- %.9 : %.xml
- @(which xmlto > /dev/null 2>&1) || \
- (echo "*** You need to install xmlto ***"; \
-@@ -217,6 +224,7 @@ clean-files := $(DOCBOOKS) \
- $(patsubst %.xml, %.ps, $(DOCBOOKS)) \
- $(patsubst %.xml, %.pdf, $(DOCBOOKS)) \
- $(patsubst %.xml, %.html, $(DOCBOOKS)) \
-+ $(patsubst %, %.noextra, $(DOCBOOKS)) \
- $(patsubst %.xml, %.9, $(DOCBOOKS)) \
- $(index)
-
---- a/Documentation/DocBook/gadget.tmpl
-+++ b/Documentation/DocBook/gadget.tmpl
-@@ -488,7 +488,10 @@ These are the same types and constants u
- side drivers (and usbcore).
- </para>
-
-+<?xmlif if excludeextra='1'?>
-+<?xmlif else?>
- !Iinclude/linux/usb/ch9.h
-+<?xmlif fi?>
- </sect1>
-
- <sect1 id="core"><title>Core Objects and Methods</title>
---- a/Documentation/DocBook/kernel-api.tmpl
-+++ b/Documentation/DocBook/kernel-api.tmpl
-@@ -58,8 +58,11 @@
-
- <sect1><title>String Conversions</title>
- !Elib/vsprintf.c
-+<?xmlif if excludeextra='1'?>
-+<?xmlif else?>
- !Finclude/linux/kernel.h kstrtol
- !Finclude/linux/kernel.h kstrtoul
-+<?xmlif fi?>
- !Elib/kstrtox.c
- </sect1>
- <sect1><title>String Manipulation</title>
-@@ -178,7 +181,10 @@ X!Ekernel/module.c
- <chapter id="hardware">
- <title>Hardware Interfaces</title>
- <sect1><title>Interrupt Handling</title>
-+<?xmlif if excludeextra='1'?>
-+<?xmlif else?>
- !Ekernel/irq/manage.c
-+<?xmlif fi?>
- </sect1>
-
- <sect1><title>DMA Channels</title>
---- a/Documentation/DocBook/device-drivers.tmpl
-+++ b/Documentation/DocBook/device-drivers.tmpl
-@@ -194,8 +194,13 @@ X!Edrivers/pnp/system.c
-
- <chapter id="snddev">
- <title>Sound Devices</title>
-+<?xmlif if excludeextra='1'?>
-+<?xmlif else?>
- !Iinclude/sound/core.h
-+<?xmlif fi?>
- !Esound/sound_core.c
-+<?xmlif if excludeextra='1'?>
-+<?xmlif else?>
- !Iinclude/sound/pcm.h
- !Esound/core/pcm.c
- !Esound/core/device.c
-@@ -211,6 +216,7 @@ X!Edrivers/pnp/system.c
- !Esound/core/hwdep.c
- !Esound/core/pcm_native.c
- !Esound/core/memalloc.c
-+<?xmlif fi?>
- <!-- FIXME: Removed for now since no structured comments in source
- X!Isound/sound_firmware.c
- -->
diff --git a/debian/patches/bugfix/all/docbook-fix-non-determinstic-installation-of-duplica.patch b/debian/patches/bugfix/all/docbook-fix-non-determinstic-installation-of-duplica.patch
new file mode 100644
index 0000000..3fbabcc
--- /dev/null
+++ b/debian/patches/bugfix/all/docbook-fix-non-determinstic-installation-of-duplica.patch
@@ -0,0 +1,50 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Thu, 6 Aug 2015 22:18:32 +0100
+Subject: DocBook: Fix non-determinstic installation of duplicate man pages
+Bug-Debian: https://bugs.debian.org/769844
+Forwarded: http://thread.gmane.org/gmane.linux.kernel/1997951/focus=32450
+
+Some kernel-doc sections are included in multiple DocBook files. This
+means the mandocs target will generate the same manual page multiple
+times with different metadata (author name/address and manual title,
+taken from the including DocBook file). If it's invoked in a parallel
+build, the output is non-determinstic.
+
+Build the manual pages in a separate subdirectory per DocBook file,
+then sort and de-duplicate when installing them (which is serialised).
+
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+---
+ Documentation/DocBook/Makefile | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
+index 11a4145..198e9b5 100644
+--- a/Documentation/DocBook/Makefile
++++ b/Documentation/DocBook/Makefile
+@@ -60,7 +60,9 @@ mandocs: $(MAN)
+
+ installmandocs: mandocs
+ mkdir -p /usr/local/man/man9/
+- install $(obj)/man/*.9.gz /usr/local/man/man9/
++ find $(obj)/man -name '*.9.gz' -printf '%h %f\n' | \
++ sort -k 2 -k 1 | uniq -f 1 | sed -e 's: :/:' | \
++ xargs install -t /usr/local/man/man9/
+
+ ###
+ #External programs used
+@@ -150,12 +152,12 @@ quiet_cmd_db2html = HTML $@
+ cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
+
+ quiet_cmd_db2man = MAN $@
+- cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; fi
++ cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man/$(*F) $< ; fi
+ %.9 : %.xml
+ @(which xmlto > /dev/null 2>&1) || \
+ (echo "*** You need to install xmlto ***"; \
+ exit 1)
+- $(Q)mkdir -p $(obj)/man
++ $(Q)mkdir -p $(obj)/man/$(*F)
+ $(call cmd,db2man)
+ @touch $@
+
diff --git a/debian/patches/bugfix/all/docbook-generate-consistent-ids.patch b/debian/patches/bugfix/all/docbook-generate-consistent-ids.patch
index 34cd5b1..d0b084d 100644
--- a/debian/patches/bugfix/all/docbook-generate-consistent-ids.patch
+++ b/debian/patches/bugfix/all/docbook-generate-consistent-ids.patch
@@ -1,10 +1,24 @@
From: Ben Hutchings <ben at decadent.org.uk>
-Date: Tue, 07 Jul 2015 17:23:54 +0100
-Subject: DocBook: generate consistent IDs
+Date: Wed, 8 Jul 2015 20:06:51 +0100
+Subject: DocBook: Generate consistent IDs
Bug-Debian: https://bugs.debian.org/769844
+Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31873
+By default, DocBook XSL uses a non-deterministic function to generate
+IDs for HTML elements where it can't take a name from the input
+document. However, it has the option to generate 'consistent'
+(deterministic) IDs instead. Enable this to make the HTML pages
+reproducible.
+
+Reported-by: Jérémy Bobbio <lunar at debian.org>
Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: Jonathan Corbet <corbet at lwn.net>
---
+ Documentation/DocBook/stylesheet.xsl | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Documentation/DocBook/stylesheet.xsl b/Documentation/DocBook/stylesheet.xsl
+index 85b2527..3bf4ecf 100644
--- a/Documentation/DocBook/stylesheet.xsl
+++ b/Documentation/DocBook/stylesheet.xsl
@@ -5,6 +5,7 @@
diff --git a/debian/patches/bugfix/all/make-highlights-deterministic-in-kernel-doc.patch b/debian/patches/bugfix/all/make-highlights-deterministic-in-kernel-doc.patch
deleted file mode 100644
index 410bd1b..0000000
--- a/debian/patches/bugfix/all/make-highlights-deterministic-in-kernel-doc.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Jérémy Bobbio <lunar at debian.org>
-Date: Wed, 7 Jan 2015 20:49:51 +0100
-Subject: parse kernel-doc deterministically
-Bug-Debian: https://bugs.debian.org/769844
-
-Regular expressions for highlights in kernel-doc are stored in a Perl
-hash. These hashes are ordered differently for each Perl run. This will
-prevent kernel-doc to behave deterministically when parsing
-“@foo()” as in some runs it will be interpreted as a parameter and
-in the others it will be interpreted as a function.
-
-We now sort the %highlights hash to get the same behavior on every run.
-
---- a/scripts/kernel-doc
-+++ b/scripts/kernel-doc
-@@ -2587,7 +2587,7 @@ $kernelversion = get_kernel_version();
-
- # generate a sequence of code that will splice in highlighting information
- # using the s// operator.
--foreach my $pattern (keys %highlights) {
-+foreach my $pattern (sort keys %highlights) {
- # print STDERR "scanning pattern:$pattern, highlight:($highlights{$pattern})\n";
- $dohighlight .= "\$contents =~ s:$pattern:$highlights{$pattern}:gs;\n";
- }
diff --git a/debian/patches/bugfix/all/remove-timestamps-from-compressed-man-pages.patch b/debian/patches/bugfix/all/remove-timestamps-from-compressed-man-pages.patch
deleted file mode 100644
index d74ab41..0000000
--- a/debian/patches/bugfix/all/remove-timestamps-from-compressed-man-pages.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Mon, 06 Jul 2015 23:34:54 +0100
-Subject: remove timestamps from compressed man pages
-Bug-Debian: https://bugs.debian.org/769844
-
---- a/Documentation/DocBook/Makefile
-+++ b/Documentation/DocBook/Makefile
-@@ -56,7 +56,7 @@ htmldocs: $(HTML)
-
- MAN := $(patsubst %.xml, %.9, $(BOOKS))
- mandocs: $(MAN)
-- find $(obj)/man -name '*.9' | xargs gzip -f
-+ find $(obj)/man -name '*.9' | xargs gzip -nf
-
- installmandocs: mandocs
- mkdir -p /usr/local/man/man9/
diff --git a/debian/patches/bugfix/all/scripts-kernel-doc-parse-kernel-doc-deterministicall.patch b/debian/patches/bugfix/all/scripts-kernel-doc-parse-kernel-doc-deterministicall.patch
new file mode 100644
index 0000000..3c835fb
--- /dev/null
+++ b/debian/patches/bugfix/all/scripts-kernel-doc-parse-kernel-doc-deterministicall.patch
@@ -0,0 +1,34 @@
+From: Jérémy Bobbio <lunar at debian.org>
+Date: Wed, 8 Jul 2015 20:06:33 +0100
+Subject: scripts/kernel-doc: parse kernel-doc deterministically
+Bug-Debian: https://bugs.debian.org/769844
+Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31871
+
+Regular expressions for highlights in kernel-doc are stored in a Perl
+hash. These hashes are ordered differently for each Perl run. This will
+prevent kernel-doc to behave deterministically when parsing “@foo()” as
+in some runs it will be interpreted as a parameter and in the others it
+will be interpreted as a function.
+
+We now sort the %highlights hash to get the same behavior on every run.
+
+Signed-off-by: Jérémy Bobbio <lunar at debian.org>
+Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: Jonathan Corbet <corbet at lwn.net>
+---
+ scripts/kernel-doc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/kernel-doc b/scripts/kernel-doc
+index 9922e66..71ada00 100755
+--- a/scripts/kernel-doc
++++ b/scripts/kernel-doc
+@@ -2587,7 +2587,7 @@ $kernelversion = get_kernel_version();
+
+ # generate a sequence of code that will splice in highlighting information
+ # using the s// operator.
+-foreach my $pattern (keys %highlights) {
++foreach my $pattern (sort keys %highlights) {
+ # print STDERR "scanning pattern:$pattern, highlight:($highlights{$pattern})\n";
+ $dohighlight .= "\$contents =~ s:$pattern:$highlights{$pattern}:gs;\n";
+ }
diff --git a/debian/patches/bugfix/all/kernel-doc-set-man-page-date.patch b/debian/patches/bugfix/all/scripts-kernel-doc-use-kbuild_build_timestamp-as-man.patch
similarity index 66%
rename from debian/patches/bugfix/all/kernel-doc-set-man-page-date.patch
rename to debian/patches/bugfix/all/scripts-kernel-doc-use-kbuild_build_timestamp-as-man.patch
index 447ba90..e4385f6 100644
--- a/debian/patches/bugfix/all/kernel-doc-set-man-page-date.patch
+++ b/debian/patches/bugfix/all/scripts-kernel-doc-use-kbuild_build_timestamp-as-man.patch
@@ -1,10 +1,20 @@
From: Ben Hutchings <ben at decadent.org.uk>
-Date: Wed, 08 Jul 2015 02:37:21 +0100
-Subject: kernel-doc: Use $KBUILD_BUILD_TIMESTAMP as man page date
+Date: Wed, 8 Jul 2015 20:07:16 +0100
+Subject: scripts/kernel-doc: Use $KBUILD_BUILD_TIMESTAMP as man page date
Bug-Debian: https://bugs.debian.org/769844
+Forwarded: http://thread.gmane.org/gmane.linux.documentation/31870/focus=31875
+
+Together with the preceding changes, this allows man pages to be built
+reproducibly.
Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+Signed-off-by: Jonathan Corbet <corbet at lwn.net>
---
+ scripts/kernel-doc | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/scripts/kernel-doc b/scripts/kernel-doc
+index 71ada00..0ac1a07 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -253,11 +253,20 @@ my %highlights = %highlights_man;
diff --git a/debian/patches/series b/debian/patches/series
index b6c1074..eaa0aca 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -70,11 +70,11 @@ bugfix/all/net-mv643xx-disable-tso-by-default.patch
debian/emmc-don-t-initialize-partitions-on-rpmb-flagged-areas.patch
# Reproducible docs
-bugfix/all/make-highlights-deterministic-in-kernel-doc.patch
-bugfix/all/remove-timestamps-from-compressed-man-pages.patch
+bugfix/all/scripts-kernel-doc-parse-kernel-doc-deterministicall.patch
+bugfix/all/docbook-don-t-store-mtime-or-name-in-compressed-man-.patch
bugfix/all/docbook-generate-consistent-ids.patch
-bugfix/all/docbook-fix-duplicate-man-pages.patch
-bugfix/all/kernel-doc-set-man-page-date.patch
+bugfix/all/docbook-fix-non-determinstic-installation-of-duplica.patch
+bugfix/all/scripts-kernel-doc-use-kbuild_build_timestamp-as-man.patch
# Miscellaneous features
features/all/efi-autoload-efi-pstore.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git
More information about the Kernel-svn-changes
mailing list