/fstmerge/examples/matplotlib/rev7315-8135/base-trunk-7315/setup.py
Python | 201 lines | 194 code | 0 blank | 7 comment | 11 complexity | 947255e4a54b86199ee5513a10532528 MD5 | raw file
- """
- You will need to have freetype, libpng and zlib installed to comile
- matplotlib, inlcuding the *-devel versions of these libraries if you
- are using a package manager like RPM or debian.
- The matplotlib build options can be modified with a setup.cfg file. See
- setup.cfg.template for more information.
- """
- import os
- try:
- del os.link
- except AttributeError:
- pass
- rc = {'backend':'Agg'}
- import os
- if os.path.exists('MANIFEST'): os.remove('MANIFEST')
- import sys
- major, minor1, minor2, s, tmp = sys.version_info
- if major==2 and minor1<4 or major<2:
- raise SystemExit("""matplotlib requires Python 2.4 or later.""")
- import glob
- from distutils.core import setup
- from setupext import build_agg, build_gtkagg, build_tkagg, build_wxagg,\
- build_macosx, build_ft2font, build_image, build_windowing, build_path, \
- build_contour, build_delaunay, build_nxutils, build_gdk, \
- build_ttconv, print_line, print_status, print_message, \
- print_raw, check_for_freetype, check_for_libpng, check_for_gtk, \
- check_for_tk, check_for_wx, check_for_macosx, check_for_numpy, \
- check_for_qt, check_for_qt4, check_for_cairo, \
- check_provide_pytz, check_provide_dateutil,\
- check_for_dvipng, check_for_ghostscript, check_for_latex, \
- check_for_pdftops, check_for_datetime, options, build_png
- packages = [
- 'matplotlib',
- 'matplotlib.backends',
- 'matplotlib.projections',
- 'mpl_toolkits',
- 'mpl_toolkits.mplot3d',
- 'mpl_toolkits.axes_grid',
- 'matplotlib.sphinxext',
- 'matplotlib.numerix',
- 'matplotlib.numerix.mlab',
- 'matplotlib.numerix.ma',
- 'matplotlib.numerix.linear_algebra',
- 'matplotlib.numerix.random_array',
- 'matplotlib.numerix.fft',
- ]
- py_modules = ['pylab']
- ext_modules = []
- for line in file('lib/matplotlib/__init__.py').readlines():
- if (line.startswith('__version__')):
- exec(line.strip())
- print_line()
- print_raw("BUILDING MATPLOTLIB")
- print_status('matplotlib', __version__)
- print_status('python', sys.version)
- print_status('platform', sys.platform)
- if sys.platform == 'win32':
- print_status('Windows version', sys.getwindowsversion())
- print_raw("")
- print_raw("REQUIRED DEPENDENCIES")
- package_data = {'matplotlib':['mpl-data/fonts/afm/*.afm',
- 'mpl-data/fonts/pdfcorefonts/*.afm',
- 'mpl-data/fonts/pdfcorefonts/*.txt',
- 'mpl-data/fonts/ttf/*.ttf',
- 'mpl-data/images/*.xpm',
- 'mpl-data/images/*.svg',
- 'mpl-data/images/*.png',
- 'mpl-data/images/*.ppm',
- 'mpl-data/example/*.npy',
- 'mpl-data/matplotlibrc',
- 'mpl-data/matplotlib.conf',
- 'mpl-data/*.glade',
- 'backends/Matplotlib.nib/*',
- ]}
- if not check_for_numpy():
- sys.exit(1)
- if not check_for_freetype():
- sys.exit(1)
- build_ft2font(ext_modules, packages)
- build_ttconv(ext_modules, packages)
- build_contour(ext_modules, packages)
- build_delaunay(ext_modules, packages)
- build_nxutils(ext_modules, packages)
- build_path(ext_modules, packages)
- print_raw("")
- print_raw("OPTIONAL BACKEND DEPENDENCIES")
- has_libpng = check_for_libpng()
- if has_libpng and options['build_agg']:
- build_agg(ext_modules, packages)
- rc['backend'] = 'Agg'
- else:
- rc['backend'] = 'SVG'
- if has_libpng and options['build_image']:
- build_image(ext_modules, packages)
- if has_libpng and options['build_agg'] or options['build_image']:
- build_png(ext_modules, packages)
- if options['build_windowing'] and sys.platform=='win32':
- build_windowing(ext_modules, packages)
- if options['build_tkagg']:
- if check_for_tk() or (options['build_tkagg'] is True):
- options['build_agg'] = 1
- build_tkagg(ext_modules, packages)
- rc['backend'] = 'TkAgg'
- if options['build_wxagg']:
- if check_for_wx() or (options['build_wxagg'] is True):
- options['build_agg'] = 1
- import wx
- if getattr(wx, '__version__', '0.0')[0:3] < '2.8' :
- build_wxagg(ext_modules, packages)
- wxagg_backend_status = "yes"
- else:
- print_message("WxAgg extension not required for wxPython >= 2.8")
- rc['backend'] = 'WXAgg'
- hasgtk = check_for_gtk()
- if options['build_gtk']:
- if hasgtk or (options['build_gtk'] is True):
- build_gdk(ext_modules, packages)
- if options['build_gtkagg']:
- if hasgtk or (options['build_gtkagg'] is True):
- options['build_agg'] = 1
- build_gtkagg(ext_modules, packages)
- rc['backend'] = 'GTKAgg'
- if options['build_macosx']:
- if check_for_macosx() or (options['build_macosx'] is True):
- build_macosx(ext_modules, packages)
- rc['backend'] = 'MacOSX'
- check_for_qt()
- check_for_qt4()
- check_for_cairo()
- print_raw("")
- print_raw("OPTIONAL DATE/TIMEZONE DEPENDENCIES")
- hasdatetime = check_for_datetime()
- provide_dateutil = check_provide_dateutil(hasdatetime)
- provide_pytz = check_provide_pytz(hasdatetime)
- if hasdatetime: # dates require python23 datetime
- def add_pytz():
- packages.append('pytz')
- resources = ['zone.tab', 'locales/pytz.pot']
- for dirpath, dirnames, filenames in os.walk(os.path.join('lib', 'pytz', 'zoneinfo')):
- if '.svn' in dirpath: continue
- basepath = os.path.join(*dirpath.split(os.path.sep)[2:])
- resources.extend([os.path.join(basepath, filename)
- for filename in filenames])
- package_data['pytz'] = resources
- assert len(resources) > 10, 'zoneinfo files not found!'
- def add_dateutil():
- packages.append('dateutil')
- packages.append('dateutil/zoneinfo')
- package_data['dateutil'] = ['zoneinfo/zoneinfo*.tar.*']
- if sys.platform=='win32':
- add_pytz()
- add_dateutil()
- else:
- if provide_pytz:
- add_pytz()
- print 'adding pytz'
- if provide_dateutil: add_dateutil()
- print_raw("")
- print_raw("OPTIONAL USETEX DEPENDENCIES")
- check_for_dvipng()
- check_for_ghostscript()
- check_for_latex()
- check_for_pdftops()
- print_raw("")
- print_raw("[Edit setup.cfg to suppress the above messages]")
- print_line()
- if options['backend']: rc['backend'] = options['backend']
- template = file('matplotlibrc.template').read()
- file('lib/matplotlib/mpl-data/matplotlibrc', 'w').write(template%rc)
- template = file('lib/matplotlib/mpl-data/matplotlib.conf.template').read()
- template = template.replace("datapath = ", "#datapath = ")
- template = template.replace(" use = 'Agg'", " use = '%s'"%rc['backend'])
- file('lib/matplotlib/mpl-data/matplotlib.conf', 'w').write(template)
- try: additional_params # has setupegg.py provided
- except NameError: additional_params = {}
- for mod in ext_modules:
- if options['verbose']:
- mod.extra_compile_args.append('-DVERBOSE')
- print 'pymods', py_modules
- print 'packages', packages
- distrib = setup(name="matplotlib",
- version= __version__,
- description = "Python plotting package",
- author = "John D. Hunter",
- author_email="jdh2358@gmail.com",
- url = "http://matplotlib.sourceforge.net",
- long_description = """
- matplotlib strives to produce publication quality 2D graphics
- for interactive graphing, scientific publishing, user interface
- development and web application servers targeting multiple user
- interfaces and hardcopy output formats. There is a 'pylab' mode
- which emulates matlab graphics
- """,
- packages = packages,
- platforms='any',
- py_modules = py_modules,
- ext_modules = ext_modules,
- package_dir = {'': 'lib'},
- package_data = package_data,
- **additional_params
- )