Ticket #9433: deps

File deps, 20.6 KB (added by jhpalmieri, 9 years ago)

the file SAGE_ROOT/spkg/standard/deps

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