compression: print warning if parallel requested but not supported

This commit is contained in:
Will Dietz 2018-02-11 12:47:42 -06:00
parent 5a082ad15a
commit a0bdc96726

View file

@ -1,6 +1,7 @@
#include "compression.hh" #include "compression.hh"
#include "util.hh" #include "util.hh"
#include "finally.hh" #include "finally.hh"
#include "logging.hh"
#include <lzma.h> #include <lzma.h>
#include <bzlib.h> #include <bzlib.h>
@ -192,8 +193,8 @@ struct XzSink : CompressionSink
XzSink(Sink & nextSink, const bool parallel) : nextSink(nextSink) XzSink(Sink & nextSink, const bool parallel) : nextSink(nextSink)
{ {
lzma_ret ret; lzma_ret ret;
#ifdef HAVE_LZMA_MT
if (parallel) { if (parallel) {
#ifdef HAVE_LZMA_MT
lzma_mt mt_options = {}; lzma_mt mt_options = {};
mt_options.flags = 0; mt_options.flags = 0;
mt_options.timeout = 300; // Using the same setting as the xz cmd line mt_options.timeout = 300; // Using the same setting as the xz cmd line
@ -209,6 +210,9 @@ struct XzSink : CompressionSink
ret = lzma_stream_encoder_mt( ret = lzma_stream_encoder_mt(
&strm, &mt_options); &strm, &mt_options);
} else } else
#else
printMsg(lvlError, "Warning: parallel XZ compression requested but not supported, falling back to single-threaded compression");
}
#endif #endif
ret = lzma_easy_encoder( ret = lzma_easy_encoder(
&strm, 6, LZMA_CHECK_CRC64); &strm, 6, LZMA_CHECK_CRC64);
@ -471,6 +475,9 @@ struct BrotliSink : CompressionSink
ref<CompressionSink> makeCompressionSink(const std::string & method, Sink & nextSink, const bool parallel) ref<CompressionSink> makeCompressionSink(const std::string & method, Sink & nextSink, const bool parallel)
{ {
if (parallel && method != "xz")
printMsg(lvlError, format("Warning: parallel compression requested but not supported for method '%1%', falling back to single-threaded compression") % method);
if (method == "none") if (method == "none")
return make_ref<NoneSink>(nextSink); return make_ref<NoneSink>(nextSink);
else if (method == "xz") else if (method == "xz")