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): ...@@ -61,6 +61,7 @@ class Hxtorch(WafPackage):
configuration.""" configuration."""
include = [] include = []
include_exclude_dirs = set(['/usr/include'])
for dep in self.spec.traverse(deptype='build'): for dep in self.spec.traverse(deptype='build'):
query = self.spec[dep.name] query = self.spec[dep.name]
try: try:
...@@ -70,30 +71,24 @@ class Hxtorch(WafPackage): ...@@ -70,30 +71,24 @@ class Hxtorch(WafPackage):
if os.path.exists(d): if os.path.exists(d):
env.remove_path('SPACK_INCLUDE_DIRS', d) env.remove_path('SPACK_INCLUDE_DIRS', d)
continue continue
include.extend(query.headers.directories) assert(isinstance(query.headers.directories, list))
print('headers (', dep.name, '):', query.headers.directories, "\n") include_dirs = set(query.headers.directories)
include_dirs -= include_exclude_dirs
print('headers (', dep.name, '):', include_dirs, "\n")
include.extend(list(include_dirs))
except: except:
pass pass
library = [] library = []
library_exclude_dirs = set(['/lib', '/lib64', '/usr/lib', '/usr/lib64'])
for dep in self.spec.traverse(deptype=('link', 'run')): for dep in self.spec.traverse(deptype=('link', 'run')):
query = self.spec[dep.name] 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: try:
print('libs (', dep.name, '):', query.libs.directories, "\n") assert(isinstance(query.libs.directories, list))
# extend at front library_dirs = set(query.libs.directories)
library = query.libs.directories + library library_dirs -= library_exclude_dirs
print('libs (', dep.name, '):', library_dirs, "\n")
library.extend(list(library_dirs))
except: except:
pass pass
......
...@@ -60,20 +60,28 @@ class PynnBrainscales(WafPackage): ...@@ -60,20 +60,28 @@ class PynnBrainscales(WafPackage):
configuration.""" configuration."""
include = [] include = []
include_exclude_dirs = set(['/usr/include'])
for dep in self.spec.traverse(deptype='build'): for dep in self.spec.traverse(deptype='build'):
query = self.spec[dep.name] query = self.spec[dep.name]
try: try:
include.extend(query.headers.directories) assert(isinstance(query.headers.directories, list))
print('headers:', query.headers.directories, "\n") include_dirs = set(query.headers.directories)
include_dirs -= include_exclude_dirs
print('headers (', dep.name, '):', include_dirs, "\n")
include.extend(list(include_dirs))
except: except:
pass pass
library = [] library = []
library_exclude_dirs = set(['/lib', '/lib64', '/usr/lib', '/usr/lib64'])
for dep in self.spec.traverse(deptype=('link', 'run')): for dep in self.spec.traverse(deptype=('link', 'run')):
query = self.spec[dep.name] query = self.spec[dep.name]
try: try:
library.extend(query.libs.directories) assert(isinstance(query.libs.directories, list))
print('libs:', query.libs.directories, "\n") library_dirs = set(query.libs.directories)
library_dirs -= library_exclude_dirs
print('libs (', dep.name, '):', library_dirs, "\n")
library.extend(list(library_dirs))
except: except:
pass pass
...@@ -82,7 +90,7 @@ class PynnBrainscales(WafPackage): ...@@ -82,7 +90,7 @@ class PynnBrainscales(WafPackage):
query = self.spec[dep.name] query = self.spec[dep.name]
try: try:
path.append(query.prefix.bin) path.append(query.prefix.bin)
print('bin:', query.prefix.bin, "\n") print('bin (', dep.name, '):', query.prefix.bin, "\n")
except: except:
pass 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