Revert "LocalStore::addToStore(srcPath): Handle the flat case"

This reverts commit a2c27022e9. See
addToStoreSlow(), we don't need to handle this case efficiently
anymore. In fact, we can almost remove the method/hashAlgo arguments
since the non-recursive and/or non-SHA256 are almost not used anymore.
This commit is contained in:
Eelco Dolstra 2020-07-15 12:49:03 +02:00
parent 926c3a6664
commit cff2157185

View file

@ -1097,13 +1097,16 @@ StorePath LocalStore::addToStore(const string & name, const Path & _srcPath,
{ {
Path srcPath(absPath(_srcPath)); Path srcPath(absPath(_srcPath));
if (method != FileIngestionMethod::Recursive)
return addToStoreFromDump(readFile(srcPath), name, method, hashAlgo, repair);
/* For computing the NAR hash. */ /* For computing the NAR hash. */
auto sha256Sink = std::make_unique<HashSink>(htSHA256); auto sha256Sink = std::make_unique<HashSink>(htSHA256);
/* For computing the store path. In recursive SHA-256 mode, this /* For computing the store path. In recursive SHA-256 mode, this
is the same as the NAR hash, so no need to do it again. */ is the same as the NAR hash, so no need to do it again. */
std::unique_ptr<HashSink> hashSink = std::unique_ptr<HashSink> hashSink =
method == FileIngestionMethod::Recursive && hashAlgo == htSHA256 hashAlgo == htSHA256
? nullptr ? nullptr
: std::make_unique<HashSink>(hashAlgo); : std::make_unique<HashSink>(hashAlgo);
@ -1136,10 +1139,7 @@ StorePath LocalStore::addToStore(const string & name, const Path & _srcPath,
if (!inMemory) sink(buf, len); if (!inMemory) sink(buf, len);
}); });
if (method == FileIngestionMethod::Recursive)
dumpPath(srcPath, sink2, filter); dumpPath(srcPath, sink2, filter);
else
readFile(srcPath, sink2);
}); });
std::unique_ptr<AutoDelete> delTempDir; std::unique_ptr<AutoDelete> delTempDir;
@ -1155,10 +1155,7 @@ StorePath LocalStore::addToStore(const string & name, const Path & _srcPath,
delTempDir = std::make_unique<AutoDelete>(tempDir); delTempDir = std::make_unique<AutoDelete>(tempDir);
tempPath = tempDir + "/x"; tempPath = tempDir + "/x";
if (method == FileIngestionMethod::Recursive)
restorePath(tempPath, *source); restorePath(tempPath, *source);
else
writeFile(tempPath, *source);
} catch (EndOfFile &) { } catch (EndOfFile &) {
if (!inMemory) throw; if (!inMemory) throw;
@ -1191,10 +1188,7 @@ StorePath LocalStore::addToStore(const string & name, const Path & _srcPath,
if (inMemory) { if (inMemory) {
/* Restore from the NAR in memory. */ /* Restore from the NAR in memory. */
StringSource source(nar); StringSource source(nar);
if (method == FileIngestionMethod::Recursive)
restorePath(realPath, source); restorePath(realPath, source);
else
writeFile(realPath, source);
} else { } else {
/* Move the temporary path we restored above. */ /* Move the temporary path we restored above. */
if (rename(tempPath.c_str(), realPath.c_str())) if (rename(tempPath.c_str(), realPath.c_str()))