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
Branches
Tags
No related merge requests found
Showing
with 108 additions and 143 deletions
...@@ -25,17 +25,11 @@ ...@@ -25,17 +25,11 @@
from spack import * from spack import *
class PyFunctools32(Package): class PyFunctools32(PythonPackage):
"""Backport of the functools module from Python 3.2.3 for use on 2.7 and """Backport of the functools module from Python 3.2.3 for use on 2.7 and
PyPy.""" PyPy."""
homepage = "https://github.com/MiCHiLU/python-functools32" homepage = "https://github.com/MiCHiLU/python-functools32"
# base https://pypi.python.org/pypi/functools32
url = "https://pypi.python.org/packages/source/f/functools32/functools32-3.2.3-2.tar.gz" url = "https://pypi.python.org/packages/source/f/functools32/functools32-3.2.3-2.tar.gz"
version('3.2.3-2', '09f24ffd9af9f6cd0f63cb9f4e23d4b2') version('3.2.3-2', '09f24ffd9af9f6cd0f63cb9f4e23d4b2')
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 PyFutures(Package): class PyFutures(PythonPackage):
"""Backport of the concurrent.futures package from Python 3.2""" """Backport of the concurrent.futures package from Python 3.2"""
homepage = "https://pypi.python.org/pypi/futures" homepage = "https://pypi.python.org/pypi/futures"
...@@ -33,9 +33,4 @@ class PyFutures(Package): ...@@ -33,9 +33,4 @@ class PyFutures(Package):
version('3.0.5', 'ced2c365e518242512d7a398b515ff95') version('3.0.5', 'ced2c365e518242512d7a398b515ff95')
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))
...@@ -36,6 +36,9 @@ class PyGenders(Package): ...@@ -36,6 +36,9 @@ class PyGenders(Package):
url='https://github.com/chaos/genders/releases/download/genders-1-22-1/genders-1.22.tar.gz') url='https://github.com/chaos/genders/releases/download/genders-1-22-1/genders-1.22.tar.gz')
extends('python') extends('python')
# FIXME: Missing a dependency on genders
# #include <genders.h>
def install(self, spec, prefix): def install(self, spec, prefix):
configure("--prefix=%s" % prefix) configure("--prefix=%s" % prefix)
make(parallel=False) make(parallel=False)
......
...@@ -22,11 +22,10 @@ ...@@ -22,11 +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
############################################################################## ##############################################################################
from spack import version, extends, depends_on from spack import *
from spack import Package
class PyGenshi(Package): class PyGenshi(PythonPackage):
"""Python toolkit for generation of output for the web""" """Python toolkit for generation of output for the web"""
homepage = "https://genshi.edgewall.org/" homepage = "https://genshi.edgewall.org/"
url = "http://ftp.edgewall.com/pub/genshi/Genshi-0.7.tar.gz" url = "http://ftp.edgewall.com/pub/genshi/Genshi-0.7.tar.gz"
...@@ -35,8 +34,4 @@ class PyGenshi(Package): ...@@ -35,8 +34,4 @@ class PyGenshi(Package):
version('0.6.1', '372c368c8931110b0a521fa6091742d7') version('0.6.1', '372c368c8931110b0a521fa6091742d7')
version('0.6', '604e8b23b4697655d36a69c2d8ef7187') version('0.6', '604e8b23b4697655d36a69c2d8ef7187')
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 PyGnuplot(Package): class PyGnuplot(PythonPackage):
"""Gnuplot.py is a Python package that allows you to create graphs from """Gnuplot.py is a Python package that allows you to create graphs from
within Python using the gnuplot plotting program.""" within Python using the gnuplot plotting program."""
homepage = "http://gnuplot-py.sourceforge.net/" homepage = "http://gnuplot-py.sourceforge.net/"
...@@ -33,8 +33,4 @@ class PyGnuplot(Package): ...@@ -33,8 +33,4 @@ class PyGnuplot(Package):
version('1.8', 'abd6f571e7aec68ae7db90a5217cd5b1') version('1.8', 'abd6f571e7aec68ae7db90a5217cd5b1')
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,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyH5py(Package): class PyH5py(PythonPackage):
"""The h5py package provides both a high- and low-level interface to the """The h5py package provides both a high- and low-level interface to the
HDF5 library from Python.""" HDF5 library from Python."""
...@@ -38,8 +38,6 @@ class PyH5py(Package): ...@@ -38,8 +38,6 @@ class PyH5py(Package):
variant('mpi', default=True, description='Build with MPI support') variant('mpi', default=True, description='Build with MPI support')
extends('python')
# Build dependencies # Build dependencies
depends_on('py-cython@0.19:', type='build') depends_on('py-cython@0.19:', type='build')
depends_on('pkg-config', type='build') depends_on('pkg-config', type='build')
...@@ -55,11 +53,11 @@ class PyH5py(Package): ...@@ -55,11 +53,11 @@ class PyH5py(Package):
# Runtime dependencies # Runtime dependencies
depends_on('py-six', type=('build', 'run')) depends_on('py-six', type=('build', 'run'))
def install(self, spec, prefix): phases = ['configure', 'install']
setup_py('configure', '--hdf5={0}'.format(spec['hdf5'].prefix))
def configure(self, spec, prefix):
self.setup_py('configure', '--hdf5={0}'.format(spec['hdf5'].prefix))
if '+mpi' in spec: if '+mpi' in spec:
env['CC'] = spec['mpi'].mpicc env['CC'] = spec['mpi'].mpicc
setup_py('configure', '--mpi') self.setup_py('configure', '--mpi')
setup_py('install', '--prefix={0}'.format(prefix))
##############################################################################
# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
# Produced at the Lawrence Livermore National Laboratory.
#
# This file is part of Spack.
# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
# LLNL-CODE-647188
#
# For details, see https://github.com/llnl/spack
# Please also see the LICENSE file for our notice and the LGPL.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License (as
# published by the Free Software Foundation) version 2.1, February 1999.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
# conditions of the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
from spack import *
class PyHtml5lib(PythonPackage):
"""HTML parser based on the WHATWG HTML specification."""
homepage = "https://github.com/html5lib/html5lib-python"
url = "https://pypi.python.org/packages/ae/ae/bcb60402c60932b32dfaf19bb53870b29eda2cd17551ba5639219fb5ebf9/html5lib-0.9999999.tar.gz"
version('0.9999999', 'ef43cb05e9e799f25d65d1135838a96f')
depends_on('python@2.6:2.7,3.2:3.4')
depends_on('py-six', type=('build', 'run'))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyImagesize(Package): class PyImagesize(PythonPackage):
"""Parses image file headers and returns image size. Supports PNG, JPEG, """Parses image file headers and returns image size. Supports PNG, JPEG,
JPEG2000, and GIF image file formats.""" JPEG2000, and GIF image file formats."""
...@@ -35,9 +35,4 @@ class PyImagesize(Package): ...@@ -35,9 +35,4 @@ class PyImagesize(Package):
version('0.7.1', '976148283286a6ba5f69b0f81aef8052', version('0.7.1', '976148283286a6ba5f69b0f81aef8052',
url="https://pypi.python.org/packages/53/72/6c6f1e787d9cab2cc733cf042f125abec07209a58308831c9f292504e826/imagesize-0.7.1.tar.gz") url="https://pypi.python.org/packages/53/72/6c6f1e787d9cab2cc733cf042f125abec07209a58308831c9f292504e826/imagesize-0.7.1.tar.gz")
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))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyIminuit(Package): class PyIminuit(PythonPackage):
"""Interactive IPython-Friendly Minimizer based on SEAL Minuit2.""" """Interactive IPython-Friendly Minimizer based on SEAL Minuit2."""
homepage = "https://pypi.python.org/pypi/iminuit" homepage = "https://pypi.python.org/pypi/iminuit"
...@@ -34,13 +34,9 @@ class PyIminuit(Package): ...@@ -34,13 +34,9 @@ class PyIminuit(Package):
version('1.2', '4701ec472cae42015e26251703e6e984') version('1.2', '4701ec472cae42015e26251703e6e984')
# Required dependencies # Required dependencies
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
# Optional dependencies # Optional dependencies
depends_on('py-numpy', type=('build', 'run')) depends_on('py-numpy', type=('build', 'run'))
depends_on('py-matplotlib', type=('build', 'run')) depends_on('py-matplotlib', type=('build', 'run'))
depends_on('py-cython', type='build') depends_on('py-cython', 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 PyIpykernel(Package): class PyIpykernel(PythonPackage):
"""IPython Kernel for Jupyter""" """IPython Kernel for Jupyter"""
homepage = "https://pypi.python.org/pypi/ipykernel" homepage = "https://pypi.python.org/pypi/ipykernel"
...@@ -42,15 +42,10 @@ class PyIpykernel(Package): ...@@ -42,15 +42,10 @@ class PyIpykernel(Package):
version('4.1.1', '51376850c46fb006e1f8d1cd353507c5') version('4.1.1', '51376850c46fb006e1f8d1cd353507c5')
version('4.1.0', '638a43e4f8a15872f749090c3f0827b6') version('4.1.0', '638a43e4f8a15872f749090c3f0827b6')
extends('python')
depends_on('python@2.7:2.7.999,3.3:') depends_on('python@2.7:2.7.999,3.3:')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('py-traitlets@4.1.0:') depends_on('py-traitlets@4.1.0:', type=('build', 'run'))
depends_on('py-tornado@4.0:') depends_on('py-tornado@4.0:', type=('build', 'run'))
depends_on('py-ipython@4.0:') depends_on('py-ipython@4.0:', type=('build', 'run'))
depends_on('py-jupyter-client') depends_on('py-jupyter-client', type=('build', 'run'))
depends_on('py-pexpect') depends_on('py-pexpect', 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 PyIpythonGenutils(Package): class PyIpythonGenutils(PythonPackage):
"""Vestigial utilities from IPython""" """Vestigial utilities from IPython"""
homepage = "https://pypi.python.org/pypi/ipython_genutils" homepage = "https://pypi.python.org/pypi/ipython_genutils"
...@@ -33,10 +33,5 @@ class PyIpythonGenutils(Package): ...@@ -33,10 +33,5 @@ class PyIpythonGenutils(Package):
version('0.1.0', '9a8afbe0978adbcbfcb3b35b2d015a56') version('0.1.0', '9a8afbe0978adbcbfcb3b35b2d015a56')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.7.999,3.3:') depends_on('python@2.7:2.7.999,3.3:')
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 PyIpython(Package): class PyIpython(PythonPackage):
"""IPython provides a rich toolkit to help you make the most out of using """IPython provides a rich toolkit to help you make the most out of using
Python interactively.""" Python interactively."""
homepage = "https://pypi.python.org/pypi/ipython" homepage = "https://pypi.python.org/pypi/ipython"
...@@ -35,13 +35,15 @@ class PyIpython(Package): ...@@ -35,13 +35,15 @@ class PyIpython(Package):
version('3.1.0', 'a749d90c16068687b0ec45a27e72ef8f') version('3.1.0', 'a749d90c16068687b0ec45a27e72ef8f')
version('2.3.1', '2b7085525dac11190bfb45bb8ec8dcbf') version('2.3.1', '2b7085525dac11190bfb45bb8ec8dcbf')
extends('python')
depends_on('py-pygments', type=('build', 'run')) depends_on('py-pygments', type=('build', 'run'))
depends_on('py-setuptools', type=('build', 'run')) depends_on('py-setuptools', type=('build', 'run'))
depends_on('py-backports-shutil-get-terminal-size', when="^python@:3.2.999")
depends_on('py-pathlib2', when="^python@:3.3.999")
depends_on('py-pickleshare')
depends_on('py-simplegeneric')
def install(self, spec, prefix): # These dependencies breaks concretization
setup_py('install', '--prefix=%s' % prefix) # See https://github.com/LLNL/spack/issues/2793
# depends_on('py-backports-shutil-get-terminal-size', when="^python@:3.2.999") # noqa
# depends_on('py-pathlib2', when="^python@:3.3.999")
depends_on('py-backports-shutil-get-terminal-size', type=('build', 'run'))
depends_on('py-pathlib2', type=('build', 'run'))
depends_on('py-pickleshare', type=('build', 'run'))
depends_on('py-simplegeneric', type=('build', 'run'))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyIpywidgets(Package): class PyIpywidgets(PythonPackage):
"""IPython widgets for the Jupyter Notebook""" """IPython widgets for the Jupyter Notebook"""
homepage = "https://github.com/ipython/ipywidgets" homepage = "https://github.com/ipython/ipywidgets"
...@@ -33,13 +33,8 @@ class PyIpywidgets(Package): ...@@ -33,13 +33,8 @@ class PyIpywidgets(Package):
version('5.2.2', '112f3daa4aa0f42f8dda831cea3649c8') version('5.2.2', '112f3daa4aa0f42f8dda831cea3649c8')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.7.999,3.3:') depends_on('python@2.7:2.7.999,3.3:')
depends_on('py-ipython@4.0.0:') depends_on('py-ipython@4.0.0:', type=('build', 'run'))
depends_on('py-ipykernel@4.2.2:') depends_on('py-ipykernel@4.2.2:', type=('build', 'run'))
depends_on('py-traitlets@4.2.1:') depends_on('py-traitlets@4.2.1:', type=('build', 'run'))
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 PyJdcal(Package): class PyJdcal(PythonPackage):
"""Julian dates from proleptic Gregorian and Julian calendars""" """Julian dates from proleptic Gregorian and Julian calendars"""
homepage = 'http://github.com/phn/jdcal' homepage = 'http://github.com/phn/jdcal'
url = "https://pypi.python.org/packages/source/j/jdcal/jdcal-1.2.tar.gz" url = "https://pypi.python.org/packages/source/j/jdcal/jdcal-1.2.tar.gz"
version('1.2', 'ab8d5ba300fd1eb01514f363d19b1eb9') version('1.2', 'ab8d5ba300fd1eb01514f363d19b1eb9')
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 PyJinja2(Package): class PyJinja2(PythonPackage):
"""Jinja2 is a template engine written in pure Python. It provides """Jinja2 is a template engine written in pure Python. It provides
a Django inspired non-XML syntax but supports inline expressions a Django inspired non-XML syntax but supports inline expressions
and an optional sandboxed environment.""" and an optional sandboxed environment."""
...@@ -39,11 +39,6 @@ class PyJinja2(Package): ...@@ -39,11 +39,6 @@ class PyJinja2(Package):
version('2.7.1', '282aed153e69f970d6e76f78ed9d027a') version('2.7.1', '282aed153e69f970d6e76f78ed9d027a')
version('2.7', 'c2fb12cbbb523c57d3d15bfe4dc0e8fe') version('2.7', 'c2fb12cbbb523c57d3d15bfe4dc0e8fe')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('py-markupsafe', type=('build', 'run')) depends_on('py-markupsafe', type=('build', 'run'))
depends_on('py-babel@0.8:', type=('build', 'run')) # optional, required for i18n depends_on('py-babel@0.8:', type=('build', 'run')) # optional, required for i18n
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
...@@ -25,19 +25,18 @@ ...@@ -25,19 +25,18 @@
from spack import * from spack import *
class PyJsonschema(Package): class PyJsonschema(PythonPackage):
"""Jsonschema: An(other) implementation of JSON Schema for Python.""" """Jsonschema: An(other) implementation of JSON Schema for Python."""
homepage = "http://github.com/Julian/jsonschema" homepage = "http://github.com/Julian/jsonschema"
# base https://pypi.python.org/pypi/jsonschema
url = "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-2.5.1.tar.gz" url = "https://pypi.python.org/packages/source/j/jsonschema/jsonschema-2.5.1.tar.gz"
version('2.5.1', '374e848fdb69a3ce8b7e778b47c30640') version('2.5.1', '374e848fdb69a3ce8b7e778b47c30640')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('py-vcversioner') depends_on('py-vcversioner', type=('build', 'run'))
depends_on('py-functools32', when="^python@2.7")
def install(self, spec, prefix): # This dependency breaks concretization
setup_py('install', '--prefix={0}'.format(prefix)) # See https://github.com/LLNL/spack/issues/2793
# depends_on('py-functools32', when="^python@2.7", type=('build', 'run'))
depends_on('py-functools32', type=('build', 'run'))
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
from spack import * from spack import *
class PyJupyterClient(Package): class PyJupyterClient(PythonPackage):
"""Jupyter protocol client APIs""" """Jupyter protocol client APIs"""
homepage = "https://github.com/jupyter/jupyter_client" homepage = "https://github.com/jupyter/jupyter_client"
...@@ -40,13 +40,8 @@ class PyJupyterClient(Package): ...@@ -40,13 +40,8 @@ class PyJupyterClient(Package):
version('4.1.0', 'cf42048b889c8434fbb5813a9eec1d34') version('4.1.0', 'cf42048b889c8434fbb5813a9eec1d34')
version('4.0.0', '00fa63c67cb3adf359d09dc4d803aff5') version('4.0.0', '00fa63c67cb3adf359d09dc4d803aff5')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.7.999,3.3:') depends_on('python@2.7:2.7.999,3.3:')
depends_on('py-traitlets') depends_on('py-traitlets', type=('build', 'run'))
depends_on('py-jupyter-core') depends_on('py-jupyter-core', type=('build', 'run'))
depends_on('py-zmq@13:') depends_on('py-zmq@13:', 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 PyJupyterConsole(Package): class PyJupyterConsole(PythonPackage):
"""Jupyter Terminal Console""" """Jupyter Terminal Console"""
homepage = "https://github.com/jupyter/jupyter_console" homepage = "https://github.com/jupyter/jupyter_console"
...@@ -37,15 +37,10 @@ class PyJupyterConsole(Package): ...@@ -37,15 +37,10 @@ class PyJupyterConsole(Package):
version('4.0.3', '0e928ea261e7f8154698cf69ed4f2459') version('4.0.3', '0e928ea261e7f8154698cf69ed4f2459')
version('4.0.2', 'f2e174938c91136549b908bd39fa5d59') version('4.0.2', 'f2e174938c91136549b908bd39fa5d59')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.7.999,3.3:') depends_on('python@2.7:2.7.999,3.3:')
depends_on('py-jupyter-client') depends_on('py-jupyter-client', type=('build', 'run'))
depends_on('py-ipython') depends_on('py-ipython', type=('build', 'run'))
depends_on('py-ipykernel') depends_on('py-ipykernel', type=('build', 'run'))
depends_on('py-pygments') depends_on('py-pygments', type=('build', 'run'))
depends_on('py-prompt-toolkit@1.0.0:1.999.999') depends_on('py-prompt-toolkit@1.0.0:1.999.999', 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 PyJupyterCore(Package): class PyJupyterCore(PythonPackage):
"""Core Jupyter functionality""" """Core Jupyter functionality"""
homepage = "http://jupyter-core.readthedocs.io/" homepage = "http://jupyter-core.readthedocs.io/"
...@@ -42,11 +42,6 @@ class PyJupyterCore(Package): ...@@ -42,11 +42,6 @@ class PyJupyterCore(Package):
version('4.0.1', 'f849136b2badaaba2a8a3b397bf04639') version('4.0.1', 'f849136b2badaaba2a8a3b397bf04639')
version('4.0', 'b6b37cb4f40bd0fcd20433cb2cc7a4c1') version('4.0', 'b6b37cb4f40bd0fcd20433cb2cc7a4c1')
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.7.999,3.3:') depends_on('python@2.7:2.7.999,3.3:')
depends_on('py-traitlets') depends_on('py-traitlets', 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 PyJupyterNotebook(Package): class PyJupyterNotebook(PythonPackage):
"""Jupyter Interactive Notebook""" """Jupyter Interactive Notebook"""
homepage = "https://github.com/jupyter/notebook" homepage = "https://github.com/jupyter/notebook"
...@@ -44,23 +44,18 @@ class PyJupyterNotebook(Package): ...@@ -44,23 +44,18 @@ class PyJupyterNotebook(Package):
variant('terminal', default=False, description="Enable terminal functionality") variant('terminal', default=False, description="Enable terminal functionality")
extends('python')
depends_on('py-setuptools', type='build') depends_on('py-setuptools', type='build')
depends_on('python@2.7:2.7.999,3.3:') depends_on('python@2.7:2.7.999,3.3:')
depends_on('npm', type='build') depends_on('npm', type='build')
depends_on('py-jinja2') depends_on('py-jinja2', type=('build', 'run'))
depends_on('py-tornado@4:') depends_on('py-tornado@4:', type=('build', 'run'))
depends_on('py-ipython-genutils') depends_on('py-ipython-genutils', type=('build', 'run'))
depends_on('py-traitlets') depends_on('py-traitlets', type=('build', 'run'))
depends_on('py-jupyter-core') depends_on('py-jupyter-core', type=('build', 'run'))
depends_on('py-jupyter-client') depends_on('py-jupyter-client', type=('build', 'run'))
depends_on('py-jupyter-console') depends_on('py-jupyter-console', type=('build', 'run'))
depends_on('py-nbformat') depends_on('py-nbformat', type=('build', 'run'))
depends_on('py-nbconvert') depends_on('py-nbconvert', type=('build', 'run'))
depends_on('py-ipykernel') depends_on('py-ipykernel', type=('build', 'run'))
depends_on('py-terminado@0.3.3:', when="+terminal") depends_on('py-terminado@0.3.3:', when="+terminal", type=('build', 'run'))
depends_on('py-ipywidgets', when="+terminal") depends_on('py-ipywidgets', when="+terminal", type=('build', 'run'))
def install(self, spec, prefix):
setup_py('install', '--prefix={0}'.format(prefix))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment