DocBook: Fix duplicate man pages
svn path=/dists/trunk/linux/; revision=22812
This commit is contained in:
parent
bea534ac5d
commit
eb4b510b6d
|
@ -2,6 +2,7 @@ linux (4.1.1-1~exp2) UNRELEASED; urgency=medium
|
|||
|
||||
* Fix more issues that prevent a reproducible build:
|
||||
- linux-doc: DocBook: generate consistent IDs
|
||||
- linux-doc: DocBook: Fix duplicate man pages
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Tue, 07 Jul 2015 16:25:05 +0100
|
||||
|
||||
|
|
|
@ -0,0 +1,125 @@
|
|||
From: Ben Hutchings <ben@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@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' \
|
||||
+ $(patsubst %, %.noextra, $(BOOKS)))| 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
|
||||
-->
|
|
@ -71,6 +71,7 @@ debian/emmc-don-t-initialize-partitions-on-rpmb-flagged-areas.patch
|
|||
bugfix/all/make-highlights-deterministic-in-kernel-doc.patch
|
||||
bugfix/all/remove-timestamps-from-compressed-man-pages.patch
|
||||
bugfix/all/docbook-generate-consistent-ids.patch
|
||||
bugfix/all/docbook-fix-duplicate-man-pages.patch
|
||||
|
||||
# Miscellaneous features
|
||||
features/all/efi-autoload-efi-pstore.patch
|
||||
|
|
Loading…
Reference in New Issue