Skip to content
Snippets Groups Projects
Commit 8cdea723 authored by Eric Müller's avatar Eric Müller :mountain_bicyclist:
Browse files

BrainScaleS: Exclude system paths from build env

This should fix problems with finding system-installed headers instead of the
spack-provided ones (e.g. googletest). (In some cases sites might inject
include paths via compiler settings (or other means)).
parent 3535bf80
No related branches found
No related tags found
No related merge requests found
......@@ -61,6 +61,7 @@ class Hxtorch(WafPackage):
configuration."""
include = []
include_exclude_dirs = set(['/usr/include'])
for dep in self.spec.traverse(deptype='build'):
query = self.spec[dep.name]
try:
......@@ -70,30 +71,24 @@ class Hxtorch(WafPackage):
if os.path.exists(d):
env.remove_path('SPACK_INCLUDE_DIRS', d)
continue
include.extend(query.headers.directories)
print('headers (', dep.name, '):', query.headers.directories, "\n")
assert(isinstance(query.headers.directories, list))
include_dirs = set(query.headers.directories)
include_dirs -= include_exclude_dirs
print('headers (', dep.name, '):', include_dirs, "\n")
include.extend(list(include_dirs))
except:
pass
library = []
library_exclude_dirs = set(['/lib', '/lib64', '/usr/lib', '/usr/lib64'])
for dep in self.spec.traverse(deptype=('link', 'run')):
query = self.spec[dep.name]
# we probably should skip/remove the entries for the same
# dependencies as above; however, ".libs" relies on the package
# name being the same as the library name (e.g. approx.
# libPACKAGE.so) so we are just moving googletest to the front
if dep.name == 'googletest':
for d in [self.spec['googletest'].prefix.lib64, self.spec['googletest'].prefix.lib]:
if os.path.exists(d):
print('moving to front of SPACK_{LINK,RPATH}_DIRS\n', d)
env.remove_path('SPACK_LINK_DIRS', d)
env.prepend_path('SPACK_LINK_DIRS', d)
env.remove_path('SPACK_RPATH_DIRS', d)
env.prepend_path('SPACK_RPATH_DIRS', d)
try:
print('libs (', dep.name, '):', query.libs.directories, "\n")
# extend at front
library = query.libs.directories + library
assert(isinstance(query.libs.directories, list))
library_dirs = set(query.libs.directories)
library_dirs -= library_exclude_dirs
print('libs (', dep.name, '):', library_dirs, "\n")
library.extend(list(library_dirs))
except:
pass
......
......@@ -60,20 +60,28 @@ class PynnBrainscales(WafPackage):
configuration."""
include = []
include_exclude_dirs = set(['/usr/include'])
for dep in self.spec.traverse(deptype='build'):
query = self.spec[dep.name]
try:
include.extend(query.headers.directories)
print('headers:', query.headers.directories, "\n")
assert(isinstance(query.headers.directories, list))
include_dirs = set(query.headers.directories)
include_dirs -= include_exclude_dirs
print('headers (', dep.name, '):', include_dirs, "\n")
include.extend(list(include_dirs))
except:
pass
library = []
library_exclude_dirs = set(['/lib', '/lib64', '/usr/lib', '/usr/lib64'])
for dep in self.spec.traverse(deptype=('link', 'run')):
query = self.spec[dep.name]
try:
library.extend(query.libs.directories)
print('libs:', query.libs.directories, "\n")
assert(isinstance(query.libs.directories, list))
library_dirs = set(query.libs.directories)
library_dirs -= library_exclude_dirs
print('libs (', dep.name, '):', library_dirs, "\n")
library.extend(list(library_dirs))
except:
pass
......@@ -82,7 +90,7 @@ class PynnBrainscales(WafPackage):
query = self.spec[dep.name]
try:
path.append(query.prefix.bin)
print('bin:', query.prefix.bin, "\n")
print('bin (', dep.name, '):', query.prefix.bin, "\n")
except:
pass
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment