[pkg-boost-devel] Bug#444359: also breaks other packages

brian m. carlson sandals at crustytoothpaste.ath.cx
Tue Dec 11 21:16:12 UTC 2007


On Mon, Dec 10, 2007 at 07:34:27PM -0700, Martin Michlmayr wrote:
>boost also breaks other packages.  Brian, do you think you could take
>a look? (Although I suspect this might have been fixed upstream
>already as SUSE probably ran into it as well.)

Absolutely.  There are several unrelated problems here, and I'll go 
through them all.

>> gcc -pthread -fno-strict-aliasing -DNDEBUG -Wall -O3 -fPIC -I/usr/include/taglib -I/usr/include/python2.4 -c src/wrapper/basics.cpp -o build/temp.linux-x86_64-2.4/src/wrapper/basics.o

Generally, it's a bad idea to compile C++ code with gcc; this probably 
means that linking is also done with gcc (instead of g++) which can lead 
to subtle brokenness.

>> In file included from /usr/include/boost/python/class.hpp:29,
>>                  from /usr/include/boost/python.hpp:18,
>>                  from src/wrapper/common.hpp:1,
>>                  from src/wrapper/basics.cpp:11:
>> /usr/include/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'
>> /usr/include/boost/python/args_fwd.hpp:35: error: changes meaning of 'keywords' from 'struct boost::python::detail::keywords<0ul>'

Within a scope, each name can have only one meaning.  The latter header 
declares a function named keywords, but before that point the name 
refers to struct boost::python::detail::keywords<0ul>, but after it 
refers to the function.  Hence, before that point, invoking keywords() 
would create a new instance of an object, whereas afterward, it would 
invoke the function.  Changing the meaning of the name like that is not 
allowed.

This looks like a difficult problem, but the general solution is to 
either rename the function or move the declaration of the function to 
someplace where the other name isn't in scope.  The latter doesn't seem 
possible here, so the former looks like the only option.  I'd suggest 
talking to upstream and seeing what they're doing about this.

>> /usr/include/boost/type_traits/is_convertible.hpp:128: error: static data member 'boost::detail::is_convertible_basic_impl<<unnamed>::TagWrap*&, <unnamed>::TagWrap*>::_m_from' used, but not defined

static data members must be explicitly defined, not just declared.  In 
this case, _m_from is declared, but no explicit initialization has 
occurred.  The solution is to actually define the static data member.

The remainder of the errors are just instances of this last one.

-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 713 440 7475 | http://crustytoothpaste.ath.cx/~bmc | My opinion only
a typesetting engine: http://crustytoothpaste.ath.cx/~bmc/code/thwack
OpenPGP: RSA v4 4096b 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
Url : http://lists.alioth.debian.org/pipermail/pkg-boost-devel/attachments/20071211/20174151/attachment.pgp 


More information about the pkg-boost-devel mailing list