When emerging cppvm-1.5.0-r1 I get an error about creating directory "obj/LINUX". This only happens when doing a parallel make. If you 'make -j1' it completes file. It seems to be in a shell script included with the build called dirmk. Reproducible: Always Steps to Reproduce: 1. Set MAKEOPTS="-j2" in /etc/make.conf (or anything greater than 1) 2. emerge cppvm 3. Actual Results: emerge --verbose --debug cppvm Calculating dependencies Parent: None Depstring: sys-cluster/cppvm Candidates: ['sys-cluster/cppvm'] ebuild: sys-cluster/cppvm-1.5.0-r1 binpkg: None \ Parent: ebuild / sys-cluster/cppvm-1.5.0-r1 merge Depstring: >=sys-cluster/pvm-3.4.1-r1 Candidates: [] Exiting... ebuild / sys-cluster/cppvm-1.5.0-r1 merge Exiting... None ...done! >>> emerge (1 of 1) sys-cluster/cppvm-1.5.0-r1 to / + /usr/sbin/ebuild.sh clean + dyn_clean + rm -rf /var/tmp/portage/cppvm-1.5.0-r1/image + rm -rf /var/tmp/portage/cppvm-1.5.0-r1/build-info + has keeptemp autoaddcvs ccache sandbox + hasq keeptemp autoaddcvs ccache sandbox + local x + local me=keeptemp + shift + '[' autoaddcvs == keeptemp ']' + '[' ccache == keeptemp ']' + '[' sandbox == keeptemp ']' + return 1 + return 1 + rm -rf '/var/tmp/portage/cppvm-1.5.0-r1/temp/*' + has keepwork autoaddcvs ccache sandbox + hasq keepwork autoaddcvs ccache sandbox + local x + local me=keepwork + shift + '[' autoaddcvs == keepwork ']' + '[' ccache == keepwork ']' + '[' sandbox == keepwork ']' + return 1 + return 1 + rm -rf /var/tmp/portage/cppvm-1.5.0-r1/.compiled + rm -rf /var/tmp/portage/cppvm-1.5.0-r1/.unpacked + rm -rf /var/tmp/portage/cppvm-1.5.0-r1/work + '[' -f /var/tmp/portage/cppvm-1.5.0-r1/.unpacked ']' + true + set +x >>> md5 src_uri ;-) cppvm.tar.gz + /usr/sbin/ebuild.sh setup + dyn_setup + '[' GNU == Linux ']' + pkg_setup + return + set +x + dyn_unpack + trap abort_unpack SIGINT SIGQUIT + local newstuff=no + '[' -e /var/tmp/portage/cppvm-1.5.0-r1/work ']' + '[' -e /var/tmp/portage/cppvm-1.5.0-r1/work ']' + install -m0700 -d /var/tmp/portage/cppvm-1.5.0-r1/work + '[' -d /var/tmp/portage/cppvm-1.5.0-r1/work ']' + cd /var/tmp/portage/cppvm-1.5.0-r1/work + echo '>>> Unpacking source...' >>> Unpacking source... + src_unpack + unpack cppvm.tar.gz + local x + local y + local myfail + local tarvars + '[' GNU == BSD ']' + tarvars=--no-same-owner + myfail=failure unpacking cppvm.tar.gz ++ pwd + echo '>>> Unpacking cppvm.tar.gz to /var/tmp/portage/cppvm-1.5.0-r1/work' >>> Unpacking cppvm.tar.gz to /var/tmp/portage/cppvm-1.5.0-r1/work ++ echo cppvm.tar.gz ++ sed 's:.*\.\(tar\)\.[a-zA-Z0-9]*:\1:' + y=tar + '[' tar == tar ']' + tar --no-same-owner -xzf /usr/portage/distfiles/cppvm.tar.gz + touch /var/tmp/portage/cppvm-1.5.0-r1/.unpacked + echo '>>> Source unpacked.' >>> Source unpacked. + cd /var/tmp/portage/cppvm-1.5.0-r1 + trap SIGINT SIGQUIT + set +x + dyn_compile + trap abort_compile SIGINT SIGQUIT + '[' '-O3 -march=pentium3 -fprefetch-loop-arrays -funroll-loops -pipe' '!=' unset ']' + export CFLAGS + '[' '-O3 -march=pentium3 -fprefetch-loop-arrays -funroll-loops -pipe' '!=' unset ']' + export CXXFLAGS + '[' unset '!=' unset ']' + '[' unset '!=' unset ']' + '[' unset '!=' unset ']' + '[' unset '!=' unset ']' + '[' unset == unset ']' + export DISTCC_DIR=/var/tmp/.distcc + DISTCC_DIR=/var/tmp/.distcc + '[' '!' -z /var/tmp/.distcc ']' + addwrite /var/tmp/.distcc + export SANDBOX_WRITE=/dev/zero:/dev/fd/:/dev/null:/dev/pts/:/dev/vc/:/dev/tty:/tmp/:/de v/shm/ngpt:/var/log/scrollkeeper.log:/root/.gconfd/lock:/root/.bash_history:/usr /tmp/conftest:/usr/lib/conftest:/usr/tmp/cf:/usr/lib/cf:/var/tmp:/tmp:/var/tmp:/ tmp/:/var/tmp/:/dev/shm:/var/tmp:/root/.ccache:/var/tmp/.distcc + SANDBOX_WRITE=/dev/zero:/dev/fd/:/dev/null:/dev/pts/:/dev/vc/:/dev/tty:/tmp/:/de v/shm/ngpt:/var/log/scrollkeeper.log:/root/.gconfd/lock:/root/.bash_history:/usr /tmp/conftest:/usr/lib/conftest:/usr/tmp/cf:/usr/lib/cf:/var/tmp:/tmp:/var/tmp:/ tmp/:/var/tmp/:/dev/shm:/var/tmp:/root/.ccache:/var/tmp/.distcc + has noauto autoaddcvs ccache sandbox + cd /var/tmp/portage/cppvm-1.5.0-r1 + '[' '!' -e build-info ']' + mkdir build-info + cp /usr/portage/sys-cluster/cppvm/cppvm-1.5.0-r1.ebuild build-info/cppvm- 1.5.0-r1.ebuild + '[' /var/tmp/portage/cppvm-1.5.0-r1/.compiled -nt /var/tmp/portage/cppvm- 1.5.0-r1/work ']' + '[' -d /var/tmp/portage/cppvm-1.5.0-r1/work/cppvm-1.5.0 ']' + export S D + export PWORKDIR=/var/tmp/portage/cppvm-1.5.0-r1/work + PWORKDIR=/var/tmp/portage/cppvm-1.5.0-r1/work + src_compile + cd /var/tmp/portage/cppvm-1.5.0-r1/work/cppvm + emake creating subdirectory obj/LINUX creating subdirectory obj/LINUX mkdir: cannot create directory `obj/LINUX': File exists make: *** [obj/LINUX/pvm_arch.o] Error 1 make: *** Waiting for unfinished jobs.... make: *** Waiting for unfinished jobs.... Compiling src/pvm_arbo.cpp => obj/LINUX/pvm_arbo.o make: *** Waiting for unfinished jobs.... + diefunc src_compile 29 2 + local funcname=src_compile lineno=29 exitcode=2 + shift 3 + echo + echo '!!! ERROR: sys-cluster/cppvm-1.5.0-r1 failed.' !!! ERROR: sys-cluster/cppvm-1.5.0-r1 failed. + echo '!!! Function src_compile, Line 29, Exitcode 2' !!! Function src_compile, Line 29, Exitcode 2 + echo '!!! (no error message)' !!! (no error message) + echo + exit 1 Expected Results: Successful install of cppvm. This was done right after an 'emerge sync' and 'emerge portage'. If you switch MAKEOPTS to "-j1" it completes fine. Seems to be a race condition with multiple instances trying to check/create the obj/LINUX directory at the same time through the dirmk shell script (included in the .tar.gz file). Possibly switching the dirmk command with 'mkdir -p' could alleviate this problem? Please let me know if this is enough info. Unfortunately this is my first bug I've filed so I'm not sure if I've done it correctly.
Preventing parallel builds.