summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorTamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>2020-02-19 00:04:22 -0800
committerGitHub <noreply@github.com>2020-02-19 00:04:22 -0800
commitf2aca86502eded1500489cd13799d8826e6fc9d2 (patch)
treeb6420e0db1471646d0f2cb94d138d1056478fd50 /var
parent2f4881d582181b275d13ad2098a3c89b563e9f97 (diff)
downloadspack-f2aca86502eded1500489cd13799d8826e6fc9d2.tar.gz
spack-f2aca86502eded1500489cd13799d8826e6fc9d2.tar.bz2
spack-f2aca86502eded1500489cd13799d8826e6fc9d2.tar.xz
spack-f2aca86502eded1500489cd13799d8826e6fc9d2.zip
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 <spec>` 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
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin.mock/packages/a/package.py4
-rw-r--r--var/spack/repos/builtin.mock/packages/b/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/boost/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/c/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/conflicting-dependent/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid1/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dep-diamond-patch-mid2/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dep-diamond-patch-top/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/develop-test/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/develop-test2/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/direct-mpich/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dt-diamond-bottom/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dt-diamond-left/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dt-diamond-right/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dt-diamond/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtbuild1/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtbuild2/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtbuild3/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtlink1/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtlink2/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtlink3/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtlink4/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtlink5/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtrun1/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtrun2/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtrun3/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dttop/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/dtuse/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/e/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/externalmodule/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/externalprereq/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/externaltool/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/externalvirtual/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/fake/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/flake8/package.py6
-rw-r--r--var/spack/repos/builtin.mock/packages/git-svn-top-level/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/git-test/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/git-top-level/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/git-url-svn-top-level/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/git-url-top-level/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/hash-test1/package.py10
-rw-r--r--var/spack/repos/builtin.mock/packages/hash-test2/package.py7
-rw-r--r--var/spack/repos/builtin.mock/packages/hash-test3/package.py10
-rw-r--r--var/spack/repos/builtin.mock/packages/hg-test/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/hg-top-level/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/hypre/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/indirect-mpich/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/maintainers-1/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/maintainers-2/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/mixedversions/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/module-path-separator/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/multi-provider-mpi/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/multimodule-inheritance/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/multivalue_variant/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/netlib-blas/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/netlib-lapack/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/nosource-install/package.py7
-rw-r--r--var/spack/repos/builtin.mock/packages/openblas-with-lapack/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/openblas/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/optional-dep-test-2/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/optional-dep-test-3/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/optional-dep-test/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/othervirtual/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/override-context-templates/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/override-module-templates/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/patch-a-dependency/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/patch-several-dependencies/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/patch/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/perl/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/preferred-test/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/python/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/simple-inheritance/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/singlevalue-variant-dependent/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/svn-test/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/svn-top-level/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/url-list-test/package.py6
-rw-r--r--var/spack/repos/builtin.mock/packages/url-test/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/when-directives-false/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/when-directives-true/package.py3
-rw-r--r--var/spack/repos/builtin.mock/packages/zmpi/package.py3
-rw-r--r--var/spack/repos/builtin/packages/apple-libunwind/package.py3
81 files changed, 34 insertions, 238 deletions
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):