From: Vegard Nossum <vegard.nossum@oracle.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
Vegard Nossum <vegard.nossum@oracle.com>
Subject: [RFC PATCH] kbuild: only prompt for compressors that are actually usable
Date: Tue, 12 Oct 2021 19:01:21 +0200 [thread overview]
Message-ID: <20211012170121.31549-1-vegard.nossum@oracle.com> (raw)
If a given compression algorithm for the kernel image is not usable on
the host system, there is no point prompting for it.
We can use the kconfig preprocessing feature to check if the command is
available or not. I've chosen to test this using "which", which exits
with success if the given command exists in PATH (or it is an absolute
path), which mimics exactly how it would be found in the kernel's
Makefiles.
This uses the make variables that are set in Makefile and/or the
command line, so you can do e.g.
make KGZIP=pigz menuconfig
and it will test for the correct program.
I am intentionally adding these dependencies to e.g. KERNEL_LZ4, as
opposed to HAVE_KERNEL_LZ4, since the latter are "select"-ed
unconditionally by the architectures that use them, so they are not
suitable for depending on anything else.
I've put RFC in the subject as maybe there are downsides to this that
I'm not aware of.
Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
---
init/Kconfig | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/init/Kconfig b/init/Kconfig
index 11f8a845f259d..f03f2b7962027 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -250,6 +250,7 @@ choice
config KERNEL_GZIP
bool "Gzip"
depends on HAVE_KERNEL_GZIP
+ depends on $(success,which $(KGZIP))
help
The old and tried gzip compression. It provides a good balance
between compression ratio and decompression speed.
@@ -257,6 +258,7 @@ config KERNEL_GZIP
config KERNEL_BZIP2
bool "Bzip2"
depends on HAVE_KERNEL_BZIP2
+ depends on $(success,which $(KBZIP2))
help
Its compression ratio and speed is intermediate.
Decompression speed is slowest among the choices. The kernel
@@ -267,6 +269,7 @@ config KERNEL_BZIP2
config KERNEL_LZMA
bool "LZMA"
depends on HAVE_KERNEL_LZMA
+ depends on $(success,which $(LZMA))
help
This compression algorithm's ratio is best. Decompression speed
is between gzip and bzip2. Compression is slowest.
@@ -275,6 +278,7 @@ config KERNEL_LZMA
config KERNEL_XZ
bool "XZ"
depends on HAVE_KERNEL_XZ
+ depends on $(success,which $(XZ))
help
XZ uses the LZMA2 algorithm and instruction set specific
BCJ filters which can improve compression ratio of executable
@@ -290,6 +294,7 @@ config KERNEL_XZ
config KERNEL_LZO
bool "LZO"
depends on HAVE_KERNEL_LZO
+ depends on $(success,which $(KLZOP))
help
Its compression ratio is the poorest among the choices. The kernel
size is about 10% bigger than gzip; however its speed
@@ -298,6 +303,7 @@ config KERNEL_LZO
config KERNEL_LZ4
bool "LZ4"
depends on HAVE_KERNEL_LZ4
+ depends on $(success,which $(LZ4))
help
LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
A preliminary version of LZ4 de/compression tool is available at
@@ -310,6 +316,7 @@ config KERNEL_LZ4
config KERNEL_ZSTD
bool "ZSTD"
depends on HAVE_KERNEL_ZSTD
+ depends on $(success,which $(ZSTD))
help
ZSTD is a compression algorithm targeting intermediate compression
with fast decompression speed. It will compress better than GZIP and
--
2.23.0.718.g5ad94255a8
next reply other threads:[~2021-10-12 17:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-12 17:01 Vegard Nossum [this message]
2021-10-12 19:44 ` Randy Dunlap
2021-10-13 1:34 ` Masahiro Yamada
2021-10-13 5:39 ` Vegard Nossum
2021-10-13 7:00 ` Masahiro Yamada
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211012170121.31549-1-vegard.nossum@oracle.com \
--to=vegard.nossum@oracle.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®