Ticket #9312: deps.better

File deps.better, 17.6 KB (added by drkirkby, 9 years ago)

A better version of deps, which ensures things depend on the 4 base packages - better for parallel building.

Line 
1INST = installed
2SAGE_SPKG = sage-spkg
3INSTALL = $(SAGE_ROOT)/spkg/pipestatus
4
5# The base system; required in order to run sage-spkg
6BASE = $(INST)/$(PREREQ) $(INST)/$(DIR) $(INST)/$(SAGE_BZIP2)       
7
8# Also install scripts before we continue with other spkgs
9BASE += $(INST)/$(SAGE_SCRIPTS)
10
11# Tell make not to look for files with these (base)names:
12.PHONY: all base scripts
13
14# Targets
15all: $(INST)/$(ATLAS) \
16     $(INST)/$(BOEHM_GC) \
17     $(INST)/$(BOOST_CROPPED) \
18     $(INST)/$(CVXOPT) \
19     $(INST)/$(DOCUTILS) \
20     $(INST)/$(ECM) \
21     $(INST)/$(EXAMPLES) \
22     $(INST)/$(FLINT) \
23     $(INST)/$(FLINTQS) \
24     $(INST)/$(G2RED) \
25     $(INST)/$(GAP) \
26     $(INST)/$(GD) \
27     $(INST)/$(GDMODULE) \
28     $(INST)/$(GFAN) \
29     $(INST)/$(GIVARO) \
30     $(INST)/$(GLPK) \
31     $(INST)/$(GSL) \
32     $(INST)/$(ICONV) \
33     $(INST)/$(IML) \
34     $(INST)/$(LCALC) \
35     $(INST)/$(LINBOX) \
36     $(INST)/$(MATPLOTLIB) \
37     $(INST)/$(MAXIMA) \
38     $(INST)/$(MERCURIAL) \
39     $(INST)/$(MOIN) \
40     $(INST)/$(NUMPY) \
41     $(INST)/$(PALP) \
42     $(INST)/$(PIL) \
43     $(INST)/$(POLYBORI) \
44     $(INST)/$(POLYTOPES_DB) \
45     $(INST)/$(PYCRYPTO) \
46     $(INST)/$(PYNAC) \
47     $(INST)/$(PYTHON_GNUTLS) \
48     $(INST)/$(R) \
49     $(INST)/$(RUBIKS) \
50     $(INST)/$(SAGE) \
51     $(INST)/$(SAGE_SCRIPTS) \
52     $(INST)/$(SAGENB) \
53     $(INST)/$(SAGETEX) \
54     $(INST)/$(SCIPY) \
55     $(INST)/$(SCIPY_SANDBOX) \
56     $(INST)/$(SCONS) \
57     $(INST)/$(SETUPTOOLS) \
58     $(INST)/$(SINGULAR) \
59     $(INST)/$(SQLITE) \
60     $(INST)/$(SYMMETRICA) \
61     $(INST)/$(SYMPOW) \
62     $(INST)/$(TACHYON) \
63     $(INST)/$(WEAVE) \
64     $(INST)/$(ZNPOLY)
65
66base: $(BASE)
67
68scripts: $(BASE)
69
70########################################
71# Building the base system
72########################################
73$(INST)/$(DIR):
74        $(INSTALL) "base/$(DIR)-install 2>&1" "tee -a $(SAGE_LOGS)/$(DIR).log"
75
76$(INST)/$(PREREQ): $(INST)/$(DIR)
77        $(INSTALL) "base/$(PREREQ)-install 2>&1" "tee -a $(SAGE_LOGS)/$(PREREQ).log"
78
79$(INST)/$(SAGE_BZIP2): $(INST)/$(PREREQ) $(INST)/$(DIR)
80        $(INSTALL) "base/$(SAGE_BZIP2)-install 2>&1" "tee -a $(SAGE_LOGS)/$(SAGE_BZIP2).log"
81
82$(INST)/$(SAGE_SCRIPTS): $(INST)/$(SAGE_BZIP2) $(INST)/$(PREREQ) \
83                         $(INST)/$(DIR)
84        $(INSTALL) "$(SAGE_SPKG) $(SAGE_SCRIPTS) 2>&1" "tee -a $(SAGE_LOGS)/$(SAGE_SCRIPTS).log"
85
86########################################
87# Building normal packages
88########################################
89$(INST)/$(ATLAS): $(BASE) $(INST)/$(LAPACK) $(INST)/$(PYTHON)
90        $(INSTALL) "$(SAGE_SPKG) $(ATLAS) 2>&1" "tee -a $(SAGE_LOGS)/$(ATLAS).log"
91
92$(INST)/$(BOEHM_GC): $(BASE)
93        $(INSTALL) "$(SAGE_SPKG) $(BOEHM_GC) 2>&1" "tee -a $(SAGE_LOGS)/$(BOEHM_GC).log"
94
95$(INST)/$(BOOST_CROPPED): $(BASE)
96        $(INSTALL) "$(SAGE_SPKG) $(BOOST_CROPPED) 2>&1" "tee -a $(SAGE_LOGS)/$(BOOST_CROPPED).log"
97
98$(INST)/$(CLIQUER): $(BASE) $(INST)/$(SCONS)
99        $(INSTALL) "$(SAGE_SPKG) $(CLIQUER) 2>&1" "tee -a $(SAGE_LOGS)/$(CLIQUER).log"
100
101$(INST)/$(TERMCAP): $(BASE)
102        $(INSTALL) "$(SAGE_SPKG) $(TERMCAP) 2>&1" "tee -a $(SAGE_LOGS)/$(TERMCAP).log"
103
104$(INST)/$(READLINE): $(BASE)
105        $(INSTALL) "$(SAGE_SPKG) $(READLINE) 2>&1" "tee -a $(SAGE_LOGS)/$(READLINE).log"
106
107$(INST)/$(ICONV): $(BASE)
108        $(INSTALL) "$(SAGE_SPKG) $(ICONV) 2>&1" "tee -a $(SAGE_LOGS)/$(ICONV).log"
109
110$(INST)/$(DOCUTILS): $(BASE) $(INST)/$(PYTHON)
111        $(INSTALL) "$(SAGE_SPKG) $(DOCUTILS) 2>&1" "tee -a $(SAGE_LOGS)/$(DOCUTILS).log"
112
113$(INST)/$(ELLIPTIC_CURVES): $(BASE)
114        $(INSTALL) "$(SAGE_SPKG) $(ELLIPTIC_CURVES) 2>&1" "tee -a $(SAGE_LOGS)/$(ELLIPTIC_CURVES).log"
115
116$(INST)/$(CONWAY): $(BASE)
117        $(INSTALL) "$(SAGE_SPKG) $(CONWAY) 2>&1" "tee -a $(SAGE_LOGS)/$(CONWAY).log"
118
119$(INST)/$(GRAPHS): $(BASE)
120        $(INSTALL) "$(SAGE_SPKG) $(GRAPHS) 2>&1" "tee -a $(SAGE_LOGS)/$(GRAPHS).log"
121
122$(INST)/$(GLPK): $(BASE) $(INST)/$(MPIR) $(INST)/$(ZLIB)
123        $(INSTALL) "$(SAGE_SPKG) $(GLPK) 2>&1" "tee -a $(SAGE_LOGS)/$(GLPK).log"
124
125$(INST)/$(PYTHON): $(BASE) $(INST)/$(ZLIB) $(INST)/$(TERMCAP) \
126                   $(INST)/$(READLINE) $(INST)/$(SQLITE) \
127                   $(INST)/$(GNUTLS) $(INST)/$(LIBPNG)
128        $(INSTALL) "$(SAGE_SPKG) $(PYTHON) 2>&1" "tee -a $(SAGE_LOGS)/$(PYTHON).log"
129
130$(INST)/$(MPIR): $(BASE) $(INST)/$(ICONV)
131        $(INSTALL) "$(SAGE_SPKG) $(MPIR) 2>&1" "tee -a $(SAGE_LOGS)/$(MPIR).log"
132
133$(INST)/$(GSL): $(BASE) $(INST)/$(ATLAS)
134        $(INSTALL) "$(SAGE_SPKG) $(GSL) 2>&1" "tee -a $(SAGE_LOGS)/$(GSL).log"
135
136$(INST)/$(NTL): $(BASE) $(INST)/$(MPIR)
137        $(INSTALL) "$(SAGE_SPKG) $(NTL) 2>&1" "tee -a $(SAGE_LOGS)/$(NTL).log"
138
139$(INST)/$(FPLLL): $(BASE) $(INST)/$(MPIR) $(INST)/$(MPFR)
140        $(INSTALL) "$(SAGE_SPKG) $(FPLLL) 2>&1" "tee -a $(SAGE_LOGS)/$(FPLLL).log"
141
142$(INST)/$(PARI): $(BASE) $(INST)/$(TERMCAP) $(INST)/$(READLINE) \
143                 $(INST)/$(MPIR)
144        $(INSTALL) "$(SAGE_SPKG) $(PARI) 2>&1" "tee -a $(SAGE_LOGS)/$(PARI).log"
145
146$(INST)/$(POLYBORI): $(BASE) $(INST)/$(PYTHON) $(INST)/$(SCONS)  \
147                     $(INST)/$(BOOST_CROPPED) $(INST)/$(LIBM4RI)
148        $(INSTALL) "$(SAGE_SPKG) $(POLYBORI) 2>&1" "tee -a $(SAGE_LOGS)/$(POLYBORI).log"
149
150$(INST)/$(POLYTOPES_DB): $(BASE)
151        $(INSTALL) "$(SAGE_SPKG) $(POLYTOPES_DB) 2>&1" "tee -a $(SAGE_LOGS)/$(POLYTOPES_DB).log"
152
153$(INST)/$(MPFR): $(BASE) $(INST)/$(MPIR)
154        $(INSTALL) "$(SAGE_SPKG) $(MPFR) 2>&1" "tee -a $(SAGE_LOGS)/$(MPFR).log"
155
156$(INST)/$(MPFI): $(BASE) $(INST)/$(MPIR) $(INST)/$(MPFR)
157        $(INSTALL) "$(SAGE_SPKG) $(MPFI) 2>&1" "tee -a $(SAGE_LOGS)/$(MPFI).log"
158
159$(INST)/$(GIVARO): $(BASE) $(INST)/$(MPIR)
160        $(INSTALL) "$(SAGE_SPKG) $(GIVARO) 2>&1" "tee -a $(SAGE_LOGS)/$(GIVARO).log"
161
162$(INST)/$(LINBOX): $(BASE) $(INST)/$(MPIR) $(INST)/$(NTL) $(INST)/$(GIVARO) \
163                   $(INST)/$(GSL) $(INST)/$(ATLAS)
164        $(INSTALL) "$(SAGE_SPKG) $(LINBOX) 2>&1" "tee -a $(SAGE_LOGS)/$(LINBOX).log"
165
166$(INST)/$(IML): $(BASE) $(INST)/$(MPIR) $(INST)/$(GSL)
167        $(INSTALL) "$(SAGE_SPKG) $(IML) 2>&1" "tee -a $(SAGE_LOGS)/$(IML).log"
168
169$(INST)/$(ECLIB): $(BASE) $(INST)/$(MPIR) $(INST)/$(PARI) $(INST)/$(NTL)
170        $(INSTALL) "$(SAGE_SPKG) $(ECLIB) 2>&1" "tee -a $(SAGE_LOGS)/$(ECLIB).log"
171
172$(INST)/$(G2RED): $(BASE) $(INST)/$(PARI)
173        $(INSTALL) "$(SAGE_SPKG) $(G2RED) 2>&1" "tee -a $(SAGE_LOGS)/$(G2RED).log"
174
175$(INST)/$(PALP): $(BASE)
176        $(INSTALL) "$(SAGE_SPKG) $(PALP) 2>&1" "tee -a $(SAGE_LOGS)/$(PALP).log"
177
178$(INST)/$(LCALC): $(BASE) $(INST)/$(PARI) $(INST)/$(MPFR)
179        $(INSTALL) "$(SAGE_SPKG) $(LCALC) 2>&1" "tee -a $(SAGE_LOGS)/$(LCALC).log"
180
181$(INST)/$(PYNAC): $(BASE) $(INST)/$(PYTHON)
182        $(INSTALL) "$(SAGE_SPKG) $(PYNAC) 2>&1" "tee -a $(SAGE_LOGS)/$(PYNAC).log"
183
184$(INST)/$(SYMPOW): $(BASE)
185        $(INSTALL) "$(SAGE_SPKG) $(SYMPOW) 2>&1" "tee -a $(SAGE_LOGS)/$(SYMPOW).log"
186
187$(INST)/$(SYMMETRICA): $(BASE)
188        $(INSTALL) "$(SAGE_SPKG) $(SYMMETRICA) 2>&1" "tee -a $(SAGE_LOGS)/$(SYMMETRICA).log"
189
190# gap requires SAGE so that gap_reset_workspace works.
191$(INST)/$(GAP): $(BASE) $(INST)/$(TERMCAP) $(INST)/$(READLINE) $(INST)/$(SAGE)
192        $(INSTALL) "$(SAGE_SPKG) $(GAP) 2>&1" "tee -a $(SAGE_LOGS)/$(GAP).log"
193
194$(INST)/$(IPYTHON): $(BASE) $(INST)/$(PYTHON)
195        $(INSTALL) "$(SAGE_SPKG) $(IPYTHON) 2>&1" "tee -a $(SAGE_LOGS)/$(IPYTHON).log"
196
197$(INST)/$(PEXPECT): $(BASE) $(INST)/$(PYTHON)
198        $(INSTALL) "$(SAGE_SPKG) $(PEXPECT) 2>&1" "tee -a $(SAGE_LOGS)/$(PEXPECT).log"
199
200$(INST)/$(GD): $(BASE) $(INST)/$(LIBPNG) $(INST)/$(FREETYPE) $(INST)/$(ICONV)
201        $(INSTALL) "$(SAGE_SPKG) $(GD) 2>&1" "tee -a $(SAGE_LOGS)/$(GD).log"
202
203$(INST)/$(GDMODULE): $(BASE) $(INST)/$(PYTHON) $(INST)/$(GD) $(INST)/$(ICONV)
204        $(INSTALL) "$(SAGE_SPKG) $(GDMODULE) 2>&1" "tee -a $(SAGE_LOGS)/$(GDMODULE).log"
205
206$(INST)/$(OPENCDK):  $(BASE) $(INST)/$(ZLIB)  $(INST)/$(LIBGCRYPT)
207        $(INSTALL) "$(SAGE_SPKG) $(OPENCDK) 2>&1" "tee -a $(SAGE_LOGS)/$(OPENCDK).log"
208
209$(INST)/$(LIBGPG_ERROR): $(BASE) $(INST)/$(ICONV)
210        $(INSTALL) "$(SAGE_SPKG) $(LIBGPG_ERROR) 2>&1" "tee -a $(SAGE_LOGS)/$(LIBGPG_ERROR).log"
211
212$(INST)/$(LIBGCRYPT):  $(BASE) $(INST)/$(LIBGPG_ERROR)
213        $(INSTALL) "$(SAGE_SPKG) $(LIBGCRYPT) 2>&1" "tee -a $(SAGE_LOGS)/$(LIBGCRYPT).log"
214
215$(INST)/$(GNUTLS):  $(BASE) $(INST)/$(ZLIB) $(INST)/$(OPENCDK) $(INST)/$(LIBGCRYPT) \
216                    $(INST)/$(LIBGPG_ERROR)
217        $(INSTALL) "$(SAGE_SPKG) $(GNUTLS) 2>&1" "tee -a $(SAGE_LOGS)/$(GNUTLS).log"
218
219$(INST)/$(PYTHON_GNUTLS): $(BASE)  $(INST)/$(GNUTLS) $(INST)/$(PYTHON)
220        $(INSTALL) "$(SAGE_SPKG) $(PYTHON_GNUTLS) 2>&1" "tee -a $(SAGE_LOGS)/$(PYTHON_GNUTLS).log"
221
222$(INST)/$(SCONS):  $(BASE) $(INST)/$(PYTHON)
223        $(INSTALL) "$(SAGE_SPKG) $(SCONS) 2>&1" "tee -a $(SAGE_LOGS)/$(SCONS).log"
224
225#$(INST)/$(OPENSSL): $(BASE)
226#       $(INSTALL) "$(SAGE_SPKG) $(OPENSSL) 2>&1" "tee -a $(SAGE_LOGS)/$(OPENSSL).log"
227
228#$(INST)/$(PYOPENSSL): $(INST)/$(PYTHON) $(INST)/$(OPENSSL)
229#       $(INSTALL) "$(SAGE_SPKG) $(PYOPENSSL) 2>&1" "tee -a $(SAGE_LOGS)/$(PYOPENSSL).log"
230
231$(INST)/$(RUBIKS): $(BASE)
232        $(INSTALL) "$(SAGE_SPKG) $(RUBIKS) 2>&1" "tee -a $(SAGE_LOGS)/$(RUBIKS).log"
233
234# extcode must be built before moin moin because it has the jsmath in it.
235$(INST)/$(MOIN): $(BASE) $(INST)/$(PYTHON) $(INST)/$(EXTCODE) $(INST)/$(SAGENB)
236        $(INSTALL) "$(SAGE_SPKG) $(MOIN) 2>&1" "tee -a $(SAGE_LOGS)/$(MOIN).log"
237
238$(INST)/$(SQLITE): $(BASE) $(INST)/$(TERMCAP) $(INST)/$(READLINE)
239        $(INSTALL) "$(SAGE_SPKG) $(SQLITE) 2>&1" "tee -a $(SAGE_LOGS)/$(SQLITE).log"
240
241$(INST)/$(MERCURIAL): $(BASE) $(INST)/$(PYTHON)
242        $(INSTALL) "$(SAGE_SPKG) $(MERCURIAL) 2>&1" "tee -a $(SAGE_LOGS)/$(MERCURIAL).log"
243
244# make Sage and gap prerequisites for sagetex so that as much of Sage
245# is installed as possible: this is so that spkg-check works for
246# sagetex.  (To build sagetex, you just need python, but to test it,
247# you need a full Sage installation.)
248$(INST)/$(SAGETEX): $(BASE) $(INST)/$(PYTHON) $(INST)/$(SAGE) $(INST)/$(GAP)
249        $(INSTALL) "$(SAGE_SPKG) $(SAGETEX) 2>&1" "tee -a $(SAGE_LOGS)/$(SAGETEX).log"
250
251$(INST)/$(SETUPTOOLS): $(BASE) $(INST)/$(PYTHON)
252        $(INSTALL) "$(SAGE_SPKG) $(SETUPTOOLS) 2>&1" "tee -a $(SAGE_LOGS)/$(SETUPTOOLS).log"
253
254$(INST)/$(SINGULAR): $(BASE) $(INST)/$(MPIR) $(INST)/$(NTL) \
255                     $(INST)/$(TERMCAP) $(INST)/$(READLINE) $(INST)/$(MPFR)
256        $(INSTALL) "$(SAGE_SPKG) $(SINGULAR) 2>&1" "tee -a $(SAGE_LOGS)/$(SINGULAR).log"
257
258$(INST)/$(PYCRYPTO): $(BASE) $(INST)/$(PYTHON)
259        $(INSTALL) "$(SAGE_SPKG) $(PYCRYPTO) 2>&1" "tee -a $(SAGE_LOGS)/$(PYCRYPTO).log"
260
261$(INST)/$(WEAVE): $(BASE) $(INST)/$(NUMPY)
262        $(INSTALL) "$(SAGE_SPKG) $(WEAVE) 2>&1" "tee -a $(SAGE_LOGS)/$(WEAVE).log"
263
264$(INST)/$(NETWORKX): $(BASE) $(INST)/$(PYTHON)
265        $(INSTALL) "$(SAGE_SPKG) $(NETWORKX) 2>&1" "tee -a $(SAGE_LOGS)/$(NETWORKX).log"
266
267$(INST)/$(MPMATH): $(BASE) $(INST)/$(PYTHON)
268        $(INSTALL) "$(SAGE_SPKG) $(MPMATH) 2>&1" "tee -a $(SAGE_LOGS)/$(MPMATH).log"
269
270$(INST)/$(ZLIB): $(BASE)
271        $(INSTALL) "$(SAGE_SPKG) $(ZLIB) 2>&1" "tee -a $(SAGE_LOGS)/$(ZLIB).log"
272
273##  << NON-GUI matplotlib >>
274$(INST)/$(FREETYPE): $(BASE)
275        $(INSTALL) "$(SAGE_SPKG) $(FREETYPE) 2>&1" "tee -a $(SAGE_LOGS)/$(FREETYPE).log"
276
277$(INST)/$(LIBPNG): $(BASE)
278        $(INSTALL) "$(SAGE_SPKG) $(LIBPNG) 2>&1" "tee -a $(SAGE_LOGS)/$(LIBPNG).log"
279
280$(INST)/$(MATPLOTLIB): $(BASE) $(INST)/$(PYTHON) $(INST)/$(NUMPY) \
281                       $(INST)/$(FREETYPE) $(INST)/$(LIBPNG) \
282                       $(INST)/$(GDMODULE)
283        $(INSTALL) "$(SAGE_SPKG) $(MATPLOTLIB) 2>&1" "tee -a $(SAGE_LOGS)/$(MATPLOTLIB).log"
284####
285
286$(INST)/$(CDDLIB): $(BASE) $(INST)/$(MPIR)
287        $(INSTALL) "$(SAGE_SPKG) $(CDDLIB) 2>&1" "tee -a $(SAGE_LOGS)/$(CDDLIB).log"
288
289$(INST)/$(GFAN): $(BASE) $(INST)/$(MPIR) $(INST)/$(CDDLIB)
290        $(INSTALL) "$(SAGE_SPKG) $(GFAN) 2>&1" "tee -a $(SAGE_LOGS)/$(GFAN).log"
291
292$(INST)/$(TACHYON): $(BASE) $(INST)/$(LIBPNG)
293        $(INSTALL) "$(SAGE_SPKG) $(TACHYON) 2>&1" "tee -a $(SAGE_LOGS)/$(TACHYON).log"
294
295$(INST)/$(ECM): $(BASE) $(INST)/$(MPIR)
296        $(INSTALL) "$(SAGE_SPKG) $(ECM) 2>&1" "tee -a $(SAGE_LOGS)/$(ECM).log"
297
298$(INST)/$(RATPOINTS): $(BASE) $(INST)/$(MPIR)
299        $(INSTALL) "$(SAGE_SPKG) $(RATPOINTS) 2>&1" "tee -a $(SAGE_LOGS)/$(RATPOINTS).log"
300
301$(INST)/$(ECL): $(BASE) $(INST)/$(MPIR) $(INST)/$(TERMCAP) \
302                $(INST)/$(READLINE) $(INST)/$(BOEHM_GC)
303        $(INSTALL) "$(SAGE_SPKG) $(ECL) 2>&1" "tee -a $(SAGE_LOGS)/$(ECL).log"
304
305$(INST)/$(MAXIMA): $(BASE) $(INST)/$(ECL)
306        $(INSTALL) "$(SAGE_SPKG) $(MAXIMA) 2>&1" "tee -a $(SAGE_LOGS)/$(MAXIMA).log"
307
308$(INST)/$(R): $(BASE) $(INST)/$(PYTHON) $(INST)/$(ATLAS) $(INST)/$(ICONV)
309        $(INSTALL) "$(SAGE_SPKG) $(R) 2>&1" "tee -a $(SAGE_LOGS)/$(R).log"
310
311$(INST)/$(SYMPY): $(BASE) $(INST)/$(PYTHON)
312        $(INSTALL) "$(SAGE_SPKG) $(SYMPY) 2>&1" "tee -a $(SAGE_LOGS)/$(SYMPY).log"
313
314$(INST)/$(CYTHON): $(BASE) $(INST)/$(PYTHON)
315        $(INSTALL) "$(SAGE_SPKG) $(CYTHON) 2>&1" "tee -a $(SAGE_LOGS)/$(CYTHON).log"
316
317$(INST)/$(FLINTQS): $(BASE) $(INST)/$(MPIR)
318        $(INSTALL) "$(SAGE_SPKG) $(FLINTQS) 2>&1" "tee -a $(SAGE_LOGS)/$(FLINTQS).log"
319
320$(INST)/$(FLINT): $(BASE) $(INST)/$(MPIR) $(INST)/$(NTL)
321        $(INSTALL) "$(SAGE_SPKG) $(FLINT) 2>&1" "tee -a $(SAGE_LOGS)/$(FLINT).log"
322
323# Mercurial must be built before building extcode. See trac ticket #6508.
324$(INST)/$(EXTCODE): $(BASE) $(INST)/$(MERCURIAL)
325        $(INSTALL) "$(SAGE_SPKG) $(EXTCODE) 2>&1" "tee -a $(SAGE_LOGS)/$(EXTCODE).log"
326
327$(INST)/$(EXAMPLES): $(BASE)
328        $(INSTALL) "$(SAGE_SPKG) $(EXAMPLES) 2>&1" "tee -a $(SAGE_LOGS)/$(EXAMPLES).log"
329
330$(INST)/$(LIBM4RI): $(BASE)
331        $(INSTALL) "$(SAGE_SPKG) $(LIBM4RI) 2>&1" "tee -a $(SAGE_LOGS)/$(LIBM4RI).log"
332
333$(INST)/$(ZNPOLY): $(BASE) $(INST)/$(MPIR)
334        $(INSTALL) "$(SAGE_SPKG) $(ZNPOLY) 2>&1" "tee -a $(SAGE_LOGS)/$(ZNPOLY).log"
335
336# setuptools forgets to update easy-install.pth during parallel
337# builds, so we build the relevant packages serially.  Note: To avoid
338# branching, we haven't given explicit dependencies, but the chain's
339# order is important.
340$(INST)/$(SAGENB): $(BASE) $(INST)/$(SQLALCHEMY)
341        $(INSTALL) "$(SAGE_SPKG) $(SAGENB) 2>&1" "tee -a $(SAGE_LOGS)/$(SAGENB).log"
342
343$(INST)/$(SQLALCHEMY): $(BASE) $(INST)/$(SPHINX)
344        $(INSTALL) "$(SAGE_SPKG) $(SQLALCHEMY) 2>&1" "tee -a $(SAGE_LOGS)/$(SQLALCHEMY).log"
345
346$(INST)/$(SPHINX): $(BASE) $(INST)/$(JINJA2)
347        $(INSTALL) "$(SAGE_SPKG) $(SPHINX) 2>&1" "tee -a $(SAGE_LOGS)/$(SPHINX).log"
348
349$(INST)/$(JINJA2): $(BASE) $(INST)/$(JINJA)
350        $(INSTALL) "$(SAGE_SPKG) $(JINJA2) 2>&1" "tee -a $(SAGE_LOGS)/$(JINJA2).log"
351
352$(INST)/$(JINJA): $(BASE) $(INST)/$(PYGMENTS)
353        $(INSTALL) "$(SAGE_SPKG) $(JINJA) 2>&1" "tee -a $(SAGE_LOGS)/$(JINJA).log"
354
355$(INST)/$(PYGMENTS): $(BASE) $(INST)/$(ZODB)
356        $(INSTALL) "$(SAGE_SPKG) $(PYGMENTS) 2>&1" "tee -a $(SAGE_LOGS)/$(PYGMENTS).log"
357
358$(INST)/$(ZODB): $(BASE) $(INST)/$(TWISTED)
359        $(INSTALL) "$(SAGE_SPKG) $(ZODB) 2>&1" "tee -a $(SAGE_LOGS)/$(ZODB).log"
360
361$(INST)/$(TWISTED): $(BASE) $(INST)/$(PYTHON) $(INST)/$(PYTHON_GNUTLS)  \
362                    $(INST)/$(PEXPECT) $(INST)/$(DOCUTILS)      \
363                    $(INST)/$(SETUPTOOLS)
364        $(INSTALL) "$(SAGE_SPKG) $(TWISTED) 2>&1" "tee -a $(SAGE_LOGS)/$(TWISTED).log"
365
366# For reference and for when the setuptools problem is solved, here
367# are the actual dependencies, as of 4.3.3:
368#
369# sagenb: python pexpect twisted jinja jinja2 sphinx docutils setuptools
370# sqlalchemy: python setuptools
371# sphinx: docutils jinja2 pygments
372# jinja2: python docutils setuptools
373# jinja: python docutils setuptools
374# pygments: python setuptools
375# twisted: python python_gnutls setuptools
376# zodb: python setuptools
377
378# All components that are linked against extensions need to be listed here
379$(INST)/$(SAGE):  $(BASE) \
380                  $(INST)/$(ATLAS) \
381                  $(INST)/$(CEPHES) \
382                  $(INST)/$(CLIQUER) \
383                  $(INST)/$(CONWAY) \
384                  $(INST)/$(CYTHON)  \
385                  $(INST)/$(DOCUTILS) \
386                  $(INST)/$(ECL) \
387                  $(INST)/$(ECLIB) \
388                  $(INST)/$(ECM) \
389                  $(INST)/$(ELLIPTIC_CURVES) \
390                  $(INST)/$(EXTCODE) \
391                  $(INST)/$(FLINT)  \
392                  $(INST)/$(FPLLL) \
393                  $(INST)/$(GDMODULE)  \
394                  $(INST)/$(GRAPHS) \
395                  $(INST)/$(GIVARO) \
396                  $(INST)/$(GLPK) \
397                  $(INST)/$(GSL) \
398                  $(INST)/$(IML) \
399                  $(INST)/$(IPYTHON)  \
400                  $(INST)/$(LIBM4RI) \
401                  $(INST)/$(LINBOX) \
402                  $(INST)/$(MATPLOTLIB) \
403                  $(INST)/$(MERCURIAL) \
404                  $(INST)/$(MPFI) \
405                  $(INST)/$(MPFR) \
406                  $(INST)/$(MPIR)  \
407                  $(INST)/$(MPMATH) \
408                  $(INST)/$(NETWORKX) \
409                  $(INST)/$(NTL) \
410                  $(INST)/$(NUMPY) \
411                  $(INST)/$(PARI)  \
412                  $(INST)/$(PEXPECT)  \
413                  $(INST)/$(POLYBORI) \
414                  $(INST)/$(PYCRYPTO) \
415                  $(INST)/$(PYNAC) \
416                  $(INST)/$(PYTHON)  \
417                  $(INST)/$(R) \
418                  $(INST)/$(RATPOINTS) \
419                  $(INST)/$(RUBIKS) \
420                  $(INST)/$(SAGENB) \
421                  $(INST)/$(SCONS)  \
422                  $(INST)/$(SETUPTOOLS) \
423                  $(INST)/$(SINGULAR) \
424                  $(INST)/$(SYMMETRICA) \
425                  $(INST)/$(SYMPY)  \
426                  $(INST)/$(ZNPOLY)
427        $(INSTALL) "$(SAGE_SPKG) $(SAGE) 2>&1" "tee -a $(SAGE_LOGS)/$(SAGE).log"
428
429$(INST)/$(FORTRAN): $(BASE)
430        $(INSTALL) "$(SAGE_SPKG) $(FORTRAN) 2>&1" "tee -a $(SAGE_LOGS)/$(FORTRAN).log"
431
432$(INST)/$(F2C): $(BASE) $(INST)/$(FORTRAN)
433        $(INSTALL) "$(SAGE_SPKG) $(INST)/$(F2C) 2>&1" "tee -a $(SAGE_LOGS)/$(F2C).log"
434
435$(INST)/$(PIL): $(BASE) $(INST)/$(PYTHON)
436        $(INSTALL) "$(SAGE_SPKG) $(PIL) 2>&1" "tee -a $(SAGE_LOGS)/$(PIL).log"
437
438$(INST)/$(LAPACK): $(BASE) $(INST)/$(FORTRAN)
439        $(INSTALL) "$(SAGE_SPKG) $(INST)/$(LAPACK) 2>&1" "tee -a $(SAGE_LOGS)/$(LAPACK).log"
440
441$(INST)/$(BLAS): $(BASE) $(INST)/$(FORTRAN)
442        $(INSTALL) "$(SAGE_SPKG) $(INST)/$(BLAS) 2>&1" "tee -a $(SAGE_LOGS)/$(BLAS).log"
443
444$(INST)/$(NUMPY): $(BASE) $(INST)/$(PYTHON) $(INST)/$(FORTRAN) $(INST)/$(F2C) \
445                  $(INST)/$(LAPACK) $(INST)/$(BLAS) $(INST)/$(ATLAS)
446        $(INSTALL) "$(SAGE_SPKG) $(NUMPY) 2>&1" "tee -a $(SAGE_LOGS)/$(NUMPY).log"
447
448$(INST)/$(SCIPY): $(BASE) $(INST)/$(FORTRAN) $(INST)/$(F2C) $(INST)/$(LAPACK) \
449                  $(INST)/$(BLAS) $(INST)/$(NUMPY)
450        $(INSTALL) "$(SAGE_SPKG) $(SCIPY) 2>&1" "tee -a $(SAGE_LOGS)/$(SCIPY).log"
451
452$(INST)/$(SCIPY_SANDBOX): $(BASE) $(INST)/$(SCIPY)
453        $(INSTALL) "$(SAGE_SPKG) $(SCIPY_SANDBOX) 2>&1" "tee -a $(SAGE_LOGS)/$(SCIPY_SANDBOX).log"
454
455$(INST)/$(CVXOPT): $(BASE) $(INST)/$(FORTRAN) $(INST)/$(F2C) $(INST)/$(LAPACK) \
456                   $(INST)/$(BLAS) $(INST)/$(NUMPY) $(INST)/$(ATLAS) \
457                   $(INST)/$(CEPHES)
458        $(INSTALL) "$(SAGE_SPKG) $(CVXOPT) 2>&1" "tee -a $(SAGE_LOGS)/$(CVXOPT).log"
459
460$(INST)/$(CEPHES): $(BASE)
461        $(INSTALL) "$(SAGE_SPKG) $(CEPHES) 2>&1" "tee -a $(SAGE_LOGS)/$(CEPHES).log"