> -----Original Message----- > From: Richard Purdie <[email protected]> > Sent: den 15 december 2025 13:01 > To: [email protected]; Peter Kjellerstedt > <[email protected]>; [email protected]; > [email protected]; [email protected]; > [email protected] > Subject: Re: [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc > when DEBUG_BUILD is enabled > > On Fri, 2025-10-10 at 15:52 +0800, hongxu via lists.openembedded.org wrote: > > In bitbake.conf, use ??= to set *_OPTIMIZATION, add a new include > > file debug_build.inc to use ?= to override *_OPTIMIZATION when > > DEBUG_BUILD is enabled > > > > When DEBUG_BUILD is enabled: > > - Defer inherit bblcass debug_build, while setting DEBUG_BUILD = "1" in > > local.conf, the debug build is enabled globally. For the recipe (such > > as qemu) which doesn't work without optimization, set DEBUG_BUILD = "0" > > to disable it for a given recipe > > > > - Use include_all to allow other layers to add their own debug build > > configurations > > > > Suggested-by: Peter Kjellerstedt <[email protected]> > > Signed-off-by: Hongxu Jia <[email protected]> > > --- > > meta/classes-global/base.bbclass | 3 +++ > > meta/classes-recipe/debug_build.bbclass | 8 ++++++++ > > meta/conf/bitbake.conf | 9 +++------ > > meta/conf/distro/include/debug_build.inc | 5 +++++ > > meta/conf/documentation.conf | 2 +- > > 5 files changed, 20 insertions(+), 7 deletions(-) > > create mode 100644 meta/classes-recipe/debug_build.bbclass > > create mode 100644 meta/conf/distro/include/debug_build.inc > > > > diff --git a/meta/classes-global/base.bbclass > > b/meta/classes-global/base.bbclass > > index 6de17d1bb5..0f4398e26f 100644 > > --- a/meta/classes-global/base.bbclass > > +++ b/meta/classes-global/base.bbclass > > @@ -35,6 +35,9 @@ TOOLCHAIN_NATIVE ??= "${PREFERRED_TOOLCHAIN_NATIVE}" > > inherit_defer toolchain/${TOOLCHAIN_NATIVE}-native > > inherit_defer toolchain/${TOOLCHAIN} > > > > +DEBUG_BUILD ??= "0" > > +inherit_defer ${@oe.utils.vartrue('DEBUG_BUILD', 'debug_build', '', d)} > > + > > def lsb_distro_identifier(d): > > adjust = d.getVar('LSB_DISTRO_ADJUST') > > adjust_func = None > > diff --git a/meta/classes-recipe/debug_build.bbclass > > b/meta/classes-recipe/debug_build.bbclass > > new file mode 100644 > > index 0000000000..a917e9cbc9 > > --- /dev/null > > +++ b/meta/classes-recipe/debug_build.bbclass > > @@ -0,0 +1,8 @@ > > +# > > +# Copyright OpenEmbedded Contributors > > +# > > +# SPDX-License-Identifier: MIT > > +# > > + > > +# Allow other layers to add their own debug build configurations > > +include_all conf/distro/include/debug_build.inc > > diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf > > index 5406e542db..52ceb76bbb 100644 > > --- a/meta/conf/bitbake.conf > > +++ b/meta/conf/bitbake.conf > > @@ -658,13 +658,10 @@ DEBUG_PREFIX_MAP ?= "\ > > " > > DEBUG_LEVELFLAG ?= "-g" > > > > -FULL_OPTIMIZATION = "-O2 ${DEBUG_LEVELFLAG}" > > -DEBUG_OPTIMIZATION = "-Og ${DEBUG_LEVELFLAG}" > > -SELECTED_OPTIMIZATION = "${@d.getVar(oe.utils.vartrue('DEBUG_BUILD', > 'DEBUG_OPTIMIZATION', 'FULL_OPTIMIZATION', d))}" > > -SELECTED_OPTIMIZATION[vardeps] += "FULL_OPTIMIZATION DEBUG_OPTIMIZATION > DEBUG_BUILD" > > +FULL_OPTIMIZATION ??= "-O2 ${DEBUG_LEVELFLAG}" > > +SELECTED_OPTIMIZATION ??= "${FULL_OPTIMIZATION}" > > # compiler flags for native/nativesdk > > -BUILD_OPTIMIZATION = "${@oe.utils.vartrue('DEBUG_BUILD', '-Og -g', '- > O2', d)}" > > -BUILD_OPTIMIZATION[vardeps] += "DEBUG_BUILD" > > +BUILD_OPTIMIZATION ??= "-O2" > > > > ################################################################## > > # Reproducibility > > diff --git a/meta/conf/distro/include/debug_build.inc > b/meta/conf/distro/include/debug_build.inc > > new file mode 100644 > > index 0000000000..95e09e64f5 > > --- /dev/null > > +++ b/meta/conf/distro/include/debug_build.inc > > @@ -0,0 +1,5 @@ > > +# Override SELECTED_OPTIMIZATION and BUILD_OPTIMIZATION when > DEBUG_BUILD is enabled. > > +DEBUG_OPTIMIZATION ?= "-Og ${DEBUG_LEVELFLAG}" > > +SELECTED_OPTIMIZATION ?= "${DEBUG_OPTIMIZATION}" > > +# compiler flags for native/nativesdk > > +BUILD_OPTIMIZATION ?= "-Og -g" > > diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf > > index 741130a392..2a7418ccb3 100644 > > --- a/meta/conf/documentation.conf > > +++ b/meta/conf/documentation.conf > > @@ -129,7 +129,7 @@ CVE_CHECK_LAYER_INCLUDELIST[doc] = "Defines which > layers to include during cve-c > > D[doc] = "The destination directory." > > DATE[doc] = "The date the build was started using YMD format." > > DATETIME[doc] = "The date and time the build was started." > > -DEBUG_BUILD[doc] = "Specifies to build packages with debugging > information. This influences the value of the SELECTED_OPTIMIZATION > variable." > > +DEBUG_BUILD[doc] = "Specifies to build packages with debugging > information. This influences the value of the SELECTED_OPTIMIZATION > variable and includes file conf/distro/include/debug_build.inc" > > DEBUG_OPTIMIZATION[doc] = "The options to pass in TARGET_CFLAGS and > CFLAGS when compiling a system for debugging. This variable defaults to '- > Og ${DEBUG_LEVELFLAG}'." > > DEFAULT_PREFERENCE[doc] = "Specifies a weak bias for recipe selection > priority." > > DEPENDS[doc] = "Lists a recipe's build-time dependencies (i.e. other > recipe files)." > > Sorry about the delay in getting to this, we had to focus on the > release. I have been giving this some thought and it is heading the > right way but I have a couple of ideas. > > The problem with DEBUG_BUILD is that we have a lot of debug information > in builds anyway and this is now unclear what it means. The > documentation.conf entry mentions packages which is now incorrect too. > The variable is a very old one and the interface is poorly designed > compared to other areas now. > > Rather than keeping "DEBUG_BUILD" alive, perhaps we drop that and > simply document the INHERIT instead? I did wonder about making it a > config fragment instead too instead of a class? > > I'm also wondering whether we should remove SELECTED_OPTIMIZATION > entirely? Certainly DEBUG_OPTIMIZATION and FULL_OPTIMIZATION can be > dropped. Whether that should be this patch or another, I don't mind. > > Cheers, > > Richard
This doesn't make much sense to me. DEBUG_BUILD is something that I enable per recipe, typically in local.conf, or temporarily in the recipe itself to avoid having to re-parse everything. I do not see how fragments would be even remotely usable for this use case. (Though you could of course have a fragment that sets DEBUG_BUILD = "1" if you want to build everything for debug.) For years, I have been telling my developers not to invent their own ways of enabling debugging for their recipes, but rather rely on and hook into the official way, i.e., setting DEBUG_BUILD = "1" for the recipe. Please do not change this! //Peter
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#228076): https://lists.openembedded.org/g/openembedded-core/message/228076 Mute This Topic: https://lists.openembedded.org/mt/115685783/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
