linux build guideline totally breaks down in archlinux.

kkb110

11-04-2011 05:21:43

Quick 3 problems I could see when I try.


Problem. 1 it assumes "python" is "python2", which is not in archlinux.

Problem. 2 fails to compile boost_python

"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -pthread -DBOOST_ALL_NO_LIB=1 -DBOOST_PYTHON_SOURCE -DBOOST_PYTHON_STATIC_LIB -DNDEBUG -I"." -I"/usr/include/python3.2" -c -o "bin.v2/libs/python/build/gcc-4.5.2/release/link-static/threading-multi/converter/builtin_converters.o" "libs/python/src/converter/builtin_converters.cpp"
....................
.....................
./boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory
compilation terminated.


pyconfig.h is not in "/usr/include/python3.2" in archlinux, I'm not familiar with bjam build system, I have no idea how to fix in a correct way.

Problem. 3 fails to create python wrapper for ois, ogre.


kkb110@kkim[ogre]|3> python2 python-ogre/BuildModule.py -g -c ois ogre -v
PythonOgre.BuildModule: INFO Building Source code for ois
INFO Creating xml file "/tmp/ogre/python-ogre/code_generators/cache/ois_1.0_cache.xml" from source file "/tmp/ogre/python-ogre/code_generators/ois/python_ois.h" ...
INFO gccxml cmd: /tmp/ogre/root/usr/bin/gccxml -I"/tmp/ogre/python-ogre" -I"/tmp/ogre/root/usr/include/boost" -I"/tmp/ogre/root/usr/include/OIS" -D"OIS_NONCLIENT_BUILD" -D"VERSION_1.0" "/tmp/ogre/python-ogre/code_generators/ois/python_ois.h" -fxml="/tmp/ogre/python-ogre/code_generators/cache/ois_1.0_cache.xml"
Traceback (most recent call last):
File "generate_code.py", line 355, in <module>
generate_code()
File "generate_code.py", line 272, in generate_code
, cflags=environment.ois.cflags
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pyplusplus/module_builder/boost_python_builder.py", line 95, in __init__
, indexing_suite_version)
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pyplusplus/module_builder/boost_python_builder.py", line 138, in __parse_declarations
decls = reader.read_files( files, compilation_mode )
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pygccxml/parser/project_reader.py", line 217, in read_files
return self.__parse_file_by_file(files)
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pygccxml/parser/project_reader.py", line 254, in __parse_file_by_file
reader.create_xml_file( header, prj_file.cached_source_file )
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pygccxml/parser/source_reader.py", line 179, in create_xml_file
raise error
pygccxml.parser.source_reader.gccxml_runtime_error_t: Error occured while running GCC-XML: In file included from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/vector:64,
from /tmp/ogre/python-ogre/code_generators/ois/python_ois.h:6:
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h: In function 'void std::__uninitialized_construct_range(_ForwardIterator, _ForwardIterator, _Tp&)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:231: error: a function call cannot appear in a constant-expression
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:231: error: template argument 1 is invalid
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:232: error: invalid type in declaration before '(' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:232: error: invalid use of qualified-name '::__ucr'
PythonOgre.BuildModule: WARNING Task Failed
PythonOgre.BuildModule: INFO Compiling Source code for ois
scons: Reading SConscript files ...
SCONS: Building ois
Mkdir("/tmp/ogre/python-ogre/generated/ois_1.0")

