[perl #59680] Build error: tools/build/ops2pm.pl: Could not mkdir /home/moritz/src/parrot/lib/Parrot/OpLib: File exists!

Mark Glines mark at glines.org
Tue Nov 25 19:30:33 UTC 2008


Will Coleda wrote:
> On Tue, Nov 25, 2008 at 2:18 PM, Mark Glines via RT
> <parrotbug-followup at parrotcode.org> wrote:
>> On Sat Oct 18 12:13:51 2008, chromatic at wgz.org wrote:
>>> 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.
>> Hi,
>>
>> I'm still seeing this race occur, about once every hundred builds.
>> r33196 contains a simple workaround (if mkpath failed, but the directory
>> now exists, someone else created it, so silently continue).
>>
>> Mark
> 
> Can we avoid this issue by just shipping an empty svn directory?

That's one possibility, maybe with a ".keep" file or whatever to keep 
git happy.  Another solution I considered is to make the ops rules in 
the Makefile depend on some "make-the-directory" rule, to keep the 
ordering straight.

However, r33196 seemed like the simplest possible solution, and it won't 
have any effect at all when the race condition didn't occur (which seems 
like about 99% of the time), so that's the one I checked in.  Feel free 
to revert it if a different solution is preferred.

Mark



More information about the parrot-dev mailing list