diff options
author | Greg Becker <becker33@llnl.gov> | 2020-03-10 10:35:20 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-10 10:35:20 -0700 |
commit | bbbee6700bfea23ac36c0715db72e426c8995f26 (patch) | |
tree | 57b5fd306acf897dfcd4faf28c89b63ad7be565d | |
parent | 577860761b1425c231ed6091d35d2047e5a2a34f (diff) | |
download | spack-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.py | 18 |
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. # |