[PATCH 3/4] doc: install sphinx version of man pages

Subject: [PATCH 3/4] doc: install sphinx version of man pages

Date: Wed, 5 Mar 2014 10:56:34 -0400

To: notmuch@notmuchmail.org

Cc:

From: David Bremner


The python script mkdocdeps.py is used to import the list of man pages
from the sphinx configuration to make.

This will delete the (release only) target update-man-versions. This
will be replaced in a followup commit.
---
 Makefile           |  2 +-
 Makefile.local     |  2 +-
 doc/Makefile.local | 27 ++++++++++++++++++++++++++-
 doc/mkdocdeps.py   | 13 +++++++++++++
 man/Makefile.local | 55 ------------------------------------------------------
 5 files changed, 41 insertions(+), 58 deletions(-)
 create mode 100644 doc/mkdocdeps.py
 delete mode 100644 man/Makefile.local

diff --git a/Makefile b/Makefile
index 39f0e62..f53bec0 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ all:
 # List all subdirectories here. Each contains its own Makefile.local.
 # Use of '=', without '+=', seems to be required for out-of-tree
 # builds to work.
-subdirs = compat completion doc emacs lib man parse-time-string performance-test util test
+subdirs = compat completion doc emacs lib parse-time-string performance-test util test
 
 # We make all targets depend on the Makefiles themselves.
 global_deps = Makefile Makefile.config Makefile.local \
diff --git a/Makefile.local b/Makefile.local
index 174506c..5f797ad 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -95,7 +95,7 @@ dist: $(TAR_FILE)
 
 .PHONY: update-versions
 
-update-versions: update-man-versions
+update-versions:
 	sed -i "s/^__VERSION__[[:blank:]]*=.*$$/__VERSION__ = \'${VERSION}\'/" $(PV_FILE)
 
 # We invoke make recursively only to force ordering of our phony
diff --git a/doc/Makefile.local b/doc/Makefile.local
index 4719247..19861a7 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -8,6 +8,7 @@ SPHINXBUILD   = sphinx-build
 DOCBUILDDIR      := $(dir)/_build
 
 prerst2man := python $(dir)/prerst2man.py
+mkdocdeps := python $(dir)/mkdocdeps.py
 
 # Internal variables.
 ALLSPHINXOPTS   := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir)
@@ -15,6 +16,11 @@ ALLSPHINXOPTS   := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir)
 .PHONY: sphinx-html sphinx-man sphinx-texinfo sphinx-info
 .PHONY: rst2man
 
+.PHONY: install-man
+
+%.gz: %
+	gzip -k -f $^
+
 sphinx-html:
 	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
 
@@ -31,4 +37,23 @@ sphinx-info: sphinx-texinfo
 rst2man:
 	$(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
 
-CLEAN := $(CLEAN) $(DOCBUILDDIR)
+include $(dir)/docdeps.mk
+
+MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
+
+${MAN_ROFF_FILES} : sphinx-man
+
+install-man: ${MAN_GZIP_FILES}
+	mkdir -p "$(DESTDIR)$(mandir)/man1"
+	mkdir -p "$(DESTDIR)$(mandir)/man5"
+	mkdir -p "$(DESTDIR)$(mandir)/man7"
+	install -m0644 $(DOCBUILDDIR)/man/*.1.gz $(DESTDIR)/$(mandir)/man1
+	install -m0644 $(DOCBUILDDIR)/man/*.5.gz $(DESTDIR)/$(mandir)/man5
+	install -m0644 $(DOCBUILDDIR)/man/*.7.gz $(DESTDIR)/$(mandir)/man7
+	cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz
+
+
+$(dir)/docdeps.mk: $(dir)/conf.py $(dir)/mkdocdeps.py
+	$(mkdocdeps) $< $(DOCBUILDDIR) $@
+
+CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk
diff --git a/doc/mkdocdeps.py b/doc/mkdocdeps.py
new file mode 100644
index 0000000..2f4a959
--- /dev/null
+++ b/doc/mkdocdeps.py
@@ -0,0 +1,13 @@
+from sys import argv
+conffile = argv[1]
+builddir = argv[2]
+outfile = argv[3]
+
+execfile(conffile)
+
+roff_files = []
+out=open(outfile,'w')
+for page in man_pages:
+    roff_files = roff_files + ["{0:s}/man/{1:s}.{2:d}".format(builddir,page[1],page[4])]
+
+out.write ('MAN_ROFF_FILES := ' + ' \\\n\t'.join(roff_files)+'\n')
diff --git a/man/Makefile.local b/man/Makefile.local
deleted file mode 100644
index 57910b7..0000000
--- a/man/Makefile.local
+++ /dev/null
@@ -1,55 +0,0 @@
-# -*- Makefile -*-
-
-dir := man
-
-# this variable seems to be needed to prevent lazy evaluation causing
-# problems with $(dir) changing values.
-MAIN_PAGE := $(dir)/man1/notmuch.1
-
-MAN1 := \
-	$(MAIN_PAGE) \
-	$(dir)/man1/notmuch-compact.1 \
-	$(dir)/man1/notmuch-config.1 \
-	$(dir)/man1/notmuch-count.1 \
-	$(dir)/man1/notmuch-dump.1 \
-	$(dir)/man1/notmuch-restore.1 \
-	$(dir)/man1/notmuch-insert.1 \
-	$(dir)/man1/notmuch-new.1 \
-	$(dir)/man1/notmuch-reply.1 \
-	$(dir)/man1/notmuch-search.1 \
-	$(dir)/man1/notmuch-show.1 \
-	$(dir)/man1/notmuch-tag.1
-
-MAN5 := $(dir)/man5/notmuch-hooks.5
-MAN7 := $(dir)/man7/notmuch-search-terms.7
-
-MAN1_GZ := $(addsuffix .gz,$(MAN1))
-MAN5_GZ := $(addsuffix .gz,$(MAN5))
-MAN7_GZ := $(addsuffix .gz,$(MAN7))
-
-MAN_SOURCE := $(MAN1) $(MAN5) $(MAN7)
-MAN_BACKUP := $(addsuffix .bak,$(MAN_SOURCE))
-COMPRESSED_MAN := $(MAN1_GZ) $(MAN5_GZ) $(MAN7_GZ)
-
-%.gz: %
-	gzip --stdout $^ > $@
-
-.PHONY: install-man update-man-versions
-
-install-man: $(COMPRESSED_MAN)
-	mkdir -p "$(DESTDIR)$(mandir)/man1"
-	mkdir -p "$(DESTDIR)$(mandir)/man5"
-	mkdir -p "$(DESTDIR)$(mandir)/man7"
-	install -m0644 $(MAN1_GZ) $(DESTDIR)/$(mandir)/man1
-	install -m0644 $(MAN5_GZ) $(DESTDIR)/$(mandir)/man5
-	install -m0644 $(MAN7_GZ) $(DESTDIR)/$(mandir)/man7
-	cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz
-
-update-man-versions: $(MAN_SOURCE)
-	for file in $(MAN_SOURCE); do \
-	    cp $$file $$file.bak ; \
-	    sed "s/^.TH NOTMUCH\([^[:blank:]]*\) \([1-9]\) .*$$/.TH NOTMUCH\1 \2 ${DATE} \"Notmuch ${VERSION}\"/" \
-	        < $$file.bak > $$file; \
-	done
-
-CLEAN := $(CLEAN) $(COMPRESSED_MAN) $(MAN_BACKUP)
-- 
1.8.5.3


Thread: