aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/compression.cc
diff options
context:
space:
mode:
authorWill Dietz <w@wdtz.org>2018-02-11 12:47:42 -0600
committerWill Dietz <w@wdtz.org>2018-02-11 13:03:47 -0600
commita0bdc96726b15b7f529156bccd60d0f8dd5544f3 (patch)
treef0d5c1fa284ca7f46a9d413898ab37589cf34926 /src/libutil/compression.cc
parent5a082ad15a0f46dc1cbfd8aa5cb3ad9d94b5f178 (diff)
compression: print warning if parallel requested but not supported
Diffstat (limited to 'src/libutil/compression.cc')
-rw-r--r--src/libutil/compression.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/libutil/compression.cc b/src/libutil/compression.cc
index c509472b3..0b0ff1102 100644
--- a/src/libutil/compression.cc
+++ b/src/libutil/compression.cc
@@ -1,6 +1,7 @@
#include "compression.hh"
#include "util.hh"
#include "finally.hh"
+#include "logging.hh"
#include <lzma.h>
#include <bzlib.h>
@@ -192,8 +193,8 @@ struct XzSink : CompressionSink
XzSink(Sink & nextSink, const bool parallel) : nextSink(nextSink)
{
lzma_ret ret;
-#ifdef HAVE_LZMA_MT
if (parallel) {
+#ifdef HAVE_LZMA_MT
lzma_mt mt_options = {};
mt_options.flags = 0;
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(
&strm, &mt_options);
} else
+#else
+ printMsg(lvlError, "Warning: parallel XZ compression requested but not supported, falling back to single-threaded compression");
+ }
#endif
ret = lzma_easy_encoder(
&strm, 6, LZMA_CHECK_CRC64);
@@ -471,6 +475,9 @@ struct BrotliSink : CompressionSink
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")
return make_ref<NoneSink>(nextSink);
else if (method == "xz")