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
3 merge requests!253update branch,!252create new experimental release,!244Update BrainScaleS packages and py-torch
......@@ -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