Ticket #6456: deps

File deps, 18.2 KB (added by drkirkby, 9 years ago)

Modified deps file to ensure both GSL and GLPK gets built before cvxopt

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