On Wed, Oct 13, 2021 at 2:01 AM Vegard Nossum <vegard.nossum@xxxxxxxxxx> wrote: > > 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@xxxxxxxxxx> > --- I think we should keep the host-tools dependency open in general. You can easily install necessary packages. > 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 > -- Best Regards Masahiro Yamada