From f2aca86502eded1500489cd13799d8826e6fc9d2 Mon Sep 17 00:00:00 2001 From: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Date: Wed, 19 Feb 2020 00:04:22 -0800 Subject: Distributed builds (#13100) Fixes #9394 Closes #13217. ## Background Spack provides the ability to enable/disable parallel builds through two options: package `parallel` and configuration `build_jobs`. This PR changes the algorithm to allow multiple, simultaneous processes to coordinate the installation of the same spec (and specs with overlapping dependencies.). The `parallel` (boolean) property sets the default for its package though the value can be overridden in the `install` method. Spack's current parallel builds are limited to build tools supporting `jobs` arguments (e.g., `Makefiles`). The number of jobs actually used is calculated as`min(config:build_jobs, # cores, 16)`, which can be overridden in the package or on the command line (i.e., `spack install -j <# jobs>`). This PR adds support for distributed (single- and multi-node) parallel builds. The goals of this work include improving the efficiency of installing packages with many dependencies and reducing the repetition associated with concurrent installations of (dependency) packages. ## Approach ### File System Locks Coordination between concurrent installs of overlapping packages to a Spack instance is accomplished through bottom-up dependency DAG processing and file system locks. The runs can be a combination of interactive and batch processes affecting the same file system. Exclusive prefix locks are required to install a package while shared prefix locks are required to check if the package is installed. Failures are communicated through a separate exclusive prefix failure lock, for concurrent processes, combined with a persistent store, for separate, related build processes. The resulting file contains the failing spec to facilitate manual debugging. ### Priority Queue Management of dependency builds changed from reliance on recursion to use of a priority queue where the priority of a spec is based on the number of its remaining uninstalled dependencies. Using a queue required a change to dependency build exception handling with the most visible issue being that the `install` method *must* install something in the prefix. Consequently, packages can no longer get away with an install method consisting of `pass`, for example. ## Caveats - This still only parallelizes a single-rooted build. Multi-rooted installs (e.g., for environments) are TBD in a future PR. Tasks: - [x] Adjust package lock timeout to correspond to value used in the demo - [x] Adjust database lock timeout to reduce contention on startup of concurrent `spack install ` calls - [x] Replace (test) package's `install: pass` methods with file creation since post-install `sanity_check_prefix` will otherwise error out with `Install failed .. Nothing was installed!` - [x] Resolve remaining existing test failures - [x] Respond to alalazo's initial feedback - [x] Remove `bin/demo-locks.py` - [x] Add new tests to address new coverage issues - [x] Replace built-in package's `def install(..): pass` to "install" something (i.e., only `apple-libunwind`) - [x] Increase code coverage --- var/spack/repos/builtin.mock/packages/a/package.py | 4 +++- var/spack/repos/builtin.mock/packages/b/package.py | 3 --- var/spack/repos/builtin.mock/packages/boost/package.py | 3 --- var/spack/repos/builtin.mock/packages/c/package.py | 3 --- .../builtin.mock/packages/conflicting-dependent/package.py | 3 --- .../builtin.mock/packages/dep-diamond-patch-mid1/package.py | 3 --- .../builtin.mock/packages/dep-diamond-patch-mid2/package.py | 3 --- .../builtin.mock/packages/dep-diamond-patch-top/package.py | 3 --- var/spack/repos/builtin.mock/packages/develop-test/package.py | 3 --- var/spack/repos/builtin.mock/packages/develop-test2/package.py | 3 --- var/spack/repos/builtin.mock/packages/direct-mpich/package.py | 3 --- .../repos/builtin.mock/packages/dt-diamond-bottom/package.py | 3 --- .../repos/builtin.mock/packages/dt-diamond-left/package.py | 3 --- .../repos/builtin.mock/packages/dt-diamond-right/package.py | 3 --- var/spack/repos/builtin.mock/packages/dt-diamond/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtbuild1/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtbuild2/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtbuild3/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtlink1/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtlink2/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtlink3/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtlink4/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtlink5/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtrun1/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtrun2/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtrun3/package.py | 3 --- var/spack/repos/builtin.mock/packages/dttop/package.py | 3 --- var/spack/repos/builtin.mock/packages/dtuse/package.py | 3 --- var/spack/repos/builtin.mock/packages/e/package.py | 3 --- .../repos/builtin.mock/packages/externalmodule/package.py | 3 --- .../repos/builtin.mock/packages/externalprereq/package.py | 3 --- var/spack/repos/builtin.mock/packages/externaltool/package.py | 3 --- .../repos/builtin.mock/packages/externalvirtual/package.py | 3 --- var/spack/repos/builtin.mock/packages/fake/package.py | 3 --- var/spack/repos/builtin.mock/packages/flake8/package.py | 6 +++++- .../repos/builtin.mock/packages/git-svn-top-level/package.py | 3 --- var/spack/repos/builtin.mock/packages/git-test/package.py | 3 --- var/spack/repos/builtin.mock/packages/git-top-level/package.py | 3 --- .../builtin.mock/packages/git-url-svn-top-level/package.py | 3 --- .../repos/builtin.mock/packages/git-url-top-level/package.py | 3 --- var/spack/repos/builtin.mock/packages/hash-test1/package.py | 10 ++++++++-- var/spack/repos/builtin.mock/packages/hash-test2/package.py | 7 +++++-- var/spack/repos/builtin.mock/packages/hash-test3/package.py | 10 ++++++++-- var/spack/repos/builtin.mock/packages/hg-test/package.py | 3 --- var/spack/repos/builtin.mock/packages/hg-top-level/package.py | 3 --- var/spack/repos/builtin.mock/packages/hypre/package.py | 3 --- .../repos/builtin.mock/packages/indirect-mpich/package.py | 3 --- var/spack/repos/builtin.mock/packages/maintainers-1/package.py | 3 --- var/spack/repos/builtin.mock/packages/maintainers-2/package.py | 3 --- var/spack/repos/builtin.mock/packages/mixedversions/package.py | 3 --- .../builtin.mock/packages/module-path-separator/package.py | 3 --- .../repos/builtin.mock/packages/multi-provider-mpi/package.py | 3 --- .../builtin.mock/packages/multimodule-inheritance/package.py | 3 --- .../repos/builtin.mock/packages/multivalue_variant/package.py | 3 --- var/spack/repos/builtin.mock/packages/netlib-blas/package.py | 3 --- var/spack/repos/builtin.mock/packages/netlib-lapack/package.py | 3 --- .../repos/builtin.mock/packages/nosource-install/package.py | 7 ++----- .../builtin.mock/packages/openblas-with-lapack/package.py | 3 --- var/spack/repos/builtin.mock/packages/openblas/package.py | 3 --- .../repos/builtin.mock/packages/optional-dep-test-2/package.py | 3 --- .../repos/builtin.mock/packages/optional-dep-test-3/package.py | 3 --- .../repos/builtin.mock/packages/optional-dep-test/package.py | 3 --- var/spack/repos/builtin.mock/packages/othervirtual/package.py | 3 --- .../packages/override-context-templates/package.py | 3 --- .../builtin.mock/packages/override-module-templates/package.py | 3 --- .../repos/builtin.mock/packages/patch-a-dependency/package.py | 3 --- .../packages/patch-several-dependencies/package.py | 3 --- var/spack/repos/builtin.mock/packages/patch/package.py | 3 --- var/spack/repos/builtin.mock/packages/perl/package.py | 3 --- .../repos/builtin.mock/packages/preferred-test/package.py | 3 --- var/spack/repos/builtin.mock/packages/python/package.py | 3 --- .../repos/builtin.mock/packages/simple-inheritance/package.py | 3 --- .../packages/singlevalue-variant-dependent/package.py | 3 --- var/spack/repos/builtin.mock/packages/svn-test/package.py | 3 --- var/spack/repos/builtin.mock/packages/svn-top-level/package.py | 3 --- var/spack/repos/builtin.mock/packages/url-list-test/package.py | 6 +----- var/spack/repos/builtin.mock/packages/url-test/package.py | 3 --- .../builtin.mock/packages/when-directives-false/package.py | 3 --- .../builtin.mock/packages/when-directives-true/package.py | 3 --- var/spack/repos/builtin.mock/packages/zmpi/package.py | 3 --- var/spack/repos/builtin/packages/apple-libunwind/package.py | 3 ++- 81 files changed, 34 insertions(+), 238 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin.mock/packages/a/package.py b/var/spack/repos/builtin.mock/packages/a/package.py index 3eae25366a..04e69dcd91 100644 --- a/var/spack/repos/builtin.mock/packages/a/package.py +++ b/var/spack/repos/builtin.mock/packages/a/package.py @@ -49,4 +49,6 @@ class A(AutotoolsPackage): pass def install(self, spec, prefix): - pass + # sanity_check_prefix requires something in the install directory + # Test requires overriding the one provided by `AutotoolsPackage` + mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin.mock/packages/b/package.py b/var/spack/repos/builtin.mock/packages/b/package.py index 5fabc274d2..0dd6556e82 100644 --- a/var/spack/repos/builtin.mock/packages/b/package.py +++ b/var/spack/repos/builtin.mock/packages/b/package.py @@ -13,6 +13,3 @@ class B(Package): url = "http://www.example.com/b-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/boost/package.py b/var/spack/repos/builtin.mock/packages/boost/package.py index f946191f47..6d2cea3da9 100644 --- a/var/spack/repos/builtin.mock/packages/boost/package.py +++ b/var/spack/repos/builtin.mock/packages/boost/package.py @@ -59,6 +59,3 @@ class Boost(Package): description="Build the Boost Graph library") variant('taggedlayout', default=False, description="Augment library names with build options") - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/c/package.py b/var/spack/repos/builtin.mock/packages/c/package.py index 9942a297eb..835f9d408e 100644 --- a/var/spack/repos/builtin.mock/packages/c/package.py +++ b/var/spack/repos/builtin.mock/packages/c/package.py @@ -13,6 +13,3 @@ class C(Package): url = "http://www.example.com/c-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py b/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py index 8fa6c67d6e..3c0f120085 100644 --- a/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py +++ b/var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py @@ -17,6 +17,3 @@ class ConflictingDependent(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dependency-install@:1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py index 291fd887a6..2246bf0fce 100644 --- a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py @@ -25,6 +25,3 @@ X Y # single patch file in repo depends_on('patch', patches='mid1.patch') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py index fa53466440..9638872a11 100644 --- a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py @@ -28,6 +28,3 @@ X Y patch('http://example.com/urlpatch.patch', sha256='mid21234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234'), # noqa: E501 ]) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py index c966045952..fb86fa3ad3 100644 --- a/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py +++ b/var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py @@ -27,6 +27,3 @@ X Y depends_on('patch', patches='top.patch') depends_on('dep-diamond-patch-mid1') depends_on('dep-diamond-patch-mid2') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/develop-test/package.py b/var/spack/repos/builtin.mock/packages/develop-test/package.py index 4a2fde701e..5c8820756d 100644 --- a/var/spack/repos/builtin.mock/packages/develop-test/package.py +++ b/var/spack/repos/builtin.mock/packages/develop-test/package.py @@ -13,6 +13,3 @@ class DevelopTest(Package): version('develop', git='https://github.com/dummy/repo.git') version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/develop-test2/package.py b/var/spack/repos/builtin.mock/packages/develop-test2/package.py index 464219f603..b3a808206d 100644 --- a/var/spack/repos/builtin.mock/packages/develop-test2/package.py +++ b/var/spack/repos/builtin.mock/packages/develop-test2/package.py @@ -13,6 +13,3 @@ class DevelopTest2(Package): version('0.2.15.develop', git='https://github.com/dummy/repo.git') version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py index 4db94c66c2..940ecde224 100644 --- a/var/spack/repos/builtin.mock/packages/direct-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/direct-mpich/package.py @@ -13,6 +13,3 @@ class DirectMpich(Package): version('1.0', 'foobarbaz') depends_on('mpich') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py index 85f661a485..4ad109a272 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py @@ -12,6 +12,3 @@ class DtDiamondBottom(Package): url = "http://www.example.com/dt-diamond-bottom-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py index d0ed4efaeb..9e3710c210 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py @@ -14,6 +14,3 @@ class DtDiamondLeft(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dt-diamond-bottom', type='build') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py index c7842ead47..4fd5fa733c 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py @@ -14,6 +14,3 @@ class DtDiamondRight(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dt-diamond-bottom', type=('build', 'link', 'run')) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py index 9a441a953b..90afdd2400 100644 --- a/var/spack/repos/builtin.mock/packages/dt-diamond/package.py +++ b/var/spack/repos/builtin.mock/packages/dt-diamond/package.py @@ -15,6 +15,3 @@ class DtDiamond(Package): depends_on('dt-diamond-left') depends_on('dt-diamond-right') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py index 07e86bb3e0..f1921ad43f 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild1/package.py @@ -18,6 +18,3 @@ class Dtbuild1(Package): depends_on('dtbuild2', type='build') depends_on('dtlink2') depends_on('dtrun2', type='run') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py index 752a34c900..cf783ccd9b 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild2/package.py @@ -13,6 +13,3 @@ class Dtbuild2(Package): url = "http://www.example.com/dtbuild2-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py index 23fd06bcb9..1b8f89a2da 100644 --- a/var/spack/repos/builtin.mock/packages/dtbuild3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtbuild3/package.py @@ -13,6 +13,3 @@ class Dtbuild3(Package): url = "http://www.example.com/dtbuild3-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink1/package.py b/var/spack/repos/builtin.mock/packages/dtlink1/package.py index 0235591381..725d3b2061 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink1/package.py @@ -15,6 +15,3 @@ class Dtlink1(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dtlink3') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink2/package.py b/var/spack/repos/builtin.mock/packages/dtlink2/package.py index 1f629d3d6b..b4d871a841 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink2/package.py @@ -13,6 +13,3 @@ class Dtlink2(Package): url = "http://www.example.com/dtlink2-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink3/package.py b/var/spack/repos/builtin.mock/packages/dtlink3/package.py index dc0d2532ec..732b68f867 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink3/package.py @@ -16,6 +16,3 @@ class Dtlink3(Package): depends_on('dtbuild2', type='build') depends_on('dtlink4') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink4/package.py b/var/spack/repos/builtin.mock/packages/dtlink4/package.py index 2ec4ddd7e2..d7ac8115ad 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink4/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink4/package.py @@ -13,6 +13,3 @@ class Dtlink4(Package): url = "http://www.example.com/dtlink4-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtlink5/package.py b/var/spack/repos/builtin.mock/packages/dtlink5/package.py index cb191f32f0..faf429bfc1 100644 --- a/var/spack/repos/builtin.mock/packages/dtlink5/package.py +++ b/var/spack/repos/builtin.mock/packages/dtlink5/package.py @@ -13,6 +13,3 @@ class Dtlink5(Package): url = "http://www.example.com/dtlink5-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtrun1/package.py b/var/spack/repos/builtin.mock/packages/dtrun1/package.py index fcc26022ca..617d9f3b8a 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun1/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun1/package.py @@ -16,6 +16,3 @@ class Dtrun1(Package): depends_on('dtlink5') depends_on('dtrun3', type='run') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtrun2/package.py b/var/spack/repos/builtin.mock/packages/dtrun2/package.py index f455af1bb7..1ba63a2822 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun2/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun2/package.py @@ -13,6 +13,3 @@ class Dtrun2(Package): url = "http://www.example.com/dtrun2-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtrun3/package.py b/var/spack/repos/builtin.mock/packages/dtrun3/package.py index c884ef6b46..c1caea1dde 100644 --- a/var/spack/repos/builtin.mock/packages/dtrun3/package.py +++ b/var/spack/repos/builtin.mock/packages/dtrun3/package.py @@ -15,6 +15,3 @@ class Dtrun3(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dtbuild3', type='build') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dttop/package.py b/var/spack/repos/builtin.mock/packages/dttop/package.py index 225af9fee4..120e70e40c 100644 --- a/var/spack/repos/builtin.mock/packages/dttop/package.py +++ b/var/spack/repos/builtin.mock/packages/dttop/package.py @@ -17,6 +17,3 @@ class Dttop(Package): depends_on('dtbuild1', type='build') depends_on('dtlink1') depends_on('dtrun1', type='run') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/dtuse/package.py b/var/spack/repos/builtin.mock/packages/dtuse/package.py index 083cb1ba76..0a5836d0f8 100644 --- a/var/spack/repos/builtin.mock/packages/dtuse/package.py +++ b/var/spack/repos/builtin.mock/packages/dtuse/package.py @@ -15,6 +15,3 @@ class Dtuse(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('dttop') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/e/package.py b/var/spack/repos/builtin.mock/packages/e/package.py index c85c78e137..d52db11abe 100644 --- a/var/spack/repos/builtin.mock/packages/e/package.py +++ b/var/spack/repos/builtin.mock/packages/e/package.py @@ -13,6 +13,3 @@ class E(Package): url = "http://www.example.com/e-1.0.tar.gz" version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externalmodule/package.py b/var/spack/repos/builtin.mock/packages/externalmodule/package.py index f871762c7e..675edbc23d 100644 --- a/var/spack/repos/builtin.mock/packages/externalmodule/package.py +++ b/var/spack/repos/builtin.mock/packages/externalmodule/package.py @@ -13,6 +13,3 @@ class Externalmodule(Package): version('1.0', '1234567890abcdef1234567890abcdef') depends_on('externalprereq') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externalprereq/package.py b/var/spack/repos/builtin.mock/packages/externalprereq/package.py index 866df9f838..595bc8b3b7 100644 --- a/var/spack/repos/builtin.mock/packages/externalprereq/package.py +++ b/var/spack/repos/builtin.mock/packages/externalprereq/package.py @@ -11,6 +11,3 @@ class Externalprereq(Package): url = "http://somewhere.com/prereq-1.0.tar.gz" version('1.4', 'f1234567890abcdef1234567890abcde') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externaltool/package.py b/var/spack/repos/builtin.mock/packages/externaltool/package.py index 2d6caef35d..4677dfeda9 100644 --- a/var/spack/repos/builtin.mock/packages/externaltool/package.py +++ b/var/spack/repos/builtin.mock/packages/externaltool/package.py @@ -14,6 +14,3 @@ class Externaltool(Package): version('0.9', '1234567890abcdef1234567890abcdef') depends_on('externalprereq') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py index e16997dbd8..aace40767d 100644 --- a/var/spack/repos/builtin.mock/packages/externalvirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/externalvirtual/package.py @@ -16,6 +16,3 @@ class Externalvirtual(Package): version('2.2', '4567890abcdef1234567890abcdef123') provides('stuff', when='@1.0:') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/fake/package.py b/var/spack/repos/builtin.mock/packages/fake/package.py index e022af1766..16ff3c6dd6 100644 --- a/var/spack/repos/builtin.mock/packages/fake/package.py +++ b/var/spack/repos/builtin.mock/packages/fake/package.py @@ -11,6 +11,3 @@ class Fake(Package): url = "http://www.fake-spack-example.org/downloads/fake-1.0.tar.gz" version('1.0', 'foobarbaz') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/flake8/package.py b/var/spack/repos/builtin.mock/packages/flake8/package.py index 2de7bd8e12..c548ca69b2 100644 --- a/var/spack/repos/builtin.mock/packages/flake8/package.py +++ b/var/spack/repos/builtin.mock/packages/flake8/package.py @@ -58,7 +58,11 @@ class Flake8(Package): if 'really-long-if-statement' != 'that-goes-over-the-line-length-limit-and-requires-noqa': # noqa pass + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + # '@when' decorated functions are exempt from redefinition errors @when('@2.0') def install(self, spec, prefix): - pass + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py index 72e7b1fe89..e9acff3c6d 100644 --- a/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py @@ -15,6 +15,3 @@ class GitSvnTopLevel(Package): svn = 'https://example.com/some/svn/repo' version('2.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-test/package.py b/var/spack/repos/builtin.mock/packages/git-test/package.py index a5aa428664..8430966282 100644 --- a/var/spack/repos/builtin.mock/packages/git-test/package.py +++ b/var/spack/repos/builtin.mock/packages/git-test/package.py @@ -11,6 +11,3 @@ class GitTest(Package): homepage = "http://www.git-fetch-example.com" version('git', git='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-top-level/package.py index 1e511628f3..ba80263224 100644 --- a/var/spack/repos/builtin.mock/packages/git-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-top-level/package.py @@ -12,6 +12,3 @@ class GitTopLevel(Package): git = 'https://example.com/some/git/repo' version('1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py index e1c7476e3b..b998c0f014 100644 --- a/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py @@ -16,6 +16,3 @@ class GitUrlSvnTopLevel(Package): svn = 'https://example.com/some/svn/repo' version('2.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py b/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py index 2eacba15b7..d93ead7bee 100644 --- a/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/git-url-top-level/package.py @@ -38,6 +38,3 @@ class GitUrlTopLevel(Package): version('1.2', sha512='abc12', branch='releases/v1.2') version('1.1', md5='abc11', tag='v1.1') version('1.0', 'abc11', tag='abc123') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/hash-test1/package.py b/var/spack/repos/builtin.mock/packages/hash-test1/package.py index db3616145b..c46f2339ba 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test1/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test1/package.py @@ -3,10 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * - import os +from spack import * + class HashTest1(Package): """Used to test package hashing @@ -37,10 +37,16 @@ class HashTest1(Package): print("install 1") os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + @when('@1.5:') def install(self, spec, prefix): os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + @when('@1.5,1.6') def extra_phase(self, spec, prefix): pass diff --git a/var/spack/repos/builtin.mock/packages/hash-test2/package.py b/var/spack/repos/builtin.mock/packages/hash-test2/package.py index 859eb86c95..2358cd66e2 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test2/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test2/package.py @@ -3,10 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * - import os +from spack import * + class HashTest2(Package): """Used to test package hashing @@ -31,3 +31,6 @@ class HashTest2(Package): def install(self, spec, prefix): print("install 1") os.listdir(os.getcwd()) + + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) diff --git a/var/spack/repos/builtin.mock/packages/hash-test3/package.py b/var/spack/repos/builtin.mock/packages/hash-test3/package.py index 7c452c3ba1..e943bd46c7 100644 --- a/var/spack/repos/builtin.mock/packages/hash-test3/package.py +++ b/var/spack/repos/builtin.mock/packages/hash-test3/package.py @@ -3,10 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from spack import * - import os +from spack import * + class HashTest3(Package): """Used to test package hashing @@ -32,10 +32,16 @@ class HashTest3(Package): print("install 1") os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + @when('@1.5:') def install(self, spec, prefix): os.listdir(os.getcwd()) + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.bin) + for _version_constraint in ['@1.5', '@1.6']: @when(_version_constraint) def extra_phase(self, spec, prefix): diff --git a/var/spack/repos/builtin.mock/packages/hg-test/package.py b/var/spack/repos/builtin.mock/packages/hg-test/package.py index ede967ce0c..67970d4272 100644 --- a/var/spack/repos/builtin.mock/packages/hg-test/package.py +++ b/var/spack/repos/builtin.mock/packages/hg-test/package.py @@ -11,6 +11,3 @@ class HgTest(Package): homepage = "http://www.hg-fetch-example.com" version('hg', hg='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/hg-top-level/package.py b/var/spack/repos/builtin.mock/packages/hg-top-level/package.py index 6f402c801b..0f23972592 100644 --- a/var/spack/repos/builtin.mock/packages/hg-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/hg-top-level/package.py @@ -12,6 +12,3 @@ class HgTopLevel(Package): hg = 'https://example.com/some/hg/repo' version('1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/hypre/package.py b/var/spack/repos/builtin.mock/packages/hypre/package.py index 27c641017a..bf48afd971 100644 --- a/var/spack/repos/builtin.mock/packages/hypre/package.py +++ b/var/spack/repos/builtin.mock/packages/hypre/package.py @@ -16,6 +16,3 @@ class Hypre(Package): depends_on('lapack') depends_on('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py index 5a06f77dd3..34bf4c64a0 100644 --- a/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py +++ b/var/spack/repos/builtin.mock/packages/indirect-mpich/package.py @@ -18,6 +18,3 @@ class IndirectMpich(Package): depends_on('mpi') depends_on('direct-mpich') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/maintainers-1/package.py b/var/spack/repos/builtin.mock/packages/maintainers-1/package.py index 7942ff3de7..4c223548dd 100644 --- a/var/spack/repos/builtin.mock/packages/maintainers-1/package.py +++ b/var/spack/repos/builtin.mock/packages/maintainers-1/package.py @@ -15,6 +15,3 @@ class Maintainers1(Package): maintainers = ['user1', 'user2'] version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/maintainers-2/package.py b/var/spack/repos/builtin.mock/packages/maintainers-2/package.py index d16f9e30a6..8121461858 100644 --- a/var/spack/repos/builtin.mock/packages/maintainers-2/package.py +++ b/var/spack/repos/builtin.mock/packages/maintainers-2/package.py @@ -15,6 +15,3 @@ class Maintainers2(Package): maintainers = ['user2', 'user3'] version('1.0', '0123456789abcdef0123456789abcdef') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/mixedversions/package.py b/var/spack/repos/builtin.mock/packages/mixedversions/package.py index 446278403b..e0c61ed089 100644 --- a/var/spack/repos/builtin.mock/packages/mixedversions/package.py +++ b/var/spack/repos/builtin.mock/packages/mixedversions/package.py @@ -12,6 +12,3 @@ class Mixedversions(Package): version('2.0.1', 'hashc') version('2.0', 'hashb') version('1.0.1', 'hasha') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py index bb65705d1c..3b4e2ca9d0 100644 --- a/var/spack/repos/builtin.mock/packages/module-path-separator/package.py +++ b/var/spack/repos/builtin.mock/packages/module-path-separator/package.py @@ -12,9 +12,6 @@ class ModulePathSeparator(Package): version(1.0, 'foobarbaz') - def install(self, spec, prefix): - pass - def setup_environment(self, senv, renv): renv.append_path("COLON", "foo") renv.prepend_path("COLON", "foo") diff --git a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py index 93babae83d..69995b7520 100644 --- a/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py +++ b/var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py @@ -27,6 +27,3 @@ class MultiProviderMpi(Package): provides('mpi@3.0', when='@1.10.0') provides('mpi@3.0', when='@1.8.8') provides('mpi@2.2', when='@1.6.5') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py b/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py index 8a3aeb0099..4343b03fe5 100644 --- a/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py +++ b/var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py @@ -15,6 +15,3 @@ class MultimoduleInheritance(si.BaseWithDirectives): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('openblas', when='+openblas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py index 3e3732aa84..22d0ea1d97 100644 --- a/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py +++ b/var/spack/repos/builtin.mock/packages/multivalue_variant/package.py @@ -33,6 +33,3 @@ class MultivalueVariant(Package): depends_on('callpath') depends_on('a') depends_on('a@1.0', when='fee=barbaz') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py index c4e8231d8f..4a759b6145 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-blas/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-blas/package.py @@ -13,6 +13,3 @@ class NetlibBlas(Package): version('3.5.0', 'b1d3e3e425b2e44a06760ff173104bdf') provides('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py index d1a461d32c..b9c69bf66c 100644 --- a/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/netlib-lapack/package.py @@ -14,6 +14,3 @@ class NetlibLapack(Package): provides('lapack') depends_on('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/nosource-install/package.py b/var/spack/repos/builtin.mock/packages/nosource-install/package.py index 74e95e75b0..dc4e2755db 100644 --- a/var/spack/repos/builtin.mock/packages/nosource-install/package.py +++ b/var/spack/repos/builtin.mock/packages/nosource-install/package.py @@ -3,10 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -import os from spack import * -from llnl.util.filesystem import touch class NosourceInstall(BundlePackage): @@ -24,8 +21,8 @@ class NosourceInstall(BundlePackage): # The install method must also be present. def install(self, spec, prefix): - touch(os.path.join(self.prefix, 'install.txt')) + touch(join_path(self.prefix, 'install.txt')) @run_after('install') def post_install(self): - touch(os.path.join(self.prefix, 'post-install.txt')) + touch(join_path(self.prefix, 'post-install.txt')) diff --git a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py index 7bfea42eff..997049af56 100644 --- a/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py @@ -15,6 +15,3 @@ class OpenblasWithLapack(Package): provides('lapack') provides('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/openblas/package.py b/var/spack/repos/builtin.mock/packages/openblas/package.py index 6947e3156f..ff4bda9a27 100644 --- a/var/spack/repos/builtin.mock/packages/openblas/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas/package.py @@ -14,6 +14,3 @@ class Openblas(Package): version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9') provides('blas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py index 585840a5b3..64437ae337 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py @@ -19,6 +19,3 @@ class OptionalDepTest2(Package): depends_on('optional-dep-test', when='+odt') depends_on('optional-dep-test+mpi', when='+mpi') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py index 3529e9df5f..1261a117a9 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py @@ -18,6 +18,3 @@ class OptionalDepTest3(Package): depends_on('a', when='~var') depends_on('b', when='+var') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py index 363512c072..9a39e1a624 100644 --- a/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py +++ b/var/spack/repos/builtin.mock/packages/optional-dep-test/package.py @@ -30,6 +30,3 @@ class OptionalDepTest(Package): depends_on('mpi', when='^g') depends_on('mpi', when='+mpi') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/othervirtual/package.py b/var/spack/repos/builtin.mock/packages/othervirtual/package.py index d4cd1f4a2c..c2c091af5c 100644 --- a/var/spack/repos/builtin.mock/packages/othervirtual/package.py +++ b/var/spack/repos/builtin.mock/packages/othervirtual/package.py @@ -13,6 +13,3 @@ class Othervirtual(Package): version('1.0', '67890abcdef1234567890abcdef12345') provides('stuff') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/override-context-templates/package.py b/var/spack/repos/builtin.mock/packages/override-context-templates/package.py index d67eabdeb8..08f4d08828 100644 --- a/var/spack/repos/builtin.mock/packages/override-context-templates/package.py +++ b/var/spack/repos/builtin.mock/packages/override-context-templates/package.py @@ -18,6 +18,3 @@ class OverrideContextTemplates(Package): tcl_template = 'extension.tcl' tcl_context = {'sentence': "sentence from package"} - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/override-module-templates/package.py b/var/spack/repos/builtin.mock/packages/override-module-templates/package.py index 90061399e8..2ed7d0e1e0 100644 --- a/var/spack/repos/builtin.mock/packages/override-module-templates/package.py +++ b/var/spack/repos/builtin.mock/packages/override-module-templates/package.py @@ -14,6 +14,3 @@ class OverrideModuleTemplates(Package): tcl_template = 'override.txt' lmod_template = 'override.txt' - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py b/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py index aff2bf9722..cd5c54ad5f 100644 --- a/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py +++ b/var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py @@ -15,6 +15,3 @@ class PatchADependency(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('libelf', patches=patch('libelf.patch')) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py b/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py index 9d190c7658..3cda48479e 100644 --- a/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py +++ b/var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py @@ -36,6 +36,3 @@ class PatchSeveralDependencies(Package): archive_sha256='abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd', sha256='1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd') ]) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/patch/package.py b/var/spack/repos/builtin.mock/packages/patch/package.py index 8219a4fbb6..d0283cc33c 100644 --- a/var/spack/repos/builtin.mock/packages/patch/package.py +++ b/var/spack/repos/builtin.mock/packages/patch/package.py @@ -21,6 +21,3 @@ class Patch(Package): patch('bar.patch', when='@2:') patch('baz.patch') patch('biz.patch', when='@1.0.1:1.0.2') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/perl/package.py b/var/spack/repos/builtin.mock/packages/perl/package.py index b9f75270bf..2f495c1a97 100644 --- a/var/spack/repos/builtin.mock/packages/perl/package.py +++ b/var/spack/repos/builtin.mock/packages/perl/package.py @@ -13,6 +13,3 @@ class Perl(Package): extendable = True version('0.0.0', 'hash') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/preferred-test/package.py b/var/spack/repos/builtin.mock/packages/preferred-test/package.py index 09e5aa034a..55121c76a6 100644 --- a/var/spack/repos/builtin.mock/packages/preferred-test/package.py +++ b/var/spack/repos/builtin.mock/packages/preferred-test/package.py @@ -15,6 +15,3 @@ class PreferredTest(Package): version('0.2.16', 'b1190f3d3471685f17cfd1ec1d252ac9') version('0.2.15', 'b1190f3d3471685f17cfd1ec1d252ac9', preferred=True) version('0.2.14', 'b1190f3d3471685f17cfd1ec1d252ac9') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/python/package.py b/var/spack/repos/builtin.mock/packages/python/package.py index b15a9fd38a..e846572121 100644 --- a/var/spack/repos/builtin.mock/packages/python/package.py +++ b/var/spack/repos/builtin.mock/packages/python/package.py @@ -19,6 +19,3 @@ class Python(Package): version('2.7.10', 'd7547558fd673bd9d38e2108c6b42521') version('2.7.9', '5eebcaa0030dc4061156d3429657fb83') version('2.7.8', 'd4bca0159acb0b44a781292b5231936f') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py b/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py index a6f29f5ed5..8d65570899 100644 --- a/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py +++ b/var/spack/repos/builtin.mock/packages/simple-inheritance/package.py @@ -30,6 +30,3 @@ class SimpleInheritance(BaseWithDirectives): depends_on('openblas', when='+openblas') provides('lapack', when='+openblas') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py index 640594f0ed..5507fbdc21 100644 --- a/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py +++ b/var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py @@ -15,6 +15,3 @@ class SinglevalueVariantDependent(Package): version('1.0', '0123456789abcdef0123456789abcdef') depends_on('multivalue_variant fee=baz') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/svn-test/package.py b/var/spack/repos/builtin.mock/packages/svn-test/package.py index c982bb0649..dec6d4a413 100644 --- a/var/spack/repos/builtin.mock/packages/svn-test/package.py +++ b/var/spack/repos/builtin.mock/packages/svn-test/package.py @@ -11,6 +11,3 @@ class SvnTest(Package): url = "http://www.example.com/svn-test-1.0.tar.gz" version('svn', svn='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/svn-top-level/package.py b/var/spack/repos/builtin.mock/packages/svn-top-level/package.py index 83588e97b3..0da7f9656d 100644 --- a/var/spack/repos/builtin.mock/packages/svn-top-level/package.py +++ b/var/spack/repos/builtin.mock/packages/svn-top-level/package.py @@ -11,6 +11,3 @@ class SvnTopLevel(Package): svn = 'https://example.com/some/svn/repo' version('1.0') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/url-list-test/package.py b/var/spack/repos/builtin.mock/packages/url-list-test/package.py index 4a9bd1fc56..02e1f4747f 100644 --- a/var/spack/repos/builtin.mock/packages/url-list-test/package.py +++ b/var/spack/repos/builtin.mock/packages/url-list-test/package.py @@ -5,7 +5,6 @@ from spack import * -import os import spack.paths @@ -13,7 +12,7 @@ class UrlListTest(Package): """Mock package with url_list.""" homepage = "http://www.url-list-example.com" - web_data_path = os.path.join(spack.paths.test_path, 'data', 'web') + web_data_path = join_path(spack.paths.test_path, 'data', 'web') url = 'file://' + web_data_path + '/foo-0.0.0.tar.gz' list_url = 'file://' + web_data_path + '/index.html' list_depth = 3 @@ -25,6 +24,3 @@ class UrlListTest(Package): version('2.0.0b2', 'abc200b2') version('3.0a1', 'abc30a1') version('4.5-rc5', 'abc45rc5') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/url-test/package.py b/var/spack/repos/builtin.mock/packages/url-test/package.py index 6a7d2b9416..1deee5515d 100644 --- a/var/spack/repos/builtin.mock/packages/url-test/package.py +++ b/var/spack/repos/builtin.mock/packages/url-test/package.py @@ -11,6 +11,3 @@ class UrlTest(Package): homepage = "http://www.url-fetch-example.com" version('test', url='to-be-filled-in-by-test') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/when-directives-false/package.py b/var/spack/repos/builtin.mock/packages/when-directives-false/package.py index 105caeccdf..f701e753de 100644 --- a/var/spack/repos/builtin.mock/packages/when-directives-false/package.py +++ b/var/spack/repos/builtin.mock/packages/when-directives-false/package.py @@ -23,6 +23,3 @@ class WhenDirectivesFalse(Package): resource(url="http://www.example.com/example-1.0-resource.tar.gz", md5='0123456789abcdef0123456789abcdef', when=False) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/when-directives-true/package.py b/var/spack/repos/builtin.mock/packages/when-directives-true/package.py index 50dd5a00f4..6f8f7ed7c1 100644 --- a/var/spack/repos/builtin.mock/packages/when-directives-true/package.py +++ b/var/spack/repos/builtin.mock/packages/when-directives-true/package.py @@ -23,6 +23,3 @@ class WhenDirectivesTrue(Package): resource(url="http://www.example.com/example-1.0-resource.tar.gz", md5='0123456789abcdef0123456789abcdef', when=True) - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin.mock/packages/zmpi/package.py b/var/spack/repos/builtin.mock/packages/zmpi/package.py index f0060b319e..c9caa9a20f 100644 --- a/var/spack/repos/builtin.mock/packages/zmpi/package.py +++ b/var/spack/repos/builtin.mock/packages/zmpi/package.py @@ -16,6 +16,3 @@ class Zmpi(Package): provides('mpi@:10.0') depends_on('fake') - - def install(self, spec, prefix): - pass diff --git a/var/spack/repos/builtin/packages/apple-libunwind/package.py b/var/spack/repos/builtin/packages/apple-libunwind/package.py index 0b7d8cc1cb..9d1db5cca8 100644 --- a/var/spack/repos/builtin/packages/apple-libunwind/package.py +++ b/var/spack/repos/builtin/packages/apple-libunwind/package.py @@ -43,7 +43,8 @@ class AppleLibunwind(Package): raise InstallError(msg) def install(self, spec, prefix): - pass + # sanity_check_prefix requires something in the install directory + mkdirp(prefix.lib) @property def libs(self): -- cgit v1.2.3-70-g09d2