On Sat, 21 Aug 2010, Duncan wrote:
Brent Busby posted on Fri, 20 Aug 2010 13:37:15 -0500 as excerpted:
As an addendum to the above, I found this thread:
http://forums.gentoo.org/viewtopic-t-831467.html?
sid=8182796e790caf6a0c9dd589570c8a4f
It looks like the build for akode is trying to find libakode.so before
it's actually been finished compiling. I still don't know what to do
about that, or why it would be happening now under GCC 4.4 when it
wasn't before, unless it's a libtool "--as-needed" related thing.
IIRC, I had decided I didn't actually need akode for my usage long before
I ever switched to kde4, and thus haven't compiled it in... years, now. I
believe I was running into issues that lead to that investigation and
conclusion, that may be similar to what you're running into now. (FWIW, I
run ~arch and often unmask and run the latest gcc well before it's even
unmasked to ~arch, and am running gcc-4.5.1 now, so I'd have seen gcc-4.4
issues quite some time ago, tho I think this was long before that,
possibly as far back as the gcc-3.5 era.)
But, you mention a "new machine", presumably a multi-core machine, that
you're taking advantage of with MAKEOPTS=-jX, with X>1. While your
previous machines may also be multi-core, for various reasons they may
have used a different make job scheduling order and thus not run into the
problem. Or, perhaps it's a combination of that and --as-needed.
Actually, the new machine plus the two previous machines have all had
SMP. But I've never used a -j option on any of them, because the fact
that parallel compilation doesn't always work right has always scared me
away from it and made me worry I could be causing myself unnecessary
grief in the future with hard-to-diagnose issues. I'd love to use it to
get builds done faster, but the extra speed has never been worth it to
me if I can't entirely trust it.
So, I've never used any '-j' setting in MAKEOPTS on any system. Is it
possible that with GCC 4.4 I'm getting some kind of implied parallel
execution anyway though, requiring me to set '-j1' to override it for
this package?
I've also been
running --as-needed in my LDFLAGS, since 2006 or 2007 I'd guess, so it's
indeed quite conceivable that I'd have run into parallel make issues,
perhaps related to --as-needed, perhaps not, way back when I /was/ still
building akode, if the package is wont to trigger them, as it seems to be.
This is the first machine I've installed from scratch since
'--as-needed' became part of the desktop policy. It's never seen a
libtool environment that doesn't use it -- I don't know if that has
anything to do with this problem or not though.
So... try building the package with MAKEOPTS=-j1 and see if that works.
If so, it's a workaround; the makefile dependencies should really be fixed
properly, but that takes some make file (and possibly other) knowledge few
folks have, apparently even at the Gentoo developer level. A lot of the
time, therefore, such issues are simply worked around, with the ebuild
hard-coding MAKEOPTS=-j1. So assuming it works, that's likely the change
that'll happen -- make the ebuild hardcode MAKEOPTS=-j1.
Just tried it, unfortunately, it did the same thing:
Making all in src_resampler
make[4]: Entering directory
`/var/tmp/portage/media-libs/akode-2.0.2/work/akode-2.0.2/akode/plugins/src_resampler'
if /bin/sh ../../../libtool --silent --tag=CXX --mode=compile
x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../../..
-I../../../akode/lib -I../../../akode/lib -I../../../akode/lib
-I./mppdec -O2 -march=athlon64 -pipe -MT src_resampler.lo -MD -MP
-MF ".deps/src_resampler.Tpo" -c -o src_resampler.lo src_resampler.cpp;
\
then mv -f ".deps/src_resampler.Tpo" ".deps/src_resampler.Plo";
else rm -f ".deps/src_resampler.Tpo"; exit 1; fi
/bin/sh ../../../libtool --silent --tag=CXX --mode=link
x86_64-pc-linux-gnu-g++ -O2 -march=athlon64 -pipe -Wl,-O1
-Wl,--as-needed -o libakode_src_resampler.la -rpath /usr/lib64 -module
-avoid-version -no-undefined -Wl,--no-undefined
-Wl,--allow-shlib-undefined src_resampler.lo ../../lib/libakode.la
-lsamplerate
make[4]: Leaving directory
`/var/tmp/portage/media-libs/akode-2.0.2/work/akode-2.0.2/akode/plugins/src_resampler'
make[4]: Entering directory
`/var/tmp/portage/media-libs/akode-2.0.2/work/akode-2.0.2/akode/plugins'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory
`/var/tmp/portage/media-libs/akode-2.0.2/work/akode-2.0.2/akode/plugins'
make[3]: Leaving directory
`/var/tmp/portage/media-libs/akode-2.0.2/work/akode-2.0.2/akode/plugins'
Making all in akodeplay
make[3]: Entering directory
`/var/tmp/portage/media-libs/akode-2.0.2/work/akode-2.0.2/akode/akodeplay'
if x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../..
-I../../akode/lib -I../../akode/lib -I../../akode/lib -O2
-march=athlon64 -pipe -MT akodeplay.o -MD -MP -MF ".deps/akodeplay.Tpo"
-c -o akodeplay.o akodeplay.cpp; \
then mv -f ".deps/akodeplay.Tpo" ".deps/akodeplay.Po"; else rm
-f ".deps/akodeplay.Tpo"; exit 1; fi
/bin/sh ../../libtool --silent --tag=CXX --mode=link
x86_64-pc-linux-gnu-g++ -O2 -march=athlon64 -pipe -Wl,-O1
-Wl,--as-needed -o akodeplay akodeplay.o ../lib/libakode.la
x86_64-pc-linux-gnu-g++: ../lib/.libs/libakode.so: No such file or
directory
make[3]: *** [akodeplay] Error 1
(FWIW, I'm not going to discount the reasons many still run kde3, as
until 4.4 and better, 4.5, despite official kde announcements to the
contrary, kde4 was simply too bug riddled to be reasonably usable, and
I spent well over 100 hours finding workaround, often scripting my
own, and otherwise making an otherwise broken kde-4.2.4 work for me
when I switched so I KNOW this to be true, but one thing I *DO*
appreciate about kde4 is how much more effectively it parallel builds
in comparison to kde3, therefore taking about half the build time on a
4-core including my dual-dual-core system, compared to kde3. It's
NICE to be able to do a kde4 upgrade in the 4 hours or so it takes
now, depending on how much is new code and how much is not in ccache,
compared to the entire day, 6-8 hours, if there weren't other
problems, it'd take to do the same with kde3.)
Yeah, but the problem with it to me is it just isn't the same desktop
anymore. Most of it seems to be imitating Windows Vista/7, with a few
things derived from MacOS/X here and there (like the new Control Panel,
which strongly resembles the Mac's System Preferences app). KDE 3 used
to let you make desktops that were totally different.
My own desktop actually resembles -- and this will probably puzzle some
people -- CDE from HP-UX. I'm one of those strange people who actually
like an X11 desktop to look like an X11 desktop. I find that most
"modern" desktops from Microsoft look and feel like a credit card
advertisement, while most modern desktops from Apple look like a 70's
car stereo (brushed chrome everywhere!). It seems to be very out of
fashion now to prefer one's computer look and act like...gasp!...a
computer, but that's what I like, and up until KDE 4, KDE was providing
a very nice CDE emulation. (Actually, KDE 3's imitation of CDE is quite
a bit more functional that real CDE...no shock there, I suppose.)
Plus there's the fact that KDE 4, even now that it's more stable, seems
to use resources like we had them to burn. Actually, on modern
machines, that might be true, but I run studio recording apps, which is
a genre of application where more bandwidth equals more tracks, more
plugins, more disk i/o, etc. It's one of the few remaining types of
apps these days that are *not* just leaving your system idle most of the
time, and really do want all you can give them. People who are running
pro audio apps do not have CPU/RAM to burn, ever, even on a fast
machine! If you are running such programs, and your machine has more to
give, you want to give it to the apps, not the desktop, no matter how
*much* more that is.
So in general, KDE 4 has turned me away. I'll pass on its Windows Vista
look and feel, its enormous resource footprint, and the way they made
keeping any semblance of my current CDE-ish KDE desktop unsupportable.
So for testing and to work around the issue yourself until it's fixed
in the ebuild, use the env file. Once either a proper fix or at least
the MAKEOPTS=j1 workaround (assuming it fixes the problem) is in the
ebuild, you can remove the env file workaround. No more having to
change global make.conf settings for a single package, then having to
change them back! =:^)
Thanks for the help, but that didn't seem to fix it. I never use '-j'
options anyway. I'll probably start if they ever start working all the
time.
--
+ Brent A. Busby + "We've all heard that a million monkeys
+ UNIX Systems Admin + banging on a million typewriters will
+ University of Chicago + eventually reproduce the entire works of
+ Physical Sciences Div. + Shakespeare. Now, thanks to the Internet,
+ James Franck Institute + we know this is not true." -Robert Wilensky