Message ID | DB6PR01MB3736481355587A417D929794A41EA@DB6PR01MB3736.eurprd01.prod.exchangelabs.com |
---|---|
State | New |
Headers | show |
Series | Poky/Mickledore bitbake menuconfig does not work | expand |
Hi Zoran, I was able to reproduce the behavior described in my original post by enabling CCache. Here are the precise steps to reproduce: 1. Checkout Poky/Mickledore 2. Add the following to `build/conf/local.conf`: INHERIT += "ccache" 3. Run `bitbake -c menuconfig virtual/kernel` The reason for the failure is that due to CCache the compiler is no longer `gcc` but `ccache gcc`, i.e. we have the following variables in the environment: CC="ccache x86_64-poky-linux-gcc" HOSTCC="ccache gcc" ... etc. This is when the wrong quoting in the invocation of `menuconfig` leads to errors. Could you please verify/check? Best, Holger
Hi, Le jeu. 14 sept. 2023 à 14:10, Sebert, Holger.ext < holger.sebert.ext@karlstorz.com> a écrit : > Hi Zoran, > > I was able to reproduce the behavior described in my original post by > enabling CCache. Here are the precise steps to reproduce: > > 1. Checkout Poky/Mickledore > 2. Add the following to `build/conf/local.conf`: > INHERIT += "ccache" > 3. Run `bitbake -c menuconfig virtual/kernel` > > The reason for the failure is that due to CCache the compiler is no longer > `gcc` but `ccache gcc`, i.e. we have the following variables in the > environment: > > CC="ccache x86_64-poky-linux-gcc" > HOSTCC="ccache gcc" > ... > etc. > > This is when the wrong quoting in the invocation of `menuconfig` leads to > errors. > > Could you please verify/check? > I have reproduced this. It really looks like a bug! > [...] > On Mon, Aug 21, 2023 at 3:48 PM Sebert, Holger.ext > <holger.sebert.ext@karlstorz.com> wrote: > > > > Hi, > > > > I am using a Yocto-Poky-Mickledore (version 4.2.1) based system. > > > > For configuring the kernel, I would like to use the command > > > > bitbake -c menuconfig virtual/kernel > > > > If I do that, Bitbake opens an xterm window and runs the build steps > > for Kconfig. However, after the compiler has finised, the xterm window > > immediately closes and Bitbake exists as if nothing happened, i.e. it > > does not show any error message or similar. > > > > I investigated the problem and found out that, internally, Bitbake > > calls the following command for starting Kconfig: > > > > make menuconfig CC="ccache x86_64-system-linux-gcc ..." \ > > CFLAGS="..." HOSTCC="ccache gcc" HOSTCCFLAGS="..." > > > > The quotes, however, seem to get lost when starting the actual command > > in the terminal. This leads to a command line like follows: > > > > make menuconfig CC=ccache x86_64-system-linux-gcc ... \ > > CFLAGS=... HOSTCC="ccache gcc" HOSTCCFLAGS="... > > > > which is clearly wrong. > > > > The following patch fixes the problem in > meta/classes-recipe/cml1.bbclass: > > > > diff --git a/meta/classes-recipe/cml1.bbclass > b/meta/classes-recipe/cml1.bbclass > > index a09a042c3f..d6001d6fd0 100644 > > --- a/meta/classes-recipe/cml1.bbclass > > +++ b/meta/classes-recipe/cml1.bbclass > > @@ -53,7 +53,8 @@ python do_menuconfig() { > > # ensure that environment variables are overwritten with this tasks > 'd' values > > d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR PKG_CONFIG_PATH > PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR") > > > > - oe_terminal("sh -c \"make %s; if [ \\$? -ne 0 ]; then echo 'Command > failed.'; printf 'Press any key to continue... '; read r; fi\"" % > d.getVar('KCONFIG_CONFIG_COMMAND'), > > + make_cmd = "make %s" % > d.getVar('KCONFIG_CONFIG_COMMAND').replace('"', '\\"') > > + oe_terminal("sh -c \"%s; if [ \\$? -ne 0 ]; then echo 'Command > failed.'; printf 'Press any key to continue... '; read r; fi\"" % make_cmd, > > d.getVar('PN') + ' Configuration', d) > This patch looks interesting! I would use shlex.join() to safely construct the command : https://docs.python.org/3/library/shlex.html#shlex.join > > What do you think? Is my observed behavior a configuration error of my > > setup or does the patch above indeed make sense? > The patch makes sense to me. I guess your next steps are : * If you want to contribute your patch : reproduce the bug and rebase your patch on master and send it to the mailing list * Or, create a bug in https://bugzilla.yoctoproject.org/ Best Regards,
Hi Yoann, hi Zoran, The bug is not present on the Poky master branch. Until the project is rebased onto the next release, I will simply disable CCache whenever I need to do a kernel menuconfig. Thanks! -Holger
Le mar. 19 sept. 2023 à 18:57, Sebert, Holger.ext < Holger.Sebert.ext@karlstorz.com> a écrit : > Hi Yoann, hi Zoran, > Hi, > The bug is not present on the Poky master branch. > > Until the project is rebased onto the next release, I will simply disable > CCache whenever I need to do a kernel menuconfig. > You peaked my curiosity and I've tracked down the fix on master : Your problem is fixed by https://git.yoctoproject.org/poky/commit/?id=d4664d2b7974354e73d891762ebb2c8a12d62438 I've requested a backport on mickledore : https://lists.openembedded.org/g/openembedded-core/message/187934 Regards, > Thanks! > > -Holger > > ________________________________________ > Von: Yoann CONGAL <yoann.congal@smile.fr> > Gesendet: Donnerstag, 14. September 2023 23:52 > An: Sebert, Holger.ext > Cc: Zoran Stojsavljevic; Yocto-mailing-list > Betreff: [Ext] Re: [yocto] Poky/Mickledore bitbake menuconfig does not work > > Hi, > > Le jeu. 14 sept. 2023 à 14:10, Sebert, Holger.ext < > holger.sebert.ext@karlstorz.com<mailto:holger.sebert.ext@karlstorz.com>> > a écrit : > Hi Zoran, > > I was able to reproduce the behavior described in my original post by > enabling CCache. Here are the precise steps to reproduce: > > 1. Checkout Poky/Mickledore > 2. Add the following to `build/conf/local.conf`: > INHERIT += "ccache" > 3. Run `bitbake -c menuconfig virtual/kernel` > > The reason for the failure is that due to CCache the compiler is no longer > `gcc` but `ccache gcc`, i.e. we have the following variables in the > environment: > > CC="ccache x86_64-poky-linux-gcc" > HOSTCC="ccache gcc" > ... > etc. > > This is when the wrong quoting in the invocation of `menuconfig` leads to > errors. > > Could you please verify/check? > > > I have reproduced this. It really looks like a bug! > > [...] > On Mon, Aug 21, 2023 at 3:48 PM Sebert, Holger.ext > <holger.sebert.ext@karlstorz.com<mailto:holger.sebert.ext@karlstorz.com>> > wrote: > > > > Hi, > > > > I am using a Yocto-Poky-Mickledore (version 4.2.1) based system. > > > > For configuring the kernel, I would like to use the command > > > > bitbake -c menuconfig virtual/kernel > > > > If I do that, Bitbake opens an xterm window and runs the build steps > > for Kconfig. However, after the compiler has finised, the xterm window > > immediately closes and Bitbake exists as if nothing happened, i.e. it > > does not show any error message or similar. > > > > I investigated the problem and found out that, internally, Bitbake > > calls the following command for starting Kconfig: > > > > make menuconfig CC="ccache x86_64-system-linux-gcc ..." \ > > CFLAGS="..." HOSTCC="ccache gcc" HOSTCCFLAGS="..." > > > > The quotes, however, seem to get lost when starting the actual command > > in the terminal. This leads to a command line like follows: > > > > make menuconfig CC=ccache x86_64-system-linux-gcc ... \ > > CFLAGS=... HOSTCC="ccache gcc" HOSTCCFLAGS="... > > > > which is clearly wrong. > > > > The following patch fixes the problem in > meta/classes-recipe/cml1.bbclass: > > > > diff --git a/meta/classes-recipe/cml1.bbclass > b/meta/classes-recipe/cml1.bbclass > > index a09a042c3f..d6001d6fd0 100644 > > --- a/meta/classes-recipe/cml1.bbclass > > +++ b/meta/classes-recipe/cml1.bbclass > > @@ -53,7 +53,8 @@ python do_menuconfig() { > > # ensure that environment variables are overwritten with this tasks > 'd' values > > d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR PKG_CONFIG_PATH > PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR") > > > > - oe_terminal("sh -c \"make %s; if [ \\$? -ne 0 ]; then echo 'Command > failed.'; printf 'Press any key to continue... '; read r; fi\"" % > d.getVar('KCONFIG_CONFIG_COMMAND'), > > + make_cmd = "make %s" % > d.getVar('KCONFIG_CONFIG_COMMAND').replace('"', '\\"') > > + oe_terminal("sh -c \"%s; if [ \\$? -ne 0 ]; then echo 'Command > failed.'; printf 'Press any key to continue... '; read r; fi\"" % make_cmd, > > d.getVar('PN') + ' Configuration', d) > > This patch looks interesting! > I would use shlex.join() to safely construct the command : > https://docs.python.org/3/library/shlex.html#shlex.join< > https://urldefense.com/v3/__https://docs.python.org/3/library/shlex.html*shlex.join__;Iw!!Lw1uGqvHvtJ_psGG2Et-1voSwbo!fQdtwGScMriVPQw2RO0unCFPxKM9NGX19bIH6mNdVfb77dZxiYZEkdNFiD5PZzVoxaOccilrT4L2I56P_pSw6FJuljKxeNTW$ > > > > > What do you think? Is my observed behavior a configuration error of my > > setup or does the patch above indeed make sense? > > The patch makes sense to me. > > I guess your next steps are : > * If you want to contribute your patch : reproduce the bug and rebase your > patch on master and send it to the mailing list > * Or, create a bug in https://bugzilla.yoctoproject.org/< > https://urldefense.com/v3/__https://bugzilla.yoctoproject.org/__;!!Lw1uGqvHvtJ_psGG2Et-1voSwbo!fQdtwGScMriVPQw2RO0unCFPxKM9NGX19bIH6mNdVfb77dZxiYZEkdNFiD5PZzVoxaOccilrT4L2I56P_pSw6FJulqw2-PFV$ > > > > Best Regards, > > -- > Yoann Congal > Smile ECS - Tech expert >
Le mer. 20 sept. 2023 à 19:59, Yoann CONGAL <yoann.congal@smile.fr> a écrit : > Le mar. 19 sept. 2023 à 18:57, Sebert, Holger.ext < > Holger.Sebert.ext@karlstorz.com> a écrit : > >> Hi Yoann, hi Zoran, >> > > Hi, > > >> The bug is not present on the Poky master branch. >> >> Until the project is rebased onto the next release, I will simply disable >> CCache whenever I need to do a kernel menuconfig. >> > > You peaked my curiosity and I've tracked down the fix on master : Your > problem is fixed by > > https://git.yoctoproject.org/poky/commit/?id=d4664d2b7974354e73d891762ebb2c8a12d62438 > > I've requested a backport on mickledore : > https://lists.openembedded.org/g/openembedded-core/message/187934 > Fix has now been merged in mickledore : https://git.yoctoproject.org/poky/commit/?h=mickledore&id=cd0c6173a375e5c7b617985ca2efcf167c92c827 You would just have to update your poky mickledore branch to fix your problem :) Enjoy! Regards, > > >> Thanks! >> >> -Holger >> >> ________________________________________ >> Von: Yoann CONGAL <yoann.congal@smile.fr> >> Gesendet: Donnerstag, 14. September 2023 23:52 >> An: Sebert, Holger.ext >> Cc: Zoran Stojsavljevic; Yocto-mailing-list >> Betreff: [Ext] Re: [yocto] Poky/Mickledore bitbake menuconfig does not >> work >> >> Hi, >> >> Le jeu. 14 sept. 2023 à 14:10, Sebert, Holger.ext < >> holger.sebert.ext@karlstorz.com<mailto:holger.sebert.ext@karlstorz.com>> >> a écrit : >> Hi Zoran, >> >> I was able to reproduce the behavior described in my original post by >> enabling CCache. Here are the precise steps to reproduce: >> >> 1. Checkout Poky/Mickledore >> 2. Add the following to `build/conf/local.conf`: >> INHERIT += "ccache" >> 3. Run `bitbake -c menuconfig virtual/kernel` >> >> The reason for the failure is that due to CCache the compiler is no >> longer `gcc` but `ccache gcc`, i.e. we have the following variables in the >> environment: >> >> CC="ccache x86_64-poky-linux-gcc" >> HOSTCC="ccache gcc" >> ... >> etc. >> >> This is when the wrong quoting in the invocation of `menuconfig` leads to >> errors. >> >> Could you please verify/check? >> >> >> I have reproduced this. It really looks like a bug! >> >> [...] >> On Mon, Aug 21, 2023 at 3:48 PM Sebert, Holger.ext >> <holger.sebert.ext@karlstorz.com<mailto:holger.sebert.ext@karlstorz.com>> >> wrote: >> > >> > Hi, >> > >> > I am using a Yocto-Poky-Mickledore (version 4.2.1) based system. >> > >> > For configuring the kernel, I would like to use the command >> > >> > bitbake -c menuconfig virtual/kernel >> > >> > If I do that, Bitbake opens an xterm window and runs the build steps >> > for Kconfig. However, after the compiler has finised, the xterm window >> > immediately closes and Bitbake exists as if nothing happened, i.e. it >> > does not show any error message or similar. >> > >> > I investigated the problem and found out that, internally, Bitbake >> > calls the following command for starting Kconfig: >> > >> > make menuconfig CC="ccache x86_64-system-linux-gcc ..." \ >> > CFLAGS="..." HOSTCC="ccache gcc" HOSTCCFLAGS="..." >> > >> > The quotes, however, seem to get lost when starting the actual command >> > in the terminal. This leads to a command line like follows: >> > >> > make menuconfig CC=ccache x86_64-system-linux-gcc ... \ >> > CFLAGS=... HOSTCC="ccache gcc" HOSTCCFLAGS="... >> > >> > which is clearly wrong. >> > >> > The following patch fixes the problem in >> meta/classes-recipe/cml1.bbclass: >> > >> > diff --git a/meta/classes-recipe/cml1.bbclass >> b/meta/classes-recipe/cml1.bbclass >> > index a09a042c3f..d6001d6fd0 100644 >> > --- a/meta/classes-recipe/cml1.bbclass >> > +++ b/meta/classes-recipe/cml1.bbclass >> > @@ -53,7 +53,8 @@ python do_menuconfig() { >> > # ensure that environment variables are overwritten with this >> tasks 'd' values >> > d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR >> PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR") >> > >> > - oe_terminal("sh -c \"make %s; if [ \\$? -ne 0 ]; then echo >> 'Command failed.'; printf 'Press any key to continue... '; read r; fi\"" % >> d.getVar('KCONFIG_CONFIG_COMMAND'), >> > + make_cmd = "make %s" % >> d.getVar('KCONFIG_CONFIG_COMMAND').replace('"', '\\"') >> > + oe_terminal("sh -c \"%s; if [ \\$? -ne 0 ]; then echo 'Command >> failed.'; printf 'Press any key to continue... '; read r; fi\"" % make_cmd, >> > d.getVar('PN') + ' Configuration', d) >> >> This patch looks interesting! >> I would use shlex.join() to safely construct the command : >> https://docs.python.org/3/library/shlex.html#shlex.join< >> https://urldefense.com/v3/__https://docs.python.org/3/library/shlex.html*shlex.join__;Iw!!Lw1uGqvHvtJ_psGG2Et-1voSwbo!fQdtwGScMriVPQw2RO0unCFPxKM9NGX19bIH6mNdVfb77dZxiYZEkdNFiD5PZzVoxaOccilrT4L2I56P_pSw6FJuljKxeNTW$ >> > >> >> > What do you think? Is my observed behavior a configuration error of my >> > setup or does the patch above indeed make sense? >> >> The patch makes sense to me. >> >> I guess your next steps are : >> * If you want to contribute your patch : reproduce the bug and rebase >> your patch on master and send it to the mailing list >> * Or, create a bug in https://bugzilla.yoctoproject.org/< >> https://urldefense.com/v3/__https://bugzilla.yoctoproject.org/__;!!Lw1uGqvHvtJ_psGG2Et-1voSwbo!fQdtwGScMriVPQw2RO0unCFPxKM9NGX19bIH6mNdVfb77dZxiYZEkdNFiD5PZzVoxaOccilrT4L2I56P_pSw6FJulqw2-PFV$ >> > >> >> Best Regards, >> >> -- >> Yoann Congal >> Smile ECS - Tech expert >> > > > -- > Yoann Congal > Smile ECS - Tech expert >
diff --git a/meta/classes-recipe/cml1.bbclass b/meta/classes-recipe/cml1.bbclass index a09a042c3f..d6001d6fd0 100644 --- a/meta/classes-recipe/cml1.bbclass +++ b/meta/classes-recipe/cml1.bbclass @@ -53,7 +53,8 @@ python do_menuconfig() { # ensure that environment variables are overwritten with this tasks 'd' values d.appendVar("OE_TERMINAL_EXPORTS", " PKG_CONFIG_DIR PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR") - oe_terminal("sh -c \"make %s; if [ \\$? -ne 0 ]; then echo 'Command failed.'; printf 'Press any key to continue... '; read r; fi\"" % d.getVar('KCONFIG_CONFIG_COMMAND'), + make_cmd = "make %s" % d.getVar('KCONFIG_CONFIG_COMMAND').replace('"', '\\"') + oe_terminal("sh -c \"%s; if [ \\$? -ne 0 ]; then echo 'Command failed.'; printf 'Press any key to continue... '; read r; fi\"" % make_cmd, d.getVar('PN') + ' Configuration', d) What do you think? Is my observed behavior a configuration error of my