BinaryCacheStore: Implement addBuildLog()

This commit is contained in:
Eelco Dolstra 2022-01-18 16:14:01 +01:00
parent 4dda1f92aa
commit 5b243a2b4b
3 changed files with 14 additions and 0 deletions

View file

@ -512,4 +512,14 @@ std::optional<std::string> BinaryCacheStore::getBuildLog(const StorePath & path)
return getFile(logPath); return getFile(logPath);
} }
void BinaryCacheStore::addBuildLog(const StorePath & drvPath, std::string_view log)
{
assert(drvPath.isDerivation());
upsertFile(
"log/" + std::string(drvPath.to_string()),
(std::string) log, // FIXME: don't copy
"text/plain; charset=utf-8");
}
} }

View file

@ -51,6 +51,7 @@ public:
const std::string & mimeType) = 0; const std::string & mimeType) = 0;
void upsertFile(const std::string & path, void upsertFile(const std::string & path,
// FIXME: use std::string_view
std::string && data, std::string && data,
const std::string & mimeType); const std::string & mimeType);
@ -120,6 +121,8 @@ public:
std::optional<std::string> getBuildLog(const StorePath & path) override; std::optional<std::string> getBuildLog(const StorePath & path) override;
void addBuildLog(const StorePath & drvPath, std::string_view log) override;
}; };
MakeError(NoSuchBinaryCacheFile, Error); MakeError(NoSuchBinaryCacheFile, Error);

View file

@ -96,6 +96,7 @@ void LocalBinaryCacheStore::init()
createDirs(binaryCacheDir + "/" + realisationsPrefix); createDirs(binaryCacheDir + "/" + realisationsPrefix);
if (writeDebugInfo) if (writeDebugInfo)
createDirs(binaryCacheDir + "/debuginfo"); createDirs(binaryCacheDir + "/debuginfo");
createDirs(binaryCacheDir + "/log");
BinaryCacheStore::init(); BinaryCacheStore::init();
} }