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
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#227731): https://lists.openembedded.org/g/openembedded-core/message/227731 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]] -=-=-=-=-=-=-=-=-=-=-=-
