[PATCH v2 1/2] kbuild: Enable decompression for use by EXTRA_FIRMWARE

From: Kevin Martin
Date: Fri Jan 05 2024 - 01:11:43 EST


The build system can currently only compress files. This patch adds the
functionality to decompress files. Decompression is needed for building
firmware files into the kernel if those files are compressed on the
filesystem. Compressed firmware files are in use by Gentoo, Fedora, Arch,
and others.

Signed-off-by: Kevin Martin <kevinmbecause@xxxxxxxxx>
---
Changes in v2:
- Skipped running 'cat' and now just pass the file names directly.
- Added '--quiet' since 'zstd' started printing the status of each file
now that it knows the file names.

scripts/Makefile.lib | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 1a965fe68..d043be3dc 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -523,6 +523,9 @@ quiet_cmd_xzkern_with_size = XZKERN $@
quiet_cmd_xzmisc = XZMISC $@
cmd_xzmisc = cat $(real-prereqs) | $(XZ) --check=crc32 --lzma2=dict=1MiB > $@

+quiet_cmd_xzdec = XZDEC $@
+ cmd_xzdec = $(XZ) --decompress --stdout $< > $@
+
# ZSTD
# ---------------------------------------------------------------------------
# Appends the uncompressed size of the data using size_append. The .zst
@@ -548,6 +551,9 @@ quiet_cmd_zstd22 = ZSTD22 $@
quiet_cmd_zstd22_with_size = ZSTD22 $@
cmd_zstd22_with_size = { cat $(real-prereqs) | $(ZSTD) -22 --ultra; $(size_append); } > $@

+quiet_cmd_zstddec = ZSTDDEC $@
+ cmd_zstddec = $(ZSTD) --decompress --force --quiet -o $@ $<
+
# ASM offsets
# ---------------------------------------------------------------------------

--
2.41.0