Spec Header Dirs: Only first include/ (#13991)
* CUDA HeaderList: Unit Test * Spec Header Dirs: Only first include/ Avoid matching recurringly nested include paths that usually refer to internally shipped libraries in packages. Example in CUDA Toolkit, shipping a libc++ fork internally with libcu++ since 10.2.89: `<prefix>/include/cuda/some/more/details/include/` or `<prefix>/include/cuda/std/detail/libcxx/include` regex: non-greedy first match of include Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com> * CUDA: Re-Enable 10.2.89 as Default
This commit is contained in:
parent
9d9737f765
commit
d705e96a63
3 changed files with 17 additions and 4 deletions
|
@ -1156,7 +1156,9 @@ class HeaderList(FileList):
|
|||
|
||||
# Make sure to only match complete words, otherwise path components such
|
||||
# as "xinclude" will cause false matches.
|
||||
include_regex = re.compile(r'(.*)(\binclude\b)(.*)')
|
||||
# Avoid matching paths such as <prefix>/include/something/detail/include,
|
||||
# e.g. in the CUDA Toolkit which ships internal libc++ headers.
|
||||
include_regex = re.compile(r'(.*?)(\binclude\b)(.*)')
|
||||
|
||||
def __init__(self, files):
|
||||
super(HeaderList, self).__init__(files)
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
from spack.util.spack_yaml import syaml_dict, syaml_str
|
||||
from spack.util.environment import EnvironmentModifications
|
||||
|
||||
from llnl.util.filesystem import LibraryList
|
||||
from llnl.util.filesystem import LibraryList, HeaderList
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -243,6 +243,18 @@ def test_set_build_environment_variables(
|
|||
variables.
|
||||
"""
|
||||
|
||||
# https://github.com/spack/spack/issues/13969
|
||||
cuda_headers = HeaderList([
|
||||
'prefix/include/cuda_runtime.h',
|
||||
'prefix/include/cuda/atomic',
|
||||
'prefix/include/cuda/std/detail/libcxx/include/ctype.h'])
|
||||
cuda_include_dirs = cuda_headers.directories
|
||||
assert(os.path.join('prefix', 'include')
|
||||
in cuda_include_dirs)
|
||||
assert(os.path.join('prefix', 'include', 'cuda', 'std', 'detail',
|
||||
'libcxx', 'include')
|
||||
not in cuda_include_dirs)
|
||||
|
||||
root = spack.spec.Spec('dt-diamond')
|
||||
root.concretize()
|
||||
|
||||
|
|
|
@ -60,8 +60,7 @@ class Cuda(Package):
|
|||
key = "{0}-{1}".format(platform.system(), platform.machine())
|
||||
pkg = packages.get(key)
|
||||
if pkg:
|
||||
version(ver, sha256=pkg[0], url=pkg[1], expand=False,
|
||||
preferred=(ver == "10.1.243")) # see GH issue 13969
|
||||
version(ver, sha256=pkg[0], url=pkg[1], expand=False)
|
||||
|
||||
# macOS Mojave drops NVIDIA graphics card support -- official NVIDIA
|
||||
# drivers do not exist for Mojave. See
|
||||
|
|
Loading…
Reference in a new issue