Skip to content
Snippets Groups Projects
Commit c0aaa8fc authored by Adam J. Stewart's avatar Adam J. Stewart Committed by Todd Gamblin
Browse files

Add PythonPackage base class

- Add a PythonPackage class with build system support.
  - Support build phases in PythonPackage
  - Add a custom sanity check for PythonPackages
  - Get rid of nolink dependencies in python packages

- Update spack create to use new PythonPackage class

- Port most of Python packages to new PythonPackage class

- Conducted a massive install and activate of Python packages.
  - Fixed bugs introduced by install and activate.

- Update API docs on PythonPackage
parent 1f49493f
No related branches found
No related tags found
No related merge requests found
Showing
with 42 additions and 125 deletions
...@@ -25,15 +25,11 @@ ...@@ -25,15 +25,11 @@
from spack import * from spack import *
class PyBottleneck(Package): class PyBottleneck(PythonPackage):
"""A collection of fast NumPy array functions written in Cython.""" """A collection of fast NumPy array functions written in Cython."""
homepage = "https://pypi.python.org/pypi/Bottleneck/1.0.0" homepage = "https://pypi.python.org/pypi/Bottleneck/1.0.0"
url = "https://pypi.python.org/packages/source/B/Bottleneck/Bottleneck-1.0.0.tar.gz" url = "https://pypi.python.org/packages/source/B/Bottleneck/Bottleneck-1.0.0.tar.gz"
version('1.0.0', '380fa6f275bd24f27e7cf0e0d752f5d2') version('1.0.0', '380fa6f275bd24f27e7cf0e0d752f5d2')
extends('python')
depends_on('py-numpy', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,18 +25,13 @@ ...@@ -25,18 +25,13 @@
from spack import * from spack import *
class PyCclib(Package): class PyCclib(PythonPackage):
"""Open source library for parsing and interpreting the results of """Open source library for parsing and interpreting the results of
computational chemistry packages""" computational chemistry packages"""
homepage = "https://cclib.github.io/" homepage = "https://cclib.github.io/"
url = "https://github.com/cclib/cclib/releases/download/v1.5/cclib-1.5.tar.gz"
version('1.5', 'c06940101c4796bce82036b13fecb73c') version('1.5.post1', '1a50be48e4597b1a6dabe943da82a43c',
url="https://github.com/cclib/cclib/releases/download/v1.5/cclib-1.5.post1.tar.gz")
extends('python')
depends_on('py-numpy@1.5:', type=('build', 'run')) depends_on('py-numpy@1.5:', type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyCdo(Package): class PyCdo(PythonPackage):
"""The cdo package provides an interface to the Climate Data """The cdo package provides an interface to the Climate Data
Operators from Python.""" Operators from Python."""
...@@ -35,13 +35,8 @@ class PyCdo(Package): ...@@ -35,13 +35,8 @@ class PyCdo(Package):
version('1.3.2', '4b3686ec1b9b891f166c1c466c6db745', version('1.3.2', '4b3686ec1b9b891f166c1c466c6db745',
url="https://pypi.python.org/packages/d6/13/908e7c1451e1f5fb68405f341cdcb3196a16952ebfe1f172cb788f864aa9/cdo-1.3.2.tar.gz") url="https://pypi.python.org/packages/d6/13/908e7c1451e1f5fb68405f341cdcb3196a16952ebfe1f172cb788f864aa9/cdo-1.3.2.tar.gz")
extends('python')
depends_on('cdo') depends_on('cdo')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('py-scipy', type=('build', 'run')) depends_on('py-scipy', type=('build', 'run'))
depends_on('py-netcdf', type=('build', 'run')) depends_on('py-netcdf', type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,18 +25,13 @@ ...@@ -25,18 +25,13 @@
from spack import * from spack import *
class PyCertifi(Package): class PyCertifi(PythonPackage):
"""Certifi: A carefully curated collection of Root Certificates for validating """Certifi: A carefully curated collection of Root Certificates for validating
the trustworthiness of SSL certificates while verifying the identity of TLS the trustworthiness of SSL certificates while verifying the identity of TLS
hosts.""" hosts."""
homepage = "https://github.com/certifi/python-certifi" homepage = "https://github.com/certifi/python-certifi"
# base https://pypi.python.org/pypi/certifi/
url = "https://github.com/certifi/python-certifi/archive/2016.02.28.tar.gz" url = "https://github.com/certifi/python-certifi/archive/2016.02.28.tar.gz"
version('2016.02.28', '5ccfc23bd5e931863f0b01ef3e9d2dbd3bef0e1b') version('2016.02.28', '5ccfc23bd5e931863f0b01ef3e9d2dbd3bef0e1b')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -22,12 +22,10 @@ ...@@ -22,12 +22,10 @@
# License along with this program; if not, write to the Free Software # License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
############################################################################## ##############################################################################
import os
from spack import * from spack import *
class PyCffi(Package): class PyCffi(PythonPackage):
"""Foreign Function Interface for Python calling C code""" """Foreign Function Interface for Python calling C code"""
homepage = "http://cffi.readthedocs.org/en/latest/" homepage = "http://cffi.readthedocs.org/en/latest/"
# base https://pypi.python.org/pypi/cffi # base https://pypi.python.org/pypi/cffi
...@@ -35,18 +33,15 @@ class PyCffi(Package): ...@@ -35,18 +33,15 @@ class PyCffi(Package):
version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea') version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('py-pycparser', type=('build', 'run')) depends_on('py-pycparser', type=('build', 'run'))
depends_on('libffi') depends_on('libffi')
def install(self, spec, prefix): def setup_environment(self, spack_env, run_env):
# This sets the compiler (and flags) that distutils will use # This sets the compiler (and flags) that distutils will use
# to create the final shared library. It will use the # to create the final shared library. It will use the
# compiler specified by the environment variable 'CC' for all # compiler specified by the environment variable 'CC' for all
# other compilation. We are setting the 'LDSHARED" to the # other compilation. We are setting the 'LDSHARED" to the
# spack compiler wrapper plus a few extra flags necessary for # spack compiler wrapper plus a few extra flags necessary for
# building the shared library. # building the shared library.
os.environ['LDSHARED'] = "{0} -shared -pthread".format(spack_cc) spack_env.set('LDSHARED', "{0} -shared -pthread".format(spack_cc))
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyConfigparser(Package): class PyConfigparser(PythonPackage):
"""This library brings the updated configparser from Python 3.5 to """This library brings the updated configparser from Python 3.5 to
Python 2.6-3.5.""" Python 2.6-3.5."""
...@@ -35,12 +35,10 @@ class PyConfigparser(Package): ...@@ -35,12 +35,10 @@ class PyConfigparser(Package):
version('3.5.0', 'cfdd915a5b7a6c09917a64a573140538', version('3.5.0', 'cfdd915a5b7a6c09917a64a573140538',
url="https://pypi.python.org/packages/7c/69/c2ce7e91c89dc073eb1aa74c0621c3eefbffe8216b3f9af9d3885265c01c/configparser-3.5.0.tar.gz") url="https://pypi.python.org/packages/7c/69/c2ce7e91c89dc073eb1aa74c0621c3eefbffe8216b3f9af9d3885265c01c/configparser-3.5.0.tar.gz")
extends('python')
depends_on('python@2.6:2.7,3.4:') depends_on('python@2.6:2.7,3.4:')
depends_on('py-ordereddict', when='^python@2.6:2.6.999', type=('build', 'run')) # This dependency breaks concretization
# See https://github.com/LLNL/spack/issues/2793
# depends_on('py-ordereddict', when='^python@2.6:2.6.999', type=('build', 'run')) # noqa
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyCoverage(Package): class PyCoverage(PythonPackage):
""" Testing coverage checker for python """ """ Testing coverage checker for python """
homepage = "http://nedbatchelder.com/code/coverage/" homepage = "http://nedbatchelder.com/code/coverage/"
...@@ -34,8 +34,3 @@ class PyCoverage(Package): ...@@ -34,8 +34,3 @@ class PyCoverage(Package):
version('4.0a6', '1bb4058062646148965bef0796b61efc') version('4.0a6', '1bb4058062646148965bef0796b61efc')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
extends('python')
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyCsvkit(Package): class PyCsvkit(PythonPackage):
"""A library of utilities for working with CSV, the king of tabular file """A library of utilities for working with CSV, the king of tabular file
formats""" formats"""
...@@ -34,14 +34,9 @@ class PyCsvkit(Package): ...@@ -34,14 +34,9 @@ class PyCsvkit(Package):
version('0.9.1', '48d78920019d18846933ee969502fff6') version('0.9.1', '48d78920019d18846933ee969502fff6')
extends('python')
depends_on('py-dateutil', type=('build', 'run')) depends_on('py-dateutil', type=('build', 'run'))
depends_on('py-dbf', type=('build', 'run')) depends_on('py-dbf', type=('build', 'run'))
depends_on('py-xlrd', type=('build', 'run')) depends_on('py-xlrd', type=('build', 'run'))
depends_on('py-sqlalchemy', type=('build', 'run')) depends_on('py-sqlalchemy', type=('build', 'run'))
depends_on('py-six', type=('build', 'run')) depends_on('py-six', type=('build', 'run'))
depends_on('py-openpyxl', type=('build', 'run')) depends_on('py-openpyxl', type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyCycler(Package): class PyCycler(PythonPackage):
"""Composable style cycles.""" """Composable style cycles."""
homepage = "http://matplotlib.org/cycler/" homepage = "http://matplotlib.org/cycler/"
...@@ -33,10 +33,5 @@ class PyCycler(Package): ...@@ -33,10 +33,5 @@ class PyCycler(Package):
version('0.10.0', '83dd0df7810e838b59e4dd9fa6e2d198') version('0.10.0', '83dd0df7810e838b59e4dd9fa6e2d198')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('py-six', type=('build', 'run')) depends_on('py-six', type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyCython(Package): class PyCython(PythonPackage):
"""The Cython compiler for writing C extensions for the Python language.""" """The Cython compiler for writing C extensions for the Python language."""
homepage = "https://pypi.python.org/pypi/cython" homepage = "https://pypi.python.org/pypi/cython"
url = "https://pypi.io/packages/source/c/cython/Cython-0.25.2.tar.gz" url = "https://pypi.io/packages/source/c/cython/Cython-0.25.2.tar.gz"
...@@ -38,8 +38,3 @@ class PyCython(Package): ...@@ -38,8 +38,3 @@ class PyCython(Package):
# These versions contain illegal Python3 code... # These versions contain illegal Python3 code...
version('0.22', '1ae25add4ef7b63ee9b4af697300d6b6') version('0.22', '1ae25add4ef7b63ee9b4af697300d6b6')
version('0.21.2', 'd21adb870c75680dc857cd05d41046a4') version('0.21.2', 'd21adb870c75680dc857cd05d41046a4')
extends('python')
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,16 +25,11 @@ ...@@ -25,16 +25,11 @@
from spack import * from spack import *
class PyDask(Package): class PyDask(PythonPackage):
"""Minimal task scheduling abstraction""" """Minimal task scheduling abstraction"""
homepage = "https://github.com/dask/dask/" homepage = "https://github.com/dask/dask/"
url = "https://pypi.python.org/packages/source/d/dask/dask-0.8.1.tar.gz" url = "https://pypi.python.org/packages/source/d/dask/dask-0.8.1.tar.gz"
version('0.8.1', '5dd8e3a3823b3bc62c9a6d192e2cb5b4') version('0.8.1', '5dd8e3a3823b3bc62c9a6d192e2cb5b4')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyDateutil(Package): class PyDateutil(PythonPackage):
"""Extensions to the standard Python datetime module.""" """Extensions to the standard Python datetime module."""
homepage = "https://pypi.python.org/pypi/dateutil" homepage = "https://pypi.python.org/pypi/dateutil"
url = "https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.4.0.tar.gz" url = "https://pypi.python.org/packages/source/p/python-dateutil/python-dateutil-2.4.0.tar.gz"
...@@ -34,9 +34,5 @@ class PyDateutil(Package): ...@@ -34,9 +34,5 @@ class PyDateutil(Package):
version('2.4.2', '4ef68e1c485b09e9f034e10473e5add2') version('2.4.2', '4ef68e1c485b09e9f034e10473e5add2')
version('2.5.2', 'eafe168e8f404bf384514f5116eedbb6') version('2.5.2', 'eafe168e8f404bf384514f5116eedbb6')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('py-six', type=('build', 'run')) depends_on('py-six', type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyDbf(Package): class PyDbf(PythonPackage):
"""Pure python package for reading/writing dBase, FoxPro, and Visual FoxPro """Pure python package for reading/writing dBase, FoxPro, and Visual FoxPro
.dbf files (including memos)""" .dbf files (including memos)"""
...@@ -33,8 +33,3 @@ class PyDbf(Package): ...@@ -33,8 +33,3 @@ class PyDbf(Package):
url = "https://pypi.python.org/packages/source/d/dbf/dbf-0.96.005.tar.gz" url = "https://pypi.python.org/packages/source/d/dbf/dbf-0.96.005.tar.gz"
version('0.96.005', 'bce1a1ed8b454a30606e7e18dd2f8277') version('0.96.005', 'bce1a1ed8b454a30606e7e18dd2f8277')
extends('python')
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyDecorator(Package): class PyDecorator(PythonPackage):
"""The aim of the decorator module it to simplify the usage of decorators """The aim of the decorator module it to simplify the usage of decorators
for the average programmer, and to popularize decorators by showing for the average programmer, and to popularize decorators by showing
various non-trivial examples.""" various non-trivial examples."""
...@@ -34,9 +34,4 @@ class PyDecorator(Package): ...@@ -34,9 +34,4 @@ class PyDecorator(Package):
version('4.0.9', 'f12c5651ccd707e12a0abaa4f76cd69a') version('4.0.9', 'f12c5651ccd707e12a0abaa4f76cd69a')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyDocutils(Package): class PyDocutils(PythonPackage):
"""Docutils is an open-source text processing system for processing """Docutils is an open-source text processing system for processing
plaintext documentation into useful formats, such as HTML, LaTeX, plaintext documentation into useful formats, such as HTML, LaTeX,
man-pages, open-document or XML. It includes reStructuredText, the man-pages, open-document or XML. It includes reStructuredText, the
...@@ -35,9 +35,6 @@ class PyDocutils(Package): ...@@ -35,9 +35,6 @@ class PyDocutils(Package):
homepage = "http://docutils.sourceforge.net/" homepage = "http://docutils.sourceforge.net/"
url = "https://pypi.python.org/packages/source/d/docutils/docutils-0.12.tar.gz" url = "https://pypi.python.org/packages/source/d/docutils/docutils-0.12.tar.gz"
version('0.13.1', 'ea4a893c633c788be9b8078b6b305d53',
url="https://pypi.python.org/packages/05/25/7b5484aca5d46915493f1fd4ecb63c38c333bd32aa9ad6e19da8d08895ae/docutils-0.13.1.tar.gz")
version('0.12', '4622263b62c5c771c03502afa3157768') version('0.12', '4622263b62c5c771c03502afa3157768')
extends('python')
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyEmcee(Package): class PyEmcee(PythonPackage):
"""emcee is an MIT licensed pure-Python implementation of Goodman & Weare's """emcee is an MIT licensed pure-Python implementation of Goodman & Weare's
Affine Invariant Markov chain Monte Carlo (MCMC) Ensemble sampler.""" Affine Invariant Markov chain Monte Carlo (MCMC) Ensemble sampler."""
...@@ -34,8 +34,4 @@ class PyEmcee(Package): ...@@ -34,8 +34,4 @@ class PyEmcee(Package):
version('2.1.0', 'c6b6fad05c824d40671d4a4fc58dfff7') version('2.1.0', 'c6b6fad05c824d40671d4a4fc58dfff7')
extends('python')
depends_on('py-numpy', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyEnum34(Package): class PyEnum34(PythonPackage):
"""Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4.""" """Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7, 2.6, 2.5, and 2.4."""
homepage = "https://pypi.python.org/pypi/enum34" homepage = "https://pypi.python.org/pypi/enum34"
...@@ -34,12 +34,10 @@ class PyEnum34(Package): ...@@ -34,12 +34,10 @@ class PyEnum34(Package):
version('1.1.6', '5f13a0841a61f7fc295c514490d120d0', version('1.1.6', '5f13a0841a61f7fc295c514490d120d0',
url="https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz") url="https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876/enum34-1.1.6.tar.gz")
extends('python')
depends_on('python@2.4:2.8,3.3:') depends_on('python@2.4:2.8,3.3:')
depends_on('py-ordereddict', when='^python@:2.6.999', type=('build', 'run')) # This dependency breaks concretization
# See https://github.com/LLNL/spack/issues/2793
# depends_on('py-ordereddict', when='^python@:2.6.999', type=('build', 'run')) # noqa
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,15 +25,10 @@ ...@@ -25,15 +25,10 @@
from spack import * from spack import *
class PyEpydoc(Package): class PyEpydoc(PythonPackage):
"""Epydoc is a tool for generating API documentation documentation for """Epydoc is a tool for generating API documentation documentation for
Python modules, based on their docstrings.""" Python modules, based on their docstrings."""
homepage = "https://pypi.python.org/pypi/epydoc" homepage = "https://pypi.python.org/pypi/epydoc"
url = "https://pypi.python.org/packages/source/e/epydoc/epydoc-3.0.1.tar.gz" url = "https://pypi.python.org/packages/source/e/epydoc/epydoc-3.0.1.tar.gz"
version('3.0.1', '36407974bd5da2af00bf90ca27feeb44') version('3.0.1', '36407974bd5da2af00bf90ca27feeb44')
extends('python')
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyFlake8(Package): class PyFlake8(PythonPackage):
"""Flake8 is a wrapper around PyFlakes, pep8 and Ned Batchelder's """Flake8 is a wrapper around PyFlakes, pep8 and Ned Batchelder's
McCabe script.""" McCabe script."""
...@@ -43,7 +43,7 @@ class PyFlake8(Package): ...@@ -43,7 +43,7 @@ class PyFlake8(Package):
depends_on('py-setuptools', type=('build', 'run')) depends_on('py-setuptools', type=('build', 'run'))
# pyflakes >= 0.8.1, != 1.2.0, != 1.2.1, != 1.2.2, < 1.3.0 # pyflakes >= 0.8.1, != 1.2.0, != 1.2.1, != 1.2.2, < 1.3.0
depends_on('py-pyflakes@0.8.1:1.1.0,1.2.3:1.2.3', when='@3.0.4', type=('build', 'run')) # noqa depends_on('py-pyflakes@0.8.1:1.1.0,1.2.3:1.2.3', when='@3.0.4', type=('build', 'run'))
# pyflakes >= 0.8.1, < 1.1 # pyflakes >= 0.8.1, < 1.1
depends_on('py-pyflakes@0.8.1:1.0.0', when='@2.5.4', type=('build', 'run')) depends_on('py-pyflakes@0.8.1:1.0.0', when='@2.5.4', type=('build', 'run'))
...@@ -57,11 +57,12 @@ class PyFlake8(Package): ...@@ -57,11 +57,12 @@ class PyFlake8(Package):
# mccabe >= 0.2.1, < 0.5 # mccabe >= 0.2.1, < 0.5
depends_on('py-mccabe@0.2.1:0.4.0', when='@2.5.4', type=('build', 'run')) depends_on('py-mccabe@0.2.1:0.4.0', when='@2.5.4', type=('build', 'run'))
depends_on('py-configparser', when='^python@:3.3.999', type=('build', 'run')) # These dependencies breaks concretization
depends_on('py-enum34', when='^python@:3.1.999', type=('build', 'run')) # See https://github.com/LLNL/spack/issues/2793
# depends_on('py-configparser', when='^python@:3.3.999', type=('build', 'run')) # noqa
# depends_on('py-enum34', when='^python@:3.1.999', type=('build', 'run'))
depends_on('py-configparser', type=('build', 'run'))
depends_on('py-enum34', type=('build', 'run'))
# TODO: Add test dependencies # TODO: Add test dependencies
# depends_on('py-nose', type='test') # depends_on('py-nose', type='test')
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,16 +25,11 @@ ...@@ -25,16 +25,11 @@
from spack import * from spack import *
class PyFuncsigs(Package): class PyFuncsigs(PythonPackage):
"""Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2.""" """Python function signatures from PEP362 for Python 2.6, 2.7 and 3.2."""
homepage = "https://pypi.python.org/pypi/funcsigs" homepage = "https://pypi.python.org/pypi/funcsigs"
url = "https://pypi.python.org/packages/source/f/funcsigs/funcsigs-0.4.tar.gz" url = "https://pypi.python.org/packages/source/f/funcsigs/funcsigs-0.4.tar.gz"
version('0.4', 'fb1d031f284233e09701f6db1281c2a5') version('0.4', 'fb1d031f284233e09701f6db1281c2a5')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
def install(self, spec, prefix):
setup_py('install', '--prefix=%s' % prefix)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment