Skip to content
Snippets Groups Projects
Commit 1928d832 authored by Mayeul d'Avezac's avatar Mayeul d'Avezac Committed by Todd Gamblin
Browse files

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
parent b27e78cd
No related branches found
No related tags found
No related merge requests found
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
from spack import * from spack import *
import sys import sys
import os import os
from glob import glob
class Boost(Package): class Boost(Package):
...@@ -155,6 +156,26 @@ def determine_toolset(self, spec): ...@@ -155,6 +156,26 @@ def determine_toolset(self, spec):
# fallback to gcc if no toolset found # fallback to gcc if no toolset found
return 'gcc' 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): def determine_bootstrap_options(self, spec, withLibs, options):
boostToolsetId = self.determine_toolset(spec) boostToolsetId = self.determine_toolset(spec)
options.append('--with-toolset=%s' % boostToolsetId) options.append('--with-toolset=%s' % boostToolsetId)
...@@ -180,9 +201,7 @@ def determine_bootstrap_options(self, spec, withLibs, options): ...@@ -180,9 +201,7 @@ def determine_bootstrap_options(self, spec, withLibs, options):
f.write('using mpi : %s ;\n' % f.write('using mpi : %s ;\n' %
join_path(spec['mpi'].prefix.bin, 'mpicxx')) join_path(spec['mpi'].prefix.bin, 'mpicxx'))
if '+python' in spec: if '+python' in spec:
f.write('using python : %s : %s ;\n' % f.write(self.bjam_python_line(spec))
(spec['python'].version.up_to(2),
join_path(spec['python'].prefix.bin, 'python')))
def determine_b2_options(self, spec, options): def determine_b2_options(self, spec, options):
if '+debug' in spec: if '+debug' in spec:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment