On Mon, Dec 15, 2025 at 7:00 AM Richard Purdie <
[email protected]> wrote:

> 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.


I think simplifying this would be useful. All these variables have grown
overtime and adding one one will add to this. Perhaps the final value of
optimization settings could be computed from fragments.


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