diff mbox series

meta: introduce KCONFIG_CONFIG_ENABLE_MENUCONFIG

Message ID 20230513160509.17634-1-liu.ming50@gmail.com
State Accepted, archived
Commit f9e834e317880cf47dbb4f8285bc36d743beae5e
Headers show
Series meta: introduce KCONFIG_CONFIG_ENABLE_MENUCONFIG | expand

Commit Message

Ming Liu May 13, 2023, 4:05 p.m. UTC
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(-)

Comments

Ming Liu June 6, 2023, 11:17 a.m. UTC | #1
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
>
>
Alexandre Belloni June 6, 2023, 1:32 p.m. UTC | #2
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 mbox series

Patch

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: