[Stackless] Building Boost::Stackless_Python - undefined symbol: PyUnicodeUCS4_FromEncodedObject

Simon Pickles sipickles at googlemail.com
Tue Aug 12 14:29:48 CEST 2008


I am attempting to extend Stackless Python on Ubuntu 8.04 with 
boost::python.

I have built the examples in boost_1_35_0/libs/python/example/quickstart 
with bjam. This passes the tests if I run it with the default Ubuntu 
python installation (/usr/lib/python25). However it fails if I run it 
with the stackless python installation (/usr/local/lib/python25).

I get the error:

Trying:
   from extending import *
Expecting nothing
**********************************************************************
File "/home/simon/Dev/testSpace/boostPython/test_extending.py", line 6, 
in test_extending
Failed example:
   from extending import *
Exception raised:
   Traceback (most recent call last):
     File "/usr/local/lib/python2.5/doctest.py", line 1228, in __run
       compileflags, 1) in test.globs
     File "<doctest test_extending[0]>", line 1, in <module>
       from extending import *
   ImportError: /usr/local/lib/libboost_python-gcc42-d-1_35.so.1.35.0: 
undefined symbol: PyUnicodeUCS4_FromEncodedObject


I built libboost_python-gcc42-d-1_35.so.1.35.0 by pointing bjam at my 
stackless python installation:

sudo bjam -sPYTHON_ROOT=/usr/local/lib/python25 -sPYTHON_VERSION=2.5 stage

It is obviously some sort of Unicode error. It appears my Ubuntu version 
is UCS4 (looking at sys.maxunicode), while my stackless version, built 
from svn, is UCS2. This would explain the missing 
PyUnicodeUCS4_FromEncodedObject, I guess.

I tried building stackless with

./configure --enable-unicode=ucs4

but the make and install fail:

running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
*** WARNING: renaming "_ctypes" since importing it failed: 
build/lib.linux-i686-2.5/_ctypes.so: undefined symbol: 
PyUnicodeUCS2_FromEncodedObject
*** WARNING: renaming "array" since importing it failed: 
build/lib.linux-i686-2.5/array.so: undefined symbol: 
PyUnicodeUCS2_FromUnicode
*** WARNING: renaming "_testcapi" since importing it failed: 
build/lib.linux-i686-2.5/_testcapi.so: undefined symbol: 
PyUnicodeUCS2_Decode
*** WARNING: renaming "unicodedata" since importing it failed: 
build/lib.linux-i686-2.5/unicodedata.so: undefined symbol: 
_PyUnicodeUCS2_ToNumeric
*** WARNING: renaming "_locale" since importing it failed: 
build/lib.linux-i686-2.5/_locale.so: undefined symbol: 
PyUnicodeUCS2_FromObject
*** WARNING: renaming "cPickle" since importing it failed: 
build/lib.linux-i686-2.5/cPickle.so: undefined symbol: 
PyUnicodeUCS2_DecodeUTF8
*** WARNING: renaming "pyexpat" since importing it failed: 
build/lib.linux-i686-2.5/pyexpat.so: undefined symbol: PyUnicodeUCS2_Decode
*** WARNING: renaming "_elementtree" since importing it failed: 
build/lib.linux-i686-2.5/_elementtree.so: undefined symbol: 
PyUnicodeUCS2_Decode
*** WARNING: renaming "_multibytecodec" since importing it failed: 
build/lib.linux-i686-2.5/_multibytecodec.so: undefined symbol: 
PyUnicodeUCS2_Resize
running build_scripts


Is there anyway to overcome this incompatibility between UCS2 stackless 
and UCS4 boost?

Thanks

Simon

Thanks

Si




More information about the Stackless mailing list