diff --git a/CHANGELOG.md b/CHANGELOG.md index 348f8542a..7d4d57961 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ BUG FIXES: so that building AMIs works out of us-east-1 [GH-679] * builder/vmware: Cleanup of VMX keys works properly so cd-rom won't get stuck with ISO. [GH-685] +* builder/vmware: File cleanup is more resilient to file delete races + with the operating system. [GH-675] ## 0.4.0 (November 19, 2013) diff --git a/builder/vmware/step_clean_files.go b/builder/vmware/step_clean_files.go index cf78d45dc..d3eea4234 100644 --- a/builder/vmware/step_clean_files.go +++ b/builder/vmware/step_clean_files.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/mitchellh/multistep" "github.com/mitchellh/packer/packer" + "os" "path/filepath" ) @@ -48,8 +49,11 @@ func (stepCleanFiles) Run(state multistep.StateBag) multistep.StepAction { if !keep { ui.Message(fmt.Sprintf("Deleting: %s", path)) if err = dir.Remove(path); err != nil { - state.Put("error", err) - return multistep.ActionHalt + // Only report the error if the file still exists + if _, serr := os.Stat(path); serr == nil || os.IsNotExist(serr) { + state.Put("error", err) + return multistep.ActionHalt + } } } }