source: setup.py @ 7768:336748183357

Revision 7768:336748183357, 45.0 KB checked in by R. L. Miller <rlmillster@…>, 5 years ago (diff)

local merge

Line 
1#!/usr/bin/env python
2DEVEL = False
3
4import distutils.sysconfig, os, sys
5# from distutils.core import setup, Extension
6
7# TODO: Is this what we want here?
8from distutils.core import setup
9from distutils.extension import Extension
10from Cython.Distutils import build_ext
11
12
13
14## Choose cblas library -- note -- make sure to update sage/misc/cython.py
15## if you change this!!
16if os.environ.has_key('SAGE_BLAS'):
17    BLAS=os.environ['SAGE_BLAS']
18elif os.path.exists('/usr/lib/libcblas.dylib') or \
19     os.path.exists('/usr/lib/libcblas.so'):
20    BLAS='cblas'
21elif os.path.exists('/usr/lib/libblas.dll.a'):   
22    BLAS='gslcblas'
23else:
24    # This is very slow  (?), but *guaranteed* to be available.
25    BLAS='gslcblas' 
26
27if len(sys.argv) > 1 and sys.argv[1] == "sdist":
28    sdist = True
29else:
30    sdist = False
31
32NO_WARN = True
33
34if not os.environ.has_key('SAGE_ROOT'):
35    print "    ERROR: The environment variable SAGE_ROOT must be defined."
36    sys.exit(1)
37else:
38    SAGE_ROOT  = os.environ['SAGE_ROOT']
39    SAGE_LOCAL = SAGE_ROOT + '/local/'
40    SAGE_DEVEL = SAGE_ROOT + '/devel/'
41
42
43if not os.environ.has_key('SAGE_VERSION'):
44    SAGE_VERSION=0
45else:
46    SAGE_VERSION = os.environ['SAGE_VERSION']
47
48SITE_PACKAGES = '%s/lib/python/site-packages/'%SAGE_LOCAL
49if not os.path.exists(SITE_PACKAGES):
50    SITE_PACKAGES = '%s/lib/python2.5/site-packages/'%SAGE_LOCAL
51    if not os.path.exists(SITE_PACKAGES):
52        SITE_PACKAGES = '%s/lib/python2.4/site-packages/'%SAGE_LOCAL
53        if not os.path.exists(SITE_PACKAGES):       
54            raise RuntimeError, "Unable to find site-packages directory (see setup.py file in sage python code)."
55
56SITE_PACKAGES_REL=SITE_PACKAGES[len(SAGE_LOCAL)+5:]
57       
58if not os.path.exists('build/sage'):
59    os.makedirs('build/sage')
60
61sage_link = SITE_PACKAGES + '/sage'
62if not os.path.islink(sage_link) or not os.path.exists(sage_link):
63    os.system('rm -rf "%s"'%sage_link)
64    os.system('cd %s; ln -sf ../../../../devel/sage/build/sage .'%SITE_PACKAGES)
65
66
67def is_older(file1, file2):
68    """
69    Return True if either file2 does not exist or is older than file1.
70
71    If file1 does not exist, always return False.
72    """
73    if not os.path.exists(file1):
74        return False
75    if not os.path.exists(file2):
76        return True
77    if os.path.getmtime(file2) < os.path.getmtime(file1):
78        return True
79    return False
80
81include_dirs = ['%s/include'%SAGE_LOCAL, \
82                '%s/include/csage'%SAGE_LOCAL, \
83                ## this is included, but doesn't actually exist
84                ## '%s/include/python'%SAGE_LOCAL, \
85                '%s/sage/sage/ext'%SAGE_DEVEL]
86
87#####################################################   
88       
89hanke = Extension(name = "sage.libs.hanke.hanke",
90              sources = ["sage/libs/hanke/hanke.pyx",
91                         "sage/libs/hanke/wrap.cc",
92                         "sage/libs/hanke/Matrix_mpz/Matrix_mpz.cc",
93                         "sage/libs/hanke/Matrix_mpz/CountLocal2.cc",
94                         "sage/libs/hanke/Matrix_mpz/CountLocal.cc",
95                         "sage/libs/hanke/Matrix_mpz/Local_Constants.cc",
96                         "sage/libs/hanke/Matrix_mpz/Local_Density_Front.cc",
97                         "sage/libs/hanke/Matrix_mpz/Local_Density_Congruence.cc",
98                         "sage/libs/hanke/Matrix_mpz/Local_Normal.cc",
99                         "sage/libs/hanke/Matrix_mpz/Local_Invariants.cc",
100                         "sage/libs/hanke/Utilities/string_utils.cc",
101                         "sage/libs/hanke/GMP_class_extras/mpz_class_extras.cc",
102                         "sage/libs/hanke/GMP_class_extras/vectors.cc" ],
103                   libraries = ["gmp", "gmpxx", "stdc++"])
104
105fmpz_poly = Extension('sage.libs.flint.fmpz_poly',
106                 sources = ["sage/libs/flint/fmpz_poly.pyx"],
107                 libraries = ["csage", "flint", "gmp", "gmpxx", "m", "stdc++"],
108                 include_dirs=[SAGE_ROOT+'/local/include/FLINT/'],
109                 extra_compile_args=["-std=c99"]
110                 )
111
112# NOTE: It is *very* important (for cygwin) that csage be the first library
113# listed below for ntl.
114ntl_ZZ = Extension('sage.libs.ntl.ntl_ZZ',
115                 sources = ["sage/libs/ntl/ntl_ZZ.pyx"],
116                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
117                 language='c++')
118
119ntl_ZZX = Extension('sage.libs.ntl.ntl_ZZX',
120                 sources = ["sage/libs/ntl/ntl_ZZX.pyx"],
121                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
122                 language='c++')
123
124ntl_ZZ_pContext = Extension('sage.libs.ntl.ntl_ZZ_pContext',
125                 sources = ["sage/libs/ntl/ntl_ZZ_pContext.pyx"],
126                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
127                 language='c++')
128
129ntl_ZZ_p = Extension('sage.libs.ntl.ntl_ZZ_p',
130                 sources = ["sage/libs/ntl/ntl_ZZ_p.pyx"],
131                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
132                 language='c++')
133
134ntl_ZZ_pX = Extension('sage.libs.ntl.ntl_ZZ_pX',
135                 sources = ["sage/libs/ntl/ntl_ZZ_pX.pyx"],
136                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
137                 language='c++')
138
139ntl_ZZ_pEContext = Extension('sage.libs.ntl.ntl_ZZ_pEContext',
140                 sources = ["sage/libs/ntl/ntl_ZZ_pEContext.pyx"],
141                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
142                 language='c++')
143
144ntl_ZZ_pE = Extension('sage.libs.ntl.ntl_ZZ_pE',
145                 sources = ["sage/libs/ntl/ntl_ZZ_pE.pyx"],
146                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
147                 language='c++')
148
149ntl_ZZ_pEX = Extension('sage.libs.ntl.ntl_ZZ_pEX',
150                 sources = ["sage/libs/ntl/ntl_ZZ_pEX.pyx"],
151                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
152                 language='c++')
153
154ntl_lzz_pContext = Extension('sage.libs.ntl.ntl_lzz_pContext',
155                 sources = ["sage/libs/ntl/ntl_lzz_pContext.pyx"],
156                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
157                 language='c++')
158
159ntl_lzz_p = Extension('sage.libs.ntl.ntl_lzz_p',
160                 sources = ["sage/libs/ntl/ntl_lzz_p.pyx"],
161                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
162                 language='c++')
163
164ntl_lzz_pX = Extension('sage.libs.ntl.ntl_lzz_pX',
165                 sources = ["sage/libs/ntl/ntl_lzz_pX.pyx"],
166                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
167                 language='c++')
168
169ntl_GF2 = Extension('sage.libs.ntl.ntl_GF2',
170                 sources = ["sage/libs/ntl/ntl_GF2.pyx"],
171                 libraries = ["csage", "ntl", "stdc++"],
172                 language='c++')
173
174ntl_GF2X = Extension('sage.libs.ntl.ntl_GF2X',
175                 sources = ["sage/libs/ntl/ntl_GF2X.pyx"],
176                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
177                 language='c++')
178
179ntl_GF2EContext = Extension('sage.libs.ntl.ntl_GF2EContext',
180                 sources = ["sage/libs/ntl/ntl_GF2EContext.pyx"],
181                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
182                 language='c++')
183
184ntl_GF2E = Extension('sage.libs.ntl.ntl_GF2E',
185                 sources = ["sage/libs/ntl/ntl_GF2E.pyx"],
186                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
187                 language='c++')
188
189ntl_GF2EX = Extension('sage.libs.ntl.ntl_GF2EX',
190                 sources = ["sage/libs/ntl/ntl_GF2EX.pyx"],
191                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
192                 language='c++')
193
194ntl_mat_ZZ = Extension('sage.libs.ntl.ntl_mat_ZZ',
195                 sources = ["sage/libs/ntl/ntl_mat_ZZ.pyx"],
196                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
197                 language='c++')
198
199ntl_mat_GF2E = Extension('sage.libs.ntl.ntl_mat_GF2E',
200                 sources = ["sage/libs/ntl/ntl_mat_GF2E.pyx"],
201                 libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
202                 language='c++')
203
204mwrank =  Extension("sage.libs.mwrank.mwrank",
205                    sources = ["sage/libs/mwrank/mwrank.pyx",
206                         "sage/libs/mwrank/wrap.cc"],
207                    define_macros = [("NTL_ALL",None)],
208                    libraries = ["mwrank", "ntl", "gmp", "gmpxx", "stdc++", "m", "pari"])
209
210pari = Extension('sage.libs.pari.gen',
211                 sources = ["sage/libs/pari/gen.pyx"],
212                 libraries = ['pari', 'gmp'])
213
214cremona_mat = Extension('sage.libs.cremona.mat',
215                       sources = ["sage/libs/cremona/mat.pyx"],
216                       libraries = ['g0nntl', 'jcntl', 'gmpxx', 'ntl', 'gmp', 'm', 'stdc++', ],
217                       language='c++',
218                       define_macros = [("NTL_ALL",None)]
219                       )
220
221cremona_homspace = Extension('sage.libs.cremona.homspace',
222                       sources = ["sage/libs/cremona/homspace.pyx"],
223                       libraries = ['g0nntl', 'jcntl', 'gmpxx', 'ntl', 'gmp', 'm', 'stdc++', 'pari', 'curvesntl'],
224                       language='c++',
225                       define_macros = [("NTL_ALL",None)]
226                       )
227
228
229finite_field_givaro = Extension('sage.rings.finite_field_givaro',
230                       sources = ["sage/rings/finite_field_givaro.pyx"],
231                       libraries = ['givaro', 'gmpxx', 'gmp', 'm', 'stdc++', ],   # this order is needed to compile under windows.
232                       language='c++'
233                       )
234finite_field_ntl_gf2e = Extension('sage.rings.finite_field_ntl_gf2e',
235                         sources = ['sage/rings/finite_field_ntl_gf2e.pyx'],
236                         libraries = ['ntl', 'gmp'],
237                         language = 'c++')
238
239qd = Extension('sage.rings.real_rqdf',
240                       sources = ["sage/rings/real_rqdf.pyx"],
241                       libraries = ['qd', 'm', 'stdc++','gmp','mpfr' ],
242                       language='c++'
243                       )
244
245matrix = Extension('sage.matrix.matrix', ['sage/matrix/matrix.pyx'])
246
247matrix_action = Extension('sage.matrix.action', ['sage/matrix/action.pyx'])
248
249matrix_misc = Extension('sage.matrix.misc', ['sage/matrix/misc.pyx'],
250                        libraries=['gmp'])
251
252matrix_dense = Extension('sage.matrix.matrix_dense',
253                         ['sage/matrix/matrix_dense.pyx'])
254             
255matrix_sparse = Extension('sage.matrix.matrix_sparse',
256                          ['sage/matrix/matrix_sparse.pyx'])
257
258matrix_generic_dense = Extension('sage.matrix.matrix_generic_dense',
259                                 ['sage/matrix/matrix_generic_dense.pyx'])
260             
261matrix_generic_sparse = Extension('sage.matrix.matrix_generic_sparse',
262                                  ['sage/matrix/matrix_generic_sparse.pyx'])
263
264matrix_domain_dense = Extension('sage.matrix.matrix_domain_dense',
265                                ['sage/matrix/matrix_domain_dense.pyx'])
266
267matrix_domain_sparse = Extension('sage.matrix.matrix_domain_sparse',
268              ['sage/matrix/matrix_domain_sparse.pyx'])
269             
270matrix_pid_dense = Extension('sage.matrix.matrix_pid_dense',
271                       ['sage/matrix/matrix_pid_dense.pyx'])
272             
273matrix_pid_sparse = Extension('sage.matrix.matrix_pid_sparse',
274                       ['sage/matrix/matrix_pid_sparse.pyx'])
275
276
277matrix_integer_2x2 = Extension('sage.matrix.matrix_integer_2x2',
278                                 ['sage/matrix/matrix_integer_2x2.pyx'],
279                                 libraries = ['gmp'])
280
281linbox = Extension('sage.libs.linbox.linbox',
282                   ['sage/libs/linbox/linbox.pyx'],
283                   # For this to work on cygwin, linboxwrap *must* be before ntl.
284                   libraries = ['linboxwrap', 'ntl', 'linbox', 'gmp', 'gmpxx', 'stdc++', 'givaro', BLAS],
285                   language = 'c++')
286
287libsingular = Extension('sage.libs.singular.singular',
288                        sources = ['sage/libs/singular/singular.pyx'],
289                        libraries = ['gmp', 'm', 'readline', 'singular', 'singfac', 'singcf', 'omalloc', 'givaro', 'gmpxx'],
290                        language="c++",
291                        include_dirs=[SAGE_ROOT +'/local/include/singular']
292                        )
293
294fplll = Extension('sage.libs.fplll.fplll',
295                        sources = ['sage/libs/fplll/fplll.pyx'],
296                        libraries = ['gmp', 'mpfr', 'stdc++', 'fplll'],
297                        language="c++",
298                        include_dirs=[SAGE_ROOT +'/local/include/fplll']
299                        )
300
301
302matrix_modn_dense = Extension('sage.matrix.matrix_modn_dense',
303                              ['sage/matrix/matrix_modn_dense.pyx'],
304                              libraries = ['gmp'])
305
306matrix_mod2_dense = Extension('sage.matrix.matrix_mod2_dense',
307                              ['sage/matrix/matrix_mod2_dense.pyx',
308                               'sage/libs/m4ri/packedmatrix.c',
309                               'sage/libs/m4ri/matrix.c',
310                               'sage/libs/m4ri/brilliantrussian.c',
311                               'sage/libs/m4ri/grayflex.c',],
312                              libraries = ['gmp'])
313
314matrix_modn_sparse = Extension('sage.matrix.matrix_modn_sparse',
315                               ['sage/matrix/matrix_modn_sparse.pyx'])
316   
317matrix_field_dense = Extension('sage.matrix.matrix_field_dense',
318                       ['sage/matrix/matrix_field_dense.pyx'])
319   
320matrix_field_sparse = Extension('sage.matrix.matrix_field_sparse',
321                       ['sage/matrix/matrix_field_sparse.pyx'])
322
323matrix_rational_dense = Extension('sage.matrix.matrix_rational_dense',
324                                  ['sage/matrix/matrix_rational_dense.pyx'],
325                                 libraries = ['gmp'])
326
327matrix_integer_sparse = Extension('sage.matrix.matrix_integer_sparse',
328                                  ['sage/matrix/matrix_integer_sparse.pyx'],
329                                  libraries = ['gmp'])
330
331matrix_rational_sparse = Extension('sage.matrix.matrix_rational_sparse',
332                                  ['sage/matrix/matrix_rational_sparse.pyx'],
333                                 libraries = ['gmp'])
334
335# TODO -- change to use BLAS at some point.
336matrix_integer_dense = Extension('sage.matrix.matrix_integer_dense',
337                                 ['sage/matrix/matrix_integer_dense.pyx'],
338                                  libraries = ['iml', 'gmp', 'm', BLAS])  # order matters for cygwin!!
339
340matrix_real_double_dense=Extension('sage.matrix.matrix_real_double_dense',
341   ['sage/matrix/matrix_real_double_dense.pyx'],libraries=['gsl',BLAS],
342   define_macros=[('GSL_DISABLE_DEPRECATED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
343
344matrix_complex_double_dense=Extension('sage.matrix.matrix_complex_double_dense',
345   ['sage/matrix/matrix_complex_double_dense.pyx'],libraries=['gsl',BLAS],
346   define_macros=[('GSL_DISABLE_DEPRECATED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
347
348
349solve = Extension('sage.matrix.solve',['sage/matrix/solve.pyx'],libraries = ['gsl',BLAS],define_macros = 
350   [('GSL_DISABLE_DEPRECATED','1')])
351
352matrix_cyclo_dense = Extension('sage.matrix.matrix_cyclo_dense',
353                               ['sage/matrix/matrix_cyclo_dense.pyx'])
354
355matrix_rational_sparse = Extension('sage.matrix.matrix_rational_sparse',
356                                   ['sage/matrix/matrix_rational_sparse.pyx'],
357                                   libraries = ['gmp'])
358
359matrix_cyclo_sparse = Extension('sage.matrix.matrix_cyclo_sparse',
360                                   ['sage/matrix/matrix_cyclo_sparse.pyx'])
361
362
363matrix_mpolynomial_dense = Extension('sage.matrix.matrix_mpolynomial_dense',
364                                     ['sage/matrix/matrix_mpolynomial_dense.pyx'],
365                                     libraries = ['gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],
366                                     language="c++",
367                                     include_dirs=[SAGE_ROOT +'/local/include/singular'])
368
369#matrix_padic_capped_relative_dense = Extension('sage.matrix.padics.matrix_padic_capped_relative_dense',
370#                                               ['sage/matrix/padics/matrix_padic_capped_relative_dense.pyx'])
371
372complex_number = Extension('sage.rings.complex_number',
373                            ['sage/rings/complex_number.pyx'],
374                            libraries = ['mpfr', 'gmp'])
375
376free_module_element = Extension('sage.modules.free_module_element',
377                                ['sage/modules/free_module_element.pyx'])
378
379################ GSL wrapping ######################
380gsl_probability=Extension('sage.gsl.probability_distribution',['sage/gsl/probability_distribution.pyx'],libraries=['gsl',BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
381gsl_integration=Extension('sage.gsl.integration',['sage/gsl/integration.pyx'],define_macros=[('GSL_DISABLE_DEPRECATED','1')], libraries=['gsl',BLAS])
382
383gsl_ode = Extension('sage.gsl.ode',['sage/gsl/ode.pyx'],libraries=['gsl',BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
384
385gsl_fft = Extension('sage.gsl.fft',
386                ['sage/gsl/fft.pyx'],
387                libraries = ['gsl', BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
388
389gsl_interpolation = Extension('sage.gsl.interpolation',
390                ['sage/gsl/interpolation.pyx'],
391                libraries = ['gsl', BLAS], 
392define_macros=[('GSL_DISABLE_DEPRECATED','1')])
393
394gsl_callback = Extension('sage.gsl.callback',
395                ['sage/gsl/callback.pyx'],
396                libraries = ['gsl', BLAS]
397,define_macros=[('GSL_DISABLE_DEPRECATED','1')])
398
399real_double = Extension('sage.rings.real_double',
400                ['sage/rings/real_double.pyx'],
401                libraries = ['gsl', 'gmp', BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
402
403complex_double = Extension('sage.rings.complex_double',
404                           ['sage/rings/complex_double.pyx'],
405                           libraries = ['gsl', BLAS, 'pari', 'gmp'])
406
407real_double_vector = Extension('sage.modules.real_double_vector',['sage/modules/real_double_vector.pyx'],
408                              libraries = ['gsl',BLAS,'pari','gmp'],define_macros = [('GSL_DISABLE_DEPRECAED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
409
410complex_double_vector = Extension('sage.modules.complex_double_vector',['sage/modules/complex_double_vector.pyx'],
411                           libraries = ['gsl', BLAS, 'pari', 'gmp'],define_macros=[('GSL_DISABLE_DEPRECATED','1')],include_dirs=[SAGE_ROOT+'/local/lib/python2.5/site-packages/numpy/core/include/numpy'])
412
413
414vector_integer_dense = Extension('sage.modules.vector_integer_dense',
415                                 ['sage/modules/vector_integer_dense.pyx'],
416                                 libraries = ['gmp'])
417
418vector_modn_dense = Extension('sage.modules.vector_modn_dense',
419                                 ['sage/modules/vector_modn_dense.pyx'])
420
421vector_rational_sparse = Extension('sage.modules.vector_rational_sparse',
422                                 ['sage/modules/vector_rational_sparse.pyx'],
423                                 libraries = ['gmp'])
424
425vector_rational_dense = Extension('sage.modules.vector_rational_dense',
426                                 ['sage/modules/vector_rational_dense.pyx'],
427                                 libraries = ['gmp'])
428
429gsl_array = Extension('sage.gsl.gsl_array',['sage/gsl/gsl_array.pyx'],
430                libraries=['gsl',BLAS],define_macros=[('GSL_DISABLE_DEPRECATED','1')])
431
432gsl_ode = Extension('sage.gsl.ode',['sage/gsl/ode.pyx'],libraries=['gsl',BLAS],
433                define_macros=[('GSL_DISABLE_DEPRECATED','1')])
434
435
436dwt = Extension('sage.gsl.dwt',['sage/gsl/dwt.pyx'],
437                 libraries=['gsl',BLAS],
438                 define_macros=[('GSL_DISABLE_DEPRECATED','1')])
439
440
441sagex_ds = Extension('sage.misc.sagex_ds', ['sage/misc/sagex_ds.pyx'])
442
443symmetrica = Extension('sage.libs.symmetrica.symmetrica',
444                       sources = ["sage/libs/symmetrica/%s"%s for s in \
445                                  ["symmetrica.pyx"]],
446                       include_dirs=['/usr/include/malloc/'],
447                       libraries = ["symmetrica"])
448
449
450#####################################################
451
452ext_modules = [ \
453    free_module_element, 
454   
455    complex_double_vector,
456    real_double_vector,
457   
458    vector_integer_dense,
459    vector_modn_dense,
460    vector_rational_dense,
461
462    #vector_rational_sparse,
463
464    pari, 
465
466    mwrank, 
467
468    fmpz_poly,
469     
470    ntl_ZZ,
471    ntl_ZZX,
472    ntl_ZZ_pContext,
473    ntl_ZZ_p,
474    ntl_ZZ_pX,
475    ntl_ZZ_pEContext,
476    ntl_ZZ_pE,
477    ntl_ZZ_pEX,
478    ntl_lzz_pContext,   
479    ntl_lzz_p,
480    ntl_lzz_pX,
481    ntl_GF2,
482    ntl_GF2X,
483    ntl_GF2EContext,
484    ntl_GF2E,
485    ntl_GF2EX,
486    ntl_mat_ZZ,
487    ntl_mat_GF2E,
488
489    matrix,
490   
491    matrix_action,
492    matrix_misc,
493
494    matrix_dense,
495    matrix_generic_dense,
496
497    matrix_sparse,
498    matrix_generic_sparse,
499
500##     matrix_domain_dense,
501##     matrix_domain_sparse,
502
503##     matrix_pid_dense,
504##     matrix_pid_sparse,
505
506##     matrix_field_dense,
507##     matrix_field_sparse,
508
509     matrix_integer_dense,
510     matrix_rational_dense,
511     matrix_rational_sparse,
512     matrix_integer_2x2,
513     matrix_integer_sparse,   
514     matrix_real_double_dense,
515     matrix_complex_double_dense,
516#     matrix_padic_capped_relative_dense,
517     solve,
518     linbox,
519     matrix_modn_dense,
520     matrix_modn_sparse,
521     matrix_mod2_dense,
522     matrix_mpolynomial_dense, \
523
524     cremona_mat, \
525     cremona_homspace, \
526
527     finite_field_givaro, \
528     finite_field_ntl_gf2e, \
529
530     libsingular, \
531
532     fplll, \
533
534##     matrix_rational_sparse,
535
536##     matrix_cyclo_dense,
537##     matrix_cyclo_sparse,
538
539   
540    dwt,
541
542    gsl_array,
543    gsl_ode,
544    gsl_fft,
545    gsl_interpolation,
546    gsl_callback,
547    gsl_probability,
548    gsl_integration,
549    real_double,
550    complex_double,
551    qd,   
552
553    complex_number,
554
555    sagex_ds,
556
557    symmetrica,
558
559    Extension('sage.media.channels',
560              sources = ['sage/media/channels.pyx']), \
561   
562    Extension('sage.ext.sig',
563              sources = ['sage/ext/sig.pyx']), \
564
565    Extension('sage.ext.arith',
566              sources = ['sage/ext/arith.pyx']), \
567
568    Extension('sage.ext.arith_gmp',
569              sources = ['sage/ext/arith_gmp.pyx'],
570              libraries=['gmp']), \
571
572    Extension('sage.ext.multi_modular',
573              sources = ['sage/ext/multi_modular.pyx'],
574              libraries=['gmp']), \
575
576    Extension('sage.structure.coerce',
577              sources = ['sage/structure/coerce.pyx']), \
578
579    Extension('sage.structure.coerce_dict',
580              sources = ['sage/structure/coerce_dict.pyx']), \
581
582    Extension('sage.modular.congroup_pyx',
583              sources = ['sage/modular/congroup_pyx.pyx', \
584                         'sage/ext/arith.pyx']), \
585
586    Extension('sage.structure.element',
587              sources = ['sage/structure/element.pyx']), \
588
589    Extension('sage.categories.morphism',
590              sources = ['sage/categories/morphism.pyx']), \
591             
592    Extension('sage.categories.functor',
593              sources = ['sage/categories/functor.pyx']), \
594             
595    Extension('sage.categories.action',
596              sources = ['sage/categories/action.pyx']), \
597             
598    Extension('sage.modules.module',
599              sources = ['sage/modules/module.pyx']), \
600
601    Extension('sage.rings.ring',
602              sources = ['sage/rings/ring.pyx']), \
603
604    Extension('sage.rings.polynomial.cyclotomic',
605              sources = ['sage/rings/polynomial/cyclotomic.pyx']
606              ), \
607
608    Extension('sage.rings.polynomial.multi_polynomial',
609              sources = ['sage/rings/polynomial/multi_polynomial.pyx']
610              ), \
611
612    Extension('sage.rings.polynomial.multi_polynomial_ring_generic',
613              sources = ['sage/rings/polynomial/multi_polynomial_ring_generic.pyx']
614              ), \
615
616    Extension('sage.rings.polynomial.multi_polynomial_libsingular',
617              sources = ['sage/rings/polynomial/multi_polynomial_libsingular.pyx'],
618              libraries = ['gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],
619              language="c++",
620              include_dirs=[SAGE_ROOT +'/local/include/singular']), \
621
622    Extension('sage.rings.polynomial.multi_polynomial_ideal_libsingular',
623              sources = ['sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx'],
624              libraries = ['gmp', 'm', 'readline', 'singular', 'singcf', 'singfac', 'omalloc', 'givaro', 'gmpxx'],
625              language="c++",
626              include_dirs=[SAGE_ROOT +'/local/include/singular']), \
627
628    Extension('sage.groups.group',
629              sources = ['sage/groups/group.pyx']), \
630
631    Extension('sage.structure.sage_object',
632              sources = ['sage/structure/sage_object.pyx'], libraries=['ntl']), \
633
634    Extension('sage.structure.parent',
635              sources = ['sage/structure/parent.pyx']), \
636
637    Extension('sage.structure.parent_base',
638              sources = ['sage/structure/parent_base.pyx']), \
639   
640    Extension('sage.structure.parent_gens',
641              sources = ['sage/structure/parent_gens.pyx']), \
642
643    Extension('sage.ext.interactive_constructors_c',
644              sources = ['sage/ext/interactive_constructors_c.pyx']), \
645
646    Extension('sage.misc.cython_c',
647              sources = ['sage/misc/cython_c.pyx']), \
648
649    Extension('sage.misc.misc_c',
650              sources = ['sage/misc/misc_c.pyx']), \
651
652    Extension('sage.misc.refcount',
653              sources = ['sage/misc/refcount.pyx']), \
654
655    Extension('sage.rings.real_mpfr',
656              sources = ['sage/rings/real_mpfr.pyx', 'sage/rings/ring.pyx'],
657              libraries = ['mpfr', 'pari', 'gmp']), \
658
659    Extension('sage.rings.real_mpfi',
660              sources = ['sage/rings/real_mpfi.pyx'],
661              libraries = ['mpfi', 'mpfr', 'gmp']), \
662
663    Extension('sage.rings.residue_field',
664              sources = ['sage/rings/residue_field.pyx']), \
665
666    Extension('sage.rings.integer',
667              sources = ['sage/ext/arith.pyx', 'sage/rings/integer.pyx'],
668              libraries=['ntl', 'gmp']), \
669
670    Extension('sage.rings.integer_ring',
671              sources = ['sage/rings/integer_ring.pyx'],
672              libraries=['ntl', 'gmp']), \
673
674    Extension('sage.rings.padics.pow_computer',
675              sources = ['sage/rings/padics/pow_computer.pyx'],
676              libraries = ["csage", "ntl", "gmp", "gmpxx", "m", "stdc++"],
677              language='c++'),
678    Extension('sage.rings.padics.local_generic_element',
679              sources = ['sage/rings/padics/local_generic_element.pyx']),
680    Extension('sage.rings.padics.padic_generic_element',
681              sources = ['sage/rings/padics/padic_generic_element.pyx']),
682    Extension('sage.rings.padics.padic_base_generic_element',
683              sources = ['sage/rings/padics/padic_base_generic_element.pyx']),
684    Extension('sage.rings.padics.padic_fixed_mod_element',
685              sources = ['sage/rings/padics/padic_fixed_mod_element.pyx', \
686                         'sage/rings/padics/padic_generic_element.c'],
687              libraries=['gmp']),
688    Extension('sage.rings.padics.padic_capped_absolute_element',
689              sources = ['sage/rings/padics/padic_capped_absolute_element.pyx', \
690                         'sage/rings/padics/padic_generic_element.c'],
691              libraries=['gmp']),
692    Extension('sage.rings.padics.padic_capped_relative_element',
693              sources = ['sage/rings/padics/padic_capped_relative_element.pyx', \
694                         'sage/rings/padics/padic_generic_element.c'],
695              libraries=['gmp']),
696
697
698    Extension('sage.rings.memory', \
699              sources = ['sage/rings/memory.pyx'], \
700              libraries=['gmp','stdc++']), \
701
702    Extension('sage.rings.bernoulli_mod_p',
703              sources = ['sage/rings/bernoulli_mod_p.pyx', 'sage/ext/arith.pyx'],
704              libraries=['ntl','stdc++'],
705              language = 'c++',
706              include_dirs=['sage/libs/ntl/']), \
707
708    Extension('sage.schemes.hyperelliptic_curves.frobenius',
709                 sources = ['sage/schemes/hyperelliptic_curves/frobenius.pyx',
710                            'sage/schemes/hyperelliptic_curves/frobenius_cpp.cpp'],
711                 libraries = ['ntl', 'stdc++', 'gmp'],
712                 language = 'c++',
713                 include_dirs=['sage/libs/ntl/']), \
714
715    Extension('sage.rings.polynomial.polynomial_compiled',
716               sources = ['sage/rings/polynomial/polynomial_compiled.pyx']), \
717
718    Extension('sage.rings.polynomial.polynomial_element',
719              sources = ['sage/rings/polynomial/polynomial_element.pyx']), \
720
721    Extension('sage.rings.polynomial.polynomial_integer_dense_ntl',
722                 sources = ['sage/rings/polynomial/polynomial_integer_dense_ntl.pyx'],
723                 libraries = ['ntl', 'stdc++', 'gmp'],
724                 language = 'c++',
725                 include_dirs=['sage/libs/ntl/']), \
726
727    Extension('sage.rings.polynomial.polynomial_modn_dense_ntl',
728                 sources = ['sage/rings/polynomial/polynomial_modn_dense_ntl.pyx'],
729                 libraries = ['ntl', 'stdc++', 'gmp'],
730                 language = 'c++',
731                 include_dirs=['sage/libs/ntl/']), \
732
733    Extension('sage.rings.power_series_ring_element',
734              sources = ['sage/rings/power_series_ring_element.pyx']), \
735
736    Extension('sage.rings.power_series_poly',
737              sources = ['sage/rings/power_series_poly.pyx']), \
738
739    Extension('sage.rings.power_series_mpoly',
740              sources = ['sage/rings/power_series_mpoly.pyx']), \
741
742    Extension('sage.rings.laurent_series_ring_element',
743              sources = ['sage/rings/laurent_series_ring_element.pyx']), \
744
745    Extension('sage.rings.rational',
746              sources = ['sage/rings/rational.pyx',
747                         'sage/ext/arith.pyx', \
748                         'sage/rings/integer.pyx'],
749              libraries=['ntl', 'gmp']), \
750
751    Extension('sage.rings.sparse_poly', 
752              sources = ['sage/rings/sparse_poly.pyx'],
753              libraries=['gmp']), \
754
755    Extension('sage.rings.polynomial.polydict',
756              sources = ['sage/rings/polynomial/polydict.pyx']), \
757
758    Extension('sage.rings.polynomial.real_roots',
759              sources = ['sage/rings/polynomial/real_roots.pyx'],
760              libraries=['mpfr', 'qd']), \
761
762    Extension('sage.rings.number_field.number_field_element',
763              sources = ['sage/rings/number_field/number_field_element.pyx'],
764              libraries=['ntl','gmp'],
765              language = 'c++'), \
766
767    Extension('sage.rings.number_field.number_field_element_quadratic',
768              sources = ['sage/rings/number_field/number_field_element_quadratic.pyx'],
769              libraries=['gmp'],
770              language = 'c++'), \
771                    # Needs c++ because it has c++ members in class struct
772 
773    Extension('sage.rings.number_field.number_field_base',
774              sources = ['sage/rings/number_field/number_field_base.pyx']), \
775
776    Extension('sage.rings.morphism',
777              sources = ['sage/rings/morphism.pyx']),
778
779    Extension('sage.structure.wrapper_parent',
780              sources = ['sage/structure/wrapper_parent.pyx']), \
781
782    Extension('sage.misc.search',
783              ['sage/misc/search.pyx']), \
784
785    Extension('sage.misc.reset',
786              ['sage/misc/reset.pyx']), \
787
788    Extension('sage.calculus.var',
789              ['sage/calculus/var.pyx']), \
790
791    Extension('sage.modular.modsym.heilbronn',
792              ['sage/modular/modsym/heilbronn.pyx',
793               'sage/modular/modsym/p1list.pyx',
794               'sage/ext/arith.pyx'],
795              libraries = ['gmp', 'm']), \
796
797    Extension('sage.modular.modsym.p1list',
798              ['sage/modular/modsym/p1list.pyx',
799               'sage/ext/arith.pyx'],
800              libraries = ['gmp']), \
801
802    Extension('sage.structure.mutability',
803              ['sage/structure/mutability.pyx']
804              ), \
805
806    Extension('sage.matrix.matrix0',
807              ['sage/matrix/matrix0.pyx']
808              ), \
809
810    Extension('sage.matrix.matrix1',
811              ['sage/matrix/matrix1.pyx']
812              ), \
813
814    Extension('sage.matrix.matrix2',
815              ['sage/matrix/matrix2.pyx']
816              ), \
817   
818    Extension('sage.matrix.matrix',
819              ['sage/matrix/matrix.pyx']
820              ), \
821
822    Extension('sage.matrix.matrix_window',
823              ['sage/matrix/matrix_window.pyx']
824              ), \
825
826    Extension('sage.matrix.matrix_window_modn_dense',
827              ['sage/matrix/matrix_window_modn_dense.pyx']
828              ), \
829
830    Extension('sage.matrix.strassen',
831              ['sage/matrix/strassen.pyx']
832              ), \
833                           
834    Extension('sage.rings.integer_mod',
835              ['sage/rings/integer_mod.pyx'],
836              libraries = ['gmp']
837              ), \
838
839    Extension('sage.combinat.expnums',
840              ['sage/combinat/expnums.pyx'],
841              libraries = ['gmp']
842              ), \
843                           
844    Extension('sage.combinat.partitions',
845              ['sage/combinat/partitions.pyx',
846               'sage/combinat/partitions_c.cc'],
847              libraries = ['qd', 'gmp', 'mpfr'],
848              language='c++'             
849              ), \
850
851    Extension('sage.graphs.graph_fast',
852              ['sage/graphs/graph_fast.pyx'],
853              libraries = ['gmp']
854              ), \
855
856    Extension('sage.graphs.graph_isom',
857              ['sage/graphs/graph_isom.pyx']
858              ), \
859
860    Extension('sage.graphs.bruhat_sn',
861              ['sage/graphs/bruhat_sn.pyx']
862              ), \
863
864    Extension('sage.coding.binary_code',
865              ['sage/coding/binary_code.pyx']
866              ), \
867
868
869    Extension('sage.plot.plot3d.base',
870              ['sage/plot/plot3d/base.pyx']
871              ), \
872    Extension('sage.plot.plot3d.transform',
873              ['sage/plot/plot3d/transform.pyx']
874              ), \
875    Extension('sage.plot.plot3d.index_face_set',
876              ['sage/plot/plot3d/index_face_set.pyx']
877              ), \
878    Extension('sage.plot.plot3d.parametric_surface',
879              ['sage/plot/plot3d/parametric_surface.pyx']
880              ), \
881    Extension('sage.plot.plot3d.shapes',
882              ['sage/plot/plot3d/shapes.pyx']
883              ), \
884
885                           
886    ]
887   
888
889#mpc = Extension('sage.rings.mpc',
890#              sources = ['sage/rings/mpc.pyx', 'sage/rings/ring.pyx'],
891#              libraries = ['mpc', 'mpfr', 'gmp'])
892
893
894extra_compile_args = [ ]
895
896if NO_WARN and distutils.sysconfig.get_config_var('CC').startswith("gcc"):
897    extra_compile_args = ['-w']
898
899if DEVEL:
900    extra_compile_args.append('-ggdb')
901    #ext_modules.append(hanke)
902    #ext_modules.append(mpc)
903
904for m in ext_modules:
905    m.libraries = ['csage'] + m.libraries + ['stdc++', 'ntl'] 
906    m.library_dirs += ['%s/lib' % SAGE_LOCAL]
907
908
909######################################################################
910# CODE for generating C/C++ code from Cython and doing dependency
911# checking, etc.  In theory distutils would run Cython, but I don't
912# trust it at all, and it won't have the more sophisticated dependency
913# checking that we need.
914######################################################################
915
916def check_dependencies( filename, outfile ):
917    """
918    INPUT:
919        filename -- The name of a .pyx, .pxd, or .pxi to check dependencies in the SAGE source.
920        outfile -- The output file for which we are determining out-of-date-ness
921
922    OUTPUT:
923        bool -- whether or not outfile must be regenerated.
924    """
925    if is_older(filename, outfile):
926        print "\nBuilding %s because it depends on %s."%(outfile, filename)
927        return True
928
929    # Now we look inside the file to see what it cimports or include.
930    # If any of these files are newer than outfile, we rebuild
931    # outfile.
932    S = open(filename).readlines()
933    # Take the lines that begin with cimport (it won't hurt to
934    # have extra lines)
935    C = [x.strip() for x in S if 'cimport' in x]
936    for A in C:
937        # Deduce the full module name.
938        # The only allowed forms of cimport/include are:
939        #        cimport a.b.c.d
940        #        from a.b.c.d cimport e
941        # Also, the cimport can be both have no dots (current directory) or absolute.
942        # The multiple imports with parens, e.g.,
943        #        import (a.b.c.d, e.f.g)
944        # of Python are not allowed in Cython.
945        # In both cases, the module name is the second word if we split on whitespace.
946        try:
947            A = A.strip().split()[1]
948        except IndexError:
949            # illegal statement or not really a cimport (e.g., cimport could
950            # be in a comment or something)
951            continue
952
953        if A[0] == '"':
954            A = A[1:-1]
955
956        # Now convert A to a filename, e.g., a/b/c/d
957        #
958        if '.' in A:
959            # It is an absolute cimport.
960            A = A.replace('.','/') + '.pxd'
961        else:
962            # It is a relative cimport.
963            A =  os.path.split(filename)[0] + '/' + A + '.pxd'
964        # Check to see if a/b/c/d.pxd exists and is newer than filename.
965        # If so, we have to regenerate outfile.  If not, we're safe.
966        if os.path.exists(A) and check_dependencies(A, outfile):
967            return True # yep we must rebuild
968
969    # OK, next we move on to include pxi files.
970    # If they change, we likewise must rebuild the pyx file.
971    I = [x for x in S if 'include' in x]
972    # The syntax for include is like this:
973    #       include "../a/b/c.pxi"
974    # I.e., it's a quoted *relative* path to a pxi file.
975    for A in I:
976        try:
977            A = A.strip().split()[1]
978        except IndexError:
979            # Illegal include statement or not really an include
980            # (e.g., include could easily be in a comment or
981            # something).  No reason to crash setup.py!
982            continue
983        # Strip the quotes from either side of the pxi filename.
984        A = A.strip('"').strip("'")
985        # Now take filename (the input argument to this function)
986        # and strip off the last part of the path and stick
987        # A onto it to get the filename of the pxi file relative
988        # where setup.py is being run.
989        R = A # save the relative filename in case it is absolute
990        A = os.path.split(filename)[0] + '/' + A
991        if not os.path.exists(A):
992            # A is an "absolute" path -- that is, absolute to the base of the sage tree
993            A = R # restore
994        # Finally, check to see if filename is older than A
995        if os.path.exists(A) and check_dependencies(A, outfile):
996            return True
997
998
999def need_to_cython(filename, outfile):
1000    """
1001    INPUT:
1002        filename -- The name of a cython file in the SAGE source tree.
1003        outfile -- The name of the corresponding c or cpp file in the build directory.
1004
1005    OUTPUT:
1006        bool -- whether or not outfile must be regenerated.
1007    """
1008
1009    base =  os.path.splitext(filename)[0]
1010    pxd = base+'.pxd'
1011
1012    if check_dependencies(filename, outfile):
1013        return True
1014    elif os.path.exists(pxd) and check_dependencies(pxd, outfile):
1015        return True
1016    else:
1017        return False
1018
1019def process_cython_file(f, m):
1020    """
1021    INPUT:
1022        f -- file name
1023        m -- Extension module description (i.e., object of type Extension).
1024    """
1025    # This is a cython file, so process accordingly.
1026    pyx_inst_file = '%s/%s'%(SITE_PACKAGES, f)
1027    if is_older(f, pyx_inst_file):
1028        print "%s --> %s"%(f, pyx_inst_file)
1029        os.system('cp %s %s 2>/dev/null'%(f, pyx_inst_file))
1030    outfile = f[:-4] + ".c"
1031    if m.language == 'c++':
1032        outfile += 'pp'
1033
1034    if need_to_cython(f, outfile):
1035        # Insert the -o parameter to specify the output file (particularly for c++)
1036        cmd = "cython --embed-positions --incref-local-binop -I%s -o %s %s"%(os.getcwd(), outfile, f)
1037        print cmd
1038        ret = os.system(cmd)
1039        if ret != 0:
1040            print "sage: Error running cython."
1041            sys.exit(1)
1042    return [outfile]
1043   
1044
1045def cython(ext_modules):
1046    for m in ext_modules:
1047        m.extra_compile_args += extra_compile_args
1048#        m.extra_link_args += extra_link_args
1049        new_sources = []
1050        for i in range(len(m.sources)):
1051            f = m.sources[i]
1052#            s = open(f).read()
1053            if f[-4:] == ".pyx":
1054                new_sources += process_cython_file(f, m)
1055            else:
1056                new_sources.append(f)
1057        m.sources = new_sources
1058
1059       
1060
1061if not sdist:
1062    cython(ext_modules)
1063
1064setup(name        = 'sage',
1065
1066      version     =  SAGE_VERSION,
1067     
1068      description = 'SAGE: System for Algebra and Geometry Experimentation',
1069
1070      license     = 'GNU Public License (GPL)',
1071     
1072      author      = 'William Stein',
1073
1074      author_email= 'wstein@gmail.com',
1075     
1076      url         = 'http://www.sagemath.org',
1077     
1078      packages    = ['sage',
1079                     
1080                     'sage.algebras',
1081                     
1082                     'sage.catalogue',
1083                     
1084                     'sage.categories',
1085
1086                     'sage.coding',
1087
1088                     'sage.combinat',
1089                     
1090                     'sage.crypto',
1091
1092                     'sage.crypto.mq',
1093                     
1094                     'sage.databases',
1095                     
1096                     'sage.ext',
1097                     
1098                     'sage.calculus',
1099
1100                     'sage.functions',
1101
1102                     'sage.geometry',
1103
1104                     'sage.games',
1105
1106                     'sage.gsl',
1107                     
1108                     'sage.graphs',
1109                     
1110                     'sage.groups',
1111                     'sage.groups.abelian_gps',
1112                     'sage.groups.matrix_gps',
1113                     'sage.groups.perm_gps',
1114                     
1115                     'sage.interfaces',
1116
1117                     'sage.lfunctions',
1118
1119                     'sage.libs',
1120                     'sage.libs.fplll',
1121                     'sage.libs.hanke',
1122                     'sage.libs.linbox',
1123                     'sage.libs.mwrank',
1124                     'sage.libs.ntl',
1125                     'sage.libs.flint',
1126                     'sage.libs.pari',
1127                     'sage.libs.singular',
1128                     'sage.libs.symmetrica',
1129                     'sage.libs.cremona',
1130
1131                     'sage.logic',
1132                     
1133                     'sage.matrix',
1134#                     'sage.matrix.padics',
1135                     'sage.media',
1136                     'sage.misc',
1137                     
1138                     'sage.modules',
1139                     
1140                     'sage.modular',
1141                     'sage.modular.abvar',
1142                     'sage.modular.hecke',
1143                     'sage.modular.modform',
1144                     'sage.modular.modsym',
1145                     'sage.modular.ssmod',
1146                     
1147                     'sage.monoids',
1148                     
1149                     'sage.plot',
1150                     'sage.plot.mpl3d',
1151                     'sage.plot.plot3d',
1152                     
1153                     'sage.probability',
1154
1155                     'sage.quadratic_forms',
1156                     'sage.quadratic_forms.genera',
1157
1158                     'sage.rings',
1159                     'sage.rings.number_field',
1160                     'sage.rings.padics',
1161                     'sage.rings.polynomial',
1162                     'sage.rings.polynomial.padics',
1163                     
1164                     'sage.tests',
1165                     
1166                     'sage.sets',
1167                     
1168                     'sage.schemes',
1169                     'sage.schemes.generic',
1170                     'sage.schemes.jacobians',
1171                     'sage.schemes.plane_curves',
1172                     'sage.schemes.plane_quartics',
1173                     'sage.schemes.elliptic_curves',
1174                     'sage.schemes.hyperelliptic_curves',
1175
1176                     'sage.server',
1177                     'sage.server.server1',
1178                     'sage.server.notebook',
1179                     'sage.server.notebook.compress',
1180                     'sage.server.wiki',
1181                     'sage.server.trac',
1182                     
1183                     'sage.structure',
1184                     'sage.structure.proof',
1185                     
1186                     'sage.dsage',
1187                     'sage.dsage.tests',
1188                     'sage.dsage.database',
1189                     'sage.dsage.database.tests',
1190                     'sage.dsage.server',
1191                     'sage.dsage.server.tests',
1192                     'sage.dsage.interface',
1193                     'sage.dsage.interface.tests',
1194                     'sage.dsage.errors',
1195                     'sage.dsage.twisted',
1196                     'sage.dsage.twisted.tests',
1197                     'sage.dsage.dist_functions',
1198                     'sage.dsage.dist_functions.tests',
1199                     'sage.dsage.misc',
1200                     'sage.dsage.misc.tests',
1201                     'sage.dsage.web',
1202                     'sage.dsage.scripts',
1203                     ],
1204     
1205      scripts = ['sage/dsage/scripts/dsage_server.py',
1206                 'sage/dsage/scripts/dsage_worker.py',
1207                 'sage/dsage/scripts/dsage_setup.py'
1208                ],
1209
1210      data_files = [('dsage/web/static',                       
1211                     ['sage/dsage/web/static/dsage_web.css',
1212                      'sage/dsage/web/static/dsage_web.js',
1213                      'sage/dsage/web/static/jquery-latest.js',
1214                      'sage/dsage/web/static/jquery.tablesorter.pack.js',
1215                      'sage/dsage/web/static/index.html'])],
1216     
1217      ext_modules = ext_modules,
1218      include_dirs = include_dirs)
1219
1220 
1221 
Note: See TracBrowser for help on using the repository browser.