summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew LeGendre <legendre1@llnl.gov>2016-03-11 10:00:00 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2016-03-11 10:04:08 -0800
commit1c7f754e5b8cd7740f3c4a91ee22a0354b40844a (patch)
treef7dddee83473fefd462c79c4228e3d736d685644
parent4574f768ef0c020fdc9f7846417db5615e931a6e (diff)
downloadspack-1c7f754e5b8cd7740f3c4a91ee22a0354b40844a.tar.gz
spack-1c7f754e5b8cd7740f3c4a91ee22a0354b40844a.tar.bz2
spack-1c7f754e5b8cd7740f3c4a91ee22a0354b40844a.tar.xz
spack-1c7f754e5b8cd7740f3c4a91ee22a0354b40844a.zip
Invert and rename the `nobuild` option in package.yaml configs to `buildable`.
-rw-r--r--lib/spack/docs/site_configuration.rst15
-rw-r--r--lib/spack/spack/concretize.py8
-rw-r--r--lib/spack/spack/config.py16
-rw-r--r--lib/spack/spack/test/mock_packages_test.py4
4 files changed, 21 insertions, 22 deletions
diff --git a/lib/spack/docs/site_configuration.rst b/lib/spack/docs/site_configuration.rst
index 7ae541d4a3..3abfa21a9d 100644
--- a/lib/spack/docs/site_configuration.rst
+++ b/lib/spack/docs/site_configuration.rst
@@ -78,8 +78,7 @@ This example lists three installations of OpenMPI, one built with gcc,
one built with gcc and debug information, and another built with Intel.
If Spack is asked to build a package that uses one of these MPIs as a
dependency, it will use the the pre-installed OpenMPI in
-the given directory. This example also specifies that Spack should never
-build its own OpenMPI via the ``nobuild: True`` option.
+the given directory.
Each ``packages.yaml`` begins with a ``packages:`` token, followed
by a list of package names. To specify externals, add a ``paths``
@@ -111,16 +110,16 @@ be:
paths:
openmpi@1.4.3%gcc@4.4.7=chaos_5_x86_64_ib: /opt/openmpi-1.4.3
openmpi@1.4.3%gcc@4.4.7=chaos_5_x86_64_ib+debug: /opt/openmpi-1.4.3-debug
- openmpi@1.6.5%intel@10.1=chaos_5_x86_64_ib: /opt/openmpi-1.6.5-intel
- nobuild: True
+ openmpi@1.6.5%intel@10.1=chaos_5_x86_64_ib: /opt/openmpi-1.6.5-intel
+ buildable: False
-The addition of the ``nobuild`` flag tells Spack that it should never build
+The addition of the ``buildable`` flag tells Spack that it should never build
its own version of OpenMPI, and it will instead always rely on a pre-built
-OpenMPI. Similar to ``paths``, ``nobuild`` is specified as a property under
+OpenMPI. Similar to ``paths``, ``buildable`` is specified as a property under
a package name.
-The ``nobuild`` does not need to be paired with external packages.
-It could also be used alone to forbid packages that may be
+The ``buildable`` does not need to be paired with external packages.
+It could also be used alone to forbid packages that may be
buggy or otherwise undesirable.
diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py
index 2268084e56..8d29a03f93 100644
--- a/lib/spack/spack/concretize.py
+++ b/lib/spack/spack/concretize.py
@@ -69,12 +69,12 @@ class DefaultConcretizer(object):
packages = [spec]
# For each candidate package, if it has externals add those to the candidates
- # if it's a nobuild, then only add the externals.
+ # if it's not buildable, then only add the externals.
candidates = []
all_compilers = spack.compilers.all_compilers()
for pkg in packages:
externals = spec_externals(pkg)
- buildable = not is_spec_nobuild(pkg)
+ buildable = is_spec_buildable(pkg)
if buildable:
candidates.append((pkg, None))
for ext in externals:
@@ -369,8 +369,8 @@ class NoValidVersionError(spack.error.SpackError):
class NoBuildError(spack.error.SpackError):
- """Raised when a package is configured with the nobuild option, but
+ """Raised when a package is configured with the buildable option False, but
no satisfactory external versions can be found"""
def __init__(self, spec):
super(NoBuildError, self).__init__(
- "The spec '%s' is configured as nobuild, and no matching external installs were found" % spec.name)
+ "The spec '%s' is configured as not buildable, and no matching external installs were found" % spec.name)
diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py
index 3a785fe692..a21dd6dbe1 100644
--- a/lib/spack/spack/config.py
+++ b/lib/spack/spack/config.py
@@ -220,9 +220,9 @@ section_schemas = {
'type' : 'array',
'default' : [],
'items' : { 'type' : 'string' } }, #compiler specs
- 'nobuild': {
+ 'buildable': {
'type': 'boolean',
- 'default': False,
+ 'default': True,
},
'providers': {
'type': 'object',
@@ -557,15 +557,15 @@ def spec_externals(spec):
return spec_locations
-def is_spec_nobuild(spec):
- """Return true if the spec pkgspec is configured as nobuild"""
+def is_spec_buildable(spec):
+ """Return true if the spec pkgspec is configured as buildable"""
allpkgs = get_config('packages')
name = spec.name
if not spec.name in allpkgs:
- return False
- if not 'nobuild' in allpkgs[spec.name]:
- return False
- return allpkgs[spec.name]['nobuild']
+ return True
+ if not 'buildable' in allpkgs[spec.name]:
+ return True
+ return allpkgs[spec.name]['buildable']
class ConfigError(SpackError): pass
diff --git a/lib/spack/spack/test/mock_packages_test.py b/lib/spack/spack/test/mock_packages_test.py
index 079cbcc136..6d24a84150 100644
--- a/lib/spack/spack/test/mock_packages_test.py
+++ b/lib/spack/spack/test/mock_packages_test.py
@@ -52,11 +52,11 @@ compilers:
mock_packages_config = """\
packages:
externaltool:
- nobuild: True
+ buildable: False
paths:
externaltool@1.0%gcc@4.5.0: /path/to/external_tool
externalvirtual:
- nobuild: True
+ buildable: False
paths:
externalvirtual@2.0%clang@3.3: /path/to/external_virtual_clang
externalvirtual@1.0%gcc@4.5.0: /path/to/external_virtual_gcc