Merge pull request #8260 from edolstra/lazy-trees-cherrypicks

lazy-trees cherrypicks
This commit is contained in:
Eelco Dolstra 2023-04-25 17:36:53 +02:00 committed by GitHub
commit 946fd29422
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 5 deletions

View file

@ -625,7 +625,8 @@ string_t AttrCursor::getStringWithContext()
NixStringContext context; NixStringContext context;
copyContext(v, context); copyContext(v, context);
return {v.string.s, std::move(context)}; return {v.string.s, std::move(context)};
} else if (v.type() == nPath) }
else if (v.type() == nPath)
return {v.path().to_string(), {}}; return {v.path().to_string(), {}};
else else
root->state.error("'%s' is not a string but %s", getAttrPathStr()).debugThrow<TypeError>(); root->state.error("'%s' is not a string but %s", getAttrPathStr()).debugThrow<TypeError>();

View file

@ -17,7 +17,7 @@ static ssize_t callback_read(struct archive * archive, void * _self, const void
*buffer = self->buffer.data(); *buffer = self->buffer.data();
try { try {
return self->source->read((char *) self->buffer.data(), 4096); return self->source->read((char *) self->buffer.data(), self->buffer.size());
} catch (EndOfFile &) { } catch (EndOfFile &) {
return 0; return 0;
} catch (std::exception & err) { } catch (std::exception & err) {
@ -39,7 +39,7 @@ void TarArchive::check(int err, const std::string & reason)
throw Error(reason, archive_error_string(this->archive)); throw Error(reason, archive_error_string(this->archive));
} }
TarArchive::TarArchive(Source & source, bool raw) : buffer(4096) TarArchive::TarArchive(Source & source, bool raw) : buffer(65536)
{ {
this->archive = archive_read_new(); this->archive = archive_read_new();
this->source = &source; this->source = &source;

View file

@ -24,6 +24,7 @@ struct TarArchive {
~TarArchive(); ~TarArchive();
}; };
void unpackTarfile(Source & source, const Path & destDir); void unpackTarfile(Source & source, const Path & destDir);
void unpackTarfile(const Path & tarFile, const Path & destDir); void unpackTarfile(const Path & tarFile, const Path & destDir);

View file

@ -27,7 +27,9 @@ nlohmann::json builtPathsWithResultToJSON(const std::vector<BuiltPathWithResult>
std::visit([&](const auto & t) { std::visit([&](const auto & t) {
auto j = t.toJSON(store); auto j = t.toJSON(store);
if (b.result) { if (b.result) {
if (b.result->startTime)
j["startTime"] = b.result->startTime; j["startTime"] = b.result->startTime;
if (b.result->stopTime)
j["stopTime"] = b.result->stopTime; j["stopTime"] = b.result->stopTime;
if (b.result->cpuUser) if (b.result->cpuUser)
j["cpuUser"] = ((double) b.result->cpuUser->count()) / 1000000; j["cpuUser"] = ((double) b.result->cpuUser->count()) / 1000000;