diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2015-08-07 01:36:52 +0300 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2015-08-14 20:07:34 +0300 |
commit | 9ed71e7ad95eb9885420e8d33f33bd4d49e1b775 (patch) | |
tree | bdadbf357b74f4ee4d89d859efe4050abe0bb600 /Documentation/DocBook/Makefile | |
parent | 7bbac697e4a6e64cc4bae26d57310c916aa0da7a (diff) | |
download | linux-9ed71e7ad95eb9885420e8d33f33bd4d49e1b775.tar.xz |
DocBook: Fix non-determinstic installation of duplicate man pages
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@decadent.org.uk>
[jc: fixed conflicts with the docs tree]
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'Documentation/DocBook/Makefile')
-rw-r--r-- | Documentation/DocBook/Makefile | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index b7d2110298de..5e9702194dfe 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -60,7 +60,9 @@ mandocs: $(MAN) installmandocs: mandocs mkdir -p /usr/local/man/man9/ - install -m 644 $(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 -m 644 -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 $@ |