* v2 man page build fixups
@ 2014-03-11 12:05 David Bremner
2014-03-11 12:05 ` [Patch v2 1/3] doc: have prerst2man.py generate roff files all in one directory David Bremner
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: David Bremner @ 2014-03-11 12:05 UTC (permalink / raw)
To: notmuch
Here is an improved version of somewhat hasty series of last night.
It incorporates fixups from Jani that he sent to me off list.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Patch v2 1/3] doc: have prerst2man.py generate roff files all in one directory
2014-03-11 12:05 v2 man page build fixups David Bremner
@ 2014-03-11 12:05 ` David Bremner
2014-03-11 12:05 ` [Patch v2 2/3] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN David Bremner
` (2 subsequent siblings)
3 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-11 12:05 UTC (permalink / raw)
To: notmuch
Originally it seemed tidier to put them in subdirectories, but it
turned out not to be obvious how to do that with sphinx. Bring the two
methods back in sync again, and unbreak the generation of gzipped
manpages.
As a side-effect, fix a particular egregious combination of format and
string concatenation.
---
doc/prerst2man.py | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/doc/prerst2man.py b/doc/prerst2man.py
index 720deb6..ec343e7 100644
--- a/doc/prerst2man.py
+++ b/doc/prerst2man.py
@@ -32,10 +32,7 @@ date.today().isoformat(), release, section, project))
blankre = re.compile("^\s*$")
for page in man_pages:
- outdirname = outdir + '/' + dirname(page[0])
- if not isdir(outdirname):
- makedirs(outdirname, 0755)
- filename = outdir + '/' + page[0] + '.rst'
+ filename = outdir + '/' + page[1] + '.rst'
outfile = open(filename, 'w')
infile = open(sourcedir + '/' + page[0] + '.rst', 'r')
@@ -59,4 +56,5 @@ for page in man_pages:
outfile.write("".join(lines))
outfile.close()
- os.system('set -x; rst2man {0} {1}'.format(filename, outdir + '/' + page[0] + '.' + str(page[4])))
+ os.system('set -x; rst2man {0} {1}/{2}.{3}'
+ .format(filename, outdir, page[1],page[4]))
--
1.8.5.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Patch v2 2/3] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN
2014-03-11 12:05 v2 man page build fixups David Bremner
2014-03-11 12:05 ` [Patch v2 1/3] doc: have prerst2man.py generate roff files all in one directory David Bremner
@ 2014-03-11 12:05 ` David Bremner
2014-03-11 12:05 ` [Patch v2 3/3] doc: configure detection of sphinx and rst2man David Bremner
2014-03-11 18:16 ` v2 man page build fixups Tomi Ollila
3 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-11 12:05 UTC (permalink / raw)
To: notmuch
This helps avoid build artifacts (namely, nroff and gzipped-nroff man
pages) owned by root.
The variables allow choosing which generator to use for the man page.
These will be hooked to configure in a following commit.
---
Makefile.local | 2 +-
doc/Makefile.local | 31 ++++++++++++++++++-------------
doc/mkdocdeps.py | 3 +++
3 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/Makefile.local b/Makefile.local
index 5f797ad..cb7b106 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -53,7 +53,7 @@ endif
FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
.PHONY: all
-all: notmuch notmuch-shared
+all: notmuch notmuch-shared build-man
ifeq ($(MAKECMDGOALS),)
ifeq ($(shell cat .first-build-message 2>/dev/null),)
@NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all
diff --git a/doc/Makefile.local b/doc/Makefile.local
index fd64f70..23f4095 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -13,10 +13,9 @@ mkdocdeps := python $(dir)/mkdocdeps.py
# Internal variables.
ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir)
-.PHONY: sphinx-html sphinx-man sphinx-texinfo sphinx-info
-.PHONY: rst2man
+.PHONY: sphinx-html sphinx-texinfo sphinx-info
-.PHONY: install-man
+.PHONY: install-man build-man
%.gz: %
rm -f $@ && gzip --stdout $^ > $@
@@ -24,24 +23,30 @@ ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir)
sphinx-html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
-sphinx-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
-
sphinx-texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(DOCBUILDDIR)/texinfo
sphinx-info: sphinx-texinfo
make -C $(DOCBUILDDIR)/texinfo info
-# fallback target in case sphinx not installed
-rst2man:
- $(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
-
-include $(dir)/docdeps.mk
MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
-${MAN_ROFF_FILES} : sphinx-man
+build-man: ${MAN_GZIP_FILES}
+
+${MAN_ROFF_FILES}: ${dir}/man.stamp
+
+$(dir)/man.stamp: ${MAN_RST_FILES}
+ifeq ($(HAVE_SPHINX),1)
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
+ touch $@
+else ifeq ($(HAVE_RST2MAN),1)
+ $(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
+ touch $@
+else
+ @echo "No sphinx or rst2man, will not install man pages."
+endif
install-man: ${MAN_GZIP_FILES}
mkdir -p "$(DESTDIR)$(mandir)/man1"
@@ -52,8 +57,8 @@ install-man: ${MAN_GZIP_FILES}
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
+CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk $(dir)/man.stamp
+CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES)
diff --git a/doc/mkdocdeps.py b/doc/mkdocdeps.py
index 2f4a959..e61bea6 100644
--- a/doc/mkdocdeps.py
+++ b/doc/mkdocdeps.py
@@ -6,8 +6,11 @@ outfile = argv[3]
execfile(conffile)
roff_files = []
+rst_files = []
out=open(outfile,'w')
for page in man_pages:
+ rst_files = rst_files + ["doc/{0:s}.rst".format(page[0])]
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')
+out.write ('MAN_RST_FILES := ' + ' \\\n\t'.join(rst_files)+'\n')
--
1.8.5.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Patch v2 3/3] doc: configure detection of sphinx and rst2man
2014-03-11 12:05 v2 man page build fixups David Bremner
2014-03-11 12:05 ` [Patch v2 1/3] doc: have prerst2man.py generate roff files all in one directory David Bremner
2014-03-11 12:05 ` [Patch v2 2/3] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN David Bremner
@ 2014-03-11 12:05 ` David Bremner
2014-03-11 18:16 ` v2 man page build fixups Tomi Ollila
3 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-11 12:05 UTC (permalink / raw)
To: notmuch
Because sphinx-build does not provide a convenient way of listing
which builders exist, and some people actually have pre 1.0 sphinx, we
try loading a relevant python module.
Currently the assumption is that no python in path -> no sphinx-build
in path.
---
configure | 27 +++++++++++++++++++++++++++
doc/Makefile.local | 24 +++++++++++++++---------
2 files changed, 42 insertions(+), 9 deletions(-)
diff --git a/configure b/configure
index 2eaed4a..4aaecc6 100755
--- a/configure
+++ b/configure
@@ -393,6 +393,27 @@ else
have_emacs=0
fi
+printf "Checking if sphinx is available and supports nroff output... "
+if hash sphinx-build > /dev/null 2>&1 && python -m sphinx.writers.manpage > /dev/null 2>&1 ; then
+ printf "Yes.\n"
+ have_sphinx=1
+ have_rst2man=0
+else
+ printf "No (falling back to rst2man).\n"
+ have_sphinx=0
+
+ printf "Checking if rst2man is available... "
+ if rst2man -V > /dev/null 2>&1; then
+ printf "Yes.\n"
+ have_rst2man=1
+ else
+ printf "No (so will not install man pages).\n"
+ have_rst2man=0
+ fi
+fi
+
+
+
libdir_in_ldconfig=0
printf "Checking which platform we are on... "
@@ -759,6 +780,12 @@ emacsetcdir=${EMACSETCDIR}
# Whether there's an emacs binary available for byte-compiling
HAVE_EMACS = ${have_emacs}
+# Whether there's a sphinx-build binary available for building documentation
+HAVE_SPHINX=${have_sphinx}
+
+# Whether there's a rst2man binary available for building documentation
+HAVE_RST2MAN=${have_rst2man}
+
# The directory to which desktop files should be installed
desktop_dir = \$(prefix)/share/applications
diff --git a/doc/Makefile.local b/doc/Makefile.local
index 23f4095..4883c4a 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -33,21 +33,26 @@ sphinx-info: sphinx-texinfo
MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
-build-man: ${MAN_GZIP_FILES}
-
-${MAN_ROFF_FILES}: ${dir}/man.stamp
-
-$(dir)/man.stamp: ${MAN_RST_FILES}
+# Use the man page converter that is available. We should never depend
+# on MAN_ROFF_FILES if a converter is not available.
+${MAN_ROFF_FILES}: ${MAN_RST_FILES}
ifeq ($(HAVE_SPHINX),1)
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
- touch $@
else ifeq ($(HAVE_RST2MAN),1)
$(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
- touch $@
else
- @echo "No sphinx or rst2man, will not install man pages."
+ @echo "Fatal: build dependency fail."
+ @false
endif
+# Do not try to build or install man pages if a man page converter is
+# not available.
+ifeq ($(HAVE_SPHINX)$(HAVE_RST2MAN),00)
+build-man:
+install-man:
+ @echo "No sphinx or rst2man, will not install man pages."
+else
+build-man: ${MAN_GZIP_FILES}
install-man: ${MAN_GZIP_FILES}
mkdir -p "$(DESTDIR)$(mandir)/man1"
mkdir -p "$(DESTDIR)$(mandir)/man5"
@@ -56,9 +61,10 @@ install-man: ${MAN_GZIP_FILES}
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
+endif
$(dir)/docdeps.mk: $(dir)/conf.py $(dir)/mkdocdeps.py
$(mkdocdeps) $< $(DOCBUILDDIR) $@
-CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk $(dir)/man.stamp
+CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk
CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES)
--
1.8.5.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: v2 man page build fixups
2014-03-11 12:05 v2 man page build fixups David Bremner
` (2 preceding siblings ...)
2014-03-11 12:05 ` [Patch v2 3/3] doc: configure detection of sphinx and rst2man David Bremner
@ 2014-03-11 18:16 ` Tomi Ollila
2014-03-13 3:21 ` David Bremner
3 siblings, 1 reply; 12+ messages in thread
From: Tomi Ollila @ 2014-03-11 18:16 UTC (permalink / raw)
To: David Bremner, notmuch
On Tue, Mar 11 2014, David Bremner <david@tethera.net> wrote:
> Here is an improved version of somewhat hasty series of last night.
>
> It incorporates fixups from Jani that he sent to me off list.
I played with the series trying various tricks and all seems to
work fine. Also it is nice to see that one line in prerst2man.py
is fixed to better shape :D
Also a command line, should anyone ever need it (I doubt ;)
$ make SPHINXBUILD=sphinx-1.0-build HAVE_SPHINX=1 build-man
worked fine.
+1
Tomi
^ permalink raw reply [flat|nested] 12+ messages in thread
* (no subject)
2014-03-11 18:16 ` v2 man page build fixups Tomi Ollila
@ 2014-03-13 3:21 ` David Bremner
2014-03-13 3:21 ` [Patch v3 1/4] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN David Bremner
` (5 more replies)
0 siblings, 6 replies; 12+ messages in thread
From: David Bremner @ 2014-03-13 3:21 UTC (permalink / raw)
To: notmuch
Several people observed a problem with the test T010-help not finding
the man pages anymore. To fix that, I had change the previous fix:
instead of flattening the rst2man output into one directory, I had to
move the sphinx output into a hierarchy.
Patches 1 and 3 should be the same as
id:1394539555-28334-1-git-send-email-david@tethera.net
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Patch v3 1/4] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN
2014-03-13 3:21 ` David Bremner
@ 2014-03-13 3:21 ` David Bremner
2014-03-13 3:21 ` [Patch v3 2/4] doc: build man pages into hierarchy, fix help test David Bremner
` (4 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-13 3:21 UTC (permalink / raw)
To: notmuch
This helps avoid build artifacts (namely, nroff and gzipped-nroff man
pages) owned by root.
The variables allow choosing which generator to use for the man page.
These will be hooked to configure in a following commit.
---
Makefile.local | 2 +-
doc/Makefile.local | 31 ++++++++++++++++++-------------
doc/mkdocdeps.py | 3 +++
3 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/Makefile.local b/Makefile.local
index 5f797ad..cb7b106 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -53,7 +53,7 @@ endif
FINAL_LIBNOTMUCH_LDFLAGS = $(LDFLAGS) $(AS_NEEDED_LDFLAGS) $(CONFIGURE_LDFLAGS)
.PHONY: all
-all: notmuch notmuch-shared
+all: notmuch notmuch-shared build-man
ifeq ($(MAKECMDGOALS),)
ifeq ($(shell cat .first-build-message 2>/dev/null),)
@NOTMUCH_FIRST_BUILD=1 $(MAKE) --no-print-directory all
diff --git a/doc/Makefile.local b/doc/Makefile.local
index fd64f70..23f4095 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -13,10 +13,9 @@ mkdocdeps := python $(dir)/mkdocdeps.py
# Internal variables.
ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir)
-.PHONY: sphinx-html sphinx-man sphinx-texinfo sphinx-info
-.PHONY: rst2man
+.PHONY: sphinx-html sphinx-texinfo sphinx-info
-.PHONY: install-man
+.PHONY: install-man build-man
%.gz: %
rm -f $@ && gzip --stdout $^ > $@
@@ -24,24 +23,30 @@ ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir)
sphinx-html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
-sphinx-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
-
sphinx-texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(DOCBUILDDIR)/texinfo
sphinx-info: sphinx-texinfo
make -C $(DOCBUILDDIR)/texinfo info
-# fallback target in case sphinx not installed
-rst2man:
- $(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
-
-include $(dir)/docdeps.mk
MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
-${MAN_ROFF_FILES} : sphinx-man
+build-man: ${MAN_GZIP_FILES}
+
+${MAN_ROFF_FILES}: ${dir}/man.stamp
+
+$(dir)/man.stamp: ${MAN_RST_FILES}
+ifeq ($(HAVE_SPHINX),1)
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
+ touch $@
+else ifeq ($(HAVE_RST2MAN),1)
+ $(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
+ touch $@
+else
+ @echo "No sphinx or rst2man, will not install man pages."
+endif
install-man: ${MAN_GZIP_FILES}
mkdir -p "$(DESTDIR)$(mandir)/man1"
@@ -52,8 +57,8 @@ install-man: ${MAN_GZIP_FILES}
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
+CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk $(dir)/man.stamp
+CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES)
diff --git a/doc/mkdocdeps.py b/doc/mkdocdeps.py
index 2f4a959..e61bea6 100644
--- a/doc/mkdocdeps.py
+++ b/doc/mkdocdeps.py
@@ -6,8 +6,11 @@ outfile = argv[3]
execfile(conffile)
roff_files = []
+rst_files = []
out=open(outfile,'w')
for page in man_pages:
+ rst_files = rst_files + ["doc/{0:s}.rst".format(page[0])]
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')
+out.write ('MAN_RST_FILES := ' + ' \\\n\t'.join(rst_files)+'\n')
--
1.8.5.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Patch v3 2/4] doc: build man pages into hierarchy, fix help test.
2014-03-13 3:21 ` David Bremner
2014-03-13 3:21 ` [Patch v3 1/4] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN David Bremner
@ 2014-03-13 3:21 ` David Bremner
2014-03-13 3:21 ` [Patch v3 3/4] doc: configure detection of sphinx and rst2man David Bremner
` (3 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-13 3:21 UTC (permalink / raw)
To: notmuch
It turns out there was a reason the old man pages were stored in a man
compatible hierarchy, namely so that we could run man on them before
installing.
Hardcode doc build location into test suite. This isn't ideal, but
let's unbreak the test suite for now.
---
doc/Makefile.local | 11 +++++++----
doc/mkdocdeps.py | 2 +-
test/test-lib-common.sh | 4 ++--
3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/doc/Makefile.local b/doc/Makefile.local
index 23f4095..fab6d48 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -40,7 +40,10 @@ ${MAN_ROFF_FILES}: ${dir}/man.stamp
$(dir)/man.stamp: ${MAN_RST_FILES}
ifeq ($(HAVE_SPHINX),1)
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
- touch $@
+ for section in 1 5 7; do \
+ mkdir -p $(DOCBUILDDIR)/man/man$${section}; \
+ mv $(DOCBUILDDIR)/man/*.$${section} $(DOCBUILDDIR)/man/man$${section}; \
+ done
else ifeq ($(HAVE_RST2MAN),1)
$(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
touch $@
@@ -52,9 +55,9 @@ 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
+ install -m0644 $(DOCBUILDDIR)/man/man1/*.1.gz $(DESTDIR)/$(mandir)/man1
+ install -m0644 $(DOCBUILDDIR)/man/man5/*.5.gz $(DESTDIR)/$(mandir)/man5
+ install -m0644 $(DOCBUILDDIR)/man/man7/*.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
diff --git a/doc/mkdocdeps.py b/doc/mkdocdeps.py
index e61bea6..3effdd8 100644
--- a/doc/mkdocdeps.py
+++ b/doc/mkdocdeps.py
@@ -10,7 +10,7 @@ rst_files = []
out=open(outfile,'w')
for page in man_pages:
rst_files = rst_files + ["doc/{0:s}.rst".format(page[0])]
- roff_files = roff_files + ["{0:s}/man/{1:s}.{2:d}".format(builddir,page[1],page[4])]
+ roff_files = roff_files + ["{0:s}/man/{1:s}.{2:d}".format(builddir,page[0],page[4])]
out.write ('MAN_ROFF_FILES := ' + ' \\\n\t'.join(roff_files)+'\n')
out.write ('MAN_RST_FILES := ' + ' \\\n\t'.join(rst_files)+'\n')
diff --git a/test/test-lib-common.sh b/test/test-lib-common.sh
index e1eaa5a..892991e 100644
--- a/test/test-lib-common.sh
+++ b/test/test-lib-common.sh
@@ -98,12 +98,12 @@ then
PATH=$GIT_VALGRIND/bin:$PATH
GIT_EXEC_PATH=$GIT_VALGRIND/bin
export GIT_VALGRIND
- test -n "$notmuch_path" && MANPATH="$notmuch_path/man:$MANPATH"
+ test -n "$notmuch_path" && MANPATH="$notmuch_path/doc/_build/man"
else # normal case
if test -n "$notmuch_path"
then
PATH="$notmuch_path:$PATH"
- MANPATH="$notmuch_path/man:$MANPATH"
+ MANPATH="$notmuch_path/doc/_build/man"
fi
fi
export PATH MANPATH
--
1.8.5.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Patch v3 3/4] doc: configure detection of sphinx and rst2man
2014-03-13 3:21 ` David Bremner
2014-03-13 3:21 ` [Patch v3 1/4] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN David Bremner
2014-03-13 3:21 ` [Patch v3 2/4] doc: build man pages into hierarchy, fix help test David Bremner
@ 2014-03-13 3:21 ` David Bremner
2014-03-13 3:21 ` [Patch v3 4/4] doc: cosmetic fix for prerst2man.py David Bremner
` (2 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-13 3:21 UTC (permalink / raw)
To: notmuch
Because sphinx-build does not provide a convenient way of listing
which builders exist, and some people actually have pre 1.0 sphinx, we
try loading a relevant python module.
Currently the assumption is that no python in path -> no sphinx-build
in path.
---
configure | 25 +++++++++++++++++++++++++
doc/Makefile.local | 21 ++++++++++++++-------
2 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/configure b/configure
index 2eaed4a..fb276f1 100755
--- a/configure
+++ b/configure
@@ -393,6 +393,25 @@ else
have_emacs=0
fi
+printf "Checking if sphinx is available and supports nroff output... "
+if hash sphinx-build > /dev/null 2>&1 && python -m sphinx.writers.manpage > /dev/null 2>&1 ; then
+ printf "Yes.\n"
+ have_sphinx=1
+ have_rst2man=0
+else
+ printf "No (falling back to rst2man).\n"
+ have_sphinx=0
+
+ printf "Checking if rst2man is available... "
+ if rst2man -V > /dev/null 2>&1; then
+ printf "Yes.\n"
+ have_rst2man=1
+ else
+ printf "No (so will not install man pages).\n"
+ have_rst2man=0
+ fi
+fi
+
libdir_in_ldconfig=0
printf "Checking which platform we are on... "
@@ -759,6 +778,12 @@ emacsetcdir=${EMACSETCDIR}
# Whether there's an emacs binary available for byte-compiling
HAVE_EMACS = ${have_emacs}
+# Whether there's a sphinx-build binary available for building documentation
+HAVE_SPHINX=${have_sphinx}
+
+# Whether there's a rst2man binary available for building documentation
+HAVE_RST2MAN=${have_rst2man}
+
# The directory to which desktop files should be installed
desktop_dir = \$(prefix)/share/applications
diff --git a/doc/Makefile.local b/doc/Makefile.local
index fab6d48..9c31c24 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -33,11 +33,9 @@ sphinx-info: sphinx-texinfo
MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
-build-man: ${MAN_GZIP_FILES}
-
-${MAN_ROFF_FILES}: ${dir}/man.stamp
-
-$(dir)/man.stamp: ${MAN_RST_FILES}
+# Use the man page converter that is available. We should never depend
+# on MAN_ROFF_FILES if a converter is not available.
+${MAN_ROFF_FILES}: ${MAN_RST_FILES}
ifeq ($(HAVE_SPHINX),1)
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
for section in 1 5 7; do \
@@ -46,11 +44,19 @@ ifeq ($(HAVE_SPHINX),1)
done
else ifeq ($(HAVE_RST2MAN),1)
$(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
- touch $@
else
- @echo "No sphinx or rst2man, will not install man pages."
+ @echo "Fatal: build dependency fail."
+ @false
endif
+# Do not try to build or install man pages if a man page converter is
+# not available.
+ifeq ($(HAVE_SPHINX)$(HAVE_RST2MAN),00)
+build-man:
+install-man:
+ @echo "No sphinx or rst2man, will not install man pages."
+else
+build-man: ${MAN_GZIP_FILES}
install-man: ${MAN_GZIP_FILES}
mkdir -p "$(DESTDIR)$(mandir)/man1"
mkdir -p "$(DESTDIR)$(mandir)/man5"
@@ -59,6 +65,7 @@ install-man: ${MAN_GZIP_FILES}
install -m0644 $(DOCBUILDDIR)/man/man5/*.5.gz $(DESTDIR)/$(mandir)/man5
install -m0644 $(DOCBUILDDIR)/man/man7/*.7.gz $(DESTDIR)/$(mandir)/man7
cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz
+endif
$(dir)/docdeps.mk: $(dir)/conf.py $(dir)/mkdocdeps.py
$(mkdocdeps) $< $(DOCBUILDDIR) $@
--
1.8.5.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Patch v3 4/4] doc: cosmetic fix for prerst2man.py
2014-03-13 3:21 ` David Bremner
` (2 preceding siblings ...)
2014-03-13 3:21 ` [Patch v3 3/4] doc: configure detection of sphinx and rst2man David Bremner
@ 2014-03-13 3:21 ` David Bremner
2014-03-17 10:55 ` Tomi Ollila
2014-03-18 10:52 ` Re: David Bremner
5 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-13 3:21 UTC (permalink / raw)
To: notmuch
Fix a particular egregious combination of format and string
concatenation.
---
doc/prerst2man.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/doc/prerst2man.py b/doc/prerst2man.py
index 720deb6..4591264 100644
--- a/doc/prerst2man.py
+++ b/doc/prerst2man.py
@@ -59,4 +59,5 @@ for page in man_pages:
outfile.write("".join(lines))
outfile.close()
- os.system('set -x; rst2man {0} {1}'.format(filename, outdir + '/' + page[0] + '.' + str(page[4])))
+ os.system('set -x; rst2man {0} {1}/{2}.{3}'
+ .format(filename, outdir, page[0],page[4]))
--
1.8.5.3
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re:
2014-03-13 3:21 ` David Bremner
` (3 preceding siblings ...)
2014-03-13 3:21 ` [Patch v3 4/4] doc: cosmetic fix for prerst2man.py David Bremner
@ 2014-03-17 10:55 ` Tomi Ollila
2014-03-18 10:52 ` Re: David Bremner
5 siblings, 0 replies; 12+ messages in thread
From: Tomi Ollila @ 2014-03-17 10:55 UTC (permalink / raw)
To: David Bremner, notmuch
On Thu, Mar 13 2014, David Bremner <david@tethera.net> wrote:
> Several people observed a problem with the test T010-help not finding
> the man pages anymore. To fix that, I had change the previous fix:
> instead of flattening the rst2man output into one directory, I had to
> move the sphinx output into a hierarchy.
These patches fix my build and tests pass. +1
Database upgraded (real men don't use backups or how did it go ?).
Tomi
>
> Patches 1 and 3 should be the same as
>
> id:1394539555-28334-1-git-send-email-david@tethera.net
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re:
2014-03-13 3:21 ` David Bremner
` (4 preceding siblings ...)
2014-03-17 10:55 ` Tomi Ollila
@ 2014-03-18 10:52 ` David Bremner
5 siblings, 0 replies; 12+ messages in thread
From: David Bremner @ 2014-03-18 10:52 UTC (permalink / raw)
To: notmuch
David Bremner <david@tethera.net> writes:
> Several people observed a problem with the test T010-help not finding
> the man pages anymore. To fix that, I had change the previous fix:
> instead of flattening the rst2man output into one directory, I had to
> move the sphinx output into a hierarchy.
>
> Patches 1 and 3 should be the same as
>
> id:1394539555-28334-1-git-send-email-david@tethera.net
>
pushed this series
d
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2014-03-18 10:53 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-11 12:05 v2 man page build fixups David Bremner
2014-03-11 12:05 ` [Patch v2 1/3] doc: have prerst2man.py generate roff files all in one directory David Bremner
2014-03-11 12:05 ` [Patch v2 2/3] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN David Bremner
2014-03-11 12:05 ` [Patch v2 3/3] doc: configure detection of sphinx and rst2man David Bremner
2014-03-11 18:16 ` v2 man page build fixups Tomi Ollila
2014-03-13 3:21 ` David Bremner
2014-03-13 3:21 ` [Patch v3 1/4] doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN David Bremner
2014-03-13 3:21 ` [Patch v3 2/4] doc: build man pages into hierarchy, fix help test David Bremner
2014-03-13 3:21 ` [Patch v3 3/4] doc: configure detection of sphinx and rst2man David Bremner
2014-03-13 3:21 ` [Patch v3 4/4] doc: cosmetic fix for prerst2man.py David Bremner
2014-03-17 10:55 ` Tomi Ollila
2014-03-18 10:52 ` Re: David Bremner
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).