* [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing.
@ 2019-04-21 17:12 David Bremner
2019-04-21 17:12 ` [PATCH 2/4] doc: use stamp file to control rebuilding texi David Bremner
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: David Bremner @ 2019-04-21 17:12 UTC (permalink / raw)
To: notmuch; +Cc: dkg, David Bremner
This is a sledgehammer approach to conditionally (not) build the
notmuch-emacs documentation, since it is currently the only thing that
needs Emacs to build. Hopefully in the future we can come up with a
cleaner way of disabling building the notmuch-emacs docs when emacs is
missing.
---
doc/Makefile.local | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/doc/Makefile.local b/doc/Makefile.local
index dfe62295..c148d74a 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -116,14 +116,14 @@ install-man: ${MAN_GZIP_FILES}
cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz
endif
-ifneq ($(HAVE_SPHINX)$(HAVE_MAKEINFO),11)
+ifneq ($(HAVE_SPHINX)$(HAVE_MAKEINFO)$(HAVE_EMACS),111)
build-info:
- @echo "Missing sphinx or makeinfo, not building info pages"
+ @echo "Missing prerequisites, not building info pages"
else
build-info: sphinx-info
endif
-ifneq ($(HAVE_SPHINX)$(HAVE_MAKEINFO)$(HAVE_INSTALL_INFO),111)
+ifneq ($(HAVE_SPHINX)$(HAVE_MAKEINFO)$(HAVE_INSTALL_INFO)$(HAVE_EMACS),1111)
install-info:
@echo "Missing prerequisites, not installing info pages"
else
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/4] doc: use stamp file to control rebuilding texi
2019-04-21 17:12 [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing David Bremner
@ 2019-04-21 17:12 ` David Bremner
2019-04-21 17:12 ` [PATCH 3/4] doc: use stamp file for html docs David Bremner
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2019-04-21 17:12 UTC (permalink / raw)
To: notmuch; +Cc: dkg, David Bremner
Apparently the sphinx-doc texinfo builder is not smart enough to only
rebuild those files where the source has changed.
---
doc/Makefile.local | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/doc/Makefile.local b/doc/Makefile.local
index c148d74a..2a701646 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -16,6 +16,7 @@ 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)
+ALL_RST_FILES := $(MAN_RST_FILES) $(srcdir)/doc/notmuch-emacs.rst
MAN1_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN1_RST:.rst=.1))
MAN5_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN5_RST:.rst=.5))
@@ -52,8 +53,11 @@ sphinx-info: | sphinx-texinfo
sphinx-html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
-sphinx-texinfo:
+sphinx-texinfo: .texi.stamp
+
+$(DOCBUILDDIR)/.texi.stamp: $(ALL_RST_FILES)
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(DOCBUILDDIR)/texinfo
+ touch $@
sphinx-info: sphinx-texinfo
$(MAKE) -C $(DOCBUILDDIR)/texinfo info
@@ -137,5 +141,5 @@ $(dir)/config.dox: version.stamp
echo "PROJECT_NAME = \"Notmuch $(VERSION)\"" > $@
echo "INPUT=${srcdir}/lib/notmuch.h" >> $@
-CLEAN := $(CLEAN) $(DOCBUILDDIR) $(DOCBUILDDIR)/.roff.stamp
+CLEAN := $(CLEAN) $(DOCBUILDDIR) $(DOCBUILDDIR)/.roff.stamp $(DOCBUILDDIR)/.texi.stamp
CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) $(dir)/conf.pyc $(dir)/config.dox
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/4] doc: use stamp file for html docs
2019-04-21 17:12 [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing David Bremner
2019-04-21 17:12 ` [PATCH 2/4] doc: use stamp file to control rebuilding texi David Bremner
@ 2019-04-21 17:12 ` David Bremner
2019-04-23 21:34 ` Daniel Kahn Gillmor
2019-04-21 17:12 ` [PATCH 4/4] build: ignore *.stamp David Bremner
2019-04-21 22:57 ` [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing David Bremner
3 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2019-04-21 17:12 UTC (permalink / raw)
To: notmuch; +Cc: dkg, David Bremner
These are less time consuming than the texi docs to rebuild (because
the texi rebuild triggers info rebuild), but still take noticable time.
---
doc/Makefile.local | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/doc/Makefile.local b/doc/Makefile.local
index 2a701646..a8fee537 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -50,10 +50,13 @@ sphinx-html: | $(DOCBUILDDIR)/.roff.stamp
sphinx-texinfo: | sphinx-html
sphinx-info: | sphinx-texinfo
-sphinx-html:
+sphinx-html: $(DOCBUILDDIR)/.html.stamp
+
+$(DOCBUILDDIR)/.html.stamp: $(ALL_RST_FILES)
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
+ touch $@
-sphinx-texinfo: .texi.stamp
+sphinx-texinfo: $(DOCBUILDDIR)/.texi.stamp
$(DOCBUILDDIR)/.texi.stamp: $(ALL_RST_FILES)
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(DOCBUILDDIR)/texinfo
@@ -142,4 +145,5 @@ $(dir)/config.dox: version.stamp
echo "INPUT=${srcdir}/lib/notmuch.h" >> $@
CLEAN := $(CLEAN) $(DOCBUILDDIR) $(DOCBUILDDIR)/.roff.stamp $(DOCBUILDDIR)/.texi.stamp
+CLEAN := $(CLEAN) $(DOCBUILDDIR)/.html.stamp
CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) $(dir)/conf.pyc $(dir)/config.dox
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/4] build: ignore *.stamp
2019-04-21 17:12 [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing David Bremner
2019-04-21 17:12 ` [PATCH 2/4] doc: use stamp file to control rebuilding texi David Bremner
2019-04-21 17:12 ` [PATCH 3/4] doc: use stamp file for html docs David Bremner
@ 2019-04-21 17:12 ` David Bremner
2019-04-21 23:53 ` [PATCH 1/2] build: only try to build .rsti files if we have emacs and sphinx David Bremner
2019-04-21 22:57 ` [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing David Bremner
3 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2019-04-21 17:12 UTC (permalink / raw)
To: notmuch; +Cc: dkg, David Bremner
The current case is docstring.stamp, but it's likely that others will
arise.
---
.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gitignore b/.gitignore
index e06101ce..468b660a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ tags
.*.swp
/releases
/.stamps
+*.stamp
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing.
2019-04-21 17:12 [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing David Bremner
` (2 preceding siblings ...)
2019-04-21 17:12 ` [PATCH 4/4] build: ignore *.stamp David Bremner
@ 2019-04-21 22:57 ` David Bremner
3 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2019-04-21 22:57 UTC (permalink / raw)
To: notmuch
David Bremner <david@tethera.net> writes:
> This is a sledgehammer approach to conditionally (not) build the
> notmuch-emacs documentation, since it is currently the only thing that
> needs Emacs to build. Hopefully in the future we can come up with a
> cleaner way of disabling building the notmuch-emacs docs when emacs is
> missing.
This is not enough, but itself, as docstrings.stamp also needs to be
special cased. And that still leaves a bunch of ugly warnings and errors
when building the man pages. So I probably need to rething this patch.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] build: only try to build .rsti files if we have emacs and sphinx
2019-04-21 17:12 ` [PATCH 4/4] build: ignore *.stamp David Bremner
@ 2019-04-21 23:53 ` David Bremner
2019-04-21 23:53 ` [PATCH 2/2] doc: exclude notmuch-emacs.rst if emacs is not present David Bremner
0 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2019-04-21 23:53 UTC (permalink / raw)
To: David Bremner, notmuch
Emacs is needed to build them, and sphinx is needed to use them
---
emacs/Makefile.local | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/emacs/Makefile.local b/emacs/Makefile.local
index 04913a06..40b7c14f 100644
--- a/emacs/Makefile.local
+++ b/emacs/Makefile.local
@@ -47,8 +47,13 @@ emacs_images := \
emacs_bytecode = $(emacs_sources:.el=.elc)
emacs_docstrings = $(emacs_sources:.el=.rsti)
+ifneq ($(HAVE_SPHINX)$(HAVE_EMACS),11)
+docstring.stamp:
+ @echo "Missing prerequisites, not collecting docstrings"
+else
docstring.stamp: ${emacs_docstrings}
touch $@
+endif
# Because of defmacro's and defsubst's, we have to account for load
# dependencies between Elisp files when byte compiling. Otherwise,
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] doc: exclude notmuch-emacs.rst if emacs is not present.
2019-04-21 23:53 ` [PATCH 1/2] build: only try to build .rsti files if we have emacs and sphinx David Bremner
@ 2019-04-21 23:53 ` David Bremner
0 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2019-04-21 23:53 UTC (permalink / raw)
To: David Bremner, notmuch
This will still generate a warning about an excluded document in the
toctree, but it cuts down on the noise quite a lot.
---
doc/Makefile.local | 2 +-
doc/conf.py | 5 +++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/doc/Makefile.local b/doc/Makefile.local
index 57104dae..651168f4 100644
--- a/doc/Makefile.local
+++ b/doc/Makefile.local
@@ -4,7 +4,7 @@ dir := doc
# You can set these variables from the command line.
SPHINXOPTS := -q
-SPHINXBUILD = sphinx-build
+SPHINXBUILD = HAVE_EMACS=${HAVE_EMACS} sphinx-build
DOCBUILDDIR := $(dir)/_build
# Internal variables.
diff --git a/doc/conf.py b/doc/conf.py
index 0ef72327..5f8c9f1c 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -29,6 +29,11 @@ release = version
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
+# If we don't have emacs, don't build the notmuch-emacs docs, as they need
+# emacs to generate the docstring include files
+if os.environ.get('HAVE_EMACS') != '1':
+ exclude_patterns.append('notmuch-emacs.rst')
+
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
--
2.20.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/4] doc: use stamp file for html docs
2019-04-21 17:12 ` [PATCH 3/4] doc: use stamp file for html docs David Bremner
@ 2019-04-23 21:34 ` Daniel Kahn Gillmor
2019-04-24 10:06 ` David Bremner
0 siblings, 1 reply; 9+ messages in thread
From: Daniel Kahn Gillmor @ 2019-04-23 21:34 UTC (permalink / raw)
To: David Bremner, notmuch
[-- Attachment #1: Type: text/plain, Size: 3158 bytes --]
On Sun 2019-04-21 14:12:44 -0300, David Bremner wrote:
> These are less time consuming than the texi docs to rebuild (because
> the texi rebuild triggers info rebuild), but still take noticable time.
> ---
> doc/Makefile.local | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/doc/Makefile.local b/doc/Makefile.local
> index 2a701646..a8fee537 100644
> --- a/doc/Makefile.local
> +++ b/doc/Makefile.local
> @@ -50,10 +50,13 @@ sphinx-html: | $(DOCBUILDDIR)/.roff.stamp
> sphinx-texinfo: | sphinx-html
> sphinx-info: | sphinx-texinfo
>
> -sphinx-html:
> +sphinx-html: $(DOCBUILDDIR)/.html.stamp
> +
> +$(DOCBUILDDIR)/.html.stamp: $(ALL_RST_FILES)
> $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
> + touch $@
>
> -sphinx-texinfo: .texi.stamp
> +sphinx-texinfo: $(DOCBUILDDIR)/.texi.stamp
I think this final change (to the sphinx-texinfo target) belongs in the
previous patchset.
Otherwise, this series looks good to me, using your followup two-part
replacement for the obsolete 1/4 patch.
I've tested it, and it reduces the amount of time for the subsequent run
of "make" quite a bit.
After a "./configure && make clean && make", subsequent repeated "make
--trace" runs look like this:
0 dkg@alice:~/src/notmuch/notmuch$ make --trace
emacs/Makefile.local:76: update target 'emacs/.eldeps.x' due to: emacs/.eldeps
cmp -s emacs/.eldeps emacs/.eldeps.x || cp emacs/.eldeps emacs/.eldeps.x
doc/Makefile.local:66: update target 'sphinx-info' due to: sphinx-texinfo
make -C doc/_build/texinfo info
make[1]: Entering directory '/home/dkg/src/notmuch/notmuch/doc/_build/texinfo'
make[1]: Nothing to be done for 'info'.
make[1]: Leaving directory '/home/dkg/src/notmuch/notmuch/doc/_build/texinfo'
bindings/Makefile.local:8: update target 'ruby-bindings' due to: lib/libnotmuch.so
cd bindings/ruby && \
EXTRA_LDFLAGS="-Wl,--no-undefined" \
LIBNOTMUCH="../../lib/libnotmuch.so" \
NOTMUCH_SRCDIR='/home/dkg/src/notmuch/notmuch' \
ruby extconf.rb --vendor
creating Makefile
make -C bindings/ruby
make[1]: Entering directory '/home/dkg/src/notmuch/notmuch/bindings/ruby'
Makefile:258: update target 'notmuch.so' due to: Makefile
echo linking shared-object notmuch.so
linking shared-object notmuch.so
rm -f notmuch.so
gcc -shared -o notmuch.so database.o directory.o filenames.o init.o message.o messages.o query.o status.o tags.o thread.o threads.o -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-z,relro -Wl,-z,now -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,--no-undefined -Wl,-z,relro -Wl,-z,now -Wl,--compress-debug-sections=zlib ../../lib/libnotmuch.so -lruby-2.5 -lpthread -lgmp -ldl -lcrypt -lm -lc
make[1]: Leaving directory '/home/dkg/src/notmuch/notmuch/bindings/ruby'
0 dkg@alice:~/src/notmuch/notmuch$
so there's still a bit of strange .eldeps and sphinx-*info business, but
they take basically no time. And of course the ruby bindings haven't
been dealt with yet.
This seems like a clear improvement on the status quo, so i think we
should merge it and whittle down the remaining issues where we can.
--dkg
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/4] doc: use stamp file for html docs
2019-04-23 21:34 ` Daniel Kahn Gillmor
@ 2019-04-24 10:06 ` David Bremner
0 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2019-04-24 10:06 UTC (permalink / raw)
To: Daniel Kahn Gillmor, notmuch
Daniel Kahn Gillmor <dkg@fifthhorseman.net> writes:
>>
>> -sphinx-texinfo: .texi.stamp
>> +sphinx-texinfo: $(DOCBUILDDIR)/.texi.stamp
>
> I think this final change (to the sphinx-texinfo target) belongs in the
> previous patchset.
>
> Otherwise, this series looks good to me, using your followup two-part
> replacement for the obsolete 1/4 patch.
>
thanks for catching that. I've pushed the amended series.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-04-24 10:06 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-04-21 17:12 [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing David Bremner
2019-04-21 17:12 ` [PATCH 2/4] doc: use stamp file to control rebuilding texi David Bremner
2019-04-21 17:12 ` [PATCH 3/4] doc: use stamp file for html docs David Bremner
2019-04-23 21:34 ` Daniel Kahn Gillmor
2019-04-24 10:06 ` David Bremner
2019-04-21 17:12 ` [PATCH 4/4] build: ignore *.stamp David Bremner
2019-04-21 23:53 ` [PATCH 1/2] build: only try to build .rsti files if we have emacs and sphinx David Bremner
2019-04-21 23:53 ` [PATCH 2/2] doc: exclude notmuch-emacs.rst if emacs is not present David Bremner
2019-04-21 22:57 ` [PATCH 1/4] doc: don't attempt to build info pages if Emacs is missing 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).