mirror of
https://github.com/NixOS/nix
synced 2025-06-27 16:51:15 +02:00
Fix Brotli decompression in 'nix log'
This didn't work anymore since decompression was only done in the non-coroutine case. Decompressors are now sinks, just like compressors. Also fixed a bug in bzip2 API handling (we have to handle BZ_RUN_OK rather than BZ_OK), which we didn't notice because there was a missing 'throw': if (ret != BZ_OK) CompressionError("error while compressing bzip2 file");
This commit is contained in:
parent
fa4def3d46
commit
d3761f5f8b
7 changed files with 339 additions and 411 deletions
|
@ -39,21 +39,16 @@ void builtinFetchurl(const BasicDerivation & drv, const std::string & netrcData)
|
|||
request.verifyTLS = false;
|
||||
request.decompress = false;
|
||||
|
||||
downloader->download(std::move(request), sink);
|
||||
auto decompressor = makeDecompressionSink(
|
||||
hasSuffix(mainUrl, ".xz") ? "xz" : "none", sink);
|
||||
downloader->download(std::move(request), *decompressor);
|
||||
decompressor->finish();
|
||||
});
|
||||
|
||||
if (get(drv.env, "unpack", "") == "1") {
|
||||
|
||||
if (hasSuffix(mainUrl, ".xz")) {
|
||||
auto source2 = sinkToSource([&](Sink & sink) {
|
||||
decompress("xz", *source, sink);
|
||||
});
|
||||
restorePath(storePath, *source2);
|
||||
} else
|
||||
restorePath(storePath, *source);
|
||||
|
||||
} else
|
||||
writeFile(storePath, *source);
|
||||
if (get(drv.env, "unpack", "") == "1")
|
||||
restorePath(storePath, *source);
|
||||
else
|
||||
writeFile(storePath, *source);
|
||||
|
||||
auto executable = drv.env.find("executable");
|
||||
if (executable != drv.env.end() && executable->second == "1") {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue