diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/fix.cc | 2 | ||||
-rw-r--r-- | src/store.cc | 13 | ||||
-rw-r--r-- | src/store.hh | 3 |
3 files changed, 9 insertions, 9 deletions
diff --git a/src/fix.cc b/src/fix.cc index 5c4297bfb760..445d682837ff 100644 --- a/src/fix.cc +++ b/src/fix.cc @@ -131,7 +131,7 @@ static Expr evalExpr(Expr e) string srcPath = searchPath(s1); string dstPath; Hash hash; - addToStore(srcPath, dstPath, hash); + addToStore(srcPath, dstPath, hash, true); return ATmake("Path(<str>, Hash(<str>), [])", dstPath.c_str(), ((string) hash).c_str()); } diff --git a/src/store.cc b/src/store.cc index 435ac5cc69ce..12de50ec6424 100644 --- a/src/store.cc +++ b/src/store.cc @@ -224,24 +224,23 @@ string expandHash(const Hash & hash, const string & target, } -void addToStore(string srcPath, string & dstPath, Hash & hash) +void addToStore(string srcPath, string & dstPath, Hash & hash, + bool deterministicName) { srcPath = absPath(srcPath); - hash = hashPath(srcPath); + string baseName = baseNameOf(srcPath); + dstPath = canonPath(nixStore + "/" + (string) hash + "-" + baseName); + try { /* !!! should not use the substitutes! */ - dstPath = expandHash(hash, "", nixStore); + dstPath = expandHash(hash, deterministicName ? dstPath : "", nixStore); return; } catch (...) { } - string baseName = baseNameOf(srcPath); - dstPath = canonPath(nixStore + "/" + (string) hash + "-" + baseName); - copyPath(srcPath, dstPath); - registerPath(dstPath, hash); } diff --git a/src/store.hh b/src/store.hh index 8b41478a24af..82fb2e12a109 100644 --- a/src/store.hh +++ b/src/store.hh @@ -30,7 +30,8 @@ string expandHash(const Hash & hash, const string & target = "", /* Copy a file to the nixStore directory and register it in dbRefs. Return the hash code of the value. */ -void addToStore(string srcPath, string & dstPath, Hash & hash); +void addToStore(string srcPath, string & dstPath, Hash & hash, + bool deterministicName = false); /* Delete a value from the nixStore directory. */ void deleteFromStore(const string & path); |