Message ID | 1423576221-24249-1-git-send-email-bos@je-eigen-domein.nl |
---|---|
State | Superseded |
Headers | show |
Hi Floris, On Tue, Feb 10, 2015 at 02:50:21PM +0100, Floris Bos wrote: > Adds configuration option to merge additional kernel configuration files > to the main kernel configuration using scripts/kconfig/merge_config.sh > > For use-cases in which it is desired to build a custom Linux kernel based on > the defconfig of the target device, but with a couple extra options/modules > enabled. > > Signed-off-by: Floris Bos <bos@je-eigen-domein.nl> > --- [...] > @@ -178,6 +179,8 @@ define LINUX_CONFIGURE_CMDS > $(INSTALL) -m 0644 $(KERNEL_SOURCE_CONFIG) $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig > $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) buildroot_defconfig > rm $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig > + $(if $(LINUX_KERNEL_CONFIG_FRAGMENTS), > + $(@D)/scripts/kconfig/merge_config.sh -m -O $(@D) $(@D)/.config $(LINUX_KERNEL_CONFIG_FRAGMENTS)) The merge_config.sh script is in the kernel since version 3.3. The -O parameter is only supported since v3.9. How do you handle older kernels? baruch
On 02/10/2015 08:19 PM, Baruch Siach wrote: > On Tue, Feb 10, 2015 at 02:50:21PM +0100, Floris Bos wrote: >> Adds configuration option to merge additional kernel configuration files >> to the main kernel configuration using scripts/kconfig/merge_config.sh >> >> For use-cases in which it is desired to build a custom Linux kernel based on >> the defconfig of the target device, but with a couple extra options/modules >> enabled. >> >> Signed-off-by: Floris Bos <bos@je-eigen-domein.nl> >> --- > [...] > >> @@ -178,6 +179,8 @@ define LINUX_CONFIGURE_CMDS >> $(INSTALL) -m 0644 $(KERNEL_SOURCE_CONFIG) $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig >> $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) buildroot_defconfig >> rm $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig >> + $(if $(LINUX_KERNEL_CONFIG_FRAGMENTS), >> + $(@D)/scripts/kconfig/merge_config.sh -m -O $(@D) $(@D)/.config $(LINUX_KERNEL_CONFIG_FRAGMENTS)) > The merge_config.sh script is in the kernel since version 3.3. The -O > parameter is only supported since v3.9. How do you handle older kernels? Could make it use the merge_config.sh we have in buildroot (in support/kconfig) instead, if support for old kernel versions is a requirement. Yours sincerely, Floris Bos
Hi Floris, On Tue, Feb 10, 2015 at 10:09:44PM +0100, Floris Bos wrote: > On 02/10/2015 08:19 PM, Baruch Siach wrote: > >On Tue, Feb 10, 2015 at 02:50:21PM +0100, Floris Bos wrote: > >>Adds configuration option to merge additional kernel configuration files > >>to the main kernel configuration using scripts/kconfig/merge_config.sh > >> > >>For use-cases in which it is desired to build a custom Linux kernel based on > >>the defconfig of the target device, but with a couple extra options/modules > >>enabled. > >> > >>Signed-off-by: Floris Bos <bos@je-eigen-domein.nl> > >>--- > >[...] > > > >>@@ -178,6 +179,8 @@ define LINUX_CONFIGURE_CMDS > >> $(INSTALL) -m 0644 $(KERNEL_SOURCE_CONFIG) $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig > >> $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) buildroot_defconfig > >> rm $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig > >>+ $(if $(LINUX_KERNEL_CONFIG_FRAGMENTS), > >>+ $(@D)/scripts/kconfig/merge_config.sh -m -O $(@D) $(@D)/.config $(LINUX_KERNEL_CONFIG_FRAGMENTS)) > >The merge_config.sh script is in the kernel since version 3.3. The -O > >parameter is only supported since v3.9. How do you handle older kernels? > > Could make it use the merge_config.sh we have in buildroot (in > support/kconfig) instead, if support for old kernel versions is a > requirement. Sounds better, IMO. You may also consider going one further step, and add this feature to the generic kconfig infrastructure. baruch
Dear Floris Bos, On Tue, 10 Feb 2015 14:50:21 +0100, Floris Bos wrote: > +config BR2_LINUX_KERNEL_CONFIG_FRAGMENTS > + string "Additional configuration fragment files" > + help > + A space-seperated list of kernel configuration fragment files, > + that will be merged to the main kernel configuration file. Instead of introducing a new option for this, can't we make the existing option that provides the kernel configuration file path a space-separated option that allows you to pass multiple kernel config file fragments? Or maybe you want to support the combination of a kernel defconfig + some fragments? Thanks, Thomas
Hi Thomas, On 02/14/2015 10:01 AM, Thomas Petazzoni wrote: > Dear Floris Bos, > > On Tue, 10 Feb 2015 14:50:21 +0100, Floris Bos wrote: > >> +config BR2_LINUX_KERNEL_CONFIG_FRAGMENTS >> + string "Additional configuration fragment files" >> + help >> + A space-seperated list of kernel configuration fragment files, >> + that will be merged to the main kernel configuration file. > Instead of introducing a new option for this, can't we make the > existing option that provides the kernel configuration file path a > space-separated option that allows you to pass multiple kernel config > file fragments? > > Or maybe you want to support the combination of a kernel defconfig + > some fragments? As mentioned in the commit message my use-case indeed involves combining a kernel defconfig with a fragment. To be more precise: I simply want to stay in sync with the Raspberry Pi defconfig -which changes a lot-, with a few tiny modifications of my own.
diff --git a/linux/Config.in b/linux/Config.in index c981493..afa68b0 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -161,6 +161,12 @@ config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE help Path to the kernel configuration file +config BR2_LINUX_KERNEL_CONFIG_FRAGMENTS + string "Additional configuration fragment files" + help + A space-seperated list of kernel configuration fragment files, + that will be merged to the main kernel configuration file. + # # Binary format # diff --git a/linux/linux.mk b/linux/linux.mk index 29f59e8..02c3f66 100644 --- a/linux/linux.mk +++ b/linux/linux.mk @@ -39,6 +39,7 @@ endif # -rc endif LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) +LINUX_KERNEL_CONFIG_FRAGMENTS = $(call qstrip,$(BR2_LINUX_KERNEL_CONFIG_FRAGMENTS)) LINUX_INSTALL_IMAGES = YES LINUX_DEPENDENCIES += host-kmod host-lzop @@ -178,6 +179,8 @@ define LINUX_CONFIGURE_CMDS $(INSTALL) -m 0644 $(KERNEL_SOURCE_CONFIG) $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig $(TARGET_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) buildroot_defconfig rm $(KERNEL_ARCH_PATH)/configs/buildroot_defconfig + $(if $(LINUX_KERNEL_CONFIG_FRAGMENTS), + $(@D)/scripts/kconfig/merge_config.sh -m -O $(@D) $(@D)/.config $(LINUX_KERNEL_CONFIG_FRAGMENTS)) $(if $(BR2_arm)$(BR2_armeb), $(call KCONFIG_ENABLE_OPT,CONFIG_AEABI,$(@D)/.config)) $(if $(BR2_TARGET_ROOTFS_CPIO),
Adds configuration option to merge additional kernel configuration files to the main kernel configuration using scripts/kconfig/merge_config.sh For use-cases in which it is desired to build a custom Linux kernel based on the defconfig of the target device, but with a couple extra options/modules enabled. Signed-off-by: Floris Bos <bos@je-eigen-domein.nl> --- linux/Config.in | 6 ++++++ linux/linux.mk | 3 +++ 2 files changed, 9 insertions(+)