diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-06-13T12·46+0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-06-13T12·46+0200 |
commit | f9ff67e9487a0085ad6536016791242364ce70d9 (patch) | |
tree | 50fbdfa73fbc10748b773562ece51be427a67ef2 | |
parent | 6b05f688ee6849b89e7fb0d3fb7b678f316039e7 (diff) |
In repair mode, update the hash of rebuilt paths
Otherwise subsequent invocations of "--repair" will keep rebuilding the path. This only happens if the path content differs between builds (e.g. due to timestamps).
-rw-r--r-- | src/libstore/build.cc | 2 | ||||
-rw-r--r-- | src/libstore/local-store.cc | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 6fe726a48709..5034e208ecd0 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -1673,7 +1673,7 @@ void DerivationGoal::startBuilder() { PathSet missing = outputPaths(drv.outputs); foreach (PathSet::iterator, i, validPaths) missing.erase(*i); - startNest(nest, lvlInfo, format("building path(s) %1%") % showPaths(missing)); + startNest(nest, lvlInfo, format(repair ? "repairing path(s) %1%" : "building path(s) %1%") % showPaths(missing)); /* Right platform? */ if (!canBuildLocally(drv.platform)) diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index b44e025b5b1f..857d4cee05cd 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -1202,9 +1202,10 @@ void LocalStore::registerValidPaths(const ValidPathInfos & infos) foreach (ValidPathInfos::const_iterator, i, infos) { assert(i->hash.type == htSHA256); - /* !!! Maybe the registration info should be updated if the - path is already valid. */ - if (!isValidPath(i->path)) addValidPath(*i); + if (isValidPath(i->path)) + updatePathInfo(*i); + else + addValidPath(*i); paths.insert(i->path); } |