[C++-sig] stage rule and version in .so name

Leonardo Rochael Almeida leo at hiper.com.br
Thu Sep 12 23:35:12 CEST 2002


I'm trying to make it easier to test stuff I built with boost python, so
I created some stage rules to gather all stuff I need so that I could,
say, just copy them over to /usr/local and have them work. For instance,
I added the following snipped to boost/libs/python/example/Jamfile:

stage distrib/lib/python$(PYTHON_VERSION)/site-packages
:  # extensions

stage distrib/lib
:  # needed libraries

This same Jamfile has this extension rule:

# Declare a Python extension called getting_started1
extension getting_started1
:  # sources

   # dependencies

The stage rules above generate the following directory tree:


which is mostly what I expected, except that:

$ ldd distrib/lib/python2.1/site-packages/getting_started1.so 
	libboost_python.so.1.29.0 => not found
	libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3 (0x40021000)
	libm.so.6 => /lib/libm.so.6 (0x4006a000)
	libc.so.6 => /lib/libc.so.6 (0x4008b000)
	/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

The "not found" above is not important, what's important is that the
same <dll>../build/boost_python, when in the "stage" rule, generates a
libboost_python.so, but in the "extension" rule, makes the extesion
depend on libboost_python.so.1.29.0 which I think is a bug.

I believe the correct behaviour would be for the "stage" rule to
copy/generate the same thing that the extension rule make
getting_started1.so depend on, that is, to generate a
libboost_python.so.1.29.0 in the distrib/lib directory. But I have no
idea how to go about it.

Any thoughts?

Ideas don't stay in some minds very long because they don't like
solitary confinement.

More information about the Cplusplus-sig mailing list