diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-10-02 17:13:46 -0400 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-10-02 17:13:46 -0400 |
commit | 2001895f3d2668549feb60a182aa624a7b6292eb (patch) | |
tree | f555841859d53cf821bf52dc89bd4d0fe9273186 /src/libstore/local-store.cc | |
parent | cf46f194445c9abc0398dae908295dff794fee98 (diff) |
Add a --repair flag to ‘nix-store -r’ to repair derivation outputs
With this flag, if any valid derivation output is missing or corrupt,
it will be recreated by using a substitute if available, or by
rebuilding the derivation. The latter may use hash rewriting if
chroots are not available.
Diffstat (limited to 'src/libstore/local-store.cc')
-rw-r--r-- | src/libstore/local-store.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index e038cd4b2..a4ad97331 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -1671,6 +1671,16 @@ void LocalStore::verifyPath(const Path & path, const PathSet & store, } +bool LocalStore::pathContentsGood(const Path & path) +{ + ValidPathInfo info = queryPathInfo(path); + if (!pathExists(path)) return false; + HashResult current = hashPath(info.hash.type, path); + Hash nullHash(htSHA256); + return info.hash == nullHash || info.hash == current.first; +} + + /* Functions for upgrading from the pre-SQLite database. */ PathSet LocalStore::queryValidPathsOld() |