summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Becker <becker33@llnl.gov>2020-03-10 10:35:20 -0700
committerGitHub <noreply@github.com>2020-03-10 10:35:20 -0700
commitbbbee6700bfea23ac36c0715db72e426c8995f26 (patch)
tree57b5fd306acf897dfcd4faf28c89b63ad7be565d
parent577860761b1425c231ed6091d35d2047e5a2a34f (diff)
downloadspack-bbbee6700bfea23ac36c0715db72e426c8995f26.tar.gz
spack-bbbee6700bfea23ac36c0715db72e426c8995f26.tar.bz2
spack-bbbee6700bfea23ac36c0715db72e426c8995f26.tar.xz
spack-bbbee6700bfea23ac36c0715db72e426c8995f26.zip
bugfix: fix install_missing_compilers option bug from v0.14.0 (#15416)
* bugfix: ensure bootstrapped compilers built before packages using the compiler
-rw-r--r--lib/spack/spack/installer.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py
index bd38d11ea2..f226429f6a 100644
--- a/lib/spack/spack/installer.py
+++ b/lib/spack/spack/installer.py
@@ -182,6 +182,9 @@ def _packages_needed_to_bootstrap_compiler(pkg):
# concrete CompilerSpec has less info than concrete Spec
# concretize as Spec to add that information
dep.concretize()
+ # mark compiler as depended-on by the package that uses it
+ dep._dependents[pkg.name] = spack.spec.DependencySpec(
+ pkg.spec, dep, ('build',))
packages = [(s.package, False) for
s in dep.traverse(order='post', root=False)]
packages.append((dep.package, True))
@@ -1608,6 +1611,21 @@ class BuildTask(object):
self.spec.dependencies() if
package_id(d.package) != self.pkg_id)
+ # Handle bootstrapped compiler
+ #
+ # The bootstrapped compiler is not a dependency in the spec, but it is
+ # a dependency of the build task. Here we add it to self.dependencies
+ compiler_spec = self.spec.compiler
+ arch_spec = self.spec.architecture
+ if not spack.compilers.compilers_for_spec(compiler_spec,
+ arch_spec=arch_spec):
+ # The compiler is in the queue, identify it as dependency
+ dep = spack.compilers.pkg_spec_for_compiler(compiler_spec)
+ dep.architecture = arch_spec
+ dep.concretize()
+ dep_id = package_id(dep.package)
+ self.dependencies.add(dep_id)
+
# List of uninstalled dependencies, which is used to establish
# the priority of the build task.
#