We have encountered a number of cases where long running MSBUILD processes can hold onto log files, preventing later build requests from completing. According to: http://stackoverflow.com/questions/3919892/msbuild-exe-staying-open-locking-files and: http://stackoverflow.com/questions/13510465/the-mystery-of-stuck-inactive-msbuild-exe-processes-locked-stylecop-dll-nuget ... you can control MSBUILD's launch behavior by passing a flag at startup, or setting an environment variable. Since our build infrastructure does not launch MSBUILD directly, we should just set the environment variable: MSBUILDDISABLENODEREUSE=1 This tells MSBUILD to terminate after the build has completed, avoiding the locked log file.
See also: http://connect.microsoft.com/VisualStudio/feedback/details/737860/msbuild-and-msbuildtaskhost-processes-proliferate-after-exiting-vs11-beta
Created attachment 221194 [details] Patch
Comment on attachment 221194 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=221194&action=review r=me > Tools/Scripts/webkitdirs.pm:1461 > + if (!$ENV{'MSBUILDDISABLENODEREUSE'}) { If it's not set, this may produce a benign (but annoying) error message about using an undefined value. This check may be slightly better: if (!defined $ENV{'MSBUILDDISABLENODEREUSE'} || !$ENV{'MSBUILDDISABLENODEREUSE'}) {
Committed r162010: <http://trac.webkit.org/changeset/162010>