diff mbox

[2/2] linux: only depend on host-lzop if needed

Message ID 1d22a1ff0f39a4b4e8fe4186cf9696a44a01e20f.1390744549.git.yann.morin.1998@free.fr
State Changes Requested
Headers show

Commit Message

Yann E. MORIN Jan. 26, 2014, 1:56 p.m. UTC
From: "Yann E. MORIN" <yann.morin.1998@free.fr>

There is no reason to always depend on host-lzop, even when the kernel
compression is not LZO.

Since LZO is not the default compression option in the kernel (and there
is not sign that will change in the foreseeable future), it will always
appear in a condif file, whether it is a complete config file or it is
only a defconfig.

So, only depend on host-lzop if the LZO compression is enabled in the
kernel config file (either the defconfig or the custom config file).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
 linux/linux.mk | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Peter Korsgaard Jan. 26, 2014, 8:23 p.m. UTC | #1
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > From: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > There is no reason to always depend on host-lzop, even when the kernel
 > compression is not LZO.

 > Since LZO is not the default compression option in the kernel (and there
 > is not sign that will change in the foreseeable future), it will always
 > appear in a condif file, whether it is a complete config file or it is
 > only a defconfig.

 > So, only depend on host-lzop if the LZO compression is enabled in the
 > kernel config file (either the defconfig or the custom config file).

Nice, thanks - Just a few comments..


 > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > ---
 >  linux/linux.mk | 6 +++++-
 >  1 file changed, 5 insertions(+), 1 deletion(-)

 > diff --git a/linux/linux.mk b/linux/linux.mk
 > index ab25fe9..f34bea1 100644
 > --- a/linux/linux.mk
 > +++ b/linux/linux.mk
 > @@ -38,7 +38,7 @@ endif
 >  LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
 
 >  LINUX_INSTALL_IMAGES = YES
 > -LINUX_DEPENDENCIES  += host-kmod host-lzop
 > +LINUX_DEPENDENCIES  += host-kmod
 
 >  ifeq ($(BR2_LINUX_KERNEL_UBOOT_IMAGE),y)
 >  	LINUX_DEPENDENCIES += host-uboot-tools
 > @@ -163,6 +163,10 @@ else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)
 >  KERNEL_SOURCE_CONFIG = $(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)
 >  endif
 
 > +ifeq ($(call KCONFIG_GET_OPT,CONFIG_KERNEL_LZO,$(call qstrip,$(KERNEL_SOURCE_CONFIG))),y)
 > +LINUX_DEPENDENCIES += host-lzop
 > +endif

Another user of lzop seems to be the initramfs support, so we whould
probably also check for RD_LZO (but that's auto enabled/prompt-less if
!expert, so might not be in the .config, so perhaps we should just check
for INITRAMFS_SOURCE):

config RD_LZO
        bool "Support initial ramdisks compressed using LZO" if EXPERT
        default !EXPERT
        depends on BLK_DEV_INITRD
        select DECOMPRESS_LZO
        help
          Support loading of a LZO encoded initial ramdisk or cpio buffer
          If unsure, say N.

Furthermore, this will probably give a pretty odd error message if
people mistype the config file name. Not directly related to this
change, but it would probably be a good thing if we would check and
error out early if any of the needed config files aren't present
(busybox/uclibc/uboot/kernel/..)  with something like

ifeq ($(wildcard $(BR2_PACKAGE_FOO_CONFIG)),)
$(error Configuration file '$(BR2_PACKAGE_FOO_CONFIG)' not found. Check your BR2_PACKAGE_FOO_CONFIG settings)
Arnout Vandecappelle Jan. 27, 2014, 9:51 p.m. UTC | #2
On 26/01/14 14:56, Yann E. MORIN wrote:
> From: "Yann E. MORIN" <yann.morin.1998@free.fr>
>
> There is no reason to always depend on host-lzop, even when the kernel
> compression is not LZO.
>
> Since LZO is not the default compression option in the kernel (and there
> is not sign that will change in the foreseeable future), it will always
> appear in a condif file, whether it is a complete config file or it is
> only a defconfig.
>
> So, only depend on host-lzop if the LZO compression is enabled in the
> kernel config file (either the defconfig or the custom config file).
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> ---
>   linux/linux.mk | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/linux/linux.mk b/linux/linux.mk
> index ab25fe9..f34bea1 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -38,7 +38,7 @@ endif
>   LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
>
>   LINUX_INSTALL_IMAGES = YES
> -LINUX_DEPENDENCIES  += host-kmod host-lzop
> +LINUX_DEPENDENCIES  += host-kmod
>
>   ifeq ($(BR2_LINUX_KERNEL_UBOOT_IMAGE),y)
>   	LINUX_DEPENDENCIES += host-uboot-tools
> @@ -163,6 +163,10 @@ else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)
>   KERNEL_SOURCE_CONFIG = $(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)
>   endif
>
> +ifeq ($(call KCONFIG_GET_OPT,CONFIG_KERNEL_LZO,$(call qstrip,$(KERNEL_SOURCE_CONFIG))),y)

  I would be nicer if the qstrip would move to the definition of 
KERNEL_SOURCE_CONFIG a few lines higher. It's already there in one 
condition, but not in the other.

  Regards,
  Arnout

> +LINUX_DEPENDENCIES += host-lzop
> +endif
> +
>   define LINUX_CONFIGURE_CMDS
>   	cp $(KERNEL_SOURCE_CONFIG) $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig
>   	$(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) buildroot_defconfig
>
Thomas Petazzoni Jan. 28, 2014, 10:14 p.m. UTC | #3
Dear Yann E. MORIN,

On Sun, 26 Jan 2014 14:56:27 +0100, Yann E. MORIN wrote:

> +ifeq ($(call KCONFIG_GET_OPT,CONFIG_KERNEL_LZO,$(call qstrip,$(KERNEL_SOURCE_CONFIG))),y)
> +LINUX_DEPENDENCIES += host-lzop
> +endif

Do this works reliably? KERNEL_SOURCE_CONFIG typically points to a
minimal defconfig file (say arch/arm/configs/mvebu_defconfig). So if
CONFIG_KERNEL_LZO is the default choice for the kernel, it will not
appear in the defconfig, and therefore the piece of code above will not
realize that we need host-lzop, because the test is done before "make
mvebu_defconfig" is executed and turns it back into a full
configuration file.

Thomas
Peter Korsgaard Jan. 28, 2014, 10:17 p.m. UTC | #4
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 > Dear Yann E. MORIN,
 > On Sun, 26 Jan 2014 14:56:27 +0100, Yann E. MORIN wrote:

 >> +ifeq ($(call KCONFIG_GET_OPT,CONFIG_KERNEL_LZO,$(call qstrip,$(KERNEL_SOURCE_CONFIG))),y)
 >> +LINUX_DEPENDENCIES += host-lzop
 >> +endif

 > Do this works reliably? KERNEL_SOURCE_CONFIG typically points to a
 > minimal defconfig file (say arch/arm/configs/mvebu_defconfig). So if
 > CONFIG_KERNEL_LZO is the default choice for the kernel, it will not
 > appear in the defconfig, and therefore the piece of code above will not
 > realize that we need host-lzop, because the test is done before "make
 > mvebu_defconfig" is executed and turns it back into a full
 > configuration file.

The commit message contained:

Since LZO is not the default compression option in the kernel (and there
is not sign that will change in the foreseeable future), it will always
appear in a condif file, whether it is a complete config file or it is
only a defconfig.

So I believe the answer is yes, it will work.
Thomas Petazzoni Jan. 28, 2014, 10:20 p.m. UTC | #5
Dear Peter Korsgaard,

On Tue, 28 Jan 2014 23:17:32 +0100, Peter Korsgaard wrote:

