GNOME Bugzilla – Bug 615479
build failure (boost related)
Last modified: 2010-04-12 16:53:58 UTC
Trying to jhbuild glom git master. $:andre\> rpm -q boost boost-1.39.0-9.fc12.i686 glom/python_embed/glom_python.o: In function `registry_lookup2<const volatile Glom::PyGlomUI>': /usr/include/boost/python/converter/registered.hpp:87: undefined reference to `boost::python::converter::registry::lookup(boost::python::type_info)' glom/python_embed/glom_python.o: In function `registry_lookup2<const volatile char>': /usr/include/boost/python/converter/registered.hpp:87: undefined reference to `boost::python::converter::registry::lookup(boost::python::type_info)' glom/python_embed/glom_python.o: In function `registry_lookup2<const volatile Glom::PyGlomRecord>': /usr/include/boost/python/converter/registered.hpp:87: undefined reference to `boost::python::converter::registry::lookup(boost::python::type_info)' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::gda_python_module_is_available()': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:157: undefined reference to `boost::python::import(boost::python::str)' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_python_module_is_available()': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:144: undefined reference to `boost::python::import(boost::python::str)' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_python_call(Glom::Field::glom_field_type, Glom::Document*, Glib::ustring const&, boost::python::api::object const&, boost::python::api::object const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:208: undefined reference to `boost::python::import(boost::python::str)' glom/python_embed/glom_python.o: In function `boost::python::api::const_attribute_policies::get(boost::python::api::object const&, char const*)': /usr/include/boost/python/object_attributes.hpp:74: undefined reference to `boost::python::api::getattr(boost::python::api::object const&, char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_python_call(Glom::Field::glom_field_type, Glom::Document*, Glib::ustring const&, boost::python::api::object const&, boost::python::api::object const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:231: undefined reference to `boost::python::api::object::object(boost::python::handle<_object> const&)' /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:237: undefined reference to `boost::python::api::object::object(boost::python::handle<_object> const&)' glom/python_embed/glom_python.o: In function `expect_non_null<PyObject>': /usr/include/boost/python/errors.hpp:45: undefined reference to `boost::python::throw_error_already_set()' /usr/include/boost/python/errors.hpp:45: undefined reference to `boost::python::throw_error_already_set()' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_python_call(Glom::Field::glom_field_type, Glom::Document*, Glib::ustring const&, boost::python::api::object const&, boost::python::api::object const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:248: undefined reference to `boost::python::import(boost::python::str)' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_python_call(Glom::Field::glom_field_type, Glom::Document*, Glib::ustring const&, boost::python::api::object const&, boost::python::api::object const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:256: undefined reference to `boost::python::import(boost::python::str)' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_python_call(Glom::Field::glom_field_type, Glom::Document*, Glib::ustring const&, boost::python::api::object const&, boost::python::api::object const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:284: undefined reference to `boost::python::exec(boost::python::str, boost::python::api::object, boost::python::api::object)' glom/python_embed/glom_python.o: In function `arg_to_python': /usr/include/boost/python/converter/builtin_converters.hpp:126: undefined reference to `boost::python::converter::do_return_to_python(char const*)' glom/python_embed/glom_python.o: In function `boost::python::api::const_item_policies::get(boost::python::api::object const&, boost::python::api::object const&)': /usr/include/boost/python/object_items.hpp:68: undefined reference to `boost::python::api::getitem(boost::python::api::object const&, boost::python::api::object const&)' glom/python_embed/glom_python.o: In function `expect_non_null<PyObject>': /usr/include/boost/python/errors.hpp:45: undefined reference to `boost::python::throw_error_already_set()' /usr/include/boost/python/errors.hpp:45: undefined reference to `boost::python::throw_error_already_set()' /usr/include/boost/python/errors.hpp:45: undefined reference to `boost::python::throw_error_already_set()' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_execute_python_function_implementation(Glib::ustring const&, std::map<Glib::ustring, Gnome::Gda::Value, std::less<Glib::ustring>, std::allocator<std::pair<Glib::ustring const, Gnome::Gda::Value> > > const&, Glom::Document*, Glib::ustring const&, Glom::sharedptr<Glom::Field const> const&, Gnome::Gda::Value const&, Glib::RefPtr<Gnome::Gda::Connection> const&, Glom::PythonUICallbacks const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:372: undefined reference to `boost::python::import(boost::python::str)' glom/python_embed/glom_python.o: In function `extract_pointer': /usr/include/boost/python/extract.hpp:219: undefined reference to `boost::python::converter::get_lvalue_from_python(_object*, boost::python::converter::registration const&)' glom/python_embed/glom_python.o: In function `boost::python::converter::extract_pointer<Glom::PyGlomRecord*>::operator()() const': /usr/include/boost/python/extract.hpp:233: undefined reference to `boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&)' glom/python_embed/glom_python.o: In function `str': /usr/include/boost/python/str.hpp:148: undefined reference to `boost::python::detail::str_base::str_base(char const*)' glom/python_embed/glom_python.o: In function `Glom::glom_evaluate_python_function_implementation(Glom::Field::glom_field_type, Glib::ustring const&, std::map<Glib::ustring, Gnome::Gda::Value, std::less<Glib::ustring>, std::allocator<std::pair<Glib::ustring const, Gnome::Gda::Value> > > const&, Glom::Document*, Glib::ustring const&, Glom::sharedptr<Glom::Field const> const&, Gnome::Gda::Value const&, Glib::RefPtr<Gnome::Gda::Connection> const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:410: undefined reference to `boost::python::import(boost::python::str)' glom/python_embed/glom_python.o: In function `extract_pointer': /usr/include/boost/python/extract.hpp:219: undefined reference to `boost::python::converter::get_lvalue_from_python(_object*, boost::python::converter::registration const&)' glom/python_embed/glom_python.o: In function `Glom::glom_evaluate_python_function_implementation(Glom::Field::glom_field_type, Glib::ustring const&, std::map<Glib::ustring, Gnome::Gda::Value, std::less<Glib::ustring>, std::allocator<std::pair<Glib::ustring const, Gnome::Gda::Value> > > const&, Glom::Document*, Glib::ustring const&, Glom::sharedptr<Glom::Field const> const&, Gnome::Gda::Value const&, Glib::RefPtr<Gnome::Gda::Connection> const&)': /home/andre/svn-gnome/glom/glom/python_embed/glom_python.cc:460: undefined reference to `boost::python::api::operator==(boost::python::api::object const&, boost::python::api::object const&)' glom/python_embed/glom_python.o: In function `extract_pointer': /usr/include/boost/python/extract.hpp:219: undefined reference to `boost::python::converter::get_lvalue_from_python(_object*, boost::python::converter::registration const&)' glom/python_embed/glom_python.o: In function `boost::python::converter::extract_pointer<char const*>::operator()() const': /usr/include/boost/python/extract.hpp:233: undefined reference to `boost::python::converter::throw_no_pointer_from_python(_object*, boost::python::converter::registration const&)' glom/python_embed/glom_python.o:(.gcc_except_table+0x3a8): undefined reference to `typeinfo for boost::python::error_already_set' glom/python_embed/glom_python.o:(.gcc_except_table+0x508): undefined reference to `typeinfo for boost::python::error_already_set' glom/python_embed/glom_python.o: In function `pointer_deep_arg_to_python': /usr/include/boost/python/converter/arg_to_python.hpp:215: undefined reference to `boost::python::converter::detail::arg_to_python_base::arg_to_python_base(void const volatile*, boost::python::converter::registration const&)' /usr/include/boost/python/converter/arg_to_python.hpp:215: undefined reference to `boost::python::converter::detail::arg_to_python_base::arg_to_python_base(void const volatile*, boost::python::converter::registration const&)' glom/python_embed/glom_python.o: In function `boost::python::api::enable_binary<boost::python::api::object, int, boost::python::api::object>::type boost::python::api::operator!=<boost::python::api::object, int>(boost::python::api::object const&, int const&)': /usr/include/boost/python/object_operators.hpp:95: undefined reference to `boost::python::api::operator!=(boost::python::api::object const&, boost::python::api::object const&)' glom/python_embed/glom_python.o: In function `expect_non_null<PyObject>': /usr/include/boost/python/errors.hpp:45: undefined reference to `boost::python::throw_error_already_set()' glom/libglom/.libs/libglom-1.14.so: undefined reference to `boost::python::converter::rvalue_from_python_stage1(_object*, boost::python::converter::registration const&)' glom/libglom/.libs/libglom-1.14.so: undefined reference to `boost::python::converter::rvalue_from_python_stage2(_object*, boost::python::converter::rvalue_from_python_stage1_data&, boost::python::converter::registration const&)' collect2: ld returned 1 exit status make[2]: *** [glom/glom] Error 1 make[2]: Leaving directory `/home/andre/svn-gnome/glom' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/andre/svn-gnome/glom' make: *** [all] Error 2
I guess it's just not linking to the boost library, though it's strange that the configure test didn't fail. Is there a -lboost* visible in the previous build output? What version of Fedora is this? Hopefully newer distro versions are more likely to have a version that we can use, with a library name that we can guess. If that is the problem then you might be able to hack our .m4 script to find the (probably weirdly named, changed by the distro, shared library): http://git.gnome.org/browse/glom/tree/macros/ax_boost_python_murrayc.m4 But it might not be worth it. I've read stuff that suggests that this will be more consistent since the latest boost version.
(In reply to comment #1) > I guess it's just not linking to the boost library, though it's strange that > the configure test didn't fail. Is there a -lboost* visible in the previous > build output? No. After "Leaving directory `/home/andre/svn-gnome/glom/docs/user-guide" there is no "-lboost" in the output. > What version of Fedora is this? Fedora 12. > Hopefully newer distro versions are more likely > to have a version that we can use, with a library name that we can guess. > > If that is the problem then you might be able to hack our .m4 script to find > the (probably weirdly named, changed by the distro, shared library): > http://git.gnome.org/browse/glom/tree/macros/ax_boost_python_murrayc.m4 That script says "Note that this expects boost/ to be at some top-level such as /usr/include/" but /usr/include/boost/ exists on Fedora 12.
(In reply to comment #2) > (In reply to comment #1) > > I guess it's just not linking to the boost library, though it's strange that > > the configure test didn't fail. Is there a -lboost* visible in the previous > > build output? > > No. After "Leaving directory `/home/andre/svn-gnome/glom/docs/user-guide" there > is no "-lboost" in the output. Can you please check config.status (in the top build directory) for the contents of the variable BOOST_PYTHON_LIBS? For me it is ‘-lboost_python’. It might be useful to simply attach the whole config.status, as that would enable use to see all the include paths and other flags that might affect the build.
Created attachment 158465 [details] config.status Looks like BOOST_PYTHON_LIBS did not get set here.
Could we see config.log too, please. And could you tell me what /usr/lib/libboost*python.so, or suchlike, you have.
Created attachment 158473 [details] config.log $:andre\> ls -al /usr/lib/libboost*py* lrwxrwxrwx. 1 root root 28 /usr/lib/libboost_python-mt.so -> libboost_python-mt.so.1.39.0 -rwxr-xr-x. 1 root root 298408 /usr/lib/libboost_python-mt.so.1.39.0 lrwxrwxrwx. 1 root root 28 /usr/lib/libboost_python-mt.so.5 -> libboost_python-mt.so.1.39.0 lrwxrwxrwx. 1 root root 25 /usr/lib/libboost_python.so -> libboost_python.so.1.39.0 -rwxr-xr-x. 1 root root 298404 /usr/lib/libboost_python.so.1.39.0 lrwxrwxrwx. 1 root root 25 /usr/lib/libboost_python.so.5 -> libboost_python.so.1.39.0
This might be just one failure before a later success, but maybe it's the real problem, from config.log: In file included from /usr/include/boost/python/detail/prefix.hpp:13, from /usr/include/boost/python/module.hpp:8, from conftest.cpp:35: /usr/include/boost/python/detail/wrap_python.hpp:50:23: error: pyconfig.h: No such file or directory I guess you have that pyconfig.h somewhere, but not where it expects it. Can you find it?
(In reply to comment #7) > I guess you have that pyconfig.h somewhere, but not where it expects it. Can > you find it? It's at /usr/include/python2.6/pyconfig.h
(In reply to comment #8) > (In reply to comment #7) > > I guess you have that pyconfig.h somewhere, but not where it expects it. Can > > you find it? > > It's at /usr/include/python2.6/pyconfig.h Yeah. It's there on my Ubuntu too.
http://git.gnome.org/browse/glom/commit/?id=1ece63f5313e7563f4bb732a6268751e10f52aaa fixed this for me. I can now compile glom.
I just pushed some further cleanups to the macro. Among other things, I made it fatally abort with an error message if boost::python could not be found.