fix excludes with bcast
This commit is contained in:
parent
c8c025215d
commit
788ad561bd
@ -199,8 +199,15 @@ def _expand_matrix_constraints(matrix_config):
|
|||||||
flat_combo = [constraint for constraint_list in combo for constraint in constraint_list]
|
flat_combo = [constraint for constraint_list in combo for constraint in constraint_list]
|
||||||
flat_combo = [Spec(x) for x in flat_combo]
|
flat_combo = [Spec(x) for x in flat_combo]
|
||||||
|
|
||||||
test_spec = flat_combo[0].copy()
|
# If no broadcast, this is [(,)].
|
||||||
for constraint in flat_combo[1:]:
|
# It will run once, as required, and apply no constraints
|
||||||
|
for broadcast_combo in broadcast_constraints:
|
||||||
|
final_combo = [_apply_broadcast(spec.copy(), broadcast_combo) for spec in flat_combo]
|
||||||
|
|
||||||
|
# Check whether final spec is excluded
|
||||||
|
# requires constructing a spec from constraints
|
||||||
|
test_spec = final_combo[0].copy()
|
||||||
|
for constraint in final_combo[1:]:
|
||||||
test_spec.constrain(constraint)
|
test_spec.constrain(constraint)
|
||||||
|
|
||||||
# Abstract variants don't have normal satisfaction semantics
|
# Abstract variants don't have normal satisfaction semantics
|
||||||
@ -213,14 +220,12 @@ def _expand_matrix_constraints(matrix_config):
|
|||||||
spack.variant.substitute_abstract_variants(test_spec)
|
spack.variant.substitute_abstract_variants(test_spec)
|
||||||
except spack.variant.UnknownVariantError:
|
except spack.variant.UnknownVariantError:
|
||||||
pass
|
pass
|
||||||
if any(test_spec.satisfies(x) for x in excludes):
|
|
||||||
|
# actual exclusion check is here
|
||||||
|
if any(test_spec.satisfies(e) for e in excludes):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# If no broadcast, this is [(,)].
|
# Apply sigil if applicable
|
||||||
# It will run once, as required, and apply no constraints
|
|
||||||
for broadcast_combo in broadcast_constraints:
|
|
||||||
final_combo = [_apply_broadcast(spec.copy(), broadcast_combo) for spec in flat_combo]
|
|
||||||
|
|
||||||
if sigil:
|
if sigil:
|
||||||
final_combo[0] = Spec(sigil + str(final_combo[0]))
|
final_combo[0] = Spec(sigil + str(final_combo[0]))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user