mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +01:00
build: generate man page list from source files, not conf.py
Use $(wildcard ...) to generate the list of man pages based on the rst source files present in the man page directories, instead of reading conf.py. This has three main benefits: 1) This makes the man page build slightly less complicated and easier to understand. At least there are fewer moving parts. 2) This makes the build fail if we add a man page rst file, but fail to add it to conf.py. 3) We can use Sphinx constructs in conf.py that are not available when importing the file into a normal python program such as mkdocdeps.py.
This commit is contained in:
parent
a7a683b120
commit
76ab6e9962
3 changed files with 13 additions and 29 deletions
1
doc/.gitignore
vendored
1
doc/.gitignore
vendored
|
@ -1,4 +1,3 @@
|
||||||
*.pyc
|
*.pyc
|
||||||
docdeps.mk
|
|
||||||
_build
|
_build
|
||||||
config.dox
|
config.dox
|
||||||
|
|
|
@ -7,13 +7,23 @@ SPHINXOPTS := -q
|
||||||
SPHINXBUILD = sphinx-build
|
SPHINXBUILD = sphinx-build
|
||||||
DOCBUILDDIR := $(dir)/_build
|
DOCBUILDDIR := $(dir)/_build
|
||||||
|
|
||||||
mkdocdeps := $(PYTHON) $(srcdir)/$(dir)/mkdocdeps.py
|
|
||||||
|
|
||||||
# Internal variables.
|
# Internal variables.
|
||||||
ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(srcdir)/$(dir)
|
ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(srcdir)/$(dir)
|
||||||
APIMAN := $(DOCBUILDDIR)/man/man3/notmuch.3
|
APIMAN := $(DOCBUILDDIR)/man/man3/notmuch.3
|
||||||
DOXYFILE := $(srcdir)/$(dir)/doxygen.cfg
|
DOXYFILE := $(srcdir)/$(dir)/doxygen.cfg
|
||||||
|
|
||||||
|
MAN1_RST := $(wildcard $(srcdir)/doc/man1/*.rst)
|
||||||
|
MAN5_RST := $(wildcard $(srcdir)/doc/man5/*.rst)
|
||||||
|
MAN7_RST := $(wildcard $(srcdir)/doc/man7/*.rst)
|
||||||
|
MAN_RST_FILES := $(MAN1_RST) $(MAN5_RST) $(MAN7_RST)
|
||||||
|
|
||||||
|
MAN1_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN1_RST:.rst=.1))
|
||||||
|
MAN5_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN5_RST:.rst=.5))
|
||||||
|
MAN7_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN7_RST:.rst=.7))
|
||||||
|
MAN_ROFF_FILES := $(MAN1_ROFF) $(MAN5_ROFF) $(MAN7_ROFF)
|
||||||
|
|
||||||
|
MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
|
||||||
|
|
||||||
.PHONY: sphinx-html sphinx-texinfo sphinx-info
|
.PHONY: sphinx-html sphinx-texinfo sphinx-info
|
||||||
|
|
||||||
.PHONY: install-man build-man apidocs install-apidocs
|
.PHONY: install-man build-man apidocs install-apidocs
|
||||||
|
@ -30,10 +40,6 @@ sphinx-texinfo:
|
||||||
sphinx-info: sphinx-texinfo
|
sphinx-info: sphinx-texinfo
|
||||||
make -C $(DOCBUILDDIR)/texinfo info
|
make -C $(DOCBUILDDIR)/texinfo info
|
||||||
|
|
||||||
-include $(dir)/docdeps.mk
|
|
||||||
|
|
||||||
MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
|
|
||||||
|
|
||||||
# Use the man page converter that is available. We should never depend
|
# Use the man page converter that is available. We should never depend
|
||||||
# on MAN_ROFF_FILES if a converter is not available.
|
# on MAN_ROFF_FILES if a converter is not available.
|
||||||
${MAN_ROFF_FILES}: $(DOCBUILDDIR)/.roff.stamp
|
${MAN_ROFF_FILES}: $(DOCBUILDDIR)/.roff.stamp
|
||||||
|
@ -96,8 +102,5 @@ $(dir)/config.dox: version.stamp
|
||||||
echo "PROJECT_NAME = \"Notmuch $(VERSION)\"" > $@
|
echo "PROJECT_NAME = \"Notmuch $(VERSION)\"" > $@
|
||||||
echo "INPUT=${srcdir}/lib/notmuch.h" >> $@
|
echo "INPUT=${srcdir}/lib/notmuch.h" >> $@
|
||||||
|
|
||||||
$(dir)/docdeps.mk: $(dir)/conf.py $(dir)/mkdocdeps.py
|
CLEAN := $(CLEAN) $(DOCBUILDDIR) $(DOCBUILDDIR)/.roff.stamp
|
||||||
$(mkdocdeps) $(srcdir)/doc $(DOCBUILDDIR) $@
|
|
||||||
|
|
||||||
CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk $(DOCBUILDDIR)/.roff.stamp
|
|
||||||
CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) $(dir)/conf.pyc $(dir)/config.dox
|
CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) $(dir)/conf.pyc $(dir)/config.dox
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
import sys
|
|
||||||
|
|
||||||
srcdir = sys.argv[1]
|
|
||||||
builddir = sys.argv[2]
|
|
||||||
outfile = sys.argv[3]
|
|
||||||
|
|
||||||
sys.path.insert(0, srcdir)
|
|
||||||
import conf
|
|
||||||
|
|
||||||
roff_files = []
|
|
||||||
rst_files = []
|
|
||||||
for page in conf.man_pages:
|
|
||||||
rst_files = rst_files + ["{0:s}/{1:s}.rst".format(srcdir,page[0])]
|
|
||||||
roff_files = roff_files + ["{0:s}/man/{1:s}.{2:d}".format(builddir,page[0],page[4])]
|
|
||||||
|
|
||||||
with open(outfile, 'w') as out:
|
|
||||||
out.write('MAN_ROFF_FILES := ' + ' \\\n\t'.join(roff_files) + '\n')
|
|
||||||
out.write('MAN_RST_FILES := ' + ' \\\n\t'.join(rst_files) + '\n')
|
|
Loading…
Reference in a new issue