diff options
Diffstat (limited to 'bitbake/lib/bb/compress/zstd.py')
-rw-r--r-- | bitbake/lib/bb/compress/zstd.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/bitbake/lib/bb/compress/zstd.py b/bitbake/lib/bb/compress/zstd.py new file mode 100644 index 0000000000..cdbbe9d60f --- /dev/null +++ b/bitbake/lib/bb/compress/zstd.py | |||
@@ -0,0 +1,30 @@ | |||
1 | # | ||
2 | # Copyright BitBake Contributors | ||
3 | # | ||
4 | # SPDX-License-Identifier: GPL-2.0-only | ||
5 | # | ||
6 | |||
7 | import bb.compress._pipecompress | ||
8 | import shutil | ||
9 | |||
10 | |||
11 | def open(*args, **kwargs): | ||
12 | return bb.compress._pipecompress.open_wrap(ZstdFile, *args, **kwargs) | ||
13 | |||
14 | |||
15 | class ZstdFile(bb.compress._pipecompress.PipeFile): | ||
16 | def __init__(self, *args, num_threads=1, compresslevel=3, **kwargs): | ||
17 | self.num_threads = num_threads | ||
18 | self.compresslevel = compresslevel | ||
19 | super().__init__(*args, **kwargs) | ||
20 | |||
21 | def _get_zstd(self): | ||
22 | if self.num_threads == 1 or not shutil.which("pzstd"): | ||
23 | return ["zstd"] | ||
24 | return ["pzstd", "-p", "%d" % self.num_threads] | ||
25 | |||
26 | def get_compress(self): | ||
27 | return self._get_zstd() + ["-c", "-%d" % self.compresslevel] | ||
28 | |||
29 | def get_decompress(self): | ||
30 | return self._get_zstd() + ["-d", "-c"] | ||