On Tuesday 07 October 2008 02:54:55 Moritz Lenz wrote: > I've just updated from r31667 to HEAD (r31745), and ran my usual build > incantation: > > $ make realclean; perl Configure --cc='ccache gcc' && make -j 2 test > > This time it died: > > find_sub_not_null_p_s 1391 experimental, not in ops.num > find_sub_not_null_p_sc 1392 experimental, not in ops.num > tools/build/ops2pm.pl: Could not mkdir > /home/moritz/src/parrot/lib/Parrot/OpLib: File exists! > make: *** [include/parrot/oplib/ops.h] Error 17 > make: *** Waiting for unfinished jobs.... > > Running 'make realclean' again solved the problem, but I think this > should never be necessary.
That's an odd occurrence. Parrot::Ops2pm::Utils::new has: if ( !$flagref->{dynamic} && !-d $incdir ) { mkdir( $incdir, 0755 ) or die "ops2c.pl: Could not mkdir $incdir $!!\n"; } There's a race condition, if that directory doesn't exist and multiple processes execute that code simultaneously. Fortunately, Parrot::Ops2pm::print_module() creates that directly when it writes Parrot::OpLib::core -- the only file in that directory. Fixed in r32016. -- c