scons: warning: BuildDir() and the build_dir keyword have been deprecated;
use VariantDir() and the variant_dir keyword instead.
File "/tmp/ogre/python-ogre/SConstruct", line 228, in <module>
scons: done reading SConscript files.
scons: Building targets ...
gcc -o build_dir_2.7/ois_1.0/ois.so -Wl,-rpath=\/../../lib `pkg-config --libs OGRE` -lstdc++ -shared -L/tmp/ogre/root/usr/lib -L/tmp/ogre/root/usr/lib -L/usr/lib/python2.7/libs -lOIS -lboost_python
strip -g -S -d --strip-debug -s build_dir_2.7/ois_1.0/ois.so
Install file: "build_dir_2.7/ois_1.0/ois.so" as "packages_2.7/ogre/io/OIS/_ois_.so"
scons: done building targets.
PythonOgre.BuildModule: INFO Building Source code for ogre
***** :
INFO Creating xml file "/tmp/ogre/python-ogre/code_generators/cache/ogre_1.7.2_cache.xml" from source file "/tmp/ogre/python-ogre/code_generators/ogre/python_ogre.h" ...
pygccxml.cxx_parser: INFO Creating xml file "/tmp/ogre/python-ogre/code_generators/cache/ogre_1.7.2_cache.xml" from source file "/tmp/ogre/python-ogre/code_generators/ogre/python_ogre.h" ...
INFO gccxml cmd: /tmp/ogre/root/usr/bin/gccxml -I"/tmp/ogre/python-ogre" -I"/tmp/ogre/python-ogre/code_generators/ogre" -I"/tmp/ogre/root/usr/include/boost" -I"/tmp/ogre/root/usr/include/OGRE" -I"/tmp/ogre/ogre/Components/Property/include" -I"/usr/include/python2.7/" -D"OGRE_NONCLIENT_BUILD" -D"OGRE_GCC_VISIBILITY" -D"__PYTHONOGRE_BUILD_CODE" -D"HAVE_OGRE_BUILDSETTINGS_H" -D"__GCCXML__" -D"OGRE_VERSION_1.7.2" "/tmp/ogre/python-ogre/code_generators/ogre/python_ogre.h" -fxml="/tmp/ogre/python-ogre/code_generators/cache/ogre_1.7.2_cache.xml"
pygccxml.cxx_parser: INFO gccxml cmd: /tmp/ogre/root/usr/bin/gccxml -I"/tmp/ogre/python-ogre" -I"/tmp/ogre/python-ogre/code_generators/ogre" -I"/tmp/ogre/root/usr/include/boost" -I"/tmp/ogre/root/usr/include/OGRE" -I"/tmp/ogre/ogre/Components/Property/include" -I"/usr/include/python2.7/" -D"OGRE_NONCLIENT_BUILD" -D"OGRE_GCC_VISIBILITY" -D"__PYTHONOGRE_BUILD_CODE" -D"HAVE_OGRE_BUILDSETTINGS_H" -D"__GCCXML__" -D"OGRE_VERSION_1.7.2" "/tmp/ogre/python-ogre/code_generators/ogre/python_ogre.h" -fxml="/tmp/ogre/python-ogre/code_generators/cache/ogre_1.7.2_cache.xml"

