forked from lix-project/lix
Merge pull request #6051 from Ma27/fix-empty-nix-log
`nix log` should also work if the log didn't provide any output
This commit is contained in:
commit
55bc524019
|
@ -39,30 +39,32 @@ 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)
|
TarArchive::TarArchive(Source & source, bool raw) : buffer(4096)
|
||||||
: source(&source), buffer(4096)
|
|
||||||
{
|
{
|
||||||
init();
|
this->archive = archive_read_new();
|
||||||
if (!raw)
|
this->source = &source;
|
||||||
|
|
||||||
|
if (!raw) {
|
||||||
|
archive_read_support_filter_all(archive);
|
||||||
archive_read_support_format_all(archive);
|
archive_read_support_format_all(archive);
|
||||||
else
|
} else {
|
||||||
|
archive_read_support_filter_all(archive);
|
||||||
archive_read_support_format_raw(archive);
|
archive_read_support_format_raw(archive);
|
||||||
|
archive_read_support_format_empty(archive);
|
||||||
|
}
|
||||||
check(archive_read_open(archive, (void *)this, callback_open, callback_read, callback_close), "Failed to open archive (%s)");
|
check(archive_read_open(archive, (void *)this, callback_open, callback_read, callback_close), "Failed to open archive (%s)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TarArchive::TarArchive(const Path & path)
|
TarArchive::TarArchive(const Path & path)
|
||||||
{
|
{
|
||||||
init();
|
this->archive = archive_read_new();
|
||||||
|
|
||||||
|
archive_read_support_filter_all(archive);
|
||||||
archive_read_support_format_all(archive);
|
archive_read_support_format_all(archive);
|
||||||
check(archive_read_open_filename(archive, path.c_str(), 16384), "failed to open archive: %s");
|
check(archive_read_open_filename(archive, path.c_str(), 16384), "failed to open archive: %s");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TarArchive::init()
|
|
||||||
{
|
|
||||||
archive = archive_read_new();
|
|
||||||
archive_read_support_filter_all(archive);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TarArchive::close()
|
void TarArchive::close()
|
||||||
{
|
{
|
||||||
check(archive_read_close(this->archive), "Failed to close archive (%s)");
|
check(archive_read_close(this->archive), "Failed to close archive (%s)");
|
||||||
|
|
|
@ -17,13 +17,10 @@ struct TarArchive {
|
||||||
// disable copy constructor
|
// disable copy constructor
|
||||||
TarArchive(const TarArchive &) = delete;
|
TarArchive(const TarArchive &) = delete;
|
||||||
|
|
||||||
void init();
|
|
||||||
|
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
~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);
|
||||||
|
|
|
@ -13,3 +13,14 @@ rm -rf $NIX_LOG_DIR
|
||||||
(! nix-store -l $path)
|
(! nix-store -l $path)
|
||||||
nix-build dependencies.nix --no-out-link --compress-build-log
|
nix-build dependencies.nix --no-out-link --compress-build-log
|
||||||
[ "$(nix-store -l $path)" = FOO ]
|
[ "$(nix-store -l $path)" = FOO ]
|
||||||
|
|
||||||
|
# test whether empty logs work fine with `nix log`.
|
||||||
|
builder="$(mktemp)"
|
||||||
|
echo -e "#!/bin/sh\nmkdir \$out" > "$builder"
|
||||||
|
outp="$(nix-build -E \
|
||||||
|
'with import ./config.nix; mkDerivation { name = "fnord"; builder = '"$builder"'; }' \
|
||||||
|
--out-link "$(mktemp -d)/result")"
|
||||||
|
|
||||||
|
test -d "$outp"
|
||||||
|
|
||||||
|
nix log "$outp"
|
||||||
|
|
Loading…
Reference in a new issue