[PATCH 3/3] Documentation/Makefile: fix inherited {html,info,man}dir
From: John Keeping <hidden>
Date: 2016-06-15 22:56:08
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
Commit e14421b (Allow INSTALL, bindir, mandir to be set in main Makefile
- 2006-06-29) changed Documentation/Makefile to inherit the value of
mandir from the top-level Makefile when invoked as "make install-doc" at
the top-level. This was inherited by infodir and htmldir when they were
added.
This was broken by commit 026fa0d (Move computation of absolute paths
from Makefile to runtime (in preparation for RUNTIME_PREFIX) -
2009-01-18) which changed these variables to have relative paths in the
top-level Makefile, causing the documentation to be installed into the
path without $(prefix) prepended.
Fix this by changing the defaults to be paths relative to $(prefix) and
introducing new variables {html,info,man}_instdir which contain the full
installation paths.
Signed-off-by: John Keeping <redacted>
---
I'm not sure if this is the best approach - the alternative would be to
change the top-level Makefile to use {html,info,man}dir_relative and
derive the {html,info,man}dir variables from that.
The top-level Makefile is inconsistent in the approach it takes - bindir
is derived from bindir_relative but gitexecdir and template_dir have
gitexec_instdir and template_instdir derived from them.
Documentation/Makefile | 56 +++++++++++++++++++++++++++++++++++---------------
1 file changed, 40 insertions(+), 16 deletions(-)
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 0cfdc36..34cd9f2 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile@@ -78,15 +78,21 @@ DOC_MAN1 = $(patsubst %.txt,%.1,$(MAN1_TXT)) DOC_MAN5 = $(patsubst %.txt,%.5,$(MAN5_TXT)) DOC_MAN7 = $(patsubst %.txt,%.7,$(MAN7_TXT)) +# The following variables can be relative paths due to the way they can be +# inherited from the top-level Makefile: +# htmldir +# infodir +# mandir +# Note that pdfdir is an exception to this since it is not used by git-help. prefix ?= $(HOME) bindir ?= $(prefix)/bin -htmldir ?= $(prefix)/share/doc/git-doc -infodir ?= $(prefix)/share/info pdfdir ?= $(prefix)/share/doc/git-doc -mandir ?= $(prefix)/share/man -man1dir = $(mandir)/man1 -man5dir = $(mandir)/man5 -man7dir = $(mandir)/man7 +htmldir ?= share/doc/git-doc +infodir ?= share/info +mandir ?= share/man +man1dir = $(man_instdir)/man1 +man5dir = $(man_instdir)/man5 +man7dir = $(man_instdir)/man7 # DESTDIR = ASCIIDOC = asciidoc
@@ -110,6 +116,24 @@ endif -include ../config.mak.autogen -include ../config.mak +ifneq ($(filter /%,$(firstword $(htmldir))),) +html_instdir = $(htmldir) +else +html_instdir = $(prefix)/$(htmldir) +endif + +ifneq ($(filter /%,$(firstword $(infodir))),) +info_instdir = $(infodir) +else +info_instdir = $(prefix)/$(infodir) +endif + +ifneq ($(filter /%,$(firstword $(mandir))),) +man_instdir = $(mandir) +else +man_instdir = $(prefix)/$(mandir) +endif + # # For docbook-xsl ... # -1.68.1, no extra settings are needed?
@@ -144,7 +168,7 @@ endif # Distros may want to use MAN_BASE_URL=file:///path/to/git/docs/ # or similar. ifndef MAN_BASE_URL -MAN_BASE_URL = file://$(htmldir)/ +MAN_BASE_URL = file://$(html_instdir)/ endif XMLTO_EXTRA += -m manpage-base-url.xsl
@@ -220,13 +244,13 @@ install-man: man $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) install-info: info - $(INSTALL) -d -m 755 $(DESTDIR)$(infodir) - $(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(infodir) - if test -r $(DESTDIR)$(infodir)/dir; then \ - $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) git.info ;\ - $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) gitman.info ;\ + $(INSTALL) -d -m 755 $(DESTDIR)$(info_instdir) + $(INSTALL) -m 644 git.info gitman.info $(DESTDIR)$(info_instdir) + if test -r $(DESTDIR)$(info_instdir)/dir; then \ + $(INSTALL_INFO) --info-dir=$(DESTDIR)$(info_instdir) git.info ;\ + $(INSTALL_INFO) --info-dir=$(DESTDIR)$(info_instdir) gitman.info ;\ else \ - echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \ + echo "No directory found in $(DESTDIR)$(info_instdir)" >&2 ; \ fi install-pdf: pdf
@@ -234,7 +258,7 @@ install-pdf: pdf $(INSTALL) -m 644 user-manual.pdf $(DESTDIR)$(pdfdir) install-html: html - '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir) + '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(html_instdir) ../GIT-VERSION-FILE: FORCE $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
@@ -402,14 +426,14 @@ require-manrepo:: then echo "git-manpages repository must exist at $(MAN_REPO)"; exit 1; fi quick-install-man: require-manrepo - '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(mandir) + '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(MAN_REPO) $(DESTDIR)$(man_instdir) require-htmlrepo:: @if test ! -d $(HTML_REPO); \ then echo "git-htmldocs repository must exist at $(HTML_REPO)"; exit 1; fi quick-install-html: require-htmlrepo - '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(htmldir) + '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REPO) $(DESTDIR)$(html_instdir) print-man1: @for i in $(MAN1_TXT); do echo $$i; done
--
1.8.1.2