Mercurial > hg
annotate doc/Makefile @ 41850:d80d48928eb1
setup: define build_doc command
Currently, various processes for packaging Mercurial state to
manually invoke `make -C doc` in order to generate the documentation.
This Makefile merely invokes `gendoc.py` and `runrst` to produce
man pages and HTML pages.
Not all environments may have the ability to easily run
Makefiles. Windows is notably in this set.
This commit ports the man page and HTML generation logic from
doc/Makefile to setup.py. We introduce a new build_doc command
which generates documentation by calling gendoc.py and runrst.
The documentation can now be built via pure Python by running
`python setup.py build_doc`.
We don't implement dependency tracking because IMO it is more
effort than it is worth.
We could potentially remove the duplicated functionality in
doc/Makefile. But I'm not sure what all is depending on it. So
I plan to keep it around.
# no-check-commit because forced foo_bar function names
Differential Revision: https://phab.mercurial-scm.org/D6063
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 03 Mar 2019 10:31:23 -0800 |
parents | b584ed1b225d |
children | ec7b478f1bf8 |
rev | line source |
---|---|
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
19425
diff
changeset
|
1 SOURCES=$(notdir $(wildcard ../mercurial/help/*.[0-9].txt)) |
671
efa4a7e2f322
Move hgrc documentation out to its own man page, hgrc(5).
Bryan O'Sullivan <bos@serpentine.com>
parents:
465
diff
changeset
|
2 MAN=$(SOURCES:%.txt=%) |
efa4a7e2f322
Move hgrc documentation out to its own man page, hgrc(5).
Bryan O'Sullivan <bos@serpentine.com>
parents:
465
diff
changeset
|
3 HTML=$(SOURCES:%.txt=%.html) |
12921
6b6e7da9bccd
doc/Makefile: docs now also depend on extensions
Martin Geisler <mg@aragost.com>
parents:
12841
diff
changeset
|
4 GENDOC=gendoc.py ../mercurial/commands.py ../mercurial/help.py \ |
6b6e7da9bccd
doc/Makefile: docs now also depend on extensions
Martin Geisler <mg@aragost.com>
parents:
12841
diff
changeset
|
5 ../mercurial/help/*.txt ../hgext/*.py ../hgext/*/__init__.py |
2233 | 6 PREFIX=/usr/local |
4030
a48971ae1387
install man pages by default into $(PREFIX)/share/man not $(PREFIX)/man since the FHS puts them there
Jonathan Smith <https://issues.rpath.com/>
parents:
3908
diff
changeset
|
7 MANDIR=$(PREFIX)/share/man |
7686
fa584d23e3cc
Do not install executable man pages
Christian Ebert <blacktrash@gmx.net>
parents:
7660
diff
changeset
|
8 INSTALL=install -c -m 644 |
6724
2e58f1a36046
use ${PYTHON} var in doc/Makefile as well
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6486
diff
changeset
|
9 PYTHON=python |
13054
25200c7efe0f
runrst: add RSTARGS Makefile variable to allow customization
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12921
diff
changeset
|
10 RSTARGS= |
465 | 11 |
19427
80983af366b5
doc: make i18n man and html
Takumi IINO <trot.thunder@gmail.com>
parents:
19426
diff
changeset
|
12 export HGENCODING=UTF-8 |
9971
fa99480d5135
doc/Makefile: ensure C locale
Martin Geisler <mg@lazybytes.net>
parents:
9703
diff
changeset
|
13 |
1006
b0e581438835
Generate html documentation by default, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
671
diff
changeset
|
14 all: man html |
465 | 15 |
16 man: $(MAN) | |
17 | |
18 html: $(HTML) | |
19 | |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
34622
diff
changeset
|
20 # This logic is duplicated in setup.py:hgbuilddoc() |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
19425
diff
changeset
|
21 common.txt $(SOURCES) $(SOURCES:%.txt=%.gendoc.txt): $(GENDOC) |
34622
b584ed1b225d
build: make install in "/doc" failed if the destination dir contained spaces
muxator <a.mux@inwind.it>
parents:
19427
diff
changeset
|
22 ${PYTHON} gendoc.py "$(basename $@)" > $@.tmp |
9444
2f7f6e43d52b
doc/Makefile: do not create files in case of errors
Martin Geisler <mg@lazybytes.net>
parents:
9422
diff
changeset
|
23 mv $@.tmp $@ |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
1689
diff
changeset
|
24 |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
19425
diff
changeset
|
25 %: %.txt %.gendoc.txt common.txt |
13054
25200c7efe0f
runrst: add RSTARGS Makefile variable to allow customization
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12921
diff
changeset
|
26 $(PYTHON) runrst hgmanpage $(RSTARGS) --halt warning \ |
9445
f0105f2c424c
doc/Makefile: make rst2html and rst2man halt on warnings
Martin Geisler <mg@lazybytes.net>
parents:
9444
diff
changeset
|
27 --strip-elements-with-class htmlonly $*.txt $* |
465 | 28 |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
19425
diff
changeset
|
29 %.html: %.txt %.gendoc.txt common.txt |
13054
25200c7efe0f
runrst: add RSTARGS Makefile variable to allow customization
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12921
diff
changeset
|
30 $(PYTHON) runrst html $(RSTARGS) --halt warning \ |
9626
d1aa5393bef4
doc: add a style sheet to the generated HTML pages
Martin Geisler <mg@lazybytes.net>
parents:
9445
diff
changeset
|
31 --link-stylesheet --stylesheet-path style.css $*.txt $*.html |
465 | 32 |
3872
9d7ac8613340
fix MANIFEST generation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3269
diff
changeset
|
33 MANIFEST: man html |
9401
2a5144687727
doc/Makefile: Don't show Makefile comments in output
Mads Kiilerich <mads@kiilerich.com>
parents:
9400
diff
changeset
|
34 # tracked files are already in the main MANIFEST |
3872
9d7ac8613340
fix MANIFEST generation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3269
diff
changeset
|
35 $(RM) $@ |
12841
5fbc2c38a98f
doc/Makefile: do not include hg.1.gendoc.txt in MANIFEST
Martin Geisler <mg@lazybytes.net>
parents:
12840
diff
changeset
|
36 for i in $(MAN) $(HTML); do \ |
3872
9d7ac8613340
fix MANIFEST generation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3269
diff
changeset
|
37 echo "doc/$$i" >> $@ ; \ |
9d7ac8613340
fix MANIFEST generation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3269
diff
changeset
|
38 done |
9d7ac8613340
fix MANIFEST generation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
3269
diff
changeset
|
39 |
2233 | 40 install: man |
41 for i in $(MAN) ; do \ | |
8822
1027da7d2fb9
doc: fix regexp for determining the man page section
Cédric Duval <cedricduval@free.fr>
parents:
8311
diff
changeset
|
42 subdir=`echo $$i | sed -n 's/^.*\.\([0-9]\)$$/man\1/p'` ; \ |
34622
b584ed1b225d
build: make install in "/doc" failed if the destination dir contained spaces
muxator <a.mux@inwind.it>
parents:
19427
diff
changeset
|
43 mkdir -p "$(DESTDIR)$(MANDIR)"/$$subdir ; \ |
b584ed1b225d
build: make install in "/doc" failed if the destination dir contained spaces
muxator <a.mux@inwind.it>
parents:
19427
diff
changeset
|
44 $(INSTALL) $$i "$(DESTDIR)$(MANDIR)"/$$subdir ; \ |
2233 | 45 done |
46 | |
465 | 47 clean: |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
19425
diff
changeset
|
48 $(RM) $(MAN) $(HTML) common.txt $(SOURCES) $(SOURCES:%.txt=%.gendoc.txt) MANIFEST |