
Ben Gamari wrote:
On Sat, 25 Dec 2010 10:42:15 +0300, Vladimir Prus <vladimir@codesourcery.com> wrote:
Ben Gamari wrote:
but this does not appear to change bjam's behavior at all. When the build process begins, bjam produces this cryptic hint,
error: No best alternative for /python_for_extensions next alternative: required properties: <python>2.6 <target-os>linux matched
Please run with --debug-configuration. This should print absolute paths to user-config.jam, site-config.jam and project-config.jam that are being loaded. Examine them to make sure only your user-config.jam configures Python. Let me know if this hlps.
As I mentioned in later messages, --debug-configuration shows that the python include path is correctly determined but unfortunately is not included in the include paths given to the compiler?
Where exactly is are the python include paths incorporated into the compiler command line? The only reference I can find is in tools/build/v2/tools/python.jam around line 900 but it's really not at all clear what happens to usage-requirements after this. Is there any document describing the inner workings of this build system that someone only familiar with more traditional build systems (autotools, make) might understand?
The includes are supposed to be added by this code in libs/python/build/Jamfile.v2: [ cond [ python.configured ] : <library>/python//python_for_extensions ] where 'cond' is basically C's ?: operator. From your log, I suspect that python.configured is not set, because python.jam is unable to run python to check it's version. Could you try the below patch? - Volodya diff --git a/tools/python.jam b/tools/python.jam index 66f2aab..0c41221 100644 --- a/tools/python.jam +++ b/tools/python.jam @@ -816,6 +816,10 @@ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? : version ?= 2.5 ; exec-prefix ?= $(prefix) ; compute-default-paths $(target-os) : $(version) : $(prefix:E=) ; + if $(includes) && $(libraries) + { + .configured = true ; + } } if ! $(interpreter-cmd)