Commit graph

32 commits

Author SHA1 Message Date
David Bremner
3ec47e1165 doc: Don't install emacs docs when they are not built
In 40b025 we stopped building the notmuch-emacs documentation if
HAVE_EMACS=0 (i.e. no emacs was detected by configure). Unfortunately
we continued to try to install the (non-existent) documentation, which
causes build/install failures.

As a bonus, we also avoid installing the documentation if the user
configures --without-emacs.

Thanks to Ralph Seichter for reporting the problem, and testing
previous versions of this fix.
2019-06-10 21:48:03 -03:00
David Bremner
71bf459596 doc: don't build notmuch-emacs.info for configure --without-emacs
Since the docstrings are not built in the case of --without-emacs,
even if emacs is detected, don't let sphinx build the emacs docs. This
avoids a large number of error messages due to missing includes. It's
actually a bit surprising sphinx doesn't generate an error for the
missing include files.
2019-06-10 21:46:55 -03:00
David Bremner
6edc073e44 doc: use separate doctrees for distinct builders
It seems our previous attempt with order-only targets was not
sufficient to avoid problems with sphinx-builds doctree cache [0].
Looking around at other people's approaches [1], using separate
doctrees was suggested. I guess there might be a slight loss of
efficiency, but it seems more robust.

[0]: build failures were first noticed in Debian experimental, but I was able to duplicate it in
     my usual build environment about 1 in 8 builds.

[1]: in particular
     9e3fc1657d
2019-06-03 07:35:30 -03:00
David Bremner
40b025c5f1 doc: exclude notmuch-emacs.rst if emacs is not present.
This will still generate a warning about an excluded document in the
toctree, but it cuts down on the noise quite a lot.
2019-04-24 06:53:13 -03:00
David Bremner
4f0fe36c47 doc: use stamp file for html docs
These are less time consuming than the texi docs to rebuild (because
the texi rebuild triggers info rebuild), but still take noticable time.
2019-04-24 06:53:13 -03:00
David Bremner
f0399db513 doc: use stamp file to control rebuilding texi
Apparently the sphinx-doc texinfo builder is not smart enough to only
rebuild those files where the source has changed.
2019-04-24 06:53:07 -03:00
David Bremner
0557c5a033 doc/build: use $(MAKE) instead of make
This should silence some warnings about the jobserver, but also make
it easier to build the docs where GNU make is called something other
than make.

Based on a patch from aidecoe.
2019-03-19 20:54:15 -03:00
David Bremner
71eaa19350 Merge branch 'release'
Changes from 0.28.3
2019-03-06 08:53:26 -04:00
David Bremner
dcf7fca2d9 doc: sequentialize calls to sphinx-build
In certain conditions the parallel calls to sphinx-build could
collide, yielding a crash like

Exception occurred:
  File "/usr/lib/python3/dist-packages/sphinx/environment.py", line 1261, in get_doctree
    doctree = pickle.load(f)
EOFError: Ran out of input
2019-03-05 21:46:41 -04:00
David Bremner
e52535029b doc: make man pages depend on emacs docstrings
This is nonsensical on the face of it, but is needed (for now) because
the notmuch-emacs page is unconditionally included in index.rst.
2018-12-20 17:30:11 +09:00
David Bremner
0601d2337e doc/emacs: require extracted docstrings for sphinx or info manual
We need to use the stamp file here in order not to depend on the order
the submakefiles are included.
2018-12-08 08:53:09 -04:00
David Bremner
7a6d4a0852 doc: install build and install info pages
All of the man pages are installed as info pages, plus
the (unfinished) notmuch-emacs manual
2018-05-26 08:26:13 -07:00
Antoine Amarilli
cf8c689eab doc: create manpage folders with right permissions
Avoids the issue where umask can make man pages unreadable after
installation. Relevant email on the mailing-list:
<87h8rt30sy.fsf@fifthhorseman.net>
2018-01-31 21:22:04 -04:00
Jani Nikula
ae97630dbf build: only install known man pages
Install man pages based on $(MAN_GZIP_FILES), which directly
corresponds to the man page source rst files. This way we can filter
the man pages to be installed as needed.
2016-11-17 08:42:23 -04:00
Jani Nikula
76ab6e9962 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.
2016-11-17 08:41:24 -04:00
Jani Nikula
a7a683b120 build: do not touch roff files after sphinx-build
If Sphinx fails to create any of the roff files, having touch create
them hides the errors until someone realizes, possibly much later,
that the resulting files are empty. (Note that gzip doesn't fail on
empty input files.) Sphinx will change the timestamps of any files it
has written anyway.
2016-11-17 08:40:07 -04:00
David Bremner
82d8d0b062 replace hardcoded "python" with configured python command
Thanks to FreeBSD port maintainer Mikhail for report and the original
the original patch.

This is the right thing (TM) and also apparently fixes the build on
FreeBSD.
2015-07-10 18:13:28 +02:00
David Bremner
b9e7b8e8f0 doc: gzipped notmuch.3 before trying to install notmuch.3.gz
If HAVE_SPHINX=0 but HAVE_DOXYGEN=1, then the previous version was
trying to install notmuch.3.gz but only got as far as creating
notmuch.3
2015-01-25 15:04:51 +01:00
David Bremner
d241a486fa doc: remove support for rst2man
It was becoming increasingly complicated to support rst2man, and there
were apparently not many people that relied on it.
2015-01-22 08:37:25 +01:00
Tomi Ollila
ef5e66ae8e doc: 'rm -f' potential doxygen temporary output file
Some (older) Doxygen versions do not create such a temporary file.
2014-09-02 08:43:20 -07:00
David Bremner
5694d72a83 docs: remove spurious man page generated from doxygen
There is a doxygen bug about these odd files,

      https://bugzilla.gnome.org/show_bug.cgi?id=727796

But it isn't clear if / when a fix will be provided, so just delete it
to avoid e.g. confusing man-to-wiki.pl
2014-07-13 08:59:02 -03:00
David Bremner
934e333a08 doc: postprocess notmuch.3
Remove excess italics from doxygen output. It seems to make no
sense (and is certainly ugly) to italicize the first argument to the
.RI macro.
2014-07-09 19:32:44 -03:00
David Bremner
1022433551 doc: build and install doxygen api docs
In order to support out of tree builds and avoid hardcoding version
number, generate `doc/config.dox` from configure.
2014-07-09 19:32:15 -03:00
David Bremner
95aa988a06 doc: remove conf.pyc on clean
This build artifict messes up the packaging process for (at least)
Debian if not removed on clean.
2014-04-22 14:24:04 +09:00
Austin Clements
59c6103e1c doc: Fix parallel build of roff files
The roff build rule builds all of the roff files in a single command.
Previously, this was expressed as a multi-target rule, but since this
is equivalent to specifying a copy of the rule for each target, make
-jN could start up to N parallel instances of this command.  Fix this
by bottlenecking this rule through a single stamp file.

This also removes the unused man.stamp from CLEAN.
2014-04-19 05:55:30 +09:00
David Bremner
57b4ef6f30 doc: fix out-of-tree build
The subtle part is adding .rst and .py files to vpath so they can be
used as dependencies without prefixing with $(srcdir)

We also change the interface to mkbuildeps.py: rather than getting the
containing directory from the conf file path, we go the other way.
2014-03-25 08:32:10 -03:00
David Bremner
beef0a8f55 doc: configure detection of sphinx and rst2man
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.
2014-03-18 07:39:32 -03:00
David Bremner
533639b143 doc: build man pages into hierarchy, fix help test.
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.
2014-03-18 07:39:12 -03:00
David Bremner
9d9a700f1d doc: build man pages at build time; introduce HAVE_SPHINX, HAVE_RST2MAN
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.
2014-03-18 07:38:57 -03:00
David Bremner
6f8daa3989 doc: install sphinx version of man pages
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.
2014-03-09 10:41:09 -03:00
David Bremner
df70fc4b4b doc: add target rst2man to build man pages using rst2man
Many people have docutils installed, but not sphinx. Allow these
people to build the man pages.
2014-03-09 10:41:09 -03:00
David Bremner
d736260385 doc: convert sphinx based docs
This is the output from sphinx-quickstart, massaged a bit, along with
our existing man pages converted to rst.

A skeleton notmuch-emacs manual is also included. It is not suitable
for end user use yet.
2014-03-09 10:41:08 -03:00