[gentoo-user] Re: glibmm 2.20.1 emerge fails to compile

2009-09-28 Thread walt

On 09/27/2009 09:38 PM, Grant Edwards wrote:

I tried doing an upgrade (the usual emerge -auvND world), and
it choked on glibmm 2.20.1.  The compile failed the basic error
seems to be this:

   generate_defs_glib.o: In function `main':
   generate_defs_glib.cc:(.text+0x6b): undefined reference to `std::basic_ostreamchar, std::char_traitschar  
  std::__ostream_insertchar, std::char_traitschar  (std::basic_ostreamchar, 
std::char_traitschar  , char const*, int)'

I've done a revdep-rebuild to make sure things are consistent,
and it says things are OK.  Google doesn't seem to know that
error message, and I couldn't find anything relevent at
bugs.gentoo.org.

The only thing I can think of is that it has to do with some
libraries having been compiled with an older version of gcc,
but I'm not sure how to check for that...


Those undefined references are supplied by libstdc++, so it looks like
you have a classic case of duelling library versions.

The error messages mention gcc-3.4.6, which is actually quite old now,
so perhaps you've switched to gcc-4.x.x now?

The fix is to go back and re-emerge all packages that linked against the
old libstdc++.  One way to find them is to run fix_libtool_files.sh and
note which ones get fixed.  You still need to re-emerge those packages,
though, if you're now using gcc-4.x

I would actually just grep through all the .la files for 3.4.6 (assuming
that's your *old* version of gcc) and re-emerge the packages that own those
files.  Maybe someone else knows an easier way.




[gentoo-user] Re: glibmm 2.20.1 emerge fails to compile

2009-09-28 Thread Grant Edwards
On 2009-09-28, walt w41...@gmail.com wrote:
 On 09/27/2009 09:38 PM, Grant Edwards wrote:
 I tried doing an upgrade (the usual emerge -auvND world), and
 it choked on glibmm 2.20.1.  The compile failed the basic error
 seems to be this:

generate_defs_glib.o: In function `main':
generate_defs_glib.cc:(.text+0x6b): undefined reference to 
 `std::basic_ostreamchar, std::char_traitschar
 std::__ostream_insertchar, std::char_traitschar  
 (std::basic_ostreamchar, std::char_traitschar  , char const*, int)'

[...]

 Those undefined references are supplied by libstdc++, so it
 looks like you have a classic case of duelling library
 versions.

 The error messages mention gcc-3.4.6, which is actually quite
 old now, so perhaps you've switched to gcc-4.x.x now?

Yes!  I suspected that was the issue, but I had missed noticing
the 3.4.6 in some of the libstdc++ paths.

 The fix is to go back and re-emerge all packages that linked
 against the old libstdc++.

Thanks.  I figured it was something like that.

 One way to find them is to run fix_libtool_files.sh and note
 which ones get fixed.  You still need to re-emerge those
 packages, though, if you're now using gcc-4.x

Yes, I'm now using gcc 4.

 I would actually just grep through all the .la files for
 3.4.6 (assuming that's your *old* version of gcc) and
 re-emerge the packages that own those files.  Maybe someone
 else knows an easier way.

I'll try fix_libtool_files.sh first, then go from there.

-- 
Grant