Message ID | 20230513160509.17634-1-liu.ming50@gmail.com |
---|---|
State | Accepted, archived |
Commit | f9e834e317880cf47dbb4f8285bc36d743beae5e |
Headers | show |
Series | meta: introduce KCONFIG_CONFIG_ENABLE_MENUCONFIG | expand |
Hi, Dear maintainers: Ping, could you please review this at your convenient time? It's blocking our uboot do_menuconfig task. the best, thank you <liu.ming50@gmail.com> 於 2023年5月13日 週六 下午6:05寫道: > From: Ming Liu <liu.ming50@gmail.com> > > 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. > > Signed-off-by: Ming Liu <liu.ming50@gmail.com> > --- > meta/classes-recipe/cml1.bbclass | 5 +++++ > meta/classes-recipe/uboot-config.bbclass | 6 ++++++ > meta/recipes-bsp/u-boot/u-boot-configure.inc | 1 - > scripts/lib/devtool/standard.py | 6 +++--- > 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>"' > TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo" > > KCONFIG_CONFIG_COMMAND ??= "menuconfig" > +KCONFIG_CONFIG_ENABLE_MENUCONFIG ??= "true" > KCONFIG_CONFIG_ROOTDIR ??= "${B}" > python do_menuconfig() { > import shutil > > + if not > bb.utils.to_boolean(d.getVar("KCONFIG_CONFIG_ENABLE_MENUCONFIG")): > + bb.fatal("do_menuconfig is disabled, please check > KCONFIG_CONFIG_ENABLE_MENUCONFIG variable.") > + return > + > config = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config") > configorig = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), > ".config.orig") > > 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 () { > > if not found: > raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key > %s has no match in %s." % (ubootconfig, ubootconfigflags.keys())) > + > + if len(ubootconfig) == 1: > + d.setVar('KCONFIG_CONFIG_ROOTDIR', > os.path.join(d.getVar("B"), d.getVar("UBOOT_MACHINE").strip())) > + else: > + # Disable menuconfig for multiple configs > + d.setVar('KCONFIG_CONFIG_ENABLE_MENUCONFIG', "false") > } > 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 () { > unset j > done > unset i > - DEVTOOL_DISABLE_MENUCONFIG=true > else > if [ -n "${UBOOT_MACHINE}" ]; then > 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): > '}\n') > if rd.getVarFlag('do_menuconfig','task'): > f.write('\ndo_configure:append() {\n' > - ' if [ ! ${DEVTOOL_DISABLE_MENUCONFIG} ]; then\n' > - ' cp ${B}/.config ${S}/.config.baseline\n' > - ' ln -sfT ${B}/.config ${S}/.config.new\n' > + ' if [ ${@ > oe.types.boolean(\'${KCONFIG_CONFIG_ENABLE_MENUCONFIG}\') } = True ]; > then\n' > + ' cp ${KCONFIG_CONFIG_ROOTDIR}/.config > ${S}/.config.baseline\n' > + ' ln -sfT ${KCONFIG_CONFIG_ROOTDIR}/.config > ${S}/.config.new\n' > ' fi\n' > '}\n') > if initial_rev: > -- > 2.25.1 > >
On 06/06/2023 13:17:14+0200, Ming Liu wrote: > Hi, Dear maintainers: > > Ping, could you please review this at your convenient time? It's blocking > our uboot do_menuconfig task. > This is in my testing queue but other patches have proven difficult and I didn't have any green builds since. > the best, > thank you > > <liu.ming50@gmail.com> 於 2023年5月13日 週六 下午6:05寫道: > > > From: Ming Liu <liu.ming50@gmail.com> > > > > 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. > > > > Signed-off-by: Ming Liu <liu.ming50@gmail.com> > > --- > > meta/classes-recipe/cml1.bbclass | 5 +++++ > > meta/classes-recipe/uboot-config.bbclass | 6 ++++++ > > meta/recipes-bsp/u-boot/u-boot-configure.inc | 1 - > > scripts/lib/devtool/standard.py | 6 +++--- > > 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>"' > > TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo" > > > > KCONFIG_CONFIG_COMMAND ??= "menuconfig" > > +KCONFIG_CONFIG_ENABLE_MENUCONFIG ??= "true" > > KCONFIG_CONFIG_ROOTDIR ??= "${B}" > > python do_menuconfig() { > > import shutil > > > > + if not > > bb.utils.to_boolean(d.getVar("KCONFIG_CONFIG_ENABLE_MENUCONFIG")): > > + bb.fatal("do_menuconfig is disabled, please check > > KCONFIG_CONFIG_ENABLE_MENUCONFIG variable.") > > + return > > + > > config = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config") > > configorig = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), > > ".config.orig") > > > > 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 () { > > > > if not found: > > raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key > > %s has no match in %s." % (ubootconfig, ubootconfigflags.keys())) > > + > > + if len(ubootconfig) == 1: > > + d.setVar('KCONFIG_CONFIG_ROOTDIR', > > os.path.join(d.getVar("B"), d.getVar("UBOOT_MACHINE").strip())) > > + else: > > + # Disable menuconfig for multiple configs > > + d.setVar('KCONFIG_CONFIG_ENABLE_MENUCONFIG', "false") > > } > > 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 () { > > unset j > > done > > unset i > > - DEVTOOL_DISABLE_MENUCONFIG=true > > else > > if [ -n "${UBOOT_MACHINE}" ]; then > > 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): > > '}\n') > > if rd.getVarFlag('do_menuconfig','task'): > > f.write('\ndo_configure:append() {\n' > > - ' if [ ! ${DEVTOOL_DISABLE_MENUCONFIG} ]; then\n' > > - ' cp ${B}/.config ${S}/.config.baseline\n' > > - ' ln -sfT ${B}/.config ${S}/.config.new\n' > > + ' if [ ${@ > > oe.types.boolean(\'${KCONFIG_CONFIG_ENABLE_MENUCONFIG}\') } = True ]; > > then\n' > > + ' cp ${KCONFIG_CONFIG_ROOTDIR}/.config > > ${S}/.config.baseline\n' > > + ' ln -sfT ${KCONFIG_CONFIG_ROOTDIR}/.config > > ${S}/.config.new\n' > > ' fi\n' > > '}\n') > > if initial_rev: > > -- > > 2.25.1 > > > > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#182425): https://lists.openembedded.org/g/openembedded-core/message/182425 > Mute This Topic: https://lists.openembedded.org/mt/98870753/3617179 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com] > -=-=-=-=-=-=-=-=-=-=-=- >
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>"' TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo" KCONFIG_CONFIG_COMMAND ??= "menuconfig" +KCONFIG_CONFIG_ENABLE_MENUCONFIG ??= "true" KCONFIG_CONFIG_ROOTDIR ??= "${B}" python do_menuconfig() { import shutil + if not bb.utils.to_boolean(d.getVar("KCONFIG_CONFIG_ENABLE_MENUCONFIG")): + bb.fatal("do_menuconfig is disabled, please check KCONFIG_CONFIG_ENABLE_MENUCONFIG variable.") + return + config = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config") configorig = os.path.join(d.getVar('KCONFIG_CONFIG_ROOTDIR'), ".config.orig") 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 () { if not found: raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key %s has no match in %s." % (ubootconfig, ubootconfigflags.keys())) + + if len(ubootconfig) == 1: + d.setVar('KCONFIG_CONFIG_ROOTDIR', os.path.join(d.getVar("B"), d.getVar("UBOOT_MACHINE").strip())) + else: + # Disable menuconfig for multiple configs + d.setVar('KCONFIG_CONFIG_ENABLE_MENUCONFIG', "false") } 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 () { unset j done unset i - DEVTOOL_DISABLE_MENUCONFIG=true else if [ -n "${UBOOT_MACHINE}" ]; then 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): '}\n') if rd.getVarFlag('do_menuconfig','task'): f.write('\ndo_configure:append() {\n' - ' if [ ! ${DEVTOOL_DISABLE_MENUCONFIG} ]; then\n' - ' cp ${B}/.config ${S}/.config.baseline\n' - ' ln -sfT ${B}/.config ${S}/.config.new\n' + ' if [ ${@ oe.types.boolean(\'${KCONFIG_CONFIG_ENABLE_MENUCONFIG}\') } = True ]; then\n' + ' cp ${KCONFIG_CONFIG_ROOTDIR}/.config ${S}/.config.baseline\n' + ' ln -sfT ${KCONFIG_CONFIG_ROOTDIR}/.config ${S}/.config.new\n' ' fi\n' '}\n') if initial_rev: