Skip to content
107 changes: 63 additions & 44 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use_setuptools()

import sys
from collections import namedtuple

# distutils is breaking our sdists for files in symlinked dirs.
# distutils will copy if os.link is not available, so this is a hack
Expand Down Expand Up @@ -55,52 +56,69 @@

# These are the packages in the order we want to display them. This
# list may contain strings to create section headers for the display.

Spacer = namedtuple('Spacer', ['text'])

# these packages are dependencies for other packages
# give them names so that we can reference them later
numpy_pkg = setupext.Numpy()
cxx_pkg = setupext.CXX()
libagg_pkg = setupext.LibAgg()
freetype_pkg = setupext.FreeType()

mpl_packages = [
'Building Matplotlib',
Spacer('Building Matplotlib'),
setupext.Matplotlib(),
setupext.Python(),
setupext.Platform(),
'Required dependencies and extensions',
setupext.Numpy(),

Spacer('Required dependencies and extensions'),
numpy_pkg,
setupext.Dateutil(),
setupext.Tornado(),
setupext.Pyparsing(),
setupext.CXX(),
setupext.LibAgg(),
setupext.FreeType(),
setupext.FT2Font(),
setupext.Png(),
setupext.Image(),
setupext.TTConv(),
setupext.Path(),
setupext.Contour(),
setupext.Delaunay(),
setupext.Tri(),
'Optional subpackages',
cxx_pkg,
libagg_pkg,
freetype_pkg,
setupext.FT2Font(dependencies=[freetype_pkg, numpy_pkg, cxx_pkg]),
setupext.Png(dependencies=[numpy_pkg, cxx_pkg]),
setupext.Image(dependencies=[numpy_pkg, libagg_pkg, cxx_pkg]),
setupext.TTConv(dependencies=[numpy_pkg, cxx_pkg]),
setupext.Path(dependencies=[numpy_pkg, libagg_pkg, cxx_pkg]),
setupext.Contour(dependencies=[numpy_pkg]),
setupext.Delaunay(dependencies=[numpy_pkg]),
setupext.Tri(dependencies=[numpy_pkg]),

Spacer('Optional subpackages'),
setupext.SampleData(),
setupext.Toolkits(),
setupext.Tests(),
'Optional backend extensions',

Spacer('Optional backend extensions'),
# These backends are listed in order of preference, the first
# being the most preferred. The first one that looks like it will
# work will be selected as the default backend.
setupext.BackendMacOSX(),
setupext.BackendMacOSX(dependencies=[numpy_pkg, libagg_pkg, cxx_pkg]),
setupext.BackendQt4(),
setupext.BackendGtk3Agg(),
setupext.BackendGtk3Cairo(),
setupext.BackendGtkAgg(),
setupext.BackendTkAgg(),
setupext.BackendGtkAgg(dependencies=[libagg_pkg, cxx_pkg, numpy_pkg]),
setupext.BackendTkAgg(dependencies=[numpy_pkg, libagg_pkg, cxx_pkg]),
setupext.BackendWxAgg(),
setupext.BackendGtk(),
setupext.BackendAgg(),
setupext.BackendGtk(dependencies=[numpy_pkg]),
setupext.BackendAgg(dependencies=[numpy_pkg,
libagg_pkg,
freetype_pkg,
cxx_pkg]),
setupext.BackendCairo(),
setupext.Windowing(),
'Optional LaTeX dependencies',

Spacer('Optional LaTeX dependencies'),
setupext.DviPng(),
setupext.Ghostscript(),
setupext.LaTeX(),
setupext.PdfToPs()
]
setupext.PdfToPs(),
]


classifiers = [
Expand Down Expand Up @@ -137,28 +155,29 @@
required_failed = []
good_packages = []
for package in mpl_packages:
if isinstance(package, str):
if isinstance(package, Spacer):
print_raw('')
print_raw(package.upper())
else:
try:
result = package.check()
if result is not None:
message = 'yes [%s]' % result
print_status(package.name, message)
except setupext.CheckFailed as e:
msg = str(e).strip()
if len(msg):
print_status(package.name, 'no [%s]' % msg)
else:
print_status(package.name, 'no')
if not package.optional:
required_failed.append(package)
print_raw(package.text.upper())
continue

try:
result = package.check()
if result is not None:
message = 'yes [%s]' % result
print_status(package.name, message)
except setupext.CheckFailed as e:
msg = str(e).strip()
if len(msg):
print_status(package.name, 'no [%s]' % msg)
else:
good_packages.append(package)
if isinstance(package, setupext.OptionalBackendPackage):
if default_backend is None:
default_backend = package.name
print_status(package.name, 'no')
if not package.optional:
required_failed.append(package)
else:
good_packages.append(package)
if isinstance(package, setupext.OptionalBackendPackage):
if default_backend is None:
default_backend = package.name
print_raw('')


Expand Down
Loading