source: setup.py @ 7388:f252b9131b77

Revision 7388:f252b9131b77, 45.0 KB checked in by mabshoff@…, 6 years ago (diff)

link against libpari.so instead of libpari-gmp.so for cremona/homespace.py - this should work on all supported platforms

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
865    Extension('sage.plot.plot3d.base',
866              ['sage/plot/plot3d/base.pyx']
867              ), \
868    Extension('sage.plot.plot3d.transform',
869              ['sage/plot/plot3d/transform.pyx']
870              ), \
871    Extension('sage.plot.plot3d.index_face_set',
872              ['sage/plot/plot3d/index_face_set.pyx']
873              ), \
874    Extension('sage.plot.plot3d.parametric_surface',
875              ['sage/plot/plot3d/parametric_surface.pyx']
876              ), \
877    Extension('sage.plot.plot3d.shapes',
878              ['sage/plot/plot3d/shapes.pyx']
879              ), \
880
881                           
882    ]
883   
884
885#mpc = Extension('sage.rings.mpc',
886#              sources = ['sage/rings/mpc.pyx', 'sage/rings/ring.pyx'],
887#              libraries = ['mpc', 'mpfr', 'gmp'])
888
889
890extra_compile_args = [ ]
891
892if NO_WARN and distutils.sysconfig.get_config_var('CC').startswith("gcc"):
893    extra_compile_args = ['-w']
894
895if DEVEL:
896    extra_compile_args.append('-ggdb')
897    #ext_modules.append(hanke)
898    #ext_modules.append(mpc)
899
900for m in ext_modules:
901    m.libraries = ['csage'] + m.libraries + ['stdc++', 'ntl'] 
902    m.library_dirs += ['%s/lib' % SAGE_LOCAL]
903
904
905######################################################################
906# CODE for generating C/C++ code from Cython and doing dependency
907# checking, etc.  In theory distutils would run Cython, but I don't
908# trust it at all, and it won't have the more sophisticated dependency
909# checking that we need.
910######################################################################
911
912def check_dependencies( filename, outfile ):
913    """
914    INPUT:
915        filename -- The name of a .pyx, .pxd, or .pxi to check dependencies in the SAGE source.
916        outfile -- The output file for which we are determining out-of-date-ness
917
918    OUTPUT:
919        bool -- whether or not outfile must be regenerated.
920    """
921    if is_older(filename, outfile):
922        print "\nBuilding %s because it depends on %s."%(outfile, filename)
923        return True
924
925    # Now we look inside the file to see what it cimports or include.
926    # If any of these files are newer than outfile, we rebuild
927    # outfile.
928    S = open(filename).readlines()
929    # Take the lines that begin with cimport (it won't hurt to
930    # have extra lines)
931    C = [x.strip() for x in S if 'cimport' in x]
932    for A in C:
933        # Deduce the full module name.
934        # The only allowed forms of cimport/include are:
935        #        cimport a.b.c.d
936        #        from a.b.c.d cimport e
937        # Also, the cimport can be both have no dots (current directory) or absolute.
938        # The multiple imports with parens, e.g.,
939        #        import (a.b.c.d, e.f.g)
940        # of Python are not allowed in Cython.
941        # In both cases, the module name is the second word if we split on whitespace.
942        try:
943            A = A.strip().split()[1]
944        except IndexError:
945            # illegal statement or not really a cimport (e.g., cimport could
946            # be in a comment or something)
947            continue
948
949        if A[0] == '"':
950            A = A[1:-1]
951
952        # Now convert A to a filename, e.g., a/b/c/d
953        #
954        if '.' in A:
955            # It is an absolute cimport.
956            A = A.replace('.','/') + '.pxd'
957        else:
958            # It is a relative cimport.
959            A =  os.path.split(filename)[0] + '/' + A + '.pxd'
960        # Check to see if a/b/c/d.pxd exists and is newer than filename.
961        # If so, we have to regenerate outfile.  If not, we're safe.
962        if os.path.exists(A) and check_dependencies(A, outfile):
963            return True # yep we must rebuild
964
965    # OK, next we move on to include pxi files.
966    # If they change, we likewise must rebuild the pyx file.
967    I = [x for x in S if 'include' in x]
968    # The syntax for include is like this:
969    #       include "../a/b/c.pxi"
970    # I.e., it's a quoted *relative* path to a pxi file.
971    for A in I:
972        try:
973            A = A.strip().split()[1]
974        except IndexError:
975            # Illegal include statement or not really an include
976            # (e.g., include could easily be in a comment or
977            # something).  No reason to crash setup.py!
978            continue
979        # Strip the quotes from either side of the pxi filename.
980        A = A.strip('"').strip("'")
981        # Now take filename (the input argument to this function)
982        # and strip off the last part of the path and stick
983        # A onto it to get the filename of the pxi file relative
984        # where setup.py is being run.
985        R = A # save the relative filename in case it is absolute
986        A = os.path.split(filename)[0] + '/' + A
987        if not os.path.exists(A):
988            # A is an "absolute" path -- that is, absolute to the base of the sage tree
989            A = R # restore
990        # Finally, check to see if filename is older than A
991        if os.path.exists(A) and check_dependencies(A, outfile):
992            return True
993
994
995def need_to_cython(filename, outfile):
996    """
997    INPUT:
998        filename -- The name of a cython file in the SAGE source tree.
999        outfile -- The name of the corresponding c or cpp file in the build directory.
1000
1001    OUTPUT:
1002        bool -- whether or not outfile must be regenerated.
1003    """
1004
1005    base =  os.path.splitext(filename)[0]
1006    pxd = base+'.pxd'
1007
1008    if check_dependencies(filename, outfile):
1009        return True
1010    elif os.path.exists(pxd) and check_dependencies(pxd, outfile):
1011        return True
1012    else:
1013        return False
1014
1015def process_cython_file(f, m):
1016    """
1017    INPUT:
1018        f -- file name
1019        m -- Extension module description (i.e., object of type Extension).
1020    """
1021    # This is a cython file, so process accordingly.
1022    pyx_inst_file = '%s/%s'%(SITE_PACKAGES, f)
1023    if is_older(f, pyx_inst_file):
1024        print "%s --> %s"%(f, pyx_inst_file)
1025        os.system('cp %s %s 2>/dev/null'%(f, pyx_inst_file))
1026    outfile = f[:-4] + ".c"
1027    if m.language == 'c++':
1028        outfile += 'pp'
1029
1030    if need_to_cython(f, outfile):
1031        # Insert the -o parameter to specify the output file (particularly for c++)
1032        cmd = "cython --embed-positions --incref-local-binop -I%s -o %s %s"%(os.getcwd(), outfile, f)
1033        print cmd
1034        ret = os.system(cmd)
1035        if ret != 0:
1036            print "sage: Error running cython."
1037            sys.exit(1)
1038    return [outfile]
1039   
1040
1041def cython(ext_modules):
1042    for m in ext_modules:
1043        m.extra_compile_args += extra_compile_args
1044#        m.extra_link_args += extra_link_args
1045        new_sources = []
1046        for i in range(len(m.sources)):
1047            f = m.sources[i]
1048#            s = open(f).read()
1049            if f[-4:] == ".pyx":
1050                new_sources += process_cython_file(f, m)
1051            else:
1052                new_sources.append(f)
1053        m.sources = new_sources
1054
1055       
1056
1057if not sdist:
1058    cython(ext_modules)
1059
1060setup(name        = 'sage',
1061
1062      version     =  SAGE_VERSION,
1063     
1064      description = 'SAGE: System for Algebra and Geometry Experimentation',
1065
1066      license     = 'GNU Public License (GPL)',
1067     
1068      author      = 'William Stein',
1069
1070      author_email= 'wstein@gmail.com',
1071     
1072      url         = 'http://www.sagemath.org',
1073     
1074      packages    = ['sage',
1075                     
1076                     'sage.algebras',
1077                     
1078                     'sage.catalogue',
1079                     
1080                     'sage.categories',
1081
1082                     'sage.coding',
1083
1084                     'sage.combinat',
1085                     
1086                     'sage.crypto',
1087
1088                     'sage.crypto.mq',
1089                     
1090                     'sage.databases',
1091                     
1092                     'sage.ext',
1093                     
1094                     'sage.calculus',
1095
1096                     'sage.functions',
1097
1098                     'sage.geometry',
1099
1100                     'sage.games',
1101
1102                     'sage.gsl',
1103                     
1104                     'sage.graphs',
1105                     
1106                     'sage.groups',
1107                     'sage.groups.abelian_gps',
1108                     'sage.groups.matrix_gps',
1109                     'sage.groups.perm_gps',
1110                     
1111                     'sage.interfaces',
1112
1113                     'sage.lfunctions',
1114
1115                     'sage.libs',
1116                     'sage.libs.fplll',
1117                     'sage.libs.hanke',
1118                     'sage.libs.linbox',
1119                     'sage.libs.mwrank',
1120                     'sage.libs.ntl',
1121                     'sage.libs.flint',
1122                     'sage.libs.pari',
1123                     'sage.libs.singular',
1124                     'sage.libs.symmetrica',
1125                     'sage.libs.cremona',
1126
1127                     'sage.logic',
1128                     
1129                     'sage.matrix',
1130#                     'sage.matrix.padics',
1131                     'sage.media',
1132                     'sage.misc',
1133                     
1134                     'sage.modules',
1135                     
1136                     'sage.modular',
1137                     'sage.modular.abvar',
1138                     'sage.modular.hecke',
1139                     'sage.modular.modform',
1140                     'sage.modular.modsym',
1141                     'sage.modular.ssmod',
1142                     
1143                     'sage.monoids',
1144                     
1145                     'sage.plot',
1146                     'sage.plot.mpl3d',
1147                     'sage.plot.plot3d',
1148                     
1149                     'sage.probability',
1150
1151                     'sage.quadratic_forms',
1152                     'sage.quadratic_forms.genera',
1153
1154                     'sage.rings',
1155                     'sage.rings.number_field',
1156                     'sage.rings.padics',
1157                     'sage.rings.polynomial',
1158                     'sage.rings.polynomial.padics',
1159                     
1160                     'sage.tests',
1161                     
1162                     'sage.sets',
1163                     
1164                     'sage.schemes',
1165                     'sage.schemes.generic',
1166                     'sage.schemes.jacobians',
1167                     'sage.schemes.plane_curves',
1168                     'sage.schemes.plane_quartics',
1169                     'sage.schemes.elliptic_curves',
1170                     'sage.schemes.hyperelliptic_curves',
1171
1172                     'sage.server',
1173                     'sage.server.server1',
1174                     'sage.server.notebook',
1175                     'sage.server.notebook.compress',
1176                     'sage.server.wiki',
1177                     'sage.server.trac',
1178                     
1179                     'sage.structure',
1180                     'sage.structure.proof',
1181                     
1182                     'sage.dsage',
1183                     'sage.dsage.tests',
1184                     'sage.dsage.database',
1185                     'sage.dsage.database.tests',
1186                     'sage.dsage.server',
1187                     'sage.dsage.server.tests',
1188                     'sage.dsage.interface',
1189                     'sage.dsage.interface.tests',
1190                     'sage.dsage.errors',
1191                     'sage.dsage.twisted',
1192                     'sage.dsage.twisted.tests',
1193                     'sage.dsage.dist_functions',
1194                     'sage.dsage.dist_functions.tests',
1195                     'sage.dsage.misc',
1196                     'sage.dsage.misc.tests',
1197                     'sage.dsage.web',
1198                     'sage.dsage.scripts',
1199                     ],
1200     
1201      scripts = ['sage/dsage/scripts/dsage_server.py',
1202                 'sage/dsage/scripts/dsage_worker.py',
1203                 'sage/dsage/scripts/dsage_setup.py'
1204                ],
1205
1206      data_files = [('dsage/web/static',                       
1207                     ['sage/dsage/web/static/dsage_web.css',
1208                      'sage/dsage/web/static/dsage_web.js',
1209                      'sage/dsage/web/static/jquery-latest.js',
1210                      'sage/dsage/web/static/jquery.tablesorter.pack.js',
1211                      'sage/dsage/web/static/index.html'])],
1212     
1213      ext_modules = ext_modules,
1214      include_dirs = include_dirs)
1215
1216 
1217 
Note: See TracBrowser for help on using the repository browser.