Build problems on Linux [SOLVED]

hoelzro

07-05-2008 21:33:09

Hello everyone,

I've been following the instructions on this page (http://wiki.python-ogre.org/index.php/LinuxBuildV2) in order to build on Linux (Arch Linux, GCC 4.3.0), and I'm getting the following error while running python python-ogre/BuildModule.py -c ois (this is all of log.out):

05-07 02:03 PythonOgre.BuildModule INFO Compiling Source code for ois
05-07 02:03 PythonOgre.BuildModule DEBUG Spawning 'scons PROJECTS=ois' in '/home/rob/programming/projects/eot/third-party/pyogre2/python-ogre'
05-07 02:03 PythonOgre.BuildModule WARNING Task Failed
05-07 02:03 PythonOgre.BuildModule DEBUG scons: Reading SConscript files ...
Building ois
WARNING: Over-Writing /home/rob/programming/projects/eot/third-party/pyogre2/python-ogre/generated/ois_1.1/SConscript as it already exists
scons: done reading SConscript files.
scons: Building targets ...
g++ -o build_dir_2.5/ois_1.1/Axis.pypp.os -c `pkg-config --cflags OGRE` -I -O3 -I./ -fPIC -I/home/rob/programming/projects/eot/third-party/pyogre2/root/usr/include/boost-1_34_1 -I/home/rob/programming/projects/eot/third-party/pyogre2/root/usr/include/OIS -I/usr/include/python2.5 -I/home/rob/programming/projects/eot/third-party/pyogre2/root/usr/include/boost-1_34_1 generated/ois_1.1/Axis.pypp.cpp
scons: building terminated because of errors.

05-07 02:03 PythonOgre.BuildModule DEBUG In file included from /home/rob/programming/projects/eot/third-party/pyogre2/root/usr/include/boost-1_34_1/boost/python/class.hpp:29,
from /home/rob/programming/projects/eot/third-party/pyogre2/root/usr/include/boost-1_34_1/boost/python.hpp:18,
from generated/ois_1.1/Axis.pypp.cpp:3:
/home/rob/programming/projects/eot/third-party/pyogre2/root/usr/include/boost-1_34_1/boost/python/detail/def_helper.hpp:192: error: declaration of ‘typename boost::python::detail::keyword_extract<boost::tuples::tuple<const T1&, const T2&, const T3&, const T4&, boost::python::default_call_policies, boost::python::detail::keywords<0ul>, const char*, void (boost::python::detail::not_specified::*)(), boost::tuples::null_type, boost::tuples::null_type> >::result_type boost::python::detail::def_helper<T1, T2, T3, T4>::keywords() const’
/home/rob/programming/projects/eot/third-party/pyogre2/root/usr/include/boost-1_34_1/boost/python/args_fwd.hpp:35: error: changes meaning of ‘keywords’ from ‘struct boost::python::detail::keywords<0ul>’
scons: *** [build_dir_2.5/ois_1.1/Axis.pypp.os] Error 1


Has anyone else seen this error? If so, how did you get around it? Let me know if you need me to provide any more information, and thanks for any help you can offer!

hoelzro

09-05-2008 15:19:58

Here's what I did to solve the problem:

Step 1: I changed the Boost source code to use extractKeywords for the method name instead of keywords; this may have been overkill, but it only took a few minutes and no other solution presented itself. If anyone has a better solution, I'll take it, but in the meantime, if anyone would like a patch of my changes, please let me know.

Step 2: After I applied my changes to Boost, I was getting compiler errors about boost's noncopyable class in Ogre. I'm really not sure what the full deal was here, but I *did* notice that it was a result of Ogre's experimental multithreading support. Since my system Ogre installation has multithreading in it, and the SConstruct file uses the system pkg-config files instead of those local to the python-ogre installation, my build was getting confused. So I altered the SConstruct file to include the appropriate options instead of using pkg-config to get them.

Step 3: After this, everything seemed to work fine, but then gcc kept segfaulting during compilation. I noticed that if I turned off optimization, the compilation would succeed.

I plan on messing around with the build a bit more, and once I get a better optimized build, I'll publish my build binaries, since I haven't seen them available for x86_64 yet.