diff options
-rw-r--r-- | lib/spack/spack/repo.py | 2 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/spack/package.py | 92 |
2 files changed, 93 insertions, 1 deletions
diff --git a/lib/spack/spack/repo.py b/lib/spack/spack/repo.py index 74c5cd2d87..b78ba28eca 100644 --- a/lib/spack/spack/repo.py +++ b/lib/spack/spack/repo.py @@ -78,7 +78,7 @@ NOT_PROVIDED = object() #: #: TODO: At some point in the future, consider removing ``from spack import *`` #: TODO: from packages and shifting to from ``spack.pkgkit import *`` -_package_prepend = 'from spack.pkgkit import *' +_package_prepend = 'from __future__ import absolute_import; from spack.pkgkit import *' def autospec(function): diff --git a/var/spack/repos/builtin/packages/spack/package.py b/var/spack/repos/builtin/packages/spack/package.py new file mode 100644 index 0000000000..9149b7ea65 --- /dev/null +++ b/var/spack/repos/builtin/packages/spack/package.py @@ -0,0 +1,92 @@ +# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Spack(Package): + """ + Spack is a multi-platform package manager that builds and installs multiple + versions and configurations of software. It works on Linux, macOS, and many + supercomputers. Spack is non-destructive: installing a new version of a + package does not break existing installations, so many configurations of + the same package can coexist. + """ + + homepage = "https://spack.io/" + git = "https://github.com/spack/spack.git" + url = "https://github.com/spack/spack/releases/download/v0.16.2/spack-0.16.2.tar.gz" + maintainers = ['haampie'] + + version('develop', branch='develop') + version('0.16.3', sha256='26636a2e2cc066184f12651ac6949f978fc041990dba73934960a4c9c1ea383d') + version('0.16.2', sha256='ed3e5d479732b0ba82489435b4e0f9088571604e789f7ab9bc5ce89030793350') + version('0.16.1', sha256='8d893036b24d9ee0feee41ac33dd66e4fc68d392918f346f8a7a36a69c567567') + version('0.16.0', sha256='064b2532c70916c7684d4c7c973416ac32dd2ea15f5c392654c75258bfc8c6c2') + + variant('development_tools', default=True, description='Build development dependencies') + + # Python (with spack python -i ipython support) + depends_on('python', type='run') + depends_on('py-ipython', type='run') + + # Concretizer + depends_on('clingo-bootstrap@spack', type='run') + + # Archives + depends_on('bzip2', type='run') + depends_on('gzip', type='run') + depends_on('tar', type='run') + depends_on('unzip', type='run') + depends_on('xz', type='run') + depends_on('zstd +programs', type='run') + + # Build tools + depends_on('bash', type='run') + depends_on('file', type='run') + depends_on('gmake', type='run') + depends_on('patch', type='run') + depends_on('ccache', type='run') + + # Fetchers + depends_on('curl', type='run') + depends_on('git', type='run') + depends_on('mercurial', type='run') + depends_on('subversion', type='run') + + # Buildcache + # We just need the 'strings' executable, we don't want to install + # binutil's linkers. + depends_on('binutils~plugins~gold~libiberty~nls~headers~lto~ld~gas~interwork', type='run') + depends_on('gnupg', type='run') + depends_on('patchelf', type='run', when='platform=linux') + depends_on('patchelf', type='run', when='platform=cray') + depends_on('py-boto3', type='run') + + # See https://github.com/spack/spack/pull/24686 + # and #25595, #25726, #25853, #25923, #25924 upstream in python/cpython + with when('@:0.16.2'): + conflicts('python@3.10:') + conflicts('python@3.9.6:3.9') + conflicts('python@3.8.11:3.8') + conflicts('python@3.7.11:3.7') + conflicts('python@3.6.14:3.6') + + # Development tools + with when('+development_tools'): + depends_on('py-isort@4.3.5:', type='run') + depends_on('py-mypy@0.900:', type='run') + depends_on('py-black', type='run') + depends_on('py-flake8', type='run') + depends_on('py-sphinx@3.4:4.1.1,4.1.3:', type='run') + depends_on('py-sphinxcontrib-programoutput', type='run') + depends_on('py-sphinx-rtd-theme', type='run') + depends_on('graphviz', type='run') + + def setup_run_environment(self, env): + env.set('SPACK_PYTHON', self.spec['python'].command.path) + + def install(self, spec, prefix): + install_tree(self.stage.source_path, self.prefix) |