~bzr-pqm/bzr/bzr.dev

3346.2.2 by Martin Pool
Add a simple 'make dist' rule
1
# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
2399.1.1 by John Arbash Meinel
Update Makefile to add 'make api-docs' using pydoctor
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
17
# A relatively simple Makefile to assist in building parts of bzr. Mostly for
18
# building documentation, etc.
19
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
20
21
### Core Stuff ###
22
2916.1.1 by Andrew Bennetts
Allow overriding the PYTHON executable for 'make extensions', and remove *.so files in 'make clean'.
23
PYTHON=python
24
3383.1.1 by Martin Pool
Merge back 1.4 and start 1.5 (but not transaction cache reinstatement)
25
.PHONY: all clean extensions pyflakes api-docs
1739.1.6 by Robert Collins
Resolve conflicts with bzr.dev.
26
1739.1.5 by Robert Collins
Review feedback.
27
all: extensions
28
29
extensions:
1739.1.3 by Robert Collins
Merge bzr.dev.
30
	@echo "building extension modules."
2916.1.1 by Andrew Bennetts
Allow overriding the PYTHON executable for 'make extensions', and remove *.so files in 'make clean'.
31
	$(PYTHON) setup.py build_ext -i
1102 by Martin Pool
- merge test refactoring from robertc
32
2495.5.1 by John Arbash Meinel
(Andrew Bennetts) 'make check' builds docs as well
33
check: docs extensions
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
34
	$(PYTHON) -Werror -O ./bzr selftest -1v $(tests)
1526.1.1 by Robert Collins
Run the test suite with no locale as well as the default locale. Also add a test for build_tree_shape to selftest.
35
	@echo "Running all tests with no locale."
2749.1.1 by Martin Pool
(mbp) Show 'ascii' prefix when make check runs tests again in ascii mode
36
	LC_CTYPE= LANG=C LC_ALL= ./bzr selftest -1v $(tests) 2>&1 | sed -e 's/^/[ascii] /'
1102 by Martin Pool
- merge test refactoring from robertc
37
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
38
# Run Python style checker (apt-get install pyflakes)
2625.11.1 by Martin Pool
(trivial) Remove obsolete Makefile targets
39
#
40
# Note that at present this gives many false warnings, because it doesn't
41
# know about identifiers loaded through lazy_import.
1773.4.1 by Martin Pool
Add pyflakes makefile target; fix many warnings
42
pyflakes:
43
	pyflakes bzrlib
44
45
pyflakes-nounused:
46
	# There are many of these warnings at the moment and they're not a
47
	# high priority to fix
48
	pyflakes bzrlib | grep -v ' imported but unused'
49
50
clean:
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
51
	$(PYTHON) setup.py clean
2916.1.1 by Andrew Bennetts
Allow overriding the PYTHON executable for 'make extensions', and remove *.so files in 'make clean'.
52
	-find . -name "*.pyc" -o -name "*.pyo" -o -name "*.so" | xargs rm -f
1185.1.21 by Robert Collins
add a clean target
53
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
54
# Build API documentation
2399.1.9 by John Arbash Meinel
Since I have epydoc working with lazy imports, make it the default api doc generator.
55
docfiles = bzr bzrlib
2399.1.1 by John Arbash Meinel
Update Makefile to add 'make api-docs' using pydoctor
56
api-docs:
2413.4.1 by John Arbash Meinel
Cherrypick just the epydoc builder changes.
57
	mkdir -p api/html
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
58
	PYTHONPATH=$(PWD) $(PYTHON) tools/bzr_epydoc --html -o api/html --docformat 'restructuredtext en' $(docfiles)
2399.1.12 by John Arbash Meinel
Add make check-api-docs, which runs epydoc --check, rather than generating output
59
check-api-docs:
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
60
	PYTHONPATH=$(PWD) $(PYTHON) tools/bzr_epydoc --check --docformat 'restructuredtext en' $(docfiles)
2399.1.12 by John Arbash Meinel
Add make check-api-docs, which runs epydoc --check, rather than generating output
61
2625.11.2 by Martin Pool
Put back better rules for building ctags
62
# build tags for emacs and vim
63
TAGS:
64
	ctags -R -e bzrlib
65
66
tags:
67
	ctags -R bzrlib
68
69
# these are treated as phony so they'll always be rebuilt - it's pretty quick
70
.PHONY: TAGS tags
71
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
72
### Documentation ###
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
73
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
74
# set PRETTY to get docs that look like the Bazaar web site
75
ifdef PRETTY
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
76
rst2html := $(PYTHON) tools/rst2prettyhtml.py doc/bazaar-vcs.org.kid 
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
77
else
3113.3.1 by Alexander Belchenko
Halt conversion of ReST to HTML if there is warnings.
78
rst2html := $(PYTHON) tools/rst2html.py --link-stylesheet --footnote-references=superscript --halt=warning
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
79
endif
80
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
81
# translate txt docs to html
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
82
derived_txt_files := \
83
	doc/en/user-reference/bzr_man.txt \
84
	doc/en/developer-guide/HACKING.txt \
85
	doc/en/release-notes/NEWS.txt
3431.1.2 by Martin Pool
Build Spanish docs from the main Makefile
86
txt_files := $(wildcard doc/en/tutorials/*.txt) \
87
	$(derived_txt_files) \
2977.1.14 by Ian Clatworthy
change Makefile to support tutorials
88
	doc/en/user-guide/index.txt \
2691.1.16 by Ian Clatworthy
Ensure doc hierarchy is setup correctly for the Windows installer
89
	doc/en/mini-tutorial/index.txt \
3431.1.2 by Martin Pool
Build Spanish docs from the main Makefile
90
	$(wildcard doc/es/guia-usario/*.txt) \
91
	doc/es/mini-tutorial/index.txt \
92
	doc/index.txt \
93
	doc/index.es.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
94
non_txt_files := \
95
       doc/default.css \
3065.3.1 by Alexander Belchenko
include doc/en/user-guide/images/*.png to WEB_DOCS
96
       doc/en/quick-reference/quick-start-summary.svg \
3065.3.3 by Alexander Belchenko
merge bzr.dev
97
       doc/en/quick-reference/quick-start-summary.png \
3092.3.1 by Ian Clatworthy
fix Makefile rules for doc generation
98
       doc/en/quick-reference/quick-start-summary.pdf \
3431.1.2 by Martin Pool
Build Spanish docs from the main Makefile
99
       $(wildcard doc/en/user-guide/images/*.png) \
100
       doc/es/referencia-rapida/referencia-rapida.svg \
101
       doc/es/referencia-rapida/referencia-rapida.png \
102
       doc/es/referencia-rapida/referencia-rapida.pdf \
103
       $(wildcard doc/es/guia-usuario/images/*.png)
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
104
htm_files := $(patsubst %.txt, %.html, $(txt_files)) 
2481.1.3 by Robert Collins
Add the performance roadmap rationale.
105
dev_txt_files := $(wildcard $(addsuffix /*.txt, doc/developers))
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
106
dev_htm_files := $(patsubst %.txt, %.html, $(dev_txt_files)) 
2054.2.14 by Aaron Bentley
Add 'pretty-docs' target to makefile
107
3092.3.1 by Ian Clatworthy
fix Makefile rules for doc generation
108
doc/en/user-guide/index.html: $(wildcard $(addsuffix /*.txt, doc/en/user-guide)) 
3097.1.1 by Ian Clatworthy
Tweak Makefile doc fix (Ian Clatworthy)
109
	$(rst2html) --stylesheet=../../default.css doc/en/user-guide/index.txt $@
3092.3.1 by Ian Clatworthy
fix Makefile rules for doc generation
110
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
111
doc/developers/%.html: doc/developers/%.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
112
	$(rst2html) --stylesheet=../default.css $< $@
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
113
2691.1.6 by Ian Clatworthy
Add a top level doc index
114
doc/index.html: doc/index.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
115
	$(rst2html) --stylesheet=default.css $< $@
2691.1.6 by Ian Clatworthy
Add a top level doc index
116
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
117
%.html: %.txt
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
118
	$(rst2html) --stylesheet=../../default.css $< $@
2054.2.14 by Aaron Bentley
Add 'pretty-docs' target to makefile
119
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
120
MAN_DEPENDENCIES = bzrlib/builtins.py \
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
121
		 bzrlib/bundle/commands.py \
122
		 bzrlib/conflicts.py \
3089.3.14 by Ian Clatworthy
follow-up tweaks to bzr.dev integration
123
		 bzrlib/help_topics/__init__.py \
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
124
		 bzrlib/sign_my_commits.py \
3053.8.1 by Ian Clatworthy
Improve bug tracker integration documentation (Ian Clatworthy)
125
		 bzrlib/bugtracker.py \
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
126
		 generate_docs.py \
127
		 tools/doc_generate/__init__.py \
2677.1.1 by Alexander Belchenko
rst2html: workaround for IE bug with id="tags"
128
		 tools/doc_generate/autodoc_man.py \
3089.3.4 by Ian Clatworthy
merge Alex's changes to support Windows installer and use bzrlib/help for topics
129
		 tools/doc_generate/autodoc_rstx.py \
3089.3.6 by Ian Clatworthy
make help topics more discoverable
130
		 $(wildcard $(addsuffix /*.txt, bzrlib/help_topics/en)) 
2977.1.14 by Ian Clatworthy
change Makefile to support tutorials
131
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
132
doc/en/user-reference/bzr_man.txt: $(MAN_DEPENDENCIES)
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
133
	$(PYTHON) generate_docs.py -o $@ rstx
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
134
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
135
doc/en/developer-guide/HACKING.txt: doc/developers/HACKING.txt
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
136
	$(PYTHON) tools/win32/ostools.py copytodir doc/developers/HACKING.txt doc/en/developer-guide
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
137
138
doc/en/release-notes/NEWS.txt: NEWS
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
139
	$(PYTHON) -c "import shutil; shutil.copyfile('$<', '$@')"
2691.1.4 by Ian Clatworthy
teach Makefile and .bzrignore re new doc structure
140
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
141
MAN_PAGES = man1/bzr.1
142
man1/bzr.1: $(MAN_DEPENDENCIES)
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
143
	$(PYTHON) generate_docs.py -o $@ man
2425.1.1 by Robert Collins
``make docs`` now creates a man page at ``man1/bzr.1`` fixing bug 107388.
144
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
145
# build a png of our performance task list
146
doc/developers/performance.png: doc/developers/performance.dot
147
	@echo Generating $@
148
	@dot -Tpng $< -o$@ || echo "Dot not installed; skipping generation of $@"
149
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
150
derived_web_docs = $(htm_files) $(dev_htm_files) doc/developers/performance.png
151
WEB_DOCS = $(derived_web_docs) $(non_txt_files)
152
ALL_DOCS = $(derived_web_docs) $(MAN_PAGES)
153
154
# the main target to build all the docs
155
docs: $(ALL_DOCS)
156
157
# produce a tree containing just the final docs, ready for uploading to the web
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
158
HTMLDIR := html_docs
159
html-docs: docs
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
160
	$(PYTHON) tools/win32/ostools.py copytree $(WEB_DOCS) $(HTMLDIR)
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
161
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
162
# clean produced docs
163
clean-docs:
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
164
	$(PYTHON) tools/win32/ostools.py remove $(ALL_DOCS) \
2691.1.17 by Ian Clatworthy
Fix pretty doc generation so works for all html docs
165
	$(HTMLDIR) $(derived_txt_files)
2522.3.1 by Robert Collins
Draft proposed integration order for performance changes.
166
167
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
168
### Windows Support ###
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
169
170
# make bzr.exe for win32 with py2exe
171
exe:
172
	@echo *** Make bzr.exe
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
173
	$(PYTHON) setup.py build_ext -i -f
174
	$(PYTHON) setup.py py2exe > py2exe.log
175
	$(PYTHON) tools/win32/ostools.py copytodir tools/win32/start_bzr.bat win32_bzr.exe
176
	$(PYTHON) tools/win32/ostools.py copytodir tools/win32/bazaar.url win32_bzr.exe
1928.2.1 by Alexander Belchenko
New target to produce html docs to upload on server
177
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
178
# win32 installer for bzr.exe
1982.2.1 by Alexander Belchenko
small but important fix for 'make installer' dependencies
179
installer: exe copy-docs
1861.2.18 by Alexander Belchenko
Makefile: cross-platform actions for building installer
180
	@echo *** Make windows installer
181
	cog.py -d -o tools/win32/bzr.iss tools/win32/bzr.iss.cog
182
	iscc /Q tools/win32/bzr.iss
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
183
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
184
# win32 Python's distutils-based installer
185
# require to have Python interpreter installed on win32
2946.2.1 by Alexander Belchenko
windows python-based installer: shortcut for uninstall action
186
py-inst-24: docs
2571.3.1 by Alexander Belchenko
Building Python-based installer for bot Python 2.4 and 2.5
187
	python24 setup.py bdist_wininst --install-script="bzr-win32-bdist-postinstall.py" -d .
2946.2.1 by Alexander Belchenko
windows python-based installer: shortcut for uninstall action
188
189
py-inst-25: docs
2571.3.1 by Alexander Belchenko
Building Python-based installer for bot Python 2.4 and 2.5
190
	python25 setup.py bdist_wininst --install-script="bzr-win32-bdist-postinstall.py" -d .
1821.1.2 by Alexander Belchenko
resurrected python's distutils based installer for win32
191
2946.2.1 by Alexander Belchenko
windows python-based installer: shortcut for uninstall action
192
python-installer: py-inst-24 py-inst-25
193
194
2691.1.15 by Ian Clatworthy
reorganise Makefile into logical sections
195
copy-docs: docs
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
196
	$(PYTHON) tools/win32/ostools.py copytodir README win32_bzr.exe/doc
197
	$(PYTHON) tools/win32/ostools.py copytree $(WEB_DOCS) win32_bzr.exe
1821.1.2 by Alexander Belchenko
resurrected python's distutils based installer for win32
198
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
199
# clean on win32 all installer-related files and directories
2666.2.1 by Alexander Belchenko
change generated documentation extension from htm to html
200
clean-win32: clean-docs
2934.2.1 by Ian Clatworthy
generates hooks.html correctly and generalise python command in Makefile
201
	$(PYTHON) tools/win32/ostools.py remove build
202
	$(PYTHON) tools/win32/ostools.py remove win32_bzr.exe
203
	$(PYTHON) tools/win32/ostools.py remove py2exe.log
204
	$(PYTHON) tools/win32/ostools.py remove tools/win32/bzr.iss
205
	$(PYTHON) tools/win32/ostools.py remove bzr-setup*.exe
206
	$(PYTHON) tools/win32/ostools.py remove bzr-*win32.exe
207
	$(PYTHON) tools/win32/ostools.py remove dist
3346.2.2 by Martin Pool
Add a simple 'make dist' rule
208
3346.2.5 by Martin Pool
Add check-dist-tarball to run tests from the packaged source
209
.PHONY: dist dist-upload-escudero check-dist-tarball
3346.2.3 by Martin Pool
Add dist-upload-escudero target
210
3346.2.2 by Martin Pool
Add a simple 'make dist' rule
211
# build a distribution tarball.
212
#
213
# this method of copying the pyrex generated files is a bit ugly; it would be
214
# nicer to generate it from distutils.
3346.2.5 by Martin Pool
Add check-dist-tarball to run tests from the packaged source
215
#
216
# these are a bit ubuntu-specific.
3346.2.2 by Martin Pool
Add a simple 'make dist' rule
217
dist: 
218
	version=`./bzr version --short` && \
219
	echo Building distribution of bzr $$version && \
3421.2.1 by John Arbash Meinel
Update make targets for distribution.
220
	expbasedir=`mktemp -t -d tmp_bzr_dist.XXXXXXXXXX` && \
3346.2.2 by Martin Pool
Add a simple 'make dist' rule
221
	expdir=$$expbasedir/bzr-$$version && \
222
	tarball=$$PWD/../bzr-$$version.tar.gz && \
223
	$(MAKE) clean && \
224
	$(MAKE) && \
225
	bzr export $$expdir && \
226
	cp bzrlib/*.c $$expdir/bzrlib/. && \
227
	tar cfz $$tarball -C $$expbasedir bzr-$$version && \
228
	gpg --detach-sign $$tarball && \
3421.2.1 by John Arbash Meinel
Update make targets for distribution.
229
	echo $$tarball done. && \
230
	rm -rf $$expbasedir
3346.2.3 by Martin Pool
Add dist-upload-escudero target
231
3346.2.5 by Martin Pool
Add check-dist-tarball to run tests from the packaged source
232
# run all tests in a previously built tarball
233
check-dist-tarball:
3421.2.1 by John Arbash Meinel
Update make targets for distribution.
234
	tmpdir=`mktemp -t -d tmp_bzr_check_dist.XXXXXXXXXX` && \
3346.2.5 by Martin Pool
Add check-dist-tarball to run tests from the packaged source
235
	version=`./bzr version --short` && \
236
	tarball=$$PWD/../bzr-$$version.tar.gz && \
237
	tar Cxz $$tmpdir -f $$tarball && \
3421.2.1 by John Arbash Meinel
Update make targets for distribution.
238
	$(MAKE) -C $$tmpdir/bzr-$$version check && \
239
	rm -rf $$tmpdir
3346.2.5 by Martin Pool
Add check-dist-tarball to run tests from the packaged source
240
241
3346.2.3 by Martin Pool
Add dist-upload-escudero target
242
# upload previously built tarball to the download directory on bazaar-vcs.org,
243
# and verify that it can be downloaded ok.
244
dist-upload-escudero:
245
	version=`./bzr version --short` && \
246
	tarball=../bzr-$$version.tar.gz && \
247
	scp $$tarball $$tarball.sig \
248
	    escudero.ubuntu.com:/srv/bazaar.canonical.com/www/releases/src \
249
		&& \
250
	echo verifying over http... && \
251
	curl http://bazaar-vcs.org/releases/src/bzr-$$version.tar.gz \
252
		| diff -s - $$tarball && \
253
	curl http://bazaar-vcs.org/releases/src/bzr-$$version.tar.gz.sig \
254
		| diff -s - $$tarball.sig