*config: improve handling of BR2_LEGACY
authorArnout Vandecappelle <arnout@mind.be>
Fri, 10 Apr 2015 23:49:02 +0000 (01:49 +0200)
committerPeter Korsgaard <peter@korsgaard.com>
Sat, 11 Apr 2015 06:22:28 +0000 (08:22 +0200)
In 8a46d4bf1f the randpackageconfig and allpackageyesconfig were
extended with disabling all the legacy options, otherwise the resulting
config couldn't be built. However, that didn't work for randconfig and
allyesconfig.

This commit reverts 8a46d4bf1f and replaces it with a different
approach: skipping of the legacy config options is passed explicitly
through the environment variable SKIP_LEGACY, which forces
BR2_SKIP_LEGACY to y. The new option BR2_SKIP_LEGACY completely
disables the legacy handling, which effectively removes all the legacy
options from the .config.

However, in that case no values are set for the legacy options so a
subsequent oldconfig will query them. Therefore, run an additional
olddefconfig.

[Peter: fix s/BR2_LEGACY/SKIP_LEGACY/ typo]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[yann.morin.1998@free.fr: do not rely on a user-visible option, works
 perfectly well with only blind options set from the environment]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Config.in.legacy
Makefile

index 0fc794f75803e0a7e413c0329dc691920f6e41b9..97bc939802245e1b4b7c4bc81db8490ea83aa13a 100644 (file)
 #
 # [End of example]
 
+config BR2_SKIP_LEGACY
+       bool
+       option env="SKIP_LEGACY"
+
+if !BR2_SKIP_LEGACY
+
 config BR2_LEGACY
        bool
        help
@@ -1288,3 +1294,5 @@ config BR2_BFIN_FLAT
        select BR2_LEGACY
 
 endmenu
+
+endif # !SKIP_LEGACY
index 5f9a2c33ed2406b48d450ef635ad6a162f312396..f011918490f0e52ce60a9235d440186c9d989801 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -696,7 +696,8 @@ COMMON_CONFIG_ENV = \
        KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
        KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \
        BR2_CONFIG=$(BR2_CONFIG) \
-       BR2_EXTERNAL=$(BR2_EXTERNAL)
+       BR2_EXTERNAL=$(BR2_EXTERNAL) \
+       SKIP_LEGACY=
 
 xconfig: $(BUILD_DIR)/buildroot-config/qconf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
@@ -718,51 +719,56 @@ config: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
        @$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
 
+# For the config targets that automatically select options, we pass
+# SKIP_LEGACY=y to disable the legacy options. However, in that case
+# no values are set for the legacy options so a subsequent oldconfig
+# will query them. Therefore, run an additional olddefconfig.
+
 oldconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        mkdir -p $(BUILD_DIR)/buildroot-config
        @$(COMMON_CONFIG_ENV) $< --oldconfig $(CONFIG_CONFIG_IN)
 
 randconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
-       @$(COMMON_CONFIG_ENV) $< --randconfig $(CONFIG_CONFIG_IN)
+       @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --randconfig $(CONFIG_CONFIG_IN)
+       @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
 allyesconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
-       @$(COMMON_CONFIG_ENV) $< --allyesconfig $(CONFIG_CONFIG_IN)
+       @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --allyesconfig $(CONFIG_CONFIG_IN)
+       @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
 allnoconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
-       @$(COMMON_CONFIG_ENV) $< --allnoconfig $(CONFIG_CONFIG_IN)
+       @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --allnoconfig $(CONFIG_CONFIG_IN)
+       @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
 randpackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
        @grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg
-       @grep '^config BR2_PACKAGE_' Config.in.legacy | \
-               while read config pkg; do \
-               echo "# $$pkg is not set" >> $(CONFIG_DIR)/.config.nopkg; done
-       @$(COMMON_CONFIG_ENV) \
+       @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \
                KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
                $< --randconfig $(CONFIG_CONFIG_IN)
        @rm -f $(CONFIG_DIR)/.config.nopkg
+       @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
 allyespackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
        @grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg
-       @grep '^config BR2_PACKAGE_' Config.in.legacy | \
-               while read config pkg; do \
-               echo "# $$pkg is not set" >> $(CONFIG_DIR)/.config.nopkg; done
-       @$(COMMON_CONFIG_ENV) \
+       @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \
                KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
                $< --allyesconfig $(CONFIG_CONFIG_IN)
        @rm -f $(CONFIG_DIR)/.config.nopkg
+       @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
 allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config
        @grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg
-       @$(COMMON_CONFIG_ENV) \
+       @$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \
                KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
                $< --allnoconfig $(CONFIG_CONFIG_IN)
        @rm -f $(CONFIG_DIR)/.config.nopkg
+       @$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
 silentoldconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
        @mkdir -p $(BUILD_DIR)/buildroot-config