* [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package
@ 2014-07-30 19:58 Thomas De Schampheleire
2014-07-30 19:58 ` [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure Thomas De Schampheleire
` (5 more replies)
0 siblings, 6 replies; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-07-30 19:58 UTC (permalink / raw)
To: buildroot
This patch series introduces a kconfig-package infrastructure and already
converts the uclibc and busybox packages.
I believe this series is complete in the sense that it could be applied as
one whole, not yet including the conversion of linux and barebox.
In a subsequent series, linux and barebox can be converted to
kconfig-package too, but there will need to be some changes to
kconfig-package to support them.
One particular difference with uclibc/busybox is that linux/barebox use a
different method to copy the original config file: instead of simply copying
it to build_dir/.config, it is first copied to arch/.../buildroot_defconfig
and then 'make ... buildroot_defconfig' is called. I'm considering in adding
a FOO_KCONFIG_INSTALL_CONFIG_CMDS variable to support this, which defaults
to the simple copy used by busybox/uclibc, but can be overwritten
appropriately by linux and barebox.
Anyway, this part is not yet ready and will only be available for 2014.11.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
Thomas De Schampheleire (6):
infra: introduce a kconfig-package infrastructure
manual: add documentation for kconfig-package
uclibc: convert to kconfig-package infrastructure
uclibc: only add targets if uclibc is enabled
busybox: convert to kconfig-package infrastructure
busybox: only add kconfig targets if uclibc is enabled
docs/manual/adding-packages-kconfig.txt | 56 +++++++++++++++++
docs/manual/adding-packages.txt | 2 +
package/Makefile.in | 1 +
package/busybox/busybox.config | 18 ++--
package/busybox/busybox.mk | 27 +++----
package/pkg-kconfig.mk | 82 +++++++++++++++++++++++++
package/uclibc/uclibc.mk | 36 +++-------
7 files changed, 173 insertions(+), 49 deletions(-)
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure
2014-07-30 19:58 [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package Thomas De Schampheleire
@ 2014-07-30 19:58 ` Thomas De Schampheleire
2014-07-31 20:42 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 2 of 6 v2] manual: add documentation for kconfig-package Thomas De Schampheleire
` (4 subsequent siblings)
5 siblings, 1 reply; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-07-30 19:58 UTC (permalink / raw)
To: buildroot
There are several packages that have a configuration file managed by
kconfig: uclibc, busybox, linux and barebox. All these packages need some
make targets to handle the kconfig specificities: creating a configuration
(menuconfig, ...) and saving it back (update-config, ...)
These targets should be the same for each of these packages, but
unfortunately they are not. Especially with respect to saving back the
configuration to the original config file, there are many differences.
A previous set of patches fixed these targets for the uclibc package.
This patch extracts these targets into a common kconfig-package
infrastructure, with the goals of:
- aligning the behavior of all kconfig-based packages
- removing code duplication
In order to use this infrastructure, a package should at a minimum specify
FOO_KCONFIG_FILE and eval the kconfig-package macro. The supported
configuration editors can be set with FOO_KCONFIG_EDITORS and defaults to
menuconfig only.
Additionally, a package can specify FOO_KCONFIG_OPT for extra options to
pass to the invocation of the kconfig editors, and FOO_KCONFIG_FIXUP_CMDS
for a list of shell commands used to fixup the .config file after a
configuration has been created/edited.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
v2:
- fold comments into this patch
- inherit from generic-package instead of sitting alongside of it (ThomasP)
Notes:
- the issue with MAKE_OPT vs MAKE_OPTS has been worked around currently
by not relying on any MAKE_OPT(S) but instead requiring the package to add
the necessary variable to FOO_KCONFIG_OPT.
However, I still believe we should create a consistent set here, either
MAKE_OPT or MAKE_OPTS, and the same for CONFIGURE_OPT(S), but this is now no
longer related to the introduction of kconfig-package.
- the targets in this patch are sufficient to handle uclibc and busybox.
For linux and barebox, some changes will be needed, but for clarity this
will be added later.
package/Makefile.in | 1 +
package/pkg-kconfig.mk | 80 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 81 insertions(+), 0 deletions(-)
diff -r 4ee2201e6e6b -r 83a2e5f2641a package/Makefile.in
--- a/package/Makefile.in Tue Jul 29 16:54:37 2014 +0400
+++ b/package/Makefile.in Mon Jun 30 21:08:13 2014 +0200
@@ -388,3 +388,4 @@
include package/pkg-python.mk
include package/pkg-virtual.mk
include package/pkg-generic.mk
+include package/pkg-kconfig.mk
diff -r 4ee2201e6e6b -r 83a2e5f2641a package/pkg-kconfig.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/package/pkg-kconfig.mk Mon Jun 30 21:08:13 2014 +0200
@@ -0,0 +1,82 @@
+################################################################################
+# Kconfig package infrastructure
+#
+# This file implements an infrastructure that eases development of
+# package .mk files for packages that use kconfig for configuration files.
+# It is based on the generic-package infrastructure, and inherits all of its
+# features.
+#
+# See the Buildroot documentation for details on the usage of this
+# infrastructure.
+#
+################################################################################
+
+################################################################################
+# inner-kconfig-package -- generates the make targets needed to support a
+# kconfig package
+#
+# argument 1 is the lowercase package name
+# argument 2 is the uppercase package name, including a HOST_ prefix
+# for host packages
+# argument 3 is the uppercase package name, without the HOST_ prefix
+# for host packages
+# argument 4 is the type (target or host)
+################################################################################
+
+define inner-kconfig-package
+
+# Call the generic package infrastructure to generate the necessary
+# make targets.
+# Note: this must be done _before_ attempting to use $$($(2)_DIR) in a
+# dependency expression
+$(call inner-generic-package,$(1),$(2),$(3),$(4))
+
+# Default values
+
+$(2)_KCONFIG_EDITORS ?= menuconfig
+$(2)_KCONFIG_OPT ?=
+$(2)_KCONFIG_FIXUP_CMDS ?=
+
+# FOO_KCONFIG_FILE is required
+
+ifndef $(2)_KCONFIG_FILE
+$$(error Internal error: no value specified for $(2)_KCONFIG_FILE)
+endif
+
+# The .config file is obtained by copying it from the specified source
+# configuration file, after the package has been patched.
+
+$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) | $(1)-patch
+ $$(INSTALL) -m 0644 $$($(2)_KCONFIG_FILE) $$($(2)_DIR)/.config
+
+# In order to get a usable, consistent configuration, some fixup may be needed.
+# The exact rules are specified by the package .mk file.
+
+$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/.config
+ $$($(2)_KCONFIG_FIXUP_CMDS)
+ $$(Q)touch $$@
+
+# Before running configure, the configuration file should be present and fixed
+
+$$($(2)_TARGET_CONFIGURE): $$($(2)_DIR)/.stamp_kconfig_fixup_done
+
+# Configuration editors (menuconfig, ...)
+
+$$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $$($(2)_DIR)/.config
+ $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \
+ $$($(2)_KCONFIG_OPT) $$(subst $(1)-,,$$@)
+ rm -f $$($(2)_DIR)/.stamp_{kconfig_fixup_done,configured,built}
+ rm -f $$($(2)_DIR)/.stamp_{target,staging}_installed
+
+# Target to copy back the configuration to the source configuration file
+
+$(1)-update-config: $$($(2)_DIR)/.stamp_kconfig_fixup_done
+ cp -f $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)
+
+endef # inner-kconfig-package
+
+################################################################################
+# kconfig-package -- the target generator macro for kconfig packages
+################################################################################
+
+kconfig-package = $(call inner-kconfig-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)))
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 2 of 6 v2] manual: add documentation for kconfig-package
2014-07-30 19:58 [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package Thomas De Schampheleire
2014-07-30 19:58 ` [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure Thomas De Schampheleire
@ 2014-07-30 19:58 ` Thomas De Schampheleire
2014-07-31 21:03 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure Thomas De Schampheleire
` (3 subsequent siblings)
5 siblings, 1 reply; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-07-30 19:58 UTC (permalink / raw)
To: buildroot
This patch adds documentation for the new kconfig-package infrastructure to
the manual.
Note that due to the simplicity of the infrastructure, the documentation
is not split in a 'tutorial' and a 'reference', like for the other
infrastructures. Instead, the usage is described in one section.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
v2: update after move to a real infrastructure
docs/manual/adding-packages-kconfig.txt | 56 +++++++++++++++++++++++++++++
docs/manual/adding-packages.txt | 2 +
2 files changed, 58 insertions(+), 0 deletions(-)
diff -r 83a2e5f2641a -r 7e76c27202ec docs/manual/adding-packages-kconfig.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/manual/adding-packages-kconfig.txt Thu Jul 24 20:54:50 2014 +0200
@@ -0,0 +1,56 @@
+// -*- mode:doc; -*-
+// vim: set syntax=asciidoc:
+
+=== Infrastructure for packages using kconfig for configuration files
+
+A popular way for a software package to handle user-specified
+configuration is +kconfig+. Among others, it is used by the Linux
+kernel, Busybox, and Buildroot itself. The presence of a .config file
+and a +menuconfig+ target are two well-known symptoms of kconfig being
+used.
+
+Buildroot features an infrastructure for packages that use kconfig for
+configuration. This infrastructure provides the necessary make logic to
+expose the package +menuconfig+ target as +foo-menuconfig+ in Buildroot,
+and to handle the copying and copy-back of the configuration file in a
+correct way.
+
+The +kconfig-package+ infrastructure is based on the +generic-package+
+infrastructure. All variables supported by +generic-package+ are
+available in +kconfig-package+ as well. See
+xref:generic-package-reference[] for more details.
+
+In order to use the +kconfig-package+ infrastructure for a Buildroot
+package, the minimally required lines in the .mk file in addition to
+the variables required by the +generic-package+ infrastructure, are:
+
+------------------------------
+FOO_KCONFIG_FILE = reference-to-source-configuration-file
+
+$(eval $(kconfig-package))
+------------------------------
+
+This snippet will create following make targets:
+
+* +foo-menuconfig+, which calls the package's +menuconfig+ target
+
+* +foo-update-config+, which copies back the configuration to the source
+ configuration file.
+
+and will ensure that the source configuration file is copied to the build
+directory at the right moment.
+
+In addition to these minimally required lines, several optional variables can
+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_OPT+: extra options to pass when calling the kconfig
+ ediftors. This may need to include '$(FOO_MAKE_OPT)', for example. By
+ default, empty.
+
+* +FOO_KCONFIG_FIXUP_CMDS+: a list of shell commands needed to fixup the
+ configuration file after copying it or running a kconfig editor. Such
+ commands may be needed to ensure a configuration consistent with other
+ configuration of Buildroot, for example. By default, empty.
diff -r 83a2e5f2641a -r 7e76c27202ec docs/manual/adding-packages.txt
--- a/docs/manual/adding-packages.txt Mon Jun 30 21:08:13 2014 +0200
+++ b/docs/manual/adding-packages.txt Thu Jul 24 20:54:50 2014 +0200
@@ -25,6 +25,8 @@
include::adding-packages-virtual.txt[]
+include::adding-packages-kconfig.txt[]
+
include::adding-packages-hooks.txt[]
include::adding-packages-gettext.txt[]
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure
2014-07-30 19:58 [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package Thomas De Schampheleire
2014-07-30 19:58 ` [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure Thomas De Schampheleire
2014-07-30 19:58 ` [Buildroot] [PATCH 2 of 6 v2] manual: add documentation for kconfig-package Thomas De Schampheleire
@ 2014-07-30 19:58 ` Thomas De Schampheleire
2014-07-31 21:07 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled Thomas De Schampheleire
` (2 subsequent siblings)
5 siblings, 1 reply; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-07-30 19:58 UTC (permalink / raw)
To: buildroot
This patch converts the uclibc package to the new kconfig-package
infrastructure, thus removing code duplication and ensuring a consistent
behavior of kconfig packages.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
v2: kconfig-package is now a real package infrastructure, so remove call
to generic-package
package/uclibc/uclibc.mk | 34 ++++++++++------------------------
1 files changed, 10 insertions(+), 24 deletions(-)
diff -r 7e76c27202ec -r 083076145a2b package/uclibc/uclibc.mk
--- a/package/uclibc/uclibc.mk Thu Jul 24 20:54:50 2014 +0200
+++ b/package/uclibc/uclibc.mk Tue Jul 22 20:35:36 2014 +0200
@@ -37,6 +37,14 @@
UCLIBC_CONFIG_FILE = $(call qstrip,$(BR2_UCLIBC_CONFIG))
endif
+UCLIBC_KCONFIG_FILE = $(UCLIBC_CONFIG_FILE)
+
+UCLIBC_KCONFIG_OPT = \
+ $(UCLIBC_MAKE_FLAGS) \
+ PREFIX=$(STAGING_DIR) \
+ DEVEL_PREFIX=/usr/ \
+ RUNTIME_PREFIX=$(STAGING_DIR)/ \
+
UCLIBC_TARGET_ARCH = $(call qstrip,$(BR2_UCLIBC_TARGET_ARCH))
ifeq ($(GENERATE_LOCALE),)
@@ -393,7 +401,7 @@
UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS) $(TARGET_ABI)" \
HOSTCC="$(HOSTCC)"
-define UCLIBC_FIXUP_DOT_CONFIG
+define UCLIBC_KCONFIG_FIXUP_CMDS
$(call KCONFIG_SET_OPT,CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)",$(@D)/.config)
$(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH),$(@D)/.config)
$(call KCONFIG_SET_OPT,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)",$(@D)/.config)
@@ -531,29 +539,7 @@
$(UCLIBC_INSTALL_UTILS_STAGING)
endef
-$(eval $(generic-package))
-
-$(UCLIBC_DIR)/.config: $(UCLIBC_CONFIG_FILE) | uclibc-patch
- $(INSTALL) -m 0644 $(UCLIBC_CONFIG_FILE) $(UCLIBC_DIR)/.config
-
-$(UCLIBC_DIR)/.stamp_config_fixup_done: $(UCLIBC_DIR)/.config
- $(UCLIBC_FIXUP_DOT_CONFIG)
- $(Q)touch $@
-
-$(UCLIBC_TARGET_CONFIGURE): $(UCLIBC_DIR)/.stamp_config_fixup_done
-
-uclibc-menuconfig: $(UCLIBC_DIR)/.config
- $(MAKE) -C $(UCLIBC_DIR) \
- $(UCLIBC_MAKE_FLAGS) \
- PREFIX=$(STAGING_DIR) \
- DEVEL_PREFIX=/usr/ \
- RUNTIME_PREFIX=$(STAGING_DIR)/ \
- menuconfig
- rm -f $(UCLIBC_DIR)/.stamp_{config_fixup_done,configured,built}
- rm -f $(UCLIBC_DIR)/.stamp_{target,staging}_installed
-
-uclibc-update-config: $(UCLIBC_DIR)/.stamp_config_fixup_done
- cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE)
+$(eval $(kconfig-package))
# Before uClibc is built, we must have the second stage cross-compiler
$(UCLIBC_TARGET_BUILD): | host-gcc-intermediate
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled
2014-07-30 19:58 [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package Thomas De Schampheleire
` (2 preceding siblings ...)
2014-07-30 19:58 ` [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure Thomas De Schampheleire
@ 2014-07-30 19:58 ` Thomas De Schampheleire
2014-07-31 21:08 ` Yann E. MORIN
2014-07-31 21:13 ` Thomas Petazzoni
2014-07-30 19:58 ` [Buildroot] [PATCH 5 of 6 v2] busybox: convert to kconfig-package infrastructure Thomas De Schampheleire
2014-07-30 19:58 ` [Buildroot] [PATCH 6 of 6 v2] busybox: only add kconfig targets if uclibc is enabled Thomas De Schampheleire
5 siblings, 2 replies; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-07-30 19:58 UTC (permalink / raw)
To: buildroot
In analogy of linux.mk, only enable its targets (in particular the kconfig
targets (menuconfig, update-config, ...) when the uclibc package is actually
enabled.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
v2: rebase after making kconfig-package a full infra
Note: now that kconfig-package is a full package infra (inheriting from
generic-package) this may seem a bit odd, as other packages do not do this.
Nevertheless, it does not hurt and will slightly improve the parsing of the
Makefiles when the package is not selected.
package/uclibc/uclibc.mk | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff -r 083076145a2b -r 540167f28c2d package/uclibc/uclibc.mk
--- a/package/uclibc/uclibc.mk Tue Jul 22 20:35:36 2014 +0200
+++ b/package/uclibc/uclibc.mk Wed Jul 23 20:12:32 2014 +0200
@@ -539,7 +539,9 @@
$(UCLIBC_INSTALL_UTILS_STAGING)
endef
+ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC),y)
$(eval $(kconfig-package))
+endif
# Before uClibc is built, we must have the second stage cross-compiler
$(UCLIBC_TARGET_BUILD): | host-gcc-intermediate
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 5 of 6 v2] busybox: convert to kconfig-package infrastructure
2014-07-30 19:58 [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package Thomas De Schampheleire
` (3 preceding siblings ...)
2014-07-30 19:58 ` [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled Thomas De Schampheleire
@ 2014-07-30 19:58 ` Thomas De Schampheleire
2014-07-31 21:53 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 6 of 6 v2] busybox: only add kconfig targets if uclibc is enabled Thomas De Schampheleire
5 siblings, 1 reply; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-07-30 19:58 UTC (permalink / raw)
To: buildroot
This patch converts the busybox package to the new kconfig-package
infrastructure, thus removing code duplication and ensuring a consistent
behavior of kconfig packages.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
v2: rebase after making kconfig-package a full infra
package/busybox/busybox.mk | 25 +++++++++----------------
1 files changed, 9 insertions(+), 16 deletions(-)
diff -r 540167f28c2d -r f995a8adfa24 package/busybox/busybox.mk
--- a/package/busybox/busybox.mk Wed Jul 23 20:12:32 2014 +0200
+++ b/package/busybox/busybox.mk Tue Jul 22 20:43:10 2014 +0200
@@ -45,6 +45,10 @@
BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
endif
+BUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE)
+BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig
+BUSYBOX_KCONFIG_OPT = $(BUSYBOX_MAKE_OPTS)
+
define BUSYBOX_PERMISSIONS
/bin/busybox f 4755 0 0 - - - - -
/usr/share/udhcpc/default.script f 755 0 0 - - - - -
@@ -136,10 +140,6 @@
endef
endif
-define BUSYBOX_COPY_CONFIG
- $(INSTALL) -D -m 0644 $(BUSYBOX_CONFIG_FILE) $(BUSYBOX_BUILD_CONFIG)
-endef
-
# Disable shadow passwords support if unsupported by the C library
ifeq ($(BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS),)
define BUSYBOX_INTERNAL_SHADOW_PASSWORDS
@@ -190,8 +190,7 @@
$(SED) 's/^noclobber="0"$$/noclobber="1"/' $(@D)/applets/install.sh
endef
-define BUSYBOX_CONFIGURE_CMDS
- $(BUSYBOX_COPY_CONFIG)
+define BUSYBOX_KCONFIG_FIXUP_CMDS
$(BUSYBOX_SET_MMU)
$(BUSYBOX_SET_LARGEFILE)
$(BUSYBOX_SET_IPV6)
@@ -203,6 +202,9 @@
$(BUSYBOX_INTERNAL_SHADOW_PASSWORDS)
$(BUSYBOX_SET_INIT)
$(BUSYBOX_SET_WATCHDOG)
+endef
+
+define BUSYBOX_CONFIGURE_CMDS
@yes "" | $(MAKE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE="$(TARGET_CROSS)" \
-C $(@D) oldconfig
$(BUSYBOX_NOCLOBBER_INSTALL)
@@ -224,13 +226,4 @@
$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
endef
-$(eval $(generic-package))
-
-busybox-menuconfig busybox-xconfig busybox-gconfig: busybox-patch
- $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(BUSYBOX_DIR) \
- $(subst busybox-,,$@)
- rm -f $(BUSYBOX_DIR)/.stamp_built
- rm -f $(BUSYBOX_DIR)/.stamp_target_installed
-
-busybox-update-config: busybox-configure
- cp -f $(BUSYBOX_BUILD_CONFIG) $(BUSYBOX_CONFIG_FILE)
+$(eval $(kconfig-package))
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 6 of 6 v2] busybox: only add kconfig targets if uclibc is enabled
2014-07-30 19:58 [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package Thomas De Schampheleire
` (4 preceding siblings ...)
2014-07-30 19:58 ` [Buildroot] [PATCH 5 of 6 v2] busybox: convert to kconfig-package infrastructure Thomas De Schampheleire
@ 2014-07-30 19:58 ` Thomas De Schampheleire
2014-07-31 21:12 ` Yann E. MORIN
5 siblings, 1 reply; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-07-30 19:58 UTC (permalink / raw)
To: buildroot
In analogy of linux.mk, only enable its targets, in particular the kconfig
targets (menuconfig, update-config, ...) when the busybox package is
actually enabled.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
package/busybox/busybox.mk | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff -r f995a8adfa24 -r 469e4493e128 package/busybox/busybox.mk
--- a/package/busybox/busybox.mk Tue Jul 22 20:43:10 2014 +0200
+++ b/package/busybox/busybox.mk Wed Jul 23 20:13:38 2014 +0200
@@ -226,4 +226,6 @@
$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
endef
+ifeq ($(BR2_PACKAGE_BUSYBOX),y)
$(eval $(kconfig-package))
+endif
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure
2014-07-30 19:58 ` [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure Thomas De Schampheleire
@ 2014-07-31 20:42 ` Yann E. MORIN
2014-08-01 19:22 ` Thomas De Schampheleire
0 siblings, 1 reply; 19+ messages in thread
From: Yann E. MORIN @ 2014-07-31 20:42 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
[--SNIP--]
> diff -r 4ee2201e6e6b -r 83a2e5f2641a package/pkg-kconfig.mk
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/package/pkg-kconfig.mk Mon Jun 30 21:08:13 2014 +0200
> @@ -0,0 +1,82 @@
[--SNIP--]
> +# The .config file is obtained by copying it from the specified source
> +# configuration file, after the package has been patched.
> +
> +$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) | $(1)-patch
> + $$(INSTALL) -m 0644 $$($(2)_KCONFIG_FILE) $$($(2)_DIR)/.config
> +
> +# In order to get a usable, consistent configuration, some fixup may be needed.
> +# The exact rules are specified by the package .mk file.
> +
> +$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/.config
> + $$($(2)_KCONFIG_FIXUP_CMDS)
> + $$(Q)touch $$@
> +
> +# Before running configure, the configuration file should be present and fixed
> +
> +$$($(2)_TARGET_CONFIGURE): $$($(2)_DIR)/.stamp_kconfig_fixup_done
> +
> +# Configuration editors (menuconfig, ...)
> +
> +$$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $$($(2)_DIR)/.config
Should we not depend on .stamp_kconfig_fixup_done instead of .config, so
we present to the user a .config that is already tweak to our needs?
Regards,
Yann E. MORIN.
> + $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \
> + $$($(2)_KCONFIG_OPT) $$(subst $(1)-,,$$@)
> + rm -f $$($(2)_DIR)/.stamp_{kconfig_fixup_done,configured,built}
> + rm -f $$($(2)_DIR)/.stamp_{target,staging}_installed
> +
> +# Target to copy back the configuration to the source configuration file
> +
> +$(1)-update-config: $$($(2)_DIR)/.stamp_kconfig_fixup_done
> + cp -f $$($(2)_DIR)/.config $$($(2)_KCONFIG_FILE)
> +
> +endef # inner-kconfig-package
> +
> +################################################################################
> +# kconfig-package -- the target generator macro for kconfig packages
> +################################################################################
> +
> +kconfig-package = $(call inner-kconfig-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)))
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 2 of 6 v2] manual: add documentation for kconfig-package
2014-07-30 19:58 ` [Buildroot] [PATCH 2 of 6 v2] manual: add documentation for kconfig-package Thomas De Schampheleire
@ 2014-07-31 21:03 ` Yann E. MORIN
0 siblings, 0 replies; 19+ messages in thread
From: Yann E. MORIN @ 2014-07-31 21:03 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
> This patch adds documentation for the new kconfig-package infrastructure to
> the manual.
>
> Note that due to the simplicity of the infrastructure, the documentation
> is not split in a 'tutorial' and a 'reference', like for the other
> infrastructures. Instead, the usage is described in one section.
>
> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
>
> ---
> v2: update after move to a real infrastructure
>
> docs/manual/adding-packages-kconfig.txt | 56 +++++++++++++++++++++++++++++
> docs/manual/adding-packages.txt | 2 +
> 2 files changed, 58 insertions(+), 0 deletions(-)
>
> diff -r 83a2e5f2641a -r 7e76c27202ec docs/manual/adding-packages-kconfig.txt
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/docs/manual/adding-packages-kconfig.txt Thu Jul 24 20:54:50 2014 +0200
> @@ -0,0 +1,56 @@
> +// -*- mode:doc; -*-
> +// vim: set syntax=asciidoc:
> +
> +=== Infrastructure for packages using kconfig for configuration files
> +
> +A popular way for a software package to handle user-specified
> +configuration is +kconfig+. Among others, it is used by the Linux
> +kernel, Busybox, and Buildroot itself. The presence of a .config file
> +and a +menuconfig+ target are two well-known symptoms of kconfig being
> +used.
> +
> +Buildroot features an infrastructure for packages that use kconfig for
> +configuration. This infrastructure provides the necessary make logic to
... for their configuration ...
... the necessary logic...
> +expose the package +menuconfig+ target as +foo-menuconfig+ in Buildroot,
... the package's +menuconfig+ ...
> +and to handle the copying and copy-back of the configuration file in a
... the copying back and forth of ...
> +correct way.
> +
> +The +kconfig-package+ infrastructure is based on the +generic-package+
> +infrastructure. All variables supported by +generic-package+ are
> +available in +kconfig-package+ as well. See
> +xref:generic-package-reference[] for more details.
> +
> +In order to use the +kconfig-package+ infrastructure for a Buildroot
> +package, the minimally required lines in the .mk file in addition to
... in the +.mk+ file, in addition to ...
> +the variables required by the +generic-package+ infrastructure, are:
> +
> +------------------------------
> +FOO_KCONFIG_FILE = reference-to-source-configuration-file
> +
> +$(eval $(kconfig-package))
> +------------------------------
> +
> +This snippet will create following make targets:
The snippet creates the following ...
> +* +foo-menuconfig+, which calls the package's +menuconfig+ target
> +
> +* +foo-update-config+, which copies back the configuration to the source
> + configuration file.
> +
> +and will ensure that the source configuration file is copied to the build
... and ensures that ...
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure
2014-07-30 19:58 ` [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure Thomas De Schampheleire
@ 2014-07-31 21:07 ` Yann E. MORIN
2014-08-01 19:42 ` Thomas De Schampheleire
0 siblings, 1 reply; 19+ messages in thread
From: Yann E. MORIN @ 2014-07-31 21:07 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
> This patch converts the uclibc package to the new kconfig-package
> infrastructure, thus removing code duplication and ensuring a consistent
> behavior of kconfig packages.
>
> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
However, I'd suggest a small enhancement (for a future patch):
UCLIBC_KCONFIG_EDITORS = menuconfig nconfig
Regards,
Yann E. MORIN.
> ---
> v2: kconfig-package is now a real package infrastructure, so remove call
> to generic-package
>
> package/uclibc/uclibc.mk | 34 ++++++++++------------------------
> 1 files changed, 10 insertions(+), 24 deletions(-)
>
> diff -r 7e76c27202ec -r 083076145a2b package/uclibc/uclibc.mk
> --- a/package/uclibc/uclibc.mk Thu Jul 24 20:54:50 2014 +0200
> +++ b/package/uclibc/uclibc.mk Tue Jul 22 20:35:36 2014 +0200
> @@ -37,6 +37,14 @@
> UCLIBC_CONFIG_FILE = $(call qstrip,$(BR2_UCLIBC_CONFIG))
> endif
>
> +UCLIBC_KCONFIG_FILE = $(UCLIBC_CONFIG_FILE)
> +
> +UCLIBC_KCONFIG_OPT = \
> + $(UCLIBC_MAKE_FLAGS) \
> + PREFIX=$(STAGING_DIR) \
> + DEVEL_PREFIX=/usr/ \
> + RUNTIME_PREFIX=$(STAGING_DIR)/ \
> +
> UCLIBC_TARGET_ARCH = $(call qstrip,$(BR2_UCLIBC_TARGET_ARCH))
>
> ifeq ($(GENERATE_LOCALE),)
> @@ -393,7 +401,7 @@
> UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS) $(TARGET_ABI)" \
> HOSTCC="$(HOSTCC)"
>
> -define UCLIBC_FIXUP_DOT_CONFIG
> +define UCLIBC_KCONFIG_FIXUP_CMDS
> $(call KCONFIG_SET_OPT,CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)",$(@D)/.config)
> $(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH),$(@D)/.config)
> $(call KCONFIG_SET_OPT,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)",$(@D)/.config)
> @@ -531,29 +539,7 @@
> $(UCLIBC_INSTALL_UTILS_STAGING)
> endef
>
> -$(eval $(generic-package))
> -
> -$(UCLIBC_DIR)/.config: $(UCLIBC_CONFIG_FILE) | uclibc-patch
> - $(INSTALL) -m 0644 $(UCLIBC_CONFIG_FILE) $(UCLIBC_DIR)/.config
> -
> -$(UCLIBC_DIR)/.stamp_config_fixup_done: $(UCLIBC_DIR)/.config
> - $(UCLIBC_FIXUP_DOT_CONFIG)
> - $(Q)touch $@
> -
> -$(UCLIBC_TARGET_CONFIGURE): $(UCLIBC_DIR)/.stamp_config_fixup_done
> -
> -uclibc-menuconfig: $(UCLIBC_DIR)/.config
> - $(MAKE) -C $(UCLIBC_DIR) \
> - $(UCLIBC_MAKE_FLAGS) \
> - PREFIX=$(STAGING_DIR) \
> - DEVEL_PREFIX=/usr/ \
> - RUNTIME_PREFIX=$(STAGING_DIR)/ \
> - menuconfig
> - rm -f $(UCLIBC_DIR)/.stamp_{config_fixup_done,configured,built}
> - rm -f $(UCLIBC_DIR)/.stamp_{target,staging}_installed
> -
> -uclibc-update-config: $(UCLIBC_DIR)/.stamp_config_fixup_done
> - cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE)
> +$(eval $(kconfig-package))
>
> # Before uClibc is built, we must have the second stage cross-compiler
> $(UCLIBC_TARGET_BUILD): | host-gcc-intermediate
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled
2014-07-30 19:58 ` [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled Thomas De Schampheleire
@ 2014-07-31 21:08 ` Yann E. MORIN
2014-07-31 21:13 ` Thomas Petazzoni
1 sibling, 0 replies; 19+ messages in thread
From: Yann E. MORIN @ 2014-07-31 21:08 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
> In analogy of linux.mk, only enable its targets (in particular the kconfig
> targets (menuconfig, update-config, ...) when the uclibc package is actually
> enabled.
>
> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> v2: rebase after making kconfig-package a full infra
>
> Note: now that kconfig-package is a full package infra (inheriting from
> generic-package) this may seem a bit odd, as other packages do not do this.
> Nevertheless, it does not hurt and will slightly improve the parsing of the
> Makefiles when the package is not selected.
>
> package/uclibc/uclibc.mk | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff -r 083076145a2b -r 540167f28c2d package/uclibc/uclibc.mk
> --- a/package/uclibc/uclibc.mk Tue Jul 22 20:35:36 2014 +0200
> +++ b/package/uclibc/uclibc.mk Wed Jul 23 20:12:32 2014 +0200
> @@ -539,7 +539,9 @@
> $(UCLIBC_INSTALL_UTILS_STAGING)
> endef
>
> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC),y)
> $(eval $(kconfig-package))
> +endif
>
> # Before uClibc is built, we must have the second stage cross-compiler
> $(UCLIBC_TARGET_BUILD): | host-gcc-intermediate
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 6 of 6 v2] busybox: only add kconfig targets if uclibc is enabled
2014-07-30 19:58 ` [Buildroot] [PATCH 6 of 6 v2] busybox: only add kconfig targets if uclibc is enabled Thomas De Schampheleire
@ 2014-07-31 21:12 ` Yann E. MORIN
0 siblings, 0 replies; 19+ messages in thread
From: Yann E. MORIN @ 2014-07-31 21:12 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
> In analogy of linux.mk, only enable its targets, in particular the kconfig
> targets (menuconfig, update-config, ...) when the busybox package is
> actually enabled.
>
> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Typo in subject:
busybox: only add kconfig targets if uclibc is enabled
s/uclibc/busybox/
Otherwise:
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> package/busybox/busybox.mk | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff -r f995a8adfa24 -r 469e4493e128 package/busybox/busybox.mk
> --- a/package/busybox/busybox.mk Tue Jul 22 20:43:10 2014 +0200
> +++ b/package/busybox/busybox.mk Wed Jul 23 20:13:38 2014 +0200
> @@ -226,4 +226,6 @@
> $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
> endef
>
> +ifeq ($(BR2_PACKAGE_BUSYBOX),y)
> $(eval $(kconfig-package))
> +endif
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled
2014-07-30 19:58 ` [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled Thomas De Schampheleire
2014-07-31 21:08 ` Yann E. MORIN
@ 2014-07-31 21:13 ` Thomas Petazzoni
2014-08-01 19:37 ` Thomas De Schampheleire
1 sibling, 1 reply; 19+ messages in thread
From: Thomas Petazzoni @ 2014-07-31 21:13 UTC (permalink / raw)
To: buildroot
Dear Thomas De Schampheleire,
On Wed, 30 Jul 2014 21:58:05 +0200, Thomas De Schampheleire wrote:
> In analogy of linux.mk, only enable its targets (in particular the kconfig
> targets (menuconfig, update-config, ...) when the uclibc package is actually
> enabled.
>
> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
>
> ---
> v2: rebase after making kconfig-package a full infra
>
> Note: now that kconfig-package is a full package infra (inheriting from
> generic-package) this may seem a bit odd, as other packages do not do this.
> Nevertheless, it does not hurt and will slightly improve the parsing of the
> Makefiles when the package is not selected.
>
> package/uclibc/uclibc.mk | 2 ++
> 1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff -r 083076145a2b -r 540167f28c2d package/uclibc/uclibc.mk
> --- a/package/uclibc/uclibc.mk Tue Jul 22 20:35:36 2014 +0200
> +++ b/package/uclibc/uclibc.mk Wed Jul 23 20:12:32 2014 +0200
> @@ -539,7 +539,9 @@
> $(UCLIBC_INSTALL_UTILS_STAGING)
> endef
>
> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC),y)
> $(eval $(kconfig-package))
> +endif
I actually don't like this that much, because I like a lot the fact
that I can do "make <foo>-source" "make <foo>-extract", "make
<foo>-patch" or even "make <foo>" (though this last case, for the
specific situation of uClibc doesn't seem really possible).
Though it's true it can be considered a bit strange to allow "make
<foo>-patch" but not "make <foo>-menuconfig".
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 5 of 6 v2] busybox: convert to kconfig-package infrastructure
2014-07-30 19:58 ` [Buildroot] [PATCH 5 of 6 v2] busybox: convert to kconfig-package infrastructure Thomas De Schampheleire
@ 2014-07-31 21:53 ` Yann E. MORIN
0 siblings, 0 replies; 19+ messages in thread
From: Yann E. MORIN @ 2014-07-31 21:53 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
> This patch converts the busybox package to the new kconfig-package
> infrastructure, thus removing code duplication and ensuring a consistent
> behavior of kconfig packages.
>
> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> v2: rebase after making kconfig-package a full infra
>
> package/busybox/busybox.mk | 25 +++++++++----------------
> 1 files changed, 9 insertions(+), 16 deletions(-)
>
> diff -r 540167f28c2d -r f995a8adfa24 package/busybox/busybox.mk
> --- a/package/busybox/busybox.mk Wed Jul 23 20:12:32 2014 +0200
> +++ b/package/busybox/busybox.mk Tue Jul 22 20:43:10 2014 +0200
> @@ -45,6 +45,10 @@
> BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
> endif
>
> +BUSYBOX_KCONFIG_FILE = $(BUSYBOX_CONFIG_FILE)
> +BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig
> +BUSYBOX_KCONFIG_OPT = $(BUSYBOX_MAKE_OPTS)
> +
> define BUSYBOX_PERMISSIONS
> /bin/busybox f 4755 0 0 - - - - -
> /usr/share/udhcpc/default.script f 755 0 0 - - - - -
> @@ -136,10 +140,6 @@
> endef
> endif
>
> -define BUSYBOX_COPY_CONFIG
> - $(INSTALL) -D -m 0644 $(BUSYBOX_CONFIG_FILE) $(BUSYBOX_BUILD_CONFIG)
> -endef
> -
> # Disable shadow passwords support if unsupported by the C library
> ifeq ($(BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS),)
> define BUSYBOX_INTERNAL_SHADOW_PASSWORDS
> @@ -190,8 +190,7 @@
> $(SED) 's/^noclobber="0"$$/noclobber="1"/' $(@D)/applets/install.sh
> endef
>
> -define BUSYBOX_CONFIGURE_CMDS
> - $(BUSYBOX_COPY_CONFIG)
> +define BUSYBOX_KCONFIG_FIXUP_CMDS
> $(BUSYBOX_SET_MMU)
> $(BUSYBOX_SET_LARGEFILE)
> $(BUSYBOX_SET_IPV6)
> @@ -203,6 +202,9 @@
> $(BUSYBOX_INTERNAL_SHADOW_PASSWORDS)
> $(BUSYBOX_SET_INIT)
> $(BUSYBOX_SET_WATCHDOG)
> +endef
> +
> +define BUSYBOX_CONFIGURE_CMDS
> @yes "" | $(MAKE) ARCH=$(KERNEL_ARCH) CROSS_COMPILE="$(TARGET_CROSS)" \
> -C $(@D) oldconfig
> $(BUSYBOX_NOCLOBBER_INSTALL)
> @@ -224,13 +226,4 @@
> $(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
> endef
>
> -$(eval $(generic-package))
> -
> -busybox-menuconfig busybox-xconfig busybox-gconfig: busybox-patch
> - $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(BUSYBOX_DIR) \
> - $(subst busybox-,,$@)
> - rm -f $(BUSYBOX_DIR)/.stamp_built
> - rm -f $(BUSYBOX_DIR)/.stamp_target_installed
> -
> -busybox-update-config: busybox-configure
> - cp -f $(BUSYBOX_BUILD_CONFIG) $(BUSYBOX_CONFIG_FILE)
> +$(eval $(kconfig-package))
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure
2014-07-31 20:42 ` Yann E. MORIN
@ 2014-08-01 19:22 ` Thomas De Schampheleire
0 siblings, 0 replies; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-08-01 19:22 UTC (permalink / raw)
To: buildroot
Hi Yann,
On Thu, Jul 31, 2014 at 10:42 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Thomas, All,
>
> On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
> [--SNIP--]
>> diff -r 4ee2201e6e6b -r 83a2e5f2641a package/pkg-kconfig.mk
>> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
>> +++ b/package/pkg-kconfig.mk Mon Jun 30 21:08:13 2014 +0200
>> @@ -0,0 +1,82 @@
> [--SNIP--]
>> +# The .config file is obtained by copying it from the specified source
>> +# configuration file, after the package has been patched.
>> +
>> +$$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) | $(1)-patch
>> + $$(INSTALL) -m 0644 $$($(2)_KCONFIG_FILE) $$($(2)_DIR)/.config
>> +
>> +# In order to get a usable, consistent configuration, some fixup may be needed.
>> +# The exact rules are specified by the package .mk file.
>> +
>> +$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/.config
>> + $$($(2)_KCONFIG_FIXUP_CMDS)
>> + $$(Q)touch $$@
>> +
>> +# Before running configure, the configuration file should be present and fixed
>> +
>> +$$($(2)_TARGET_CONFIGURE): $$($(2)_DIR)/.stamp_kconfig_fixup_done
>> +
>> +# Configuration editors (menuconfig, ...)
>> +
>> +$$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $$($(2)_DIR)/.config
>
> Should we not depend on .stamp_kconfig_fixup_done instead of .config, so
> we present to the user a .config that is already tweak to our needs?
Yes indeed, that is more logical.
I will add an initial patch to uclibc to do this, then take it along
in the kconfig-package infra.
Thanks!
Thomas
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled
2014-07-31 21:13 ` Thomas Petazzoni
@ 2014-08-01 19:37 ` Thomas De Schampheleire
2014-08-01 20:38 ` Yann E. MORIN
0 siblings, 1 reply; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-08-01 19:37 UTC (permalink / raw)
To: buildroot
Hi Thomas, Yann, all,
On Thu, Jul 31, 2014 at 11:13 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Thomas De Schampheleire,
>
> On Wed, 30 Jul 2014 21:58:05 +0200, Thomas De Schampheleire wrote:
>
>> In analogy of linux.mk, only enable its targets (in particular the kconfig
>> targets (menuconfig, update-config, ...) when the uclibc package is actually
>> enabled.
>>
>> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
>>
>> ---
>> v2: rebase after making kconfig-package a full infra
>>
>> Note: now that kconfig-package is a full package infra (inheriting from
>> generic-package) this may seem a bit odd, as other packages do not do this.
>> Nevertheless, it does not hurt and will slightly improve the parsing of the
>> Makefiles when the package is not selected.
>>
>> package/uclibc/uclibc.mk | 2 ++
>> 1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff -r 083076145a2b -r 540167f28c2d package/uclibc/uclibc.mk
>> --- a/package/uclibc/uclibc.mk Tue Jul 22 20:35:36 2014 +0200
>> +++ b/package/uclibc/uclibc.mk Wed Jul 23 20:12:32 2014 +0200
>> @@ -539,7 +539,9 @@
>> $(UCLIBC_INSTALL_UTILS_STAGING)
>> endef
>>
>> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC),y)
>> $(eval $(kconfig-package))
>> +endif
>
> I actually don't like this that much, because I like a lot the fact
> that I can do "make <foo>-source" "make <foo>-extract", "make
> <foo>-patch" or even "make <foo>" (though this last case, for the
> specific situation of uClibc doesn't seem really possible).
>
> Though it's true it can be considered a bit strange to allow "make
> <foo>-patch" but not "make <foo>-menuconfig".
I fully understand what you say. I also use that feature a lot.
Given that linux added such a check around its menuconfig target
(which you added by the way) and the fact that we are extracting
everything in a kconfig-package infrastructure, there are three ways
to proceed:
- introduce the check in each of the kconfig-based packages
- remove the check from each of the kconfig-based packages
- introduce another way in kconfig-package to only allow menuconfig
when the package is selected
What is your preference here?
Thanks,
Thomas
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure
2014-07-31 21:07 ` Yann E. MORIN
@ 2014-08-01 19:42 ` Thomas De Schampheleire
2014-08-01 20:21 ` Yann E. MORIN
0 siblings, 1 reply; 19+ messages in thread
From: Thomas De Schampheleire @ 2014-08-01 19:42 UTC (permalink / raw)
To: buildroot
Hi Yann,
On Thu, Jul 31, 2014 at 11:07 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Thomas, All,
>
> On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
>> This patch converts the uclibc package to the new kconfig-package
>> infrastructure, thus removing code duplication and ensuring a consistent
>> behavior of kconfig packages.
>>
>> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
>
> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
>
> However, I'd suggest a small enhancement (for a future patch):
> UCLIBC_KCONFIG_EDITORS = menuconfig nconfig
Unless I'm missing something, this is not possible without patching
uclibc, because their makefiles do not define any other config editor
than menuconfig...
Best regards,
Thomas
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure
2014-08-01 19:42 ` Thomas De Schampheleire
@ 2014-08-01 20:21 ` Yann E. MORIN
0 siblings, 0 replies; 19+ messages in thread
From: Yann E. MORIN @ 2014-08-01 20:21 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-08-01 21:42 +0200, Thomas De Schampheleire spake thusly:
> On Thu, Jul 31, 2014 at 11:07 PM, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> > On 2014-07-30 21:58 +0200, Thomas De Schampheleire spake thusly:
> >> This patch converts the uclibc package to the new kconfig-package
> >> infrastructure, thus removing code duplication and ensuring a consistent
> >> behavior of kconfig packages.
> >>
> >> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
> >
> > Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> >
> > However, I'd suggest a small enhancement (for a future patch):
> > UCLIBC_KCONFIG_EDITORS = menuconfig nconfig
>
> Unless I'm missing something, this is not possible without patching
> uclibc, because their makefiles do not define any other config editor
> than menuconfig...
Indeed. I was looking at their master, which has nconfig. But it is
missing in any of the releases so far.
When (if?) there is a new release, it can be added conditionally to that
version. One day. Maybe... ;-]
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
* [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled
2014-08-01 19:37 ` Thomas De Schampheleire
@ 2014-08-01 20:38 ` Yann E. MORIN
0 siblings, 0 replies; 19+ messages in thread
From: Yann E. MORIN @ 2014-08-01 20:38 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2014-08-01 21:37 +0200, Thomas De Schampheleire spake thusly:
> On Thu, Jul 31, 2014 at 11:13 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
> > Dear Thomas De Schampheleire,
> >
> > On Wed, 30 Jul 2014 21:58:05 +0200, Thomas De Schampheleire wrote:
> >
> >> In analogy of linux.mk, only enable its targets (in particular the kconfig
> >> targets (menuconfig, update-config, ...) when the uclibc package is actually
> >> enabled.
> >>
> >> Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
> >>
> >> ---
> >> v2: rebase after making kconfig-package a full infra
> >>
> >> Note: now that kconfig-package is a full package infra (inheriting from
> >> generic-package) this may seem a bit odd, as other packages do not do this.
> >> Nevertheless, it does not hurt and will slightly improve the parsing of the
> >> Makefiles when the package is not selected.
> >>
> >> package/uclibc/uclibc.mk | 2 ++
> >> 1 files changed, 2 insertions(+), 0 deletions(-)
> >>
> >> diff -r 083076145a2b -r 540167f28c2d package/uclibc/uclibc.mk
> >> --- a/package/uclibc/uclibc.mk Tue Jul 22 20:35:36 2014 +0200
> >> +++ b/package/uclibc/uclibc.mk Wed Jul 23 20:12:32 2014 +0200
> >> @@ -539,7 +539,9 @@
> >> $(UCLIBC_INSTALL_UTILS_STAGING)
> >> endef
> >>
> >> +ifeq ($(BR2_TOOLCHAIN_BUILDROOT_UCLIBC),y)
> >> $(eval $(kconfig-package))
> >> +endif
> >
> > I actually don't like this that much, because I like a lot the fact
> > that I can do "make <foo>-source" "make <foo>-extract", "make
> > <foo>-patch" or even "make <foo>" (though this last case, for the
> > specific situation of uClibc doesn't seem really possible).
> >
> > Though it's true it can be considered a bit strange to allow "make
> > <foo>-patch" but not "make <foo>-menuconfig".
>
> I fully understand what you say. I also use that feature a lot.
> Given that linux added such a check around its menuconfig target
> (which you added by the way) and the fact that we are extracting
> everything in a kconfig-package infrastructure, there are three ways
> to proceed:
> - introduce the check in each of the kconfig-based packages
> - remove the check from each of the kconfig-based packages
> - introduce another way in kconfig-package to only allow menuconfig
> when the package is selected
>
> What is your preference here?
Except for uClibc, I think it is still usefull (for debugging purposes,
for example) to be able to build a non-configured package.
So, in retrospect, I would side with Thomas P. on that one. We could
just maybe hide uClibc if not enabled, but allow it for the other
packages.
BTW, we now have the BR2_PACKAGE_UCLIBC (as well as BR2_PACKAGE_GLIBC
and BR2_PACKAGE_MUSL) if you need to know whether the corresponding
package is enabled.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2014-08-01 20:38 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-30 19:58 [Buildroot] [PATCH 0 of 6 v2] Introduction of kconfig-package Thomas De Schampheleire
2014-07-30 19:58 ` [Buildroot] [PATCH 1 of 6 v2] infra: introduce a kconfig-package infrastructure Thomas De Schampheleire
2014-07-31 20:42 ` Yann E. MORIN
2014-08-01 19:22 ` Thomas De Schampheleire
2014-07-30 19:58 ` [Buildroot] [PATCH 2 of 6 v2] manual: add documentation for kconfig-package Thomas De Schampheleire
2014-07-31 21:03 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 3 of 6 v2] uclibc: convert to kconfig-package infrastructure Thomas De Schampheleire
2014-07-31 21:07 ` Yann E. MORIN
2014-08-01 19:42 ` Thomas De Schampheleire
2014-08-01 20:21 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 4 of 6 v2] uclibc: only add targets if uclibc is enabled Thomas De Schampheleire
2014-07-31 21:08 ` Yann E. MORIN
2014-07-31 21:13 ` Thomas Petazzoni
2014-08-01 19:37 ` Thomas De Schampheleire
2014-08-01 20:38 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 5 of 6 v2] busybox: convert to kconfig-package infrastructure Thomas De Schampheleire
2014-07-31 21:53 ` Yann E. MORIN
2014-07-30 19:58 ` [Buildroot] [PATCH 6 of 6 v2] busybox: only add kconfig targets if uclibc is enabled Thomas De Schampheleire
2014-07-31 21:12 ` Yann E. MORIN
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox