I am trying to emerge kde 3.1.5 using distcc. in my make.conf file, I have: ... MAKEOPTS="-j9" ... FEATURES="ccache buildpkg distcc" ... This works for most ebuilds, and it uses all 8 cpu's that are available on my network. However, the kde ebuilds do not use distcc top and ps show that only one gcc process is being called at a time. It seems the make is not being called with -j9. If you see the output from the ps command (down), make is being run as: make -j9 -j1 -j1 -j1 so it is overriding my -j9 switch. I think it should work if you removed the -j1 -j1 -j1 Reproducible: Always Steps to Reproduce: 1. emerge kde and on another shell 2. DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text 2 Actual Results: root@spike:~> DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text 2 31212 Compile kpoti_impl.tmp.spike.wavecode. localhost[0] 31371 Compile localhost[0] 31378 Compile kpoti.tmp.spike.wavecode.com.3 localhost[0] ... root@spike:~> ps u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 5695 0.0 0.0 1544 492 tty1 S Jan14 0:00 /sbin/agetty 38400 tty1 linux root 5696 0.0 0.0 1544 484 tty2 S Jan14 0:00 /sbin/agetty 38400 tty2 linux root 5697 0.0 0.0 1544 484 tty3 S Jan14 0:00 /sbin/agetty 38400 tty3 linux root 5698 0.0 0.0 1544 484 tty4 S Jan14 0:00 /sbin/agetty 38400 tty4 linux root 5699 0.0 0.0 1544 484 tty5 S Jan14 0:00 /sbin/agetty 38400 tty5 linux root 5700 0.0 0.0 1544 484 tty6 S Jan14 0:00 /sbin/agetty 38400 tty6 linux root 25081 0.0 0.0 2416 580 pts/5 S Jan16 0:00 su - root 25084 0.0 0.1 2388 1184 pts/5 S Jan16 0:00 -bash root 14113 0.0 0.1 2416 1052 pts/3 S 14:08 0:00 su - root 14122 0.0 0.1 2384 1344 pts/3 S 14:08 0:00 -bash root 31024 0.0 0.0 1488 396 pts/5 S 14:20 0:00 xargs emerge -u --oneshot root 31040 0.7 1.1 14836 12076 pts/5 SN 14:20 0:12 /usr/bin/python root 31579 0.0 0.0 1520 416 pts/5 SN 14:20 0:00 [kdemultimedia-3.1.5] sandbox /usr/sbin/ebuild.sh compile root 31580 0.0 0.1 2768 1708 pts/5 SN 14:20 0:00 /bin/bash /usr/sbin/ebuild.sh compile root 9828 0.0 0.1 2248 1120 pts/5 SN 14:24 0:00 /bin/bash /usr/lib/portage/bin/emake root 9829 0.0 0.0 2252 988 pts/5 SN 14:24 0:00 make -j9 -j1 -j1 -j1 root 9978 0.0 0.0 2252 1000 pts/5 SN 14:24 0:00 make all-recursive root 9983 0.0 0.1 2224 1064 pts/5 SN 14:24 0:00 /bin/sh -c set fnord $MAKEFLAGS; amf=$2; dot_seen=no; target=`echo all-recursive | sed s/-recu root 13992 0.0 0.1 2224 1072 pts/5 SN 14:25 0:00 /bin/sh -c set fnord $MAKEFLAGS; amf=$2; dot_seen=no; target=`echo all-recursive | sed s/-recu root 13993 0.0 0.0 2252 996 pts/5 SN 14:25 0:00 make all root 13994 0.0 0.1 2224 1064 pts/5 SN 14:25 0:00 /bin/sh -c set fnord $MAKEFLAGS; amf=$2; dot_seen=no; target=`echo all-recursive | sed s/-recu root 28496 0.0 0.1 2416 1052 pts/4 S 14:30 0:00 su - root 28505 0.0 0.1 2388 1308 pts/4 S 14:30 0:00 -bash root 31249 0.0 0.0 1772 616 pts/4 S 14:31 0:00 distccmon-text 2 root 18473 0.0 0.1 2224 1072 pts/5 SN 14:49 0:00 /bin/sh -c set fnord $MAKEFLAGS; amf=$2; dot_seen=no; target=`echo all-recursive | sed s/-recu root 18474 0.0 0.0 2252 1000 pts/5 SN 14:49 0:00 make all root 18872 0.0 0.1 2416 1052 pts/2 S 14:50 0:00 su - root 18885 0.0 0.1 2384 1316 pts/2 S 14:50 0:00 -bash root 19086 0.0 0.1 2916 1828 pts/5 SN 14:51 0:03 /bin/sh ../../libtool --silent --mode=link --tag=CXX g++ -DNDEBUG -DNO_DEBUG -O2 -O2 -march=pent root 20912 0.0 0.0 1916 560 pts/5 SN 14:51 0:00 /usr/lib/distcc/bin/g++ -DNDEBUG -DNO_DEBUG -O2 -O2 -march=pentium3 -pipe -mmmx -fstack-protecto root 20913 0.0 0.0 1636 608 pts/5 SN 14:51 0:00 /usr/i686-pc-linux-gnu/gcc-bin/3.3/g++ -DNDEBUG -DNO_DEBUG -O2 -O2 -march=pentium3 -pipe -mmmx - root 20914 0.0 0.0 1728 612 pts/5 SN 14:51 0:00 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /li root 20915 0.0 1.8 21512 18840 pts/5 RN 14:51 0:09 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld --eh-frame-hdr -m root 20979 0.0 0.0 2488 836 pts/2 R 14:51 0:00 ps u Expected Results: Expect up to 9 g++ proccess running and being distributed between the machines on my network with distcc. root@spike:~> emerge info Portage 2.0.50_pre16 (default-x86-1.4, gcc-3.3.2, glibc-2.3.3_pre20031222-r0,2.3.3_pre20040117-r0, 2.6.1-gentoo) ================================================================= System uname: 2.6.1-gentoo i686 Pentium III (Coppermine) Gentoo Base System version 1.4.3.12 distcc 2.12.1 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] ccache version 2.3 [enabled] Autoconf: sys-devel/autoconf-2.59 Automake: sys-devel/automake-1.7.8 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CFLAGS="-O3 -march=pentium3 -pipe -mmmx -fstack-protector" CHOST="i686-pc-linux-gnu" COMPILER="gcc3" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.1/share/config /usr/kde/3/share/config /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/bind /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" CXXFLAGS="-O3 -march=pentium3 -pipe -mmmx -fstack-protector" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs buildpkg ccache distcc sandbox" GENTOO_MIRRORS="http://gentoo.oregonstate.edu http://distro.ibiblio.org/pub/Linux/distributions/gentoo" MAKEOPTS="-j9" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="X X509 acpi acpi4linux alsa amd apache2 apm arts artswrappersuid autofs avi berkdb composite crypt cups directfb dnd doc dvd emacs encode esd fbcon foomaticdb gd gd-external gdbm gif gpm imagemagick imlib java jbig jpeg kde lcms libg++ libwww mad mikmod motif mozilla mozsvg mpeg music mysql ncurses nls oci8 odbc oggvorbis opengl oss pam pdflib perl php pic png python qt quicktime radeon rage128 readline samba sdl slang spell sse ssl svga tcltk tcpd tetex tiff truetype type1 usb wmf wxwindows x86 xml2 xmms xv xvid zlib"
looking at the ebuild, it seems it was made on purpouse: ... # make -j2 fails, at least on ppc export MAKEOPTS="$MAKEOPTS -j1" ... This is anoying, but if it fails to compile it is worse, ohh well. I would love for this to be fixed as it is really painfull to compile kde with just one cpu.
This may be the case with a certain ebuild, but not all of the kde ebuilds, particularly the larger ones like kdelibs and kdebase. I distribute them just fine.
They all use distcc - some had set makeopts to -j1, but those are fixed or should be fixed.