summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMing Liu <liu.ming50@gmail.com>2023-05-13 18:05:09 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-06-09 13:55:21 +0100
commit0241bdb49c52c28cc54ffed5bd4cde387f57451e (patch)
tree3477c7992dc49da5a8e4afcc41a883f63514165b
parent7e2199be524e4dd7783c54157d8b4bf9f57664b3 (diff)
downloadpoky-0241bdb49c52c28cc54ffed5bd4cde387f57451e.tar.gz
meta: introduce KCONFIG_CONFIG_ENABLE_MENUCONFIG
Currently, uboot do_menuconfig task is breaking when UBOOT_CONFIG is chosen rather than UBOOT_MACHINE, it simply fails with the following errors: | make: *** No rule to make target 'menuconfig'. Stio. | Command failed. | Press any key to continue... this is due to the work directory of do_menuconfig is set to ${B} but not ${B}/$config. We should distinguish two situations: 1) When there is only one config item in UBOOT_CONFIG, do_menuconfig should work just like how it works for UBOOT_MACHINE. 2) When there are multiple config items in UBOOT_CONFIG, do_menuconfig should print out some information saying it's not supported other than just failing. This patch mainly aims to fix that by introducing a extra variable KCONFIG_CONFIG_ENABLE_MENUCONFIG, it would be set to 'false' for situation 2), and when it's set to 'true', then set KCONFIG_CONFIG_ROOTDIR correctly in uboot-config.bbclass to let do_menuconfig task work. DEVTOOL_DISABLE_MENUCONFIG could be replaced by this new variable KCONFIG_CONFIG_ENABLE_MENUCONFIG. (From OE-Core rev: f9e834e317880cf47dbb4f8285bc36d743beae5e) Signed-off-by: Ming Liu <liu.ming50@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes-recipe/cml1.bbclass5
-rw-r--r--meta/classes-recipe/uboot-config.bbclass6
-rw-r--r--meta/recipes-bsp/u-boot/u-boot-configure.inc1
-rw-r--r--scripts/lib/devtool/standard.py6
4 files changed, 14 insertions, 4 deletions
diff --git a/meta/classes-recipe/cml1.bbclass b/meta/classes-recipe/cml1.bbclass
index a09a042c3f..d87d8204e4 100644
--- a/meta/classes-recipe/cml1.bbclass
+++ b/meta/classes-recipe/cml1.bbclass
@@ -32,10 +32,15 @@ CROSS_CURSES_INC = '-DCURSES_LOC="<curses.h>"'
32TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo" 32TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo"
33 33
34KCONFIG_CONFIG_COMMAND ??= "menuconfig" 34KCONFIG_CONFIG_COMMAND ??= "menuconfig"
35KCONFIG_CONFIG_ENABLE_MENUCONFIG ??= "true"
35KCONFIG_CONFIG_ROOTDIR ??= "${B}" 36KCONFIG_CONFIG_ROOTDIR ??= "${B}"
36python do_menuconfig() { 37python do_menuconfig() {
37 import shutil 38 import shutil
38 39
40 if not bb.utils.to_boolean(d.getVar("KCONFIG_CONFIG_ENABLE_MENUCONFIG")):
41 bb.fatal("do_menuconfig is disabled, please check KCONFIG_CONFIG_ENABLE_MENUCONFIG variable.")
42 return
43
39 config = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config") 44 config = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config")
40 configorig = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config.orig") 45 configorig = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config.orig")
41 46
diff --git a/meta/classes-recipe/uboot-config.bbclass b/meta/classes-recipe/uboot-config.bbclass
index fb7a4bc498..9be1d64d3e 100644
--- a/meta/classes-recipe/uboot-config.bbclass
+++ b/meta/classes-recipe/uboot-config.bbclass
@@ -140,4 +140,10 @@ python () {
140 140
141 if not found: 141 if not found:
142 raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key %s has no match in %s." % (ubootconfig, ubootconfigflags.keys())) 142 raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key %s has no match in %s." % (ubootconfig, ubootconfigflags.keys()))
143
144 if len(ubootconfig) == 1:
145 d.setVar('KCONFIG_CONFIG_ROOTDIR', os.path.join(d.getVar("B"), d.getVar("UBOOT_MACHINE").strip()))
146 else:
147 # Disable menuconfig for multiple configs
148 d.setVar('KCONFIG_CONFIG_ENABLE_MENUCONFIG', "false")
143} 149}
diff --git a/meta/recipes-bsp/u-boot/u-boot-configure.inc b/meta/recipes-bsp/u-boot/u-boot-configure.inc
index 04e0894752..235623d25a 100644
--- a/meta/recipes-bsp/u-boot/u-boot-configure.inc
+++ b/meta/recipes-bsp/u-boot/u-boot-configure.inc
@@ -26,7 +26,6 @@ do_configure () {
26 unset j 26 unset j
27 done 27 done
28 unset i 28 unset i
29 DEVTOOL_DISABLE_MENUCONFIG=true
30 else 29 else
31 if [ -n "${UBOOT_MACHINE}" ]; then 30 if [ -n "${UBOOT_MACHINE}" ]; then
32 oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE} 31 oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 0339d12763..852672810a 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -968,9 +968,9 @@ def modify(args, config, basepath, workspace):
968 '}\n') 968 '}\n')
969 if rd.getVarFlag('do_menuconfig','task'): 969 if rd.getVarFlag('do_menuconfig','task'):
970 f.write('\ndo_configure:append() {\n' 970 f.write('\ndo_configure:append() {\n'
971 ' if [ ! ${DEVTOOL_DISABLE_MENUCONFIG} ]; then\n' 971 ' if [ ${@ oe.types.boolean(\'${KCONFIG_CONFIG_ENABLE_MENUCONFIG}\') } = True ]; then\n'
972 ' cp ${B}/.config ${S}/.config.baseline\n' 972 ' cp ${KCONFIG_CONFIG_ROOTDIR}/.config ${S}/.config.baseline\n'
973 ' ln -sfT ${B}/.config ${S}/.config.new\n' 973 ' ln -sfT ${KCONFIG_CONFIG_ROOTDIR}/.config ${S}/.config.new\n'
974 ' fi\n' 974 ' fi\n'
975 '}\n') 975 '}\n')
976 if initial_rev: 976 if initial_rev: