Here is what I see at the point of failure: make[4]: Entering directory `/var/tmp/portage/kdemultimedia-3.2.0_beta1/work/kdemultimedia-3.1.93/arts/midi' /usr/kde/3.2/bin/mcopidl -t -I/usr/kde/3.2/include/arts ./artsmidi.idl /bin/sh ../../libtool --silent --mode=compile --tag=CXX g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I../../arts/runtime -I./freeverb -I/usr/kde/3.2/include/arts -I/usr/kde/3.2/include -I/usr/qt/3/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -DNDEBUG -DNO_DEBUG -O2 -march=pentium3 -O2 -pipe -fomit-frame-pointer -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -c -o midimanager_impl.lo `test -f 'midimanager_impl.cc' || echo './'`midimanager_impl.cc rm: cannot remove `': Invalid argument In file included from midimanager_impl.cc:23: midimanager_impl.h:26:22: artsmidi.h: No such file or directory In file included from midimanager_impl.cc:23: midimanager_impl.h:32: syntax error before `,' token midimanager_impl.h:37: syntax error before `;' token yet, artsmidi.h exists. My guess was that this was caused by a race issue between the process that creates artsmidi.h and the process that compiles a file that depends on artsmidi.h. Indeed, I restart the make by hand and it worked just fine. I suspect that the fix consists of adding the proper explicit dependencies on artsmidi.h Reproducible: Always Steps to Reproduce: 1. 2. 3. Portage 2.0.49-r15 (default-x86-1.4, gcc-3.2.3, glibc-2.3.2-r1, 2.4.20-gentoo-r2) ================================================================= System uname: 2.4.20-gentoo-r2 i686 Intel(R) Pentium(R) III Mobile CPU 1200MHz Gentoo Base System version 1.4.3.10p1 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer" CHOST="i686-pc-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-march=pentium3 -O2 -pipe -fomit-frame-pointer" DISTDIR="/usr/portage/distfiles" FEATURES="sandbox ccache autoaddcvs" GENTOO_MIRRORS="http://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo/ http://gentoo.oregonstate.edu/ http://www.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PKGUSE="( =net-www/mozilla-1.4-r4 => gtk2 )" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/project/ARCH/Work/duchier@loria.home--portage/config/portage" SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" USE="x86 oss apm avi crypt cups encode foomaticdb gif jpeg libg++ mad mikmod mpeg ncurses nls pdflib png quicktime spell truetype xml2 xmms xv zlib gtkhtml alsa gdbm berkdb slang readline arts tetex aalib bonobo svga tcltk java guile mysql X sdl gpm tcpd pam libwww ssl perl python esd imlib oggvorbis gnome gtk qt kde motif opengl mozilla dvd sse ldap mozsvg"
I had a similar error for kdemultimedia-3.2.0 when I compiled new KDE from text console. I also got some strange syntax failures. Unfortunately the redirected log file from the build is scrambled and does not show the exact error. I tried this for four times and the build stopped every time with the same problem. Now, it got really strange when I started my half-compiled kde 3.2.0 and started the build in the Konsole ... now kdemultimedia was successful. Therefore I suppose also race conditions during the compilation.
*** Bug 42318 has been marked as a duplicate of this bug. ***
The following bugs are most like the same issue: bug # 40474 bug # 42825 Try the following: # MAKEOPTS="-j1" emerge arts kdelibs kdemultimedia kde On _some_ machines, there is probably a 'race' condition invoked when running "-j2" and higher. I had problems on 2 machines of 7. For both machines, the above solved my problem.
I've also hit this bug with kdemultimedia-3.2.1 The ebuild failed with the following error; however, when I went into the build directory and typed 'make' to continue where it left off, the problem disappeared. I'm using distcc for compiles with -j4 passed to make and 2 machines doing the compile. make[3]: Entering directory `/home/portage/tmp/portage/kdemultimedia-3.2.1/work/ kdemultimedia-3.2.1/kscd' /usr/qt/3/bin/uic -L /usr/kde/3.2/lib/kde3/plugins/designer -nounload -o panel.h ./panel.ui /usr/qt/3/bin/uic -L /usr/kde/3.2/lib/kde3/plugins/designer -nounload -o configW idgetUI.h ./configWidgetUI.ui /usr/qt/3/bin/moc ./kvolumecontrol.h -o kvolumecontrol.moc /usr/qt/3/bin/moc ./kscd.h -o kscd.moc /usr/qt/3/bin/moc ./configdlg.h -o configdlg.moc /usr/qt/3/bin/moc ./ledlamp.h -o ledlamp.moc /usr/qt/3/bin/moc ./CDDialogData.h -o CDDialogData.moc /usr/qt/3/bin/moc ./CDDialog.h -o CDDialog.moc /usr/qt/3/bin/moc ./docking.h -o docking.moc /usr/qt/3/bin/moc ./inexact.h -o inexact.moc /usr/qt/3/bin/moc ./mgconfdlg.h -o mgconfdlg.moc /usr/qt/3/bin/moc ./bwlednum.h -o bwlednum.moc /usr/kde/3.2/bin/dcopidl ./kscd.h > kscd.kidl || ( rm -f kscd.kidl ; false ) /usr/kde/3.2/bin/dcopidl2cpp --c++-suffix cpp --no-signals --no-stub kscd.kidl g++ -DHAVE_CONFIG_H -I. -I. -I.. -I.. -I/usr/kde/3.2/include -I/usr/qt/3/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -DNDEBUG -DNO_DEBUG - O2 -march=athlon -O2 -pipe -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN _NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -c -o kscd_skel.o `test -f 'kscd_skel.cpp' || echo './'`kscd_skel.cpp In file included from kscd_skel.cpp:9: kscd.h:110: error: parse error before `,' token kscd.h:112: error: virtual outside class declaration kscd.h:112: error: non-member function `const char* className()' cannot have ` const' method qualifier kscd.h:112: error: virtual outside class declaration kscd.h:112: error: virtual outside class declaration kscd.h:112: error: virtual outside class declaration kscd.h:112: error: virtual outside class declaration kscd.h: In function `QObject* qObject()': kscd.h:112: error: invalid use of `this' in non-member function kscd.h: At global scope: kscd.h:112: error: parse error before `private' kscd.h:113: error: parse error before `private' kscd.h: In function `void stop()': kscd.h:121: error: `stopClicked' undeclared (first use this function) kscd.h:121: error: (Each undeclared identifier is reported only once for each function it appears in.) kscd.h: In function `void previous()': kscd.h:122: error: `prevClicked' undeclared (first use this function) kscd.h: In function `void next()': kscd.h:123: error: `nextClicked' undeclared (first use this function) kscd.h: In function `void jumpTo(int)': kscd.h:124: error: `jumpToTime' undeclared (first use this function) kscd.h: In function `void eject()': kscd.h:125: error: `ejectClicked' undeclared (first use this function) kscd.h: In function `void quit()': kscd.h:126: error: `quitClicked' undeclared (first use this function) kscd.h: In function `void toggleLoop()': kscd.h:127: error: `loopClicked' undeclared (first use this function) kscd.h: In function `void toggleShuffle()': kscd.h:128: error: `randomSelected' undeclared (first use this function) kscd.h: In function `void toggleTimeDisplay()': kscd.h:129: error: `cycleplaytimemode' undeclared (first use this function) kscd.h: In function `void cddbDialog()': kscd.h:130: error: `CDDialogSelected' undeclared (first use this function) kscd.h: In function `void optionDialog()': kscd.h:131: error: `showConfig' undeclared (first use this function) kscd.h: In function `void setTrack(int)': kscd.h:132: error: `trackSelected' undeclared (first use this function) kscd.h: In function `int getVolume()': kscd.h:134: error: `volume' undeclared (first use this function) kscd.h: At global scope: kscd.h:141: error: parse error before `public' kscd.h:143: error: destructors must be member functions kscd.h:145: error: virtual outside class declaration kscd.h: In function `bool dock()': kscd.h:147: error: `docking' undeclared (first use this function) kscd.h: In function `bool stopOnExit()': kscd.h:149: error: `stopexit' undeclared (first use this function) kscd.h: In function `bool autoPlay()': kscd.h:151: error: `autoplay' undeclared (first use this function) kscd.h: In function `bool ejectOnFinish()': kscd.h:153: error: `ejectonfinish' undeclared (first use this function) kscd.h: In function `unsigned int skipInterval()': kscd.h:156: error: `skipDelta' undeclared (first use this function) kscd.h: In function `QColor ledColor()': kscd.h:158: error: `led_color' undeclared (first use this function) kscd.h: In function `QColor bgColor()': kscd.h:159: error: `background_color' undeclared (first use this function) kscd.h: In function `QString devicePath()': kscd.h:162: error: `cd_device_str' undeclared (first use this function) kscd.h: In function `QString audioSystem()': kscd.h:163: error: `audio_system_str' undeclared (first use this function) kscd.h: In function `QString audioDevice()': kscd.h:165: error: `audio_systems_list' undeclared (first use this function) kscd.h: At global scope: kscd.h:167: error: parse error before `protected' kscd.h:171: error: parse error before `public' kscd.h:174: error: `void randomSelected()' used prior to declaration kscd.h:179: error: `void nextClicked()' used prior to declaration kscd.h:180: error: `void prevClicked()' used prior to declaration kscd.h:181: error: `void stopClicked()' used prior to declaration kscd.h:182: error: `void ejectClicked()' used prior to declaration kscd.h:183: error: `void jumpToTime(int)' used prior to declaration kscd.h:184: error: `void quitClicked()' used prior to declaration kscd.h:187: error: `void loopClicked()' used prior to declaration kscd.h:189: error: `void trackSelected(int)' used prior to declaration kscd.h:190: error: `void showConfig()' used prior to declaration kscd.h:197: error: `void cycleplaytimemode()' used prior to declaration kscd.h:207: error: parse error before `protected' kscd.h:212: error: parse error before `protected' kscd.h:233: error: parse error before `private' kscd.h:243: error: `QColor background_color' used prior to declaration kscd.h:244: error: `QColor led_color' used prior to declaration kscd.h:266: error: `unsigned int skipDelta' used prior to declaration kscd.h:267: error: `int volume' used prior to declaration kscd.h:277: error: `QString cd_device_str' used prior to declaration kscd.h:278: error: `QString audio_system_str' used prior to declaration kscd.h:279: error: `QString audio_device_str' used prior to declaration kscd.h:280: error: `QStringList audio_systems_list' used prior to declaration kscd.h:314: error: `bool docking' used prior to declaration kscd.h:315: error: `bool autoplay' used prior to declaration kscd.h:316: error: `bool stopexit' used prior to declaration kscd.h:317: error: `bool ejectonfinish' used prior to declaration kscd.h:321: error: parse error before `public' kscd.h:326: error: `void CDDialogSelected()' used prior to declaration kscd.h:330: error: parse error before `private' kscd.h:341: error: parse error before `}' token kscd_skel.cpp:63: error: invalid use of undefined type `class KSCD' kscd.h:110: error: forward declaration of `class KSCD' kscd_skel.cpp: In member function `bool KSCD::process(const QCString&, const QByteArray&, QCString&, QByteArray&)': kscd_skel.cpp:74: error: `play' undeclared (first use this function) kscd_skel.cpp:168: error: cannot call member function `virtual bool DCOPObject::process(const QCString&, const QByteArray&, QCString&, QByteArray&)' without object kscd_skel.cpp: At global scope: kscd_skel.cpp:174: error: invalid use of undefined type `class KSCD' kscd.h:110: error: forward declaration of `class KSCD' kscd_skel.cpp: In member function `QCStringList KSCD::interfaces()': kscd_skel.cpp:175: error: cannot call member function `virtual QCStringList DCOPObject::interfaces()' without object kscd_skel.cpp: At global scope: kscd_skel.cpp:181: error: invalid use of undefined type `class KSCD' kscd.h:110: error: forward declaration of `class KSCD' kscd_skel.cpp: In member function `QCStringList KSCD::functions()': kscd_skel.cpp:182: error: cannot call member function `virtual QCStringList DCOPObject::functions()' without object distcc[12466] ERROR: compile on siegfried failed make[3]: *** [kscd_skel.o] Error 1 make[3]: *** Waiting for unfinished jobs.... Session management error: Could not open network socket Session management error: Could not open network socket make[3]: Leaving directory `/home/portage/tmp/portage/kdemultimedia-3.2.1/work/kdemultimedia-3.2.1/kscd' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/home/portage/tmp/portage/kdemultimedia-3.2.1/work/kdemultimedia-3.2.1/kscd' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/portage/tmp/portage/kdemultimedia-3.2.1/work/kdemultimedia-3.2.1' make: *** [all] Error 2 !!! ERROR: kde-base/kdemultimedia-3.2.1 failed. !!! Function kde_src_compile, Line 128, Exitcode 2 !!! died running emake, kde_src_compile:make
this is now fixed in the 3.2.1 ebuild and upstream.
caleb, I am getting the exact same error, while building an image for mass deployment, this time using the 2.6 headers and nptl. i am just curious what is causing this error, because the last time i had kde 3.2.1 built it was in a distcc environment with MAKEOPTS="-j25" (yes -j25, 12 pIV boxen with ht!) and it went flawlessly. I am not using distcc this time around, i just droped MAKEOPTS from "-j3" to "-j1", if it doesn't work will clear ccache and try again. will let you know how it goes.
caleb, just to let you know that setting MAKEOPTS="-j1" and re-emerging did the trick, did not need to clear the ccache. i am still wondering though, how i managed to cruise through this ebuild some week or so ago in a distcc environment with MAKEOPTS="-j25" ?? mystery?? thanks for all your much appreciated hard work in supporting the kde, qt ebuilds... best regards
There is no predictable path that is followed by make to go through a broken dependency graph (which almost all decomposed makefiles lead to). As such it can work one time and not the other. As a distcc environment is significantly different from a single host it is more than likely that the path followed was different and did not lead to (or appear to lead to) miscompilation.
It should technically be fixed now - I have patched the ebuild and worked upstream to get the fix incorporated in the Makefile to generate the proper dependencies.