Subject: bug#10470: MSYS: race in directory access?

From: Stefano Lattarini <[email-masked]>
Date: Tue, 10 Jan 2012 18:03:09 +0100

>> It would probably be worthwhile to try to understand why this is the case.
>> As a wild guess, would this work?
>>
>>   - ( sleep 1 ) &
>>   + sh -c "cd '$abs_builddir'; sleep 1" &
> 
> No, fails in the same way as the original.
>
Sorry, by bad, I meant this:  sh -c "cd '$ac_abs_srcdir'; sleep 1"

>> We could enhance your original workaround like this:
>>
>>  am__remove_distdir = \
>>    { test ! -d "$(distdir)" \
>>      || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
>> -         && rm -fr "$(distdir)"; }; }
>> +         && if rm -fr "$(distdir)"; then :; else \
>> +## On MSYS (1.0.17) it is not possible to remove a directory that is
>> +## in use; so, if the first rm fails, we sleep some seconds and retry,
>> +## to give pending processes some time to exit and "release" the
>> +## directory before we removed.  See automake bug#10470.
>> +              sleep 5 && rm -fr "$(distdir)"; fi; }; }
>>  am__post_remove_distdir = $(am__remove_distdir)
>>  endif %?TOPDIR_P%
> 
> This works, best so far!  Committable, if you ask me.
>
I agree, but first I'd like to see if we manage to resolve the issue into
sanity.m4 itself.  If we fail, the above workaround will be good enough.

Thanks,
  Stefano