> -----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]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to