Traceback (most recent call last):
File "generate_code.py", line 1484, in <module>
generate_code()
File "generate_code.py", line 1213, in generate_code
, cflags=environment.ogre.cflags
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pyplusplus/module_builder/boost_python_builder.py", line 95, in __init__
, indexing_suite_version)
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pyplusplus/module_builder/boost_python_builder.py", line 138, in __parse_declarations
decls = reader.read_files( files, compilation_mode )
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pygccxml/parser/project_reader.py", line 217, in read_files
return self.__parse_file_by_file(files)
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pygccxml/parser/project_reader.py", line 254, in __parse_file_by_file
reader.create_xml_file( header, prj_file.cached_source_file )
File "/tmp/ogre/root/usr/lib/python2.7/site-packages/pygccxml/parser/source_reader.py", line 179, in create_xml_file
raise error
pygccxml.parser.source_reader.gccxml_runtime_error_t: Error occured while running GCC-XML: In file included from /usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/vector:64,
from /tmp/ogre/python-ogre/code_generators/ogre/python_ogre.h:7:
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h: In function 'void std::__uninitialized_construct_range(_ForwardIterator, _ForwardIterator, _Tp&)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:231: error: a function call cannot appear in a constant-expression
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:231: error: template argument 1 is invalid
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:232: error: invalid type in declaration before '(' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/bits/stl_uninitialized.h:232: error: invalid use of qualified-name '::__ucr'
In file included from /tmp/ogre/root/usr/include/OGRE/OgreStdHeaders.h:64,
from /tmp/ogre/root/usr/include/OGRE/OgrePrerequisites.h:315,
from /tmp/ogre/root/usr/include/OGRE/Ogre.h:31,
from /tmp/ogre/python-ogre/code_generators/ogre/./python_ogre_include_OGRE.h:24,
from /tmp/ogre/python-ogre/code_generators/ogre/python_ogre_masterlist.h:11,
from /tmp/ogre/python-ogre/code_generators/ogre/python_ogre.h:11:
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip: In function 'std::_Resetiosflags std::resetiosflags(std::_Ios_Fmtflags)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:64: error: expected primary-expression before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:64: error: expected ';' before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:64: error: expected `;' before '}' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip: In function 'std::_Setiosflags std::setiosflags(std::_Ios_Fmtflags)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:94: error: expected primary-expression before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:94: error: expected ';' before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:94: error: expected `;' before '}' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip: In function 'std::_Setbase std::setbase(int)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:125: error: expected primary-expression before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:125: error: expected ';' before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:125: error: expected `;' before '}' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip: In function 'std::_Setfill<_CharT> std::setfill(_CharT)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:163: error: expected primary-expression before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:163: error: expected ';' before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:163: error: expected `;' before '}' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip: In function 'std::_Setprecision std::setprecision(int)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:193: error: expected primary-expression before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:193: error: expected ';' before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:193: error: expected `;' before '}' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip: In function 'std::_Setw std::setw(int)':
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:223: error: expected primary-expression before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:223: error: expected ';' before '{' token
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/../../../../include/c++/4.5.2/iomanip:223: error: expected `;' before '}' token
PythonOgre.BuildModule: WARNING Task Failed
PythonOgre.BuildModule: INFO Compiling Source code for ogre
scons: Reading SConscript files ...
SCONS: Building ogre
Mkdir("/tmp/ogre/python-ogre/generated/ogre_1.7.2")

scons: warning: BuildDir() and the build_dir keyword have been deprecated;
use VariantDir() and the variant_dir keyword instead.
File "/tmp/ogre/python-ogre/SConstruct", line 228, in <module>
scons: done reading SConscript files.
scons: Building targets ...
gcc -o build_dir_2.7/ogre_1.7.2/ogre.so -Wl,-rpath=\/../../lib `pkg-config --libs OGRE` -lstdc++ -shared -L/tmp/ogre/root/usr/lib -L/usr/lib/python2.7/libs -lboost_python -lOgreMain -lOgreProperty
strip -g -S -d --strip-debug -s build_dir_2.7/ogre_1.7.2/ogre.so
Install file: "build_dir_2.7/ogre_1.7.2/ogre.so" as "packages_2.7/ogre/renderer/OGRE/_ogre_.so"
scons: done building targets.


Not sure what is the problem for this.

virtual

05-05-2011 02:30:57

stl_uninitialized.h:231: error: a function call cannot appear in a constant-expression

I can confirm this problem building in Ubuntu 11.04 Natty.

It seems to be an incompatibility between gccxml and the headers that ship with gcc 4.5.

This bug has been known and fixed (or it might be better to say, "patched by replacing the offending header") in gccxml:

http://www.gccxml.org/pipermail/gccxml/ ... 01381.html

So we can apply the fix to the gccxml class, search python-ogre/environment.py for the string "gccxml.org" (without quotes) to get the following line:

[cvs, " -d :pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML co -D 01Jan2010 gccxml",

These are the CVS parameters used to download the data. Simply change the date to something more recent (I used 01May2011), purge the gccxml directory (this may not be necessary, YMMV), and redo the -g step.

At the moment I haven't finished building it all the way on Natty yet, but everything looks fine so far with this fix.