DocBook: Fix non-determinstic installation of duplicate man pages
authorBen Hutchings <ben@decadent.org.uk>
Thu, 6 Aug 2015 22:36:52 +0000 (23:36 +0100)
committerJonathan Corbet <corbet@lwn.net>
Fri, 14 Aug 2015 17:07:34 +0000 (11:07 -0600)
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>
Documentation/DocBook/Makefile

index b7d2110298debbdf0b801b26028383fdbfe9ad57..5e9702194dfeca21f165f8d11a4c400da2334f08 100644 (file)
@@ -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 $@