Compare commits

...

3 Commits

Author SHA1 Message Date
Gregory Becker
2b9f54f7ec diagnostics 2022-07-15 10:21:47 -07:00
Gregory Becker
211808f9bc cache specs by str 2022-07-14 10:48:52 -07:00
Gregory Becker
84ba21ad93 cache compiler concretizations 2022-07-13 17:46:31 -07:00

View File

@@ -188,6 +188,9 @@ def _do_fake_install(pkg):
dump_packages(pkg.spec, packages_dir)
_compiler_concretization_cache = {}
def _packages_needed_to_bootstrap_compiler(compiler, architecture, pkgs):
"""
Return a list of packages required to bootstrap `pkg`s compiler
@@ -222,18 +225,31 @@ def _packages_needed_to_bootstrap_compiler(compiler, architecture, pkgs):
dep.constrain('os=%s' % str(architecture.os))
dep.constrain('target=%s:' %
architecture.target.microarchitecture.family.name)
# concrete CompilerSpec has less info than concrete Spec
# concretize as Spec to add that information
dep.concretize()
# cache concretizations within an instantiation of Spack
from time import gmtime, strftime
print(strftime("%Y-%m-%d %H:%M:%S", gmtime()))
global _compiler_concretization_cache
depstr = str(dep)
if depstr not in _compiler_concretization_cache:
print("Cache miss")
_compiler_concretization_cache[depstr] = dep.concretized()
else:
print("Cache hit")
print(_compiler_concretization_cache.keys())
concrete_dep = _compiler_concretization_cache[depstr]
print(strftime("%Y-%m-%d %H:%M:%S", gmtime()))
# mark compiler as depended-on by the packages that use it
for pkg in pkgs:
dep._dependents.add(
spack.spec.DependencySpec(pkg.spec, dep, ('build',))
concrete_dep._dependents.add(
spack.spec.DependencySpec(pkg.spec, concrete_dep, ('build',))
)
packages = [(s.package, False) for
s in dep.traverse(order='post', root=False)]
s in concrete_dep.traverse(order='post', root=False)]
packages.append((dep.package, True))
packages.append((concrete_dep.package, True))
return packages