>  > Do this works reliably? KERNEL_SOURCE_CONFIG typically points to a
>  > minimal defconfig file (say arch/arm/configs/mvebu_defconfig). So if
>  > CONFIG_KERNEL_LZO is the default choice for the kernel, it will not
>  > appear in the defconfig, and therefore the piece of code above will not
>  > realize that we need host-lzop, because the test is done before "make
>  > mvebu_defconfig" is executed and turns it back into a full
>  > configuration file.
> 
> The commit message contained:
> 
> Since LZO is not the default compression option in the kernel (and there
> is not sign that will change in the foreseeable future), it will always
> appear in a condif file, whether it is a complete config file or it is
> only a defconfig.
> 
> So I believe the answer is yes, it will work.

Ok, thanks, I missed that. I believe it's a little bit fragile to rely
on the assumption that it will not become the default, but since the
breakage will be very clear if this ever changes, I think Yann's
proposal is a good compromise. I was also annoyed by host-lzop always
being built, even if useless. Seemed like Buildroot was turning into
this other build system that builds gazillions of useless
dependencies :)

Thomas
Yann E. MORIN Jan. 28, 2014, 10:21 p.m. UTC | #6
Thomas, All,

On 2014-01-28 23:14 +0100, Thomas Petazzoni spake thusly:
> On Sun, 26 Jan 2014 14:56:27 +0100, Yann E. MORIN wrote:
> 
> > +ifeq ($(call KCONFIG_GET_OPT,CONFIG_KERNEL_LZO,$(call qstrip,$(KERNEL_SOURCE_CONFIG))),y)
> > +LINUX_DEPENDENCIES += host-lzop
> > +endif
> 
> Do this works reliably? KERNEL_SOURCE_CONFIG typically points to a
> minimal defconfig file (say arch/arm/configs/mvebu_defconfig). So if
> CONFIG_KERNEL_LZO is the default choice for the kernel, it will not
> appear in the defconfig, and therefore the piece of code above will not
> realize that we need host-lzop, because the test is done before "make
> mvebu_defconfig" is executed and turns it back into a full
> configuration file.

I believe I've addresed your comments in the commit log itself:

    ---8<---
    Since LZO is not the default compression option in the kernel (and there
    is not sign that will change in the foreseeable future), it will always
    appear in a condif file, whether it is a complete config file or it is
    only a defconfig.
    ---8<---

Of course, re-reading myself now, I can now spot a typo:
    s/condif/config/

Regards,
Yann E. MORIN.
Peter Korsgaard Jan. 28, 2014, 10:24 p.m. UTC | #7
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 >> So I believe the answer is yes, it will work.

 > Ok, thanks, I missed that. I believe it's a little bit fragile to rely
 > on the assumption that it will not become the default, but since the
 > breakage will be very clear if this ever changes, I think Yann's
 > proposal is a good compromise. I was also annoyed by host-lzop always
 > being built, even if useless. Seemed like Buildroot was turning into
 > this other build system that builds gazillions of useless
 > dependencies :)

Indeed. We do have a problem with the initramfs stuff though as I
pointed out.
diff mbox

Patch

diff --git a/linux/linux.mk b/linux/linux.mk
index ab25fe9..f34bea1 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -38,7 +38,7 @@  endif
 LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH))
 
 LINUX_INSTALL_IMAGES = YES
-LINUX_DEPENDENCIES  += host-kmod host-lzop
+LINUX_DEPENDENCIES  += host-kmod
 
 ifeq ($(BR2_LINUX_KERNEL_UBOOT_IMAGE),y)
 	LINUX_DEPENDENCIES += host-uboot-tools
@@ -163,6 +163,10 @@  else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)
 KERNEL_SOURCE_CONFIG = $(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE)
 endif
 
+ifeq ($(call KCONFIG_GET_OPT,CONFIG_KERNEL_LZO,$(call qstrip,$(KERNEL_SOURCE_CONFIG))),y)
+LINUX_DEPENDENCIES += host-lzop
+endif
+
 define LINUX_CONFIGURE_CMDS
 	cp $(KERNEL_SOURCE_CONFIG) $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig
 	$(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) buildroot_defconfig