From d6b6b2d3a83aa2afe3cae361954d8aa640fd77da Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 5 Aug 2003 09:47:20 +0000 Subject: [PATCH] * Delete obstructed paths prior to building. --- src/normalise.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/normalise.cc b/src/normalise.cc index 3f138a53ea..2fa6f7f401 100644 --- a/src/normalise.cc +++ b/src/normalise.cc @@ -152,11 +152,20 @@ FSId normaliseFState(FSId id, FSIdSet pending) if (!fastBuild) { - /* Check that none of the outputs exist. */ + /* If any of the outputs already exist but are not registered, + delete them. */ for (OutPaths::iterator i = outPaths.begin(); i != outPaths.end(); i++) - if (pathExists(i->first)) - throw Error(format("path `%1%' exists") % i->first); + { + string path = i->first; + FSId id; + if (queryPathId(path, id)) + throw Error(format("obstructed build: path `%1%' exists") % path); + if (pathExists(path)) { + debug(format("removing unregistered path `%1%'") % path); + deletePath(path); + } + } /* Run the builder. */ msg(lvlChatty, format("building..."));