Tells boost explictly about python libraries and headers (#2106)
* Tells boost explictly about libraries and headers Ideally, bjam would determine the libraries and headers from the executable. But it doesn't. This rigs a best guess for python libraries and headers. * Move glob import to top of file * variable name change: alllibs --> all_libs * Use dso suffix rather than hard-coded string * Use only MAJOR.MINOR when setting up python in bjam
This commit is contained in:
parent
b27e78cd78
commit
1928d83259
@ -25,6 +25,7 @@
|
||||
from spack import *
|
||||
import sys
|
||||
import os
|
||||
from glob import glob
|
||||
|
||||
|
||||
class Boost(Package):
|
||||
@ -155,6 +156,26 @@ def determine_toolset(self, spec):
|
||||
# fallback to gcc if no toolset found
|
||||
return 'gcc'
|
||||
|
||||
def bjam_python_line(self, spec):
|
||||
from os.path import dirname, splitext
|
||||
pydir = 'python%s.%s*' % spec['python'].version.version[:2]
|
||||
incs = join_path(spec['python'].prefix.include, pydir, "pyconfig.h")
|
||||
incs = glob(incs)
|
||||
incs = " ".join([dirname(u) for u in incs])
|
||||
|
||||
pylib = 'libpython%s.%s*' % spec['python'].version.version[:2]
|
||||
all_libs = join_path(spec['python'].prefix.lib, pylib)
|
||||
libs = [u for u in all_libs if splitext(u)[1] == dso_suffix]
|
||||
if len(libs) == 0:
|
||||
libs = [u for u in all_libs if splitext(u)[1] == '.a']
|
||||
|
||||
libs = " ".join(libs)
|
||||
return 'using python : %s : %s : %s : %s ;\n' % (
|
||||
spec['python'].version.up_to(2),
|
||||
join_path(spec['python'].prefix.bin, 'python'),
|
||||
incs, libs
|
||||
)
|
||||
|
||||
def determine_bootstrap_options(self, spec, withLibs, options):
|
||||
boostToolsetId = self.determine_toolset(spec)
|
||||
options.append('--with-toolset=%s' % boostToolsetId)
|
||||
@ -180,9 +201,7 @@ def determine_bootstrap_options(self, spec, withLibs, options):
|
||||
f.write('using mpi : %s ;\n' %
|
||||
join_path(spec['mpi'].prefix.bin, 'mpicxx'))
|
||||
if '+python' in spec:
|
||||
f.write('using python : %s : %s ;\n' %
|
||||
(spec['python'].version.up_to(2),
|
||||
join_path(spec['python'].prefix.bin, 'python')))
|
||||
f.write(self.bjam_python_line(spec))
|
||||
|
||||
def determine_b2_options(self, spec, options):
|
||||
if '+debug' in spec:
|
||||
|
Loading…
Reference in New Issue
Block a user