Оказывается, это связано с тем, что cygwin
не блокирует каталог. Процесс сборки удалил каталог (rmdir /s u:\target
), а затем воссоздал его (mkdir u:\target
). У меня было окно bash, где этот каталог был текущим каталогом.
Когда процесс сборки (bat-файл) называется rmdir
, он завершился успешно , даже %errorlevel%
было 0. Однако последующий mkdir
завершился неудачно с Access is denied.
. К сожалению, процесс сборки проверяется только на ошибку rmdir
, а не mkdir
.
Благодаря handle.exe
я обнаружил, что папка используется bash.exe
, оттуда это было просто. Смена текущей директории окончательно удалила папку, а другой пошел на сборку, установил все правильно.
Я понимаю, что это unix-поведение для удаления файла только после того, как все обработанные к нему файлы закрыты, но его моделирование в окнах несколько не интуитивно понятно.