concretizer: treat target ranges in directives correctly (#19988)

fixes #19981

This commit adds support for target ranges in directives,
for instance:

conflicts('+foo', when='target=x86_64:,aarch64:')

If any target in a spec body is not a known target the
following clause will be emitted:

node_target_satisfies(Package, TargetConstraint)

when traversing the spec and a definition of
the clause will then be printed at the end similarly
to what is done for package and compiler versions.
This commit is contained in:
Massimiliano Culpo
2020-11-27 20:53:39 +01:00
committed by Tamara Dahlgren
parent b326d59e10
commit d7ffdd76f6
3 changed files with 74 additions and 1 deletions

View File

@@ -0,0 +1,15 @@
# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
class ImpossibleConcretization(Package):
"""Package that should be impossible to concretize due to a conflict
with target ranges. See Issue 19981.
"""
homepage = "http://www.example.com"
url = "http://www.example.com/example-1.0.tar.gz"
version(1.0, 'foobarbaz')
conflicts('target=x86_64:')