Compare commits
3 Commits
develop-20
...
bugfix/com
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2b9f54f7ec | ||
![]() |
211808f9bc | ||
![]() |
84ba21ad93 |
@@ -188,6 +188,9 @@ def _do_fake_install(pkg):
|
|||||||
dump_packages(pkg.spec, packages_dir)
|
dump_packages(pkg.spec, packages_dir)
|
||||||
|
|
||||||
|
|
||||||
|
_compiler_concretization_cache = {}
|
||||||
|
|
||||||
|
|
||||||
def _packages_needed_to_bootstrap_compiler(compiler, architecture, pkgs):
|
def _packages_needed_to_bootstrap_compiler(compiler, architecture, pkgs):
|
||||||
"""
|
"""
|
||||||
Return a list of packages required to bootstrap `pkg`s compiler
|
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('os=%s' % str(architecture.os))
|
||||||
dep.constrain('target=%s:' %
|
dep.constrain('target=%s:' %
|
||||||
architecture.target.microarchitecture.family.name)
|
architecture.target.microarchitecture.family.name)
|
||||||
|
|
||||||
# concrete CompilerSpec has less info than concrete Spec
|
# concrete CompilerSpec has less info than concrete Spec
|
||||||
# concretize as Spec to add that information
|
# 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
|
# mark compiler as depended-on by the packages that use it
|
||||||
for pkg in pkgs:
|
for pkg in pkgs:
|
||||||
dep._dependents.add(
|
concrete_dep._dependents.add(
|
||||||
spack.spec.DependencySpec(pkg.spec, dep, ('build',))
|
spack.spec.DependencySpec(pkg.spec, concrete_dep, ('build',))
|
||||||
)
|
)
|
||||||
packages = [(s.package, False) for
|
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
|
return packages
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user