All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnout Vandecappelle <arnout@mind.be>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2 1/5] kconfig-package: add support for config fragments
Date: Sat, 02 May 2015 14:43:43 +0200	[thread overview]
Message-ID: <5544C67F.2030304@mind.be> (raw)
In-Reply-To: <1430231675-8613-1-git-send-email-bos@je-eigen-domein.nl>

On 28/04/15 16:34, Floris Bos wrote:
> Adds functionality to the kconfig infrastructure to merge additional
> configuration fragment files to the main configuration file of
> kconfig packages, using support/kconfig/merge_config.sh
> 
> Typical use-case is when you want your configuration to be
> kept in sync with an upstream (def)config file, but do require
> some minor local modifications.
> 
> Disables -update-config and -update-defconfig targets when
> fragment files are set.
> 
> Signed-off-by: Floris Bos <bos@je-eigen-domein.nl>

 Some trivial feedback below, with that:
  Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
 Build test of linux-configure after applying patch 2, verified that the config
options in the fragment end up in the configuration, checked that
linux-update-{def,}config errors out with fragment and works without fragments,

 When the fragment file doesn't exist, you get:

make: *** No rule to make target 'test_fragment', needed by
'/home/arnout/src/buildroot/output/build/linux-3.15.10/.config'.  Stop.

which is good enough for me.

> 
> ---
> v2:
> 
> - use shell commands to print error message when
> update-(def)config target is used while fragment files are set.
> 
> - document changes to kconfig infrastructure.
> ---
>  docs/manual/adding-packages-kconfig.txt | 11 +++++++++++
>  package/pkg-kconfig.mk                  | 14 ++++++++++----
>  2 files changed, 21 insertions(+), 4 deletions(-)
> 
> diff --git a/docs/manual/adding-packages-kconfig.txt b/docs/manual/adding-packages-kconfig.txt
> index e87d393..dc9ea11 100644
> --- a/docs/manual/adding-packages-kconfig.txt
> +++ b/docs/manual/adding-packages-kconfig.txt
> @@ -36,6 +36,12 @@ This snippet creates the following make targets:
>  
>  * +foo-update-config+, which copies the configuration back to the source
>    configuration file.
> +  It is not possible to use this target when fragment files are set.

 There is not reason to start a new line - in the generated manual, the line
split will vanish anyway.

> +
> +* +foo-update-defconfig+, which copies the configuration back to the source
> +  configuration file. The configuration file will only list the
> +  options that differ from the default values.

 Word wrapping is a bit weird here.

> +  It is not possible to use this target when fragment files are set.
>  
>  and ensures that the source configuration file is copied to the build
>  directory at the right moment.
> @@ -46,6 +52,11 @@ be set to suit the needs of the package under consideration:
>  * +FOO_KCONFIG_EDITORS+: a space-separated list of kconfig editors to
>    support, for example 'menuconfig xconfig'. By default, 'menuconfig'.
>  
> +* +FOO_KCONFIG_FRAGMENT_FILES+: a space-separated list of configuration
> +  fragment files that are merged to the main configuration file.
> +  Fragment files are typically used when there is a desire to stay in sync
> +  with an upstream (def)config file, with some minor modifications.
> +
>  * +FOO_KCONFIG_OPTS+: extra options to pass when calling the kconfig
>    editors. This may need to include '$(FOO_MAKE_OPTS)', for example. By
>    default, empty.
> diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk
> index 8361064..21fbfdb 100644
> --- a/package/pkg-kconfig.mk
> +++ b/package/pkg-kconfig.mk
> @@ -35,18 +35,20 @@ $(call inner-generic-package,$(1),$(2),$(3),$(4))
>  $(2)_KCONFIG_EDITORS ?= menuconfig
>  $(2)_KCONFIG_OPTS ?=
>  $(2)_KCONFIG_FIXUP_CMDS ?=
> +$(2)_KCONFIG_FRAGMENT_FILES ?=
>  
>  # The config file could be in-tree, so before depending on it the package should
>  # be extracted (and patched) first
>  $$($(2)_KCONFIG_FILE): | $(1)-patch
>  
> -# The .config file is obtained by copying it from the specified source
> -# configuration file, after the package has been patched.
> +# The specified source configuration file and any additional configuration file
> +# fragments are merged together to .config, after the package has been patched.
>  # Since the file could be a defconfig file it needs to be expanded to a
>  # full .config first. We use 'make oldconfig' because this can be safely
>  # done even when the package does not support defconfigs.
> -$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE)
> -	$$(INSTALL) -m 0644 $$($(2)_KCONFIG_FILE) $$($(2)_DIR)/.config
> +$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES)
> +	support/kconfig/merge_config.sh -m -O $$(@D) \
> +		$$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES)
>  	@yes "" | $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \
>  		$$($(2)_KCONFIG_OPTS) oldconfig
>  
> @@ -87,6 +89,8 @@ $(1)-savedefconfig: $$($(2)_DIR)/.stamp_kconfig_fixup_done
>  # Even though we could use 'cp --preserve-timestamps' here, the separate
>  # cp and 'touch --reference' is used for symmetry with $(1)-update-defconfig.
>  $(1)-update-config: $$($(2)_DIR)/.stamp_kconfig_fixup_done
> +	$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \
> +		echo "Unable to perform $(1)-update-config when fragment files are set"; exit 1)

 There should be an @ in front of this, otherwise you see the error twice.

>  	cp -f $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)
>  	touch --reference $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)
>  
> @@ -95,6 +99,8 @@ $(1)-update-config: $$($(2)_DIR)/.stamp_kconfig_fixup_done
>  # $(1)-update-config, the reference for 'touch' is _not_ the file from which
>  # we copy.
>  $(1)-update-defconfig: $(1)-savedefconfig
> +	$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \
> +		echo "Unable to perform $(1)-update-defconfig when fragment files are set"; exit 1)

 And here.


 Regards,
 Arnout

>  	cp -f $$($(2)_DIR)/defconfig $$($(2)_KCONFIG_FILE)
>  	touch --reference $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)
>  
> 


-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

  parent reply	other threads:[~2015-05-02 12:43 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-28 14:34 [Buildroot] [PATCH v2 1/5] kconfig-package: add support for config fragments Floris Bos
2015-04-28 14:34 ` [Buildroot] [PATCH v2 2/5] linux: add option to specify " Floris Bos
2015-05-02 10:39   ` Arnout Vandecappelle
2015-05-02 12:44   ` Arnout Vandecappelle
2015-05-06  4:16     ` Gergely Imreh
2015-04-28 14:34 ` [Buildroot] [PATCH v2 3/5] busybox: " Floris Bos
2015-05-02 12:47   ` Arnout Vandecappelle
2015-04-28 14:34 ` [Buildroot] [PATCH v2 4/5] uclibc: " Floris Bos
2015-05-02 12:55   ` Arnout Vandecappelle
2015-04-28 14:34 ` [Buildroot] [PATCH v2 5/5] barebox: " Floris Bos
2015-05-02 12:55   ` Arnout Vandecappelle
2015-05-02 10:37 ` [Buildroot] [PATCH v2 1/5] kconfig-package: add support for " Arnout Vandecappelle
2015-05-02 11:30   ` Floris Bos
2015-05-02 12:43 ` Arnout Vandecappelle [this message]
2015-05-06  4:14   ` Gergely Imreh
2015-05-21 21:52 ` Thomas Petazzoni

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=5544C67F.2030304@mind.be \
    --to=arnout@mind.be \
    --cc=buildroot@busybox.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.