Skip to content

Commit 93ebd22

Browse files
committed
Support zstd compression
I hardcoded compression level 10. On my system it compresses the initramfs I generated under a second. Numbers from my testing: * ugrd.cpio is 20MB * ugrd.cpio.xz is 6.2MB * Compression takes 14s * Decompression takes 0.5s * ugrd.cpio.zst is 7.5MB * Compress takes 0.88s * Decompression takes 0.08s
1 parent 83aec9a commit 93ebd22

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ classifiers = [
1717
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
1818
"Operating System :: OS Independent",
1919
]
20-
dependencies = ["zenlib >= 3.0.2"]
20+
dependencies = ["zenlib >= 3.0.2", "zstd >= 1.5.6.1"]
2121

2222
[project.scripts]
2323
pycpio = "pycpio.main:main"

src/pycpio/writer/writer.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ def compress(self, data):
5555

5656
self.logger.info("XZ compressing the CPIO data, original size: %.2f MiB" % (len(data) / (2**20)))
5757
data = lzma.compress(data, check=self.xz_crc)
58+
elif self.compression == "zstd":
59+
import zstd
60+
61+
self.logger.info("ZSTD compressing the CPIO data, original size: %.2f MiB" % (len(data) / (2**20)))
62+
data = zstd.compress(data, 10)
5863
elif self.compression is not False:
5964
raise NotImplementedError("Compression type not supported: %s" % self.compression)
6065
return data

0 commit comments

Comments
 (0)