python library issue migrating from boost_1_30_2 to boost_1_31_0
Hi there, when I built the 1_30_2 Python Library, I got: libboost_python.so now, with 1_31_0, I get several libs but that one: libboost_python-gcc-1_31.a libboost_python-gcc-1_31.so libboost_python-gcc-1_31.so.1.31.0 libboost_python-gcc.a libboost_python-gcc-d-1_31.a libboost_python-gcc-d-1_31.so libboost_python-gcc-d-1_31.so.1.31.0 libboost_python-gcc-d.a libboost_python-gcc-d.so libboost_python-gcc-mt-1_31.a libboost_python-gcc-mt-1_31.so libboost_python-gcc-mt-1_31.so.1.31.0 libboost_python-gcc-mt.a libboost_python-gcc-mt-d-1_31.a libboost_python-gcc-mt-d-1_31.so libboost_python-gcc-mt-d-1_31.so.1.31.0 libboost_python-gcc-mt-d.a libboost_python-gcc-mt-d.so libboost_python-gcc-mt.so libboost_python-gcc.so Unless I made a mistake in the building step which prevented libboost_python.so to be created, the first solution that comes to my mind to solve this backward compatibility problem would be to create a symlink from libboost_python.so to one of the new libraries. The question is, what would you recommend: libboost_python-gcc.so or libboost_python-gcc-mt.so (or none of the above, but....) thanks a million marco
Marco Donizelli wrote:
Hi there, when I built the 1_30_2 Python Library, I got:
libboost_python.so
now, with 1_31_0, I get several libs but that one:
libboost_python-gcc-1_31.a libboost_python-gcc-1_31.so libboost_python-gcc-1_31.so.1.31.0 libboost_python-gcc.a libboost_python-gcc-d-1_31.a libboost_python-gcc-d-1_31.so libboost_python-gcc-d-1_31.so.1.31.0 libboost_python-gcc-d.a libboost_python-gcc-d.so libboost_python-gcc-mt-1_31.a libboost_python-gcc-mt-1_31.so libboost_python-gcc-mt-1_31.so.1.31.0 libboost_python-gcc-mt.a libboost_python-gcc-mt-d-1_31.a libboost_python-gcc-mt-d-1_31.so libboost_python-gcc-mt-d-1_31.so.1.31.0 libboost_python-gcc-mt-d.a libboost_python-gcc-mt-d.so libboost_python-gcc-mt.so libboost_python-gcc.so
Unless I made a mistake in the building step which prevented
libboost_python.so
No mistake on your part.. that is the new build+install design.
to be created, the first solution that comes to my mind to solve this backward compatibility problem would be to create a symlink from libboost_python.so to one of the new libraries. The question is, what would you recommend:
libboost_python-gcc.so
or
libboost_python-gcc-mt.so
That depends on which previous version of libboost_python.so you want to be compatible with. Previously two versions still got built, both named the same, but in different directories. So which one are you referring to? The single threaded, or multi-threaded? And by the way just having the name match does not give you backward compatibility. The really important aspect is binary compatibility. For that you need to rebuild your modules+applications, as Boost/C++ doesn't really have a concept of binary backward compatibility. -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com - 102708583/icq
Rene Rivera wrote:
That depends on which previous version of libboost_python.so you want to be compatible with. Previously two versions still got built, both named the same, but in different directories. So which one are you referring to? The single threaded, or multi-threaded?
cd ./bin-stage ; ls -l ; cd - total 28992 -rw-r--r-- 1 maleko compneur 432470 Mar 8 11:09 libboost_python.a -rw-r--r-- 1 maleko compneur 12962852 Mar 8 11:08
cd ./bin/libboost_python.so/gcc/debug/runtime-link-dynamic/shared-linkable-true/ ; ls -l *so*; cd - lrwxrwxrwx 1 maleko compneur 31 Mar 8 11:05
cd ./bin/libboost_python.so/gcc/release/runtime-link-dynamic/shared-linkable-true/ ; ls -l *so* ; cd - lrwxrwxrwx 1 maleko compneur 25 Mar 8 11:06
Dear Rene, thanks a lot for your answer. When I built the Python library within Boost version 1.30.02, the result of the build is: libboost_python_debug.a -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:05 libboost_python_debug.so -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:05 libboost_python_debug.so.1.30.2 -rwxr-xr-x 1 maleko compneur 241652 Mar 8 11:06 libboost_python.so -rwxr-xr-x 1 maleko compneur 241652 Mar 8 11:06 libboost_python.so.1.30.2 libboost_python_debug.so -> libboost_python_debug.so.1.30.2 -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:05 libboost_python_debug.so.1.30.2 lrwxrwxrwx 1 maleko compneur 25 Mar 8 11:10 libboost_python.so -> libboost_python.so.1.30.2 -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:10 libboost_python.so.1.30.2 libboost_python.so -> libboost_python.so.1.30.2 -rwxr-xr-x 1 maleko compneur 241652 Mar 8 11:06 libboost_python.so.1.30.2 so, i got basicly two libraries, the debug one and the release one, but I do not notice anything about multithreading. again, am I on the wrong track due to a build & installation mistake?
And by the way just having the name match does not give you backward compatibility. The really important aspect is binary compatibility. For that you need to rebuild your modules+applications, as Boost/C++ doesn't really have a concept of binary backward compatibility.
thanks for the advice. marco
Marco Donizelli wrote:
Rene Rivera wrote:
That depends on which previous version of libboost_python.so you want to be compatible with. Previously two versions still got built, both named the same, but in different directories. So which one are you referring to? The single threaded, or multi-threaded?
Dear Rene, thanks a lot for your answer. When I built the Python library within Boost version 1.30.02, the result of the build is:
cd ./bin-stage ; ls -l ; cd - total 28992 -rw-r--r-- 1 maleko compneur 432470 Mar 8 11:09 libboost_python.a -rw-r--r-- 1 maleko compneur 12962852 Mar 8 11:08 libboost_python_debug.a -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:05 libboost_python_debug.so -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:05 libboost_python_debug.so.1.30.2 -rwxr-xr-x 1 maleko compneur 241652 Mar 8 11:06 libboost_python.so -rwxr-xr-x 1 maleko compneur 241652 Mar 8 11:06 libboost_python.so.1.30.2
cd ./bin/libboost_python.so/gcc/debug/runtime-link-dynamic/shared-linkable-true/ ; ls -l *so*; cd - lrwxrwxrwx 1 maleko compneur 31 Mar 8 11:05 libboost_python_debug.so -> libboost_python_debug.so.1.30.2 -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:05 libboost_python_debug.so.1.30.2 lrwxrwxrwx 1 maleko compneur 25 Mar 8 11:10 libboost_python.so -> libboost_python.so.1.30.2 -rwxr-xr-x 1 maleko compneur 7877213 Mar 8 11:10 libboost_python.so.1.30.2
cd ./bin/libboost_python.so/gcc/release/runtime-link-dynamic/shared-linkable-true/ ; ls -l *so* ; cd - lrwxrwxrwx 1 maleko compneur 25 Mar 8 11:06 libboost_python.so -> libboost_python.so.1.30.2 -rwxr-xr-x 1 maleko compneur 241652 Mar 8 11:06 libboost_python.so.1.30.2
so, i got basicly two libraries, the debug one and the release one, but I do not notice anything about multithreading. again, am I on the wrong track due to a build & installation mistake?
No mistake, I just did not have enough information as to which version you wanted to be compatible with ;-) So to be compatible with the ones built into the 1.30.2 bin-stage you would need to use the single threaded versions. Single threading was, and still is, the default build configuration which is the only version that BPL builds to the bin-stage in 1.30.2. You can see that (which is what I did as I did not know until now ;-) by looking at the long build path... "./bin/libboost_python.so/gcc/release/runtime-link-dynamic/shared-linkable-true" is the *single threaded* version. If that had a threading-multi subdir it would be the multi threaded version. So you want the ones without the "-mt" indicator in the new build. Also you should read the "install? and simple thread program." thread as it has some additional points on using BPL as it comes out of the build system. -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com - 102708583/icq
participants (2)
-
Marco Donizelli
-
Rene Rivera