Use bfs in get_spec_filter_list (#36093)
This commit is contained in:
parent
5c48304d07
commit
40019dacd9
1 changed files with 9 additions and 7 deletions
|
@ -38,6 +38,7 @@
|
||||||
import spack.util.spack_yaml as syaml
|
import spack.util.spack_yaml as syaml
|
||||||
import spack.util.url as url_util
|
import spack.util.url as url_util
|
||||||
import spack.util.web as web_util
|
import spack.util.web as web_util
|
||||||
|
from spack import traverse
|
||||||
from spack.error import SpackError
|
from spack.error import SpackError
|
||||||
from spack.reporters import CDash, CDashConfiguration
|
from spack.reporters import CDash, CDashConfiguration
|
||||||
from spack.reporters.cdash import build_stamp as cdash_build_stamp
|
from spack.reporters.cdash import build_stamp as cdash_build_stamp
|
||||||
|
@ -471,15 +472,16 @@ def get_spec_filter_list(env, affected_pkgs, dependent_traverse_depth=None):
|
||||||
tty.debug("All concrete environment specs:")
|
tty.debug("All concrete environment specs:")
|
||||||
for s in all_concrete_specs:
|
for s in all_concrete_specs:
|
||||||
tty.debug(" {0}/{1}".format(s.name, s.dag_hash()[:7]))
|
tty.debug(" {0}/{1}".format(s.name, s.dag_hash()[:7]))
|
||||||
env_matches = [s for s in all_concrete_specs if s.name in frozenset(affected_pkgs)]
|
affected_pkgs = frozenset(affected_pkgs)
|
||||||
|
env_matches = [s for s in all_concrete_specs if s.name in affected_pkgs]
|
||||||
visited = set()
|
visited = set()
|
||||||
dag_hash = lambda s: s.dag_hash()
|
dag_hash = lambda s: s.dag_hash()
|
||||||
for match in env_matches:
|
for depth, parent in traverse.traverse_nodes(
|
||||||
for dep_level, parent in match.traverse(direction="parents", key=dag_hash, depth=True):
|
env_matches, direction="parents", key=dag_hash, depth=True, order="breadth"
|
||||||
if dependent_traverse_depth is None or dep_level <= dependent_traverse_depth:
|
):
|
||||||
affected_specs.update(
|
if dependent_traverse_depth is not None and depth > dependent_traverse_depth:
|
||||||
parent.traverse(direction="children", visited=visited, key=dag_hash)
|
break
|
||||||
)
|
affected_specs.update(parent.traverse(direction="children", visited=visited, key=dag_hash))
|
||||||
return affected_specs
|
return affected_specs
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue