Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled
@ 2025-10-10  7:52 Hongxu Jia
  2025-10-10  7:52 ` [PATCH v5 2/5] debug_build.inc: collect debug build tuning configuration Hongxu Jia
                   ` (4 more replies)
  0 siblings, 5 replies; 15+ messages in thread
From: Hongxu Jia @ 2025-10-10  7:52 UTC (permalink / raw)
  To: peter.kjellerstedt, randy.macleod, raj.khem, openembedded-core,
	mathieu.dubois-briand

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 <peter.kjellerstedt@axis.com>
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 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)."
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v5 2/5] debug_build.inc: collect debug build tuning configuration
  2025-10-10  7:52 [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Hongxu Jia
@ 2025-10-10  7:52 ` Hongxu Jia
  2025-10-10  7:52 ` [PATCH v5 3/5] debug_build.inc: override INHIBIT_SYSROOT_STRIP for cross and native Hongxu Jia
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 15+ messages in thread
From: Hongxu Jia @ 2025-10-10  7:52 UTC (permalink / raw)
  To: peter.kjellerstedt, randy.macleod, raj.khem, openembedded-core,
	mathieu.dubois-briand

The modern compilers and code seem to require extra steps to avoid DEBUG errors,
Move debug tuning configuration from recipes to an include file to address these
errors.

Drop `:remove' operation on variable, override variables directly

Suggested-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com>
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/conf/distro/include/debug_build.inc      | 37 +++++++++++++++++++
 meta/recipes-connectivity/kea/kea_3.0.1.bb    | 10 -----
 .../debugedit/debugedit_5.2.bb                |  2 -
 meta/recipes-devtools/gcc/gcc-sanitizers.inc  |  3 --
 .../python/python3-lxml_6.0.2.bb              | 12 ------
 meta/recipes-extended/bash/bash_5.3.bb        |  3 --
 meta/recipes-extended/mdadm/mdadm_4.4.bb      |  2 -
 .../jpeg/libjpeg-turbo_3.1.2.bb               |  3 --
 .../vulkan-validation-layers_1.4.321.0.bb     |  2 -
 meta/recipes-kernel/lttng/lttng-ust_2.14.0.bb |  1 -
 meta/recipes-kernel/perf/perf.bb              |  2 -
 meta/recipes-sato/webkit/webkitgtk_2.48.5.bb  |  3 +-
 meta/recipes-support/vim/vim_9.1.bb           |  2 +-
 13 files changed, 40 insertions(+), 42 deletions(-)

diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
index 95e09e64f5..c006093345 100644
--- a/meta/conf/distro/include/debug_build.inc
+++ b/meta/conf/distro/include/debug_build.inc
@@ -3,3 +3,40 @@ DEBUG_OPTIMIZATION ?= "-Og ${DEBUG_LEVELFLAG}"
 SELECTED_OPTIMIZATION ?= "${DEBUG_OPTIMIZATION}"
 # compiler flags for native/nativesdk
 BUILD_OPTIMIZATION ?= "-Og -g"
+
+# The modern compilers and code seem to require extra steps to avoid DEBUG errors,
+# this file collects debug tuning configuration to address DEBUG errors.
+
+DEBUG_OPTIMIZATION:append:pn-perf = " -Wno-error=maybe-uninitialized"
+DEBUG_OPTIMIZATION:append:armv4:pn-libjpeg-turbo = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+DEBUG_OPTIMIZATION:append:armv5:pn-libjpeg-turbo = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+DEBUG_OPTIMIZATION:append:armv4:pn-bash = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+DEBUG_OPTIMIZATION:append:armv5:pn-bash = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
+DEBUG_OPTIMIZATION:append:pn-mdadm = " -Wno-error"
+DEBUG_OPTIMIZATION:mips:pn-kea = "-O ${DEBUG_LEVELFLAG}"
+DEBUG_OPTIMIZATION:mipsel:pn-kea = "-O ${DEBUG_LEVELFLAG}"
+# {standard input}: Assembler messages:
+# {standard input}:1488805: Error: branch out of range
+DEBUG_OPTIMIZATION:mips:pn-python3-lxml = "-O ${DEBUG_LEVELFLAG}"
+DEBUG_OPTIMIZATION:mipsel:pn-python3-lxml = "-O ${DEBUG_LEVELFLAG}"
+# used to fix ../../../../../../../../../work-shared/gcc-8.3.0-r0/gcc-8.3.0/libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+DEBUG_OPTIMIZATION:append:pn-gcc-sanitizers = " -Wno-error"
+
+BUILD_OPTIMIZATION:mips:pn-kea = "-O -g"
+BUILD_OPTIMIZATION:mipsel:pn-kea = "-O -g"
+# {standard input}: Assembler messages:
+# {standard input}:1488805: Error: branch out of range
+BUILD_OPTIMIZATION:mips:pn-python3-lxml = "-O -g"
+BUILD_OPTIMIZATION:mipsel:pn-python3-lxml = "-O -g"
+
+CPPFLAGS:append:arm:pn-lttng-ust = " -DUATOMIC_NO_LINK_ERROR"
+
+OECMAKE_WEBKIT_NO_INLINE_HINTS:pn-webkitgtk = "-DWEBKIT_NO_INLINE_HINTS=ON"
+
+EXTRA_OECONF:append:pn-debugedit = " --disable-inlined-xxhash"
+EXTRA_OECONF:append:pn-debugedit-native = " --disable-inlined-xxhash"
+EXTRA_OECONF:append:pn-nativesdk-debugedit = " --disable-inlined-xxhash"
+
+lcl_maybe_fortify:pn-vim = ""
+
+CXXFLAGS:append:pn-vulkan-validation-layers = " -DXXH_NO_INLINE_HINTS=1"
diff --git a/meta/recipes-connectivity/kea/kea_3.0.1.bb b/meta/recipes-connectivity/kea/kea_3.0.1.bb
index cc34c05093..ead4e98e70 100644
--- a/meta/recipes-connectivity/kea/kea_3.0.1.bb
+++ b/meta/recipes-connectivity/kea/kea_3.0.1.bb
@@ -34,16 +34,6 @@ INITSCRIPT_PARAMS = "defaults 30"
 SYSTEMD_SERVICE:${PN} = "kea-dhcp4.service kea-dhcp6.service kea-dhcp-ddns.service"
 SYSTEMD_AUTO_ENABLE = "disable"
 
-DEBUG_OPTIMIZATION:remove:mips = " -Og"
-DEBUG_OPTIMIZATION:append:mips = " -O"
-BUILD_OPTIMIZATION:remove:mips = " -Og"
-BUILD_OPTIMIZATION:append:mips = " -O"
-
-DEBUG_OPTIMIZATION:remove:mipsel = " -Og"
-DEBUG_OPTIMIZATION:append:mipsel = " -O"
-BUILD_OPTIMIZATION:remove:mipsel = " -Og"
-BUILD_OPTIMIZATION:append:mipsel = " -O"
-
 CXXFLAGS:remove = "-fvisibility-inlines-hidden"
 
 do_configure:prepend() {
diff --git a/meta/recipes-devtools/debugedit/debugedit_5.2.bb b/meta/recipes-devtools/debugedit/debugedit_5.2.bb
index 76c54ba63d..4ac6cab559 100644
--- a/meta/recipes-devtools/debugedit/debugedit_5.2.bb
+++ b/meta/recipes-devtools/debugedit/debugedit_5.2.bb
@@ -22,8 +22,6 @@ inherit pkgconfig autotools multilib_script
 
 RDEPENDS:${PN} += "bash elfutils-binutils"
 
-EXTRA_OECONF = "${@oe.utils.vartrue('DEBUG_BUILD', '--disable-inlined-xxhash', '', d)}"
-
 BBCLASSEXTEND = "native nativesdk"
 
 MULTILIB_SCRIPTS = "${PN}:${bindir}/find-debuginfo"
diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers.inc b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
index 6c81d30243..f4727ee6db 100644
--- a/meta/recipes-devtools/gcc/gcc-sanitizers.inc
+++ b/meta/recipes-devtools/gcc/gcc-sanitizers.inc
@@ -54,9 +54,6 @@ INHIBIT_DEFAULT_DEPS = "1"
 ALLOW_EMPTY:${PN} = "1"
 DEPENDS = "virtual/crypt gcc-runtime virtual/cross-cc"
 
-# used to fix ../../../../../../../../../work-shared/gcc-8.3.0-r0/gcc-8.3.0/libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-DEBUG_OPTIMIZATION:append = " -Wno-error"
-
 BBCLASSEXTEND = "nativesdk"
 
 PACKAGES = "${PN} ${PN}-dbg"
diff --git a/meta/recipes-devtools/python/python3-lxml_6.0.2.bb b/meta/recipes-devtools/python/python3-lxml_6.0.2.bb
index 876fda93b6..178908e3b2 100644
--- a/meta/recipes-devtools/python/python3-lxml_6.0.2.bb
+++ b/meta/recipes-devtools/python/python3-lxml_6.0.2.bb
@@ -23,18 +23,6 @@ SRC_URI[sha256sum] = "cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96
 SRC_URI += "${PYPI_SRC_URI}"
 inherit pkgconfig pypi setuptools3
 
-# {standard input}: Assembler messages:
-# {standard input}:1488805: Error: branch out of range
-DEBUG_OPTIMIZATION:remove:mips = " -Og"
-DEBUG_OPTIMIZATION:append:mips = " -O"
-BUILD_OPTIMIZATION:remove:mips = " -Og"
-BUILD_OPTIMIZATION:append:mips = " -O"
-
-DEBUG_OPTIMIZATION:remove:mipsel = " -Og"
-DEBUG_OPTIMIZATION:append:mipsel = " -O"
-BUILD_OPTIMIZATION:remove:mipsel = " -Og"
-BUILD_OPTIMIZATION:append:mipsel = " -O"
-
 BBCLASSEXTEND = "native nativesdk"
 
 RDEPENDS:${PN} += "libxml2 libxslt python3-compression"
diff --git a/meta/recipes-extended/bash/bash_5.3.bb b/meta/recipes-extended/bash/bash_5.3.bb
index b50a48d28c..74671f5a56 100644
--- a/meta/recipes-extended/bash/bash_5.3.bb
+++ b/meta/recipes-extended/bash/bash_5.3.bb
@@ -15,9 +15,6 @@ SRC_URI = "${GNU_MIRROR}/bash/${BP}.tar.gz;name=tarball \
 
 SRC_URI[tarball.sha256sum] = "0d5cd86965f869a26cf64f4b71be7b96f90a3ba8b3d74e27e8e9d9d5550f31ba"
 
-DEBUG_OPTIMIZATION:append:armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-DEBUG_OPTIMIZATION:append:armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-
 CFLAGS += "-std=gnu17"
 # mkbuiltins.c is built with native toolchain and needs gnu17 as well:
 # http://errors.yoctoproject.org/Errors/Details/853016/
diff --git a/meta/recipes-extended/mdadm/mdadm_4.4.bb b/meta/recipes-extended/mdadm/mdadm_4.4.bb
index 26a60e4c1a..e81b8fdf3c 100644
--- a/meta/recipes-extended/mdadm/mdadm_4.4.bb
+++ b/meta/recipes-extended/mdadm/mdadm_4.4.bb
@@ -39,8 +39,6 @@ EXTRA_OEMAKE = 'CHECK_RUN_DIR=0 CWFLAGS="" CXFLAGS="${CFLAGS}" SYSTEMD_DIR=${sys
                 BINDIR="${base_sbindir}" UDEVDIR="${nonarch_base_libdir}/udev" LDFLAGS="${LDFLAGS}" \
                 SYSROOT="${STAGING_DIR_TARGET}" STRIP='
 
-DEBUG_OPTIMIZATION:append = " -Wno-error"
-
 do_install() {
         oe_runmake 'DESTDIR=${D}' install install-systemd
         install -d ${D}/${sysconfdir}/
diff --git a/meta/recipes-graphics/jpeg/libjpeg-turbo_3.1.2.bb b/meta/recipes-graphics/jpeg/libjpeg-turbo_3.1.2.bb
index d4877bb92b..bc9d803f6b 100644
--- a/meta/recipes-graphics/jpeg/libjpeg-turbo_3.1.2.bb
+++ b/meta/recipes-graphics/jpeg/libjpeg-turbo_3.1.2.bb
@@ -44,9 +44,6 @@ EXTRA_OECMAKE:append:class-target:powerpc = " ${@bb.utils.contains("TUNE_FEATURE
 EXTRA_OECMAKE:append:class-target:powerpc64 = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
 EXTRA_OECMAKE:append:class-target:powerpc64le = " ${@bb.utils.contains("TUNE_FEATURES", "altivec", "", "-DWITH_SIMD=False", d)}"
 
-DEBUG_OPTIMIZATION:append:armv4 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-DEBUG_OPTIMIZATION:append:armv5 = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-
 # libjpeg-turbo-2.0.2/simd/mips/jsimd_dspr2.S
 # <instantiation>:13:5: error: invalid token in expression
 # .if $17 != 0
diff --git a/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.321.0.bb b/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.321.0.bb
index 466e757a90..fa7873b62d 100644
--- a/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.321.0.bb
+++ b/meta/recipes-graphics/vulkan/vulkan-validation-layers_1.4.321.0.bb
@@ -26,8 +26,6 @@ EXTRA_OECMAKE = "\
     -DSPIRV_HEADERS_INSTALL_DIR=${STAGING_EXECPREFIXDIR} \
     "
 
-CXXFLAGS:append = " ${@oe.utils.vartrue('DEBUG_BUILD', '-DXXH_NO_INLINE_HINTS=1', '', d)}"
-
 PACKAGECONFIG[x11] = "-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON, -DBUILD_WSI_XLIB_SUPPORT=OFF -DBUILD_WSI_XCB_SUPPORT=OFF, libxcb libx11 libxrandr"
 PACKAGECONFIG[wayland] = "-DBUILD_WSI_WAYLAND_SUPPORT=ON, -DBUILD_WSI_WAYLAND_SUPPORT=OFF, wayland"
 
diff --git a/meta/recipes-kernel/lttng/lttng-ust_2.14.0.bb b/meta/recipes-kernel/lttng/lttng-ust_2.14.0.bb
index 1a15c5b420..0d4c67f0fa 100644
--- a/meta/recipes-kernel/lttng/lttng-ust_2.14.0.bb
+++ b/meta/recipes-kernel/lttng/lttng-ust_2.14.0.bb
@@ -16,7 +16,6 @@ inherit autotools lib_package manpages python3native pkgconfig
 include lttng-platforms.inc
 
 EXTRA_OECONF = "--disable-numa"
-CPPFLAGS:append:arm = "${@oe.utils.vartrue('DEBUG_BUILD', '-DUATOMIC_NO_LINK_ERROR', '', d)}"
 
 DEPENDS = "liburcu util-linux"
 RDEPENDS:${PN}-bin = "python3-core"
diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index 3b9e52fdb8..58476796d3 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -415,8 +415,6 @@ FILES:${PN}-python = " \
                        "
 FILES:${PN}-perl = "${libexecdir}/perf-core/scripts/perl"
 
-DEBUG_OPTIMIZATION:append = " -Wno-error=maybe-uninitialized"
-
 PACKAGESPLITFUNCS =+ "perf_fix_sources"
 
 perf_fix_sources () {
diff --git a/meta/recipes-sato/webkit/webkitgtk_2.48.5.bb b/meta/recipes-sato/webkit/webkitgtk_2.48.5.bb
index 46031322b9..ba08e8b925 100644
--- a/meta/recipes-sato/webkit/webkitgtk_2.48.5.bb
+++ b/meta/recipes-sato/webkit/webkitgtk_2.48.5.bb
@@ -86,11 +86,12 @@ PACKAGECONFIG[gamepad] = "-DENABLE_GAMEPAD=ON,-DENABLE_GAMEPAD=OFF,libmanette"
 PACKAGECONFIG[sysprof-capture] = "-DUSE_SYSTEM_SYSPROF_CAPTURE=YES,-DUSE_SYSTEM_SYSPROF_CAPTURE=NO,sysprof"
 PACKAGECONFIG[speech] = "-DENABLE_SPEECH_SYNTHESIS=ON,-DENABLE_SPEECH_SYNTHESIS=OFF,flite"
 
+OECMAKE_WEBKIT_NO_INLINE_HINTS ??= "-DWEBKIT_NO_INLINE_HINTS=OFF"
 EXTRA_OECMAKE = " \
                  -DPORT=GTK \
                  ${@oe.utils.vartrue('GI_DATA_ENABLED', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
                  ${@oe.utils.vartrue('GIDOCGEN_ENABLED', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
-                 ${@oe.utils.vartrue('DEBUG_BUILD', '-DWEBKIT_NO_INLINE_HINTS=ON', '-DWEBKIT_NO_INLINE_HINTS=OFF', d)} \
+                 ${OECMAKE_WEBKIT_NO_INLINE_HINTS} \
                  -DENABLE_MINIBROWSER=ON \
                  -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
                  -DUSE_GTK4=ON \
diff --git a/meta/recipes-support/vim/vim_9.1.bb b/meta/recipes-support/vim/vim_9.1.bb
index fee9f055e9..a24a863ba5 100644
--- a/meta/recipes-support/vim/vim_9.1.bb
+++ b/meta/recipes-support/vim/vim_9.1.bb
@@ -20,4 +20,4 @@ ALTERNATIVE_LINK_NAME[xxd] = "${bindir}/xxd"
 # We override the default in security_flags.inc because vim (not vim-tiny!) will abort
 # in many places for _FORTIFY_SOURCE=2.  Security flags become part of CC.
 #
-lcl_maybe_fortify = "${@oe.utils.conditional('DEBUG_BUILD','1','','-D_FORTIFY_SOURCE=1',d)}"
+lcl_maybe_fortify = "-D_FORTIFY_SOURCE=1"
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v5 3/5] debug_build.inc: override INHIBIT_SYSROOT_STRIP for cross and native
  2025-10-10  7:52 [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Hongxu Jia
  2025-10-10  7:52 ` [PATCH v5 2/5] debug_build.inc: collect debug build tuning configuration Hongxu Jia
@ 2025-10-10  7:52 ` Hongxu Jia
  2025-12-15 12:02   ` [OE-core] " Richard Purdie
  2025-10-10  7:52 ` [PATCH v5 4/5] debug_build.inc: override MESON_BUILDTYPE for meson.bbclass Hongxu Jia
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 15+ messages in thread
From: Hongxu Jia @ 2025-10-10  7:52 UTC (permalink / raw)
  To: peter.kjellerstedt, randy.macleod, raj.khem, openembedded-core,
	mathieu.dubois-briand

The debug_build.inc is used to collect debug build configuration,
override INHIBIT_SYSROOT_STRIP for cross and native bbclass when DEBUG_BUILD
is enabled

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/classes-recipe/cross.bbclass        | 3 +--
 meta/classes-recipe/native.bbclass       | 3 +--
 meta/conf/distro/include/debug_build.inc | 4 ++++
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/meta/classes-recipe/cross.bbclass b/meta/classes-recipe/cross.bbclass
index 9abf166e50..ede04950b5 100644
--- a/meta/classes-recipe/cross.bbclass
+++ b/meta/classes-recipe/cross.bbclass
@@ -23,8 +23,7 @@ HOST_CC_ARCH = "${BUILD_CC_ARCH}"
 HOST_LD_ARCH = "${BUILD_LD_ARCH}"
 HOST_AS_ARCH = "${BUILD_AS_ARCH}"
 
-# No strip sysroot when DEBUG_BUILD is enabled
-INHIBIT_SYSROOT_STRIP ?= "${@oe.utils.vartrue('DEBUG_BUILD', '1', '', d)}"
+INHIBIT_SYSROOT_STRIP ??= ""
 
 export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir} /lib /lib64 /usr/lib /usr/lib64"
 
diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass
index 7d1fe343fa..b3411d20ca 100644
--- a/meta/classes-recipe/native.bbclass
+++ b/meta/classes-recipe/native.bbclass
@@ -118,8 +118,7 @@ PATH:prepend = "${COREBASE}/scripts/native-intercept:"
 # reused if we manipulate the paths.
 SSTATE_SCAN_CMD ?= "${SSTATE_SCAN_CMD_NATIVE}"
 
-# No strip sysroot when DEBUG_BUILD is enabled
-INHIBIT_SYSROOT_STRIP ?= "${@oe.utils.vartrue('DEBUG_BUILD', '1', '', d)}"
+INHIBIT_SYSROOT_STRIP ??= ""
 
 python native_virtclass_handler () {
     import re
diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
index c006093345..1062326417 100644
--- a/meta/conf/distro/include/debug_build.inc
+++ b/meta/conf/distro/include/debug_build.inc
@@ -40,3 +40,7 @@ EXTRA_OECONF:append:pn-nativesdk-debugedit = " --disable-inlined-xxhash"
 lcl_maybe_fortify:pn-vim = ""
 
 CXXFLAGS:append:pn-vulkan-validation-layers = " -DXXH_NO_INLINE_HINTS=1"
+
+# No strip sysroot for cross and native
+INHIBIT_SYSROOT_STRIP:class-cross ?= "1"
+INHIBIT_SYSROOT_STRIP:class-native ?= "1"
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v5 4/5] debug_build.inc: override MESON_BUILDTYPE for meson.bbclass
  2025-10-10  7:52 [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Hongxu Jia
  2025-10-10  7:52 ` [PATCH v5 2/5] debug_build.inc: collect debug build tuning configuration Hongxu Jia
  2025-10-10  7:52 ` [PATCH v5 3/5] debug_build.inc: override INHIBIT_SYSROOT_STRIP for cross and native Hongxu Jia
@ 2025-10-10  7:52 ` Hongxu Jia
  2025-12-15 12:02   ` [OE-core] " Richard Purdie
  2025-10-10  7:52 ` [PATCH v5 5/5] debug_build.inc: override BUILD_MODE and BUILD_DIR for cargo.bbclass Hongxu Jia
  2025-12-15 12:00 ` [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Richard Purdie
  4 siblings, 1 reply; 15+ messages in thread
From: Hongxu Jia @ 2025-10-10  7:52 UTC (permalink / raw)
  To: peter.kjellerstedt, randy.macleod, raj.khem, openembedded-core,
	mathieu.dubois-briand

The debug_build.inc is used to collect debug build configuration,
override MESON_BUILDTYPE for meson.bbclass when DEBUG_BUILD is enabled

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/classes-recipe/meson.bbclass        | 3 +--
 meta/conf/distro/include/debug_build.inc | 3 +++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/meta/classes-recipe/meson.bbclass b/meta/classes-recipe/meson.bbclass
index c8b3e1ec29..0944ea03cc 100644
--- a/meta/classes-recipe/meson.bbclass
+++ b/meta/classes-recipe/meson.bbclass
@@ -28,8 +28,7 @@ MESON_INSTALL_TAGS ?= ""
 def noprefix(var, d):
     return d.getVar(var).replace(d.getVar('prefix') + '/', '', 1)
 
-MESON_BUILDTYPE ?= "${@oe.utils.vartrue('DEBUG_BUILD', 'debug', 'plain', d)}"
-MESON_BUILDTYPE[vardeps] += "DEBUG_BUILD"
+MESON_BUILDTYPE ??= "plain"
 MESONOPTS = " --prefix ${prefix} \
               --buildtype ${MESON_BUILDTYPE} \
               --bindir ${@noprefix('bindir', d)} \
diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
index 1062326417..c8e2cf90cf 100644
--- a/meta/conf/distro/include/debug_build.inc
+++ b/meta/conf/distro/include/debug_build.inc
@@ -44,3 +44,6 @@ CXXFLAGS:append:pn-vulkan-validation-layers = " -DXXH_NO_INLINE_HINTS=1"
 # No strip sysroot for cross and native
 INHIBIT_SYSROOT_STRIP:class-cross ?= "1"
 INHIBIT_SYSROOT_STRIP:class-native ?= "1"
+
+# For meson.bbclass
+MESON_BUILDTYPE ?= "debug"
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v5 5/5] debug_build.inc: override BUILD_MODE and BUILD_DIR for cargo.bbclass
  2025-10-10  7:52 [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Hongxu Jia
                   ` (2 preceding siblings ...)
  2025-10-10  7:52 ` [PATCH v5 4/5] debug_build.inc: override MESON_BUILDTYPE for meson.bbclass Hongxu Jia
@ 2025-10-10  7:52 ` Hongxu Jia
  2025-12-15 12:04   ` [OE-core] " Richard Purdie
  2025-12-15 12:00 ` [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Richard Purdie
  4 siblings, 1 reply; 15+ messages in thread
From: Hongxu Jia @ 2025-10-10  7:52 UTC (permalink / raw)
  To: peter.kjellerstedt, randy.macleod, raj.khem, openembedded-core,
	mathieu.dubois-briand

The debug_build.inc is used to collect debug build configuration,
override BUILD_MODE and BUILD_DIR for cargo.bbclass when DEBUG_BUILD is enabled

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 meta/classes-recipe/cargo.bbclass        | 4 ++--
 meta/conf/distro/include/debug_build.inc | 4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/meta/classes-recipe/cargo.bbclass b/meta/classes-recipe/cargo.bbclass
index 2dd28e95d3..c90b8c18f0 100644
--- a/meta/classes-recipe/cargo.bbclass
+++ b/meta/classes-recipe/cargo.bbclass
@@ -31,7 +31,7 @@ B = "${WORKDIR}/build"
 export RUST_BACKTRACE = "1"
 
 RUSTFLAGS ??= ""
-BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
+BUILD_MODE ??= "--release"
 # --frozen flag will prevent network access (which is required since only
 # the do_fetch step is authorized to access network)
 # and will require an up to date Cargo.lock file.
@@ -41,7 +41,7 @@ CARGO_BUILD_FLAGS = "-v --frozen --target ${RUST_HOST_SYS} ${BUILD_MODE} --manif
 
 # This is based on the content of CARGO_BUILD_FLAGS and generally will need to
 # change if CARGO_BUILD_FLAGS changes.
-BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
+BUILD_DIR ??= "release"
 CARGO_TARGET_SUBDIR = "${RUST_HOST_SYS}/${BUILD_DIR}"
 oe_cargo_build () {
 	export RUSTFLAGS="${RUSTFLAGS}"
diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
index c8e2cf90cf..1b399b6f65 100644
--- a/meta/conf/distro/include/debug_build.inc
+++ b/meta/conf/distro/include/debug_build.inc
@@ -47,3 +47,7 @@ INHIBIT_SYSROOT_STRIP:class-native ?= "1"
 
 # For meson.bbclass
 MESON_BUILDTYPE ?= "debug"
+
+# For cargo.bbclass
+BUILD_MODE ?= ""
+BUILD_DIR ?= "debug"
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled
  2025-10-10  7:52 [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Hongxu Jia
                   ` (3 preceding siblings ...)
  2025-10-10  7:52 ` [PATCH v5 5/5] debug_build.inc: override BUILD_MODE and BUILD_DIR for cargo.bbclass Hongxu Jia
@ 2025-12-15 12:00 ` Richard Purdie
  2025-12-15 12:30   ` Khem Raj
                     ` (2 more replies)
  4 siblings, 3 replies; 15+ messages in thread
From: Richard Purdie @ 2025-12-15 12:00 UTC (permalink / raw)
  To: hongxu.jia, peter.kjellerstedt, randy.macleod, raj.khem,
	openembedded-core, mathieu.dubois-briand

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 <peter.kjellerstedt@axis.com>
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---
>  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


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 3/5] debug_build.inc: override INHIBIT_SYSROOT_STRIP for cross and native
  2025-10-10  7:52 ` [PATCH v5 3/5] debug_build.inc: override INHIBIT_SYSROOT_STRIP for cross and native Hongxu Jia
@ 2025-12-15 12:02   ` Richard Purdie
  2025-12-16  9:07     ` Hongxu Jia
  0 siblings, 1 reply; 15+ messages in thread
From: Richard Purdie @ 2025-12-15 12:02 UTC (permalink / raw)
  To: hongxu.jia, peter.kjellerstedt, randy.macleod, raj.khem,
	openembedded-core, mathieu.dubois-briand

On Fri, 2025-10-10 at 15:52 +0800, hongxu via lists.openembedded.org wrote:
> The debug_build.inc is used to collect debug build configuration,
> override INHIBIT_SYSROOT_STRIP for cross and native bbclass when DEBUG_BUILD
> is enabled
> 
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---
>  meta/classes-recipe/cross.bbclass        | 3 +--
>  meta/classes-recipe/native.bbclass       | 3 +--
>  meta/conf/distro/include/debug_build.inc | 4 ++++
>  3 files changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/meta/classes-recipe/cross.bbclass b/meta/classes-recipe/cross.bbclass
> index 9abf166e50..ede04950b5 100644
> --- a/meta/classes-recipe/cross.bbclass
> +++ b/meta/classes-recipe/cross.bbclass
> @@ -23,8 +23,7 @@ HOST_CC_ARCH = "${BUILD_CC_ARCH}"
>  HOST_LD_ARCH = "${BUILD_LD_ARCH}"
>  HOST_AS_ARCH = "${BUILD_AS_ARCH}"
>  
> -# No strip sysroot when DEBUG_BUILD is enabled
> -INHIBIT_SYSROOT_STRIP ?= "${@oe.utils.vartrue('DEBUG_BUILD', '1', '', d)}"
> +INHIBIT_SYSROOT_STRIP ??= ""
>  
>  export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir} /lib /lib64 /usr/lib /usr/lib64"
>  
> diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass
> index 7d1fe343fa..b3411d20ca 100644
> --- a/meta/classes-recipe/native.bbclass
> +++ b/meta/classes-recipe/native.bbclass
> @@ -118,8 +118,7 @@ PATH:prepend = "${COREBASE}/scripts/native-intercept:"
>  # reused if we manipulate the paths.
>  SSTATE_SCAN_CMD ?= "${SSTATE_SCAN_CMD_NATIVE}"
>  
> -# No strip sysroot when DEBUG_BUILD is enabled
> -INHIBIT_SYSROOT_STRIP ?= "${@oe.utils.vartrue('DEBUG_BUILD', '1', '', d)}"
> +INHIBIT_SYSROOT_STRIP ??= ""
>  
>  python native_virtclass_handler () {
>      import re
> diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
> index c006093345..1062326417 100644
> --- a/meta/conf/distro/include/debug_build.inc
> +++ b/meta/conf/distro/include/debug_build.inc
> @@ -40,3 +40,7 @@ EXTRA_OECONF:append:pn-nativesdk-debugedit = " --disable-inlined-xxhash"
>  lcl_maybe_fortify:pn-vim = ""
>  
>  CXXFLAGS:append:pn-vulkan-validation-layers = " -DXXH_NO_INLINE_HINTS=1"
> +
> +# No strip sysroot for cross and native
> +INHIBIT_SYSROOT_STRIP:class-cross ?= "1"
> +INHIBIT_SYSROOT_STRIP:class-native ?= "1"

One key question is whether this still makes sense?

In most cases you want to debug target binaries, or native, or cross
but it would be unusual to want to do all at the same time other than
for test builds. In test builds, you can just add the extra config.

Perhaps we should therefore just remove these?

Cheers,

Richard


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 4/5] debug_build.inc: override MESON_BUILDTYPE for meson.bbclass
  2025-10-10  7:52 ` [PATCH v5 4/5] debug_build.inc: override MESON_BUILDTYPE for meson.bbclass Hongxu Jia
@ 2025-12-15 12:02   ` Richard Purdie
  2025-12-16  9:08     ` Hongxu Jia
  0 siblings, 1 reply; 15+ messages in thread
From: Richard Purdie @ 2025-12-15 12:02 UTC (permalink / raw)
  To: hongxu.jia, peter.kjellerstedt, randy.macleod, raj.khem,
	openembedded-core, mathieu.dubois-briand

On Fri, 2025-10-10 at 15:52 +0800, hongxu via lists.openembedded.org
wrote:
> The debug_build.inc is used to collect debug build configuration,
> override MESON_BUILDTYPE for meson.bbclass when DEBUG_BUILD is
> enabled
> 
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---
>  meta/classes-recipe/meson.bbclass        | 3 +--
>  meta/conf/distro/include/debug_build.inc | 3 +++
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/classes-recipe/meson.bbclass b/meta/classes-
> recipe/meson.bbclass
> index c8b3e1ec29..0944ea03cc 100644
> --- a/meta/classes-recipe/meson.bbclass
> +++ b/meta/classes-recipe/meson.bbclass
> @@ -28,8 +28,7 @@ MESON_INSTALL_TAGS ?= ""
>  def noprefix(var, d):
>      return d.getVar(var).replace(d.getVar('prefix') + '/', '', 1)
>  
> -MESON_BUILDTYPE ?= "${@oe.utils.vartrue('DEBUG_BUILD', 'debug',
> 'plain', d)}"
> -MESON_BUILDTYPE[vardeps] += "DEBUG_BUILD"
> +MESON_BUILDTYPE ??= "plain"
>  MESONOPTS = " --prefix ${prefix} \
>                --buildtype ${MESON_BUILDTYPE} \
>                --bindir ${@noprefix('bindir', d)} \
> diff --git a/meta/conf/distro/include/debug_build.inc
> b/meta/conf/distro/include/debug_build.inc
> index 1062326417..c8e2cf90cf 100644
> --- a/meta/conf/distro/include/debug_build.inc
> +++ b/meta/conf/distro/include/debug_build.inc
> @@ -44,3 +44,6 @@ CXXFLAGS:append:pn-vulkan-validation-layers = " -
> DXXH_NO_INLINE_HINTS=1"
>  # No strip sysroot for cross and native
>  INHIBIT_SYSROOT_STRIP:class-cross ?= "1"
>  INHIBIT_SYSROOT_STRIP:class-native ?= "1"
> +
> +# For meson.bbclass
> +MESON_BUILDTYPE ?= "debug"

Should we do this only for target by default?

Cheers,

Richard



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 5/5] debug_build.inc: override BUILD_MODE and BUILD_DIR for cargo.bbclass
  2025-10-10  7:52 ` [PATCH v5 5/5] debug_build.inc: override BUILD_MODE and BUILD_DIR for cargo.bbclass Hongxu Jia
@ 2025-12-15 12:04   ` Richard Purdie
  2025-12-16  9:08     ` Hongxu Jia
  0 siblings, 1 reply; 15+ messages in thread
From: Richard Purdie @ 2025-12-15 12:04 UTC (permalink / raw)
  To: hongxu.jia, peter.kjellerstedt, randy.macleod, raj.khem,
	openembedded-core, mathieu.dubois-briand

On Fri, 2025-10-10 at 15:52 +0800, hongxu via lists.openembedded.org wrote:
> The debug_build.inc is used to collect debug build configuration,
> override BUILD_MODE and BUILD_DIR for cargo.bbclass when DEBUG_BUILD is enabled
> 
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---
>  meta/classes-recipe/cargo.bbclass        | 4 ++--
>  meta/conf/distro/include/debug_build.inc | 4 ++++
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/meta/classes-recipe/cargo.bbclass b/meta/classes-recipe/cargo.bbclass
> index 2dd28e95d3..c90b8c18f0 100644
> --- a/meta/classes-recipe/cargo.bbclass
> +++ b/meta/classes-recipe/cargo.bbclass
> @@ -31,7 +31,7 @@ B = "${WORKDIR}/build"
>  export RUST_BACKTRACE = "1"
>  
>  RUSTFLAGS ??= ""
> -BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
> +BUILD_MODE ??= "--release"
>  # --frozen flag will prevent network access (which is required since only
>  # the do_fetch step is authorized to access network)
>  # and will require an up to date Cargo.lock file.
> @@ -41,7 +41,7 @@ CARGO_BUILD_FLAGS = "-v --frozen --target ${RUST_HOST_SYS} ${BUILD_MODE} --manif
>  
>  # This is based on the content of CARGO_BUILD_FLAGS and generally will need to
>  # change if CARGO_BUILD_FLAGS changes.
> -BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
> +BUILD_DIR ??= "release"
>  CARGO_TARGET_SUBDIR = "${RUST_HOST_SYS}/${BUILD_DIR}"
>  oe_cargo_build () {
>  	export RUSTFLAGS="${RUSTFLAGS}"
> diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
> index c8e2cf90cf..1b399b6f65 100644
> --- a/meta/conf/distro/include/debug_build.inc
> +++ b/meta/conf/distro/include/debug_build.inc
> @@ -47,3 +47,7 @@ INHIBIT_SYSROOT_STRIP:class-native ?= "1"
>  
>  # For meson.bbclass
>  MESON_BUILDTYPE ?= "debug"
> +
> +# For cargo.bbclass
> +BUILD_MODE ?= ""
> +BUILD_DIR ?= "debug"

These worry me as they are generic names not specific to cargo. I'd
really like to see a more cargo specific name if we're going to call
this from generic code so we may need to do some renaming.

Cheers,

Richard


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled
  2025-12-15 12:00 ` [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Richard Purdie
@ 2025-12-15 12:30   ` Khem Raj
  2025-12-16  9:06   ` Hongxu Jia
  2025-12-17 20:43   ` Peter Kjellerstedt
  2 siblings, 0 replies; 15+ messages in thread
From: Khem Raj @ 2025-12-15 12:30 UTC (permalink / raw)
  To: Richard Purdie
  Cc: hongxu.jia, peter.kjellerstedt, randy.macleod, openembedded-core,
	mathieu.dubois-briand

[-- Attachment #1: Type: text/plain, Size: 6420 bytes --]

On Mon, Dec 15, 2025 at 7:00 AM Richard Purdie <
richard.purdie@linuxfoundation.org> 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 <peter.kjellerstedt@axis.com>
> > Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> > ---
> >  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
>

[-- Attachment #2: Type: text/html, Size: 8077 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled
  2025-12-15 12:00 ` [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Richard Purdie
  2025-12-15 12:30   ` Khem Raj
@ 2025-12-16  9:06   ` Hongxu Jia
  2025-12-17 20:43   ` Peter Kjellerstedt
  2 siblings, 0 replies; 15+ messages in thread
From: Hongxu Jia @ 2025-12-16  9:06 UTC (permalink / raw)
  To: Richard Purdie, hongxu.jia, peter.kjellerstedt, randy.macleod,
	raj.khem, openembedded-core, mathieu.dubois-briand

[-- Attachment #1: Type: text/plain, Size: 8056 bytes --]

On 12/15/25 20:00, Richard Purdie wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> 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<peter.kjellerstedt@axis.com>
>> Signed-off-by: Hongxu Jia<hongxu.jia@windriver.com>
>> ---
>>   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?
Got it, I will try to drop DEBUG_BUILD and add a config fragment to instead
>
> 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.

It is not easy to remove *_OPTIMIZATION, especially SELECTED_OPTIMIZATION,

with a simple grep,

...

$ grep SELECTED_OPTIMIZATION -rn meta 
meta/recipes-kernel/perf/perf.bb:88:TARGET_CC_ARCH += 
"${SELECTED_OPTIMIZATION} ${DEBUG_PREFIX_MAP}" 
meta/recipes-kernel/systemtap/systemtap_git.inc:18: if 
bb.utils.contains("SELECTED_OPTIMIZATION", "-O0", "x", "", d) == "x": 
meta/conf/templates/default/local.conf.sample.extended:101:# 
SELECTED_OPTIMIZATION = "${PROFILE_OPTIMIZATION}" grep: 
meta/conf/.documentation.conf.swp: binary file matches 
meta/conf/distro/include/lto.inc:48:SELECTED_OPTIMIZATION:append = 
"${@bb.utils.contains('DISTRO_FEATURES', 'lto', ' ${LTO}', '', d)}" 
meta/conf/distro/include/lto.inc:51:SELECTED_OPTIMIZATION[vardeps] += 
"LTO LTOEXTRA" meta/conf/distro/include/security_flags.inc:13:OPTLEVEL = 
"${@bb.utils.filter('SELECTED_OPTIMIZATION', '-O0 -O1 -O2 -O3 -Ofast -Og 
-Os -Oz -O', d)}" 
meta/conf/distro/include/security_flags.inc:64:TARGET_CC_ARCH:append:pn-binutils 
= " ${SELECTED_OPTIMIZATION}" 
meta/conf/distro/include/security_flags.inc:65:TARGET_CC_ARCH:append:pn-gcc 
= " ${SELECTED_OPTIMIZATION}" 
meta/conf/distro/include/security_flags.inc:66:TARGET_CC_ARCH:append:pn-gdb 
= " ${SELECTED_OPTIMIZATION}" meta/conf/bitbake.conf:612:TARGET_CFLAGS = 
"${TARGET_CPPFLAGS} ${SELECTED_OPTIMIZATION} ${DEBUG_PREFIX_MAP} -pipe" 
meta/conf/bitbake.conf:663:SELECTED_OPTIMIZATION ??= 
"${FULL_OPTIMIZATION}" 
meta/recipes-support/xxhash/xxhash_0.8.3.bb:15:CFLAGS += 
"${@bb.utils.contains('SELECTED_OPTIMIZATION', '-Og', 
'-DXXH_NO_INLINE_HINTS', '', d)}" 
meta/recipes-devtools/valgrind/valgrind_3.26.0.bb:70:SELECTED_OPTIMIZATION 
= "${DEBUG_LEVELFLAG}"

...

Variable TARGET_CC_ARCH need to append ${SELECTED_OPTIMIZATION} 
conditionally

It is possible to remove DEBUG_OPTIMIZATION and FULL_OPTIMIZATION, I 
will try it in other thread out of these serials

//Hongxu

> Cheers,
>
> Richard


[-- Attachment #2: Type: text/html, Size: 10271 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 3/5] debug_build.inc: override INHIBIT_SYSROOT_STRIP for cross and native
  2025-12-15 12:02   ` [OE-core] " Richard Purdie
@ 2025-12-16  9:07     ` Hongxu Jia
  0 siblings, 0 replies; 15+ messages in thread
From: Hongxu Jia @ 2025-12-16  9:07 UTC (permalink / raw)
  To: Richard Purdie, hongxu.jia, peter.kjellerstedt, randy.macleod,
	raj.khem, openembedded-core, mathieu.dubois-briand

On 12/15/25 20:02, Richard Purdie wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Fri, 2025-10-10 at 15:52 +0800, hongxu via lists.openembedded.org wrote:
>> The debug_build.inc is used to collect debug build configuration,
>> override INHIBIT_SYSROOT_STRIP for cross and native bbclass when DEBUG_BUILD
>> is enabled
>>
>> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
>> ---
>>   meta/classes-recipe/cross.bbclass        | 3 +--
>>   meta/classes-recipe/native.bbclass       | 3 +--
>>   meta/conf/distro/include/debug_build.inc | 4 ++++
>>   3 files changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/meta/classes-recipe/cross.bbclass b/meta/classes-recipe/cross.bbclass
>> index 9abf166e50..ede04950b5 100644
>> --- a/meta/classes-recipe/cross.bbclass
>> +++ b/meta/classes-recipe/cross.bbclass
>> @@ -23,8 +23,7 @@ HOST_CC_ARCH = "${BUILD_CC_ARCH}"
>>   HOST_LD_ARCH = "${BUILD_LD_ARCH}"
>>   HOST_AS_ARCH = "${BUILD_AS_ARCH}"
>>
>> -# No strip sysroot when DEBUG_BUILD is enabled
>> -INHIBIT_SYSROOT_STRIP ?= "${@oe.utils.vartrue('DEBUG_BUILD', '1', '', d)}"
>> +INHIBIT_SYSROOT_STRIP ??= ""
>>
>>   export lt_cv_sys_lib_dlsearch_path_spec = "${libdir} ${base_libdir} /lib /lib64 /usr/lib /usr/lib64"
>>
>> diff --git a/meta/classes-recipe/native.bbclass b/meta/classes-recipe/native.bbclass
>> index 7d1fe343fa..b3411d20ca 100644
>> --- a/meta/classes-recipe/native.bbclass
>> +++ b/meta/classes-recipe/native.bbclass
>> @@ -118,8 +118,7 @@ PATH:prepend = "${COREBASE}/scripts/native-intercept:"
>>   # reused if we manipulate the paths.
>>   SSTATE_SCAN_CMD ?= "${SSTATE_SCAN_CMD_NATIVE}"
>>
>> -# No strip sysroot when DEBUG_BUILD is enabled
>> -INHIBIT_SYSROOT_STRIP ?= "${@oe.utils.vartrue('DEBUG_BUILD', '1', '', d)}"
>> +INHIBIT_SYSROOT_STRIP ??= ""
>>
>>   python native_virtclass_handler () {
>>       import re
>> diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
>> index c006093345..1062326417 100644
>> --- a/meta/conf/distro/include/debug_build.inc
>> +++ b/meta/conf/distro/include/debug_build.inc
>> @@ -40,3 +40,7 @@ EXTRA_OECONF:append:pn-nativesdk-debugedit = " --disable-inlined-xxhash"
>>   lcl_maybe_fortify:pn-vim = ""
>>
>>   CXXFLAGS:append:pn-vulkan-validation-layers = " -DXXH_NO_INLINE_HINTS=1"
>> +
>> +# No strip sysroot for cross and native
>> +INHIBIT_SYSROOT_STRIP:class-cross ?= "1"
>> +INHIBIT_SYSROOT_STRIP:class-native ?= "1"
> One key question is whether this still makes sense?
>
> In most cases you want to debug target binaries, or native, or cross
> but it would be unusual to want to do all at the same time other than
> for test builds. In test builds, you can just add the extra config.
>
> Perhaps we should therefore just remove these?

Copy, v6 incoming

//Hongxu

> Cheers,
>
> Richard




^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 4/5] debug_build.inc: override MESON_BUILDTYPE for meson.bbclass
  2025-12-15 12:02   ` [OE-core] " Richard Purdie
@ 2025-12-16  9:08     ` Hongxu Jia
  0 siblings, 0 replies; 15+ messages in thread
From: Hongxu Jia @ 2025-12-16  9:08 UTC (permalink / raw)
  To: Richard Purdie, hongxu.jia, peter.kjellerstedt, randy.macleod,
	raj.khem, openembedded-core, mathieu.dubois-briand

On 12/15/25 20:02, Richard Purdie wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Fri, 2025-10-10 at 15:52 +0800, hongxu via lists.openembedded.org
> wrote:
>> The debug_build.inc is used to collect debug build configuration,
>> override MESON_BUILDTYPE for meson.bbclass when DEBUG_BUILD is
>> enabled
>>
>> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
>> ---
>>   meta/classes-recipe/meson.bbclass        | 3 +--
>>   meta/conf/distro/include/debug_build.inc | 3 +++
>>   2 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/meta/classes-recipe/meson.bbclass b/meta/classes-
>> recipe/meson.bbclass
>> index c8b3e1ec29..0944ea03cc 100644
>> --- a/meta/classes-recipe/meson.bbclass
>> +++ b/meta/classes-recipe/meson.bbclass
>> @@ -28,8 +28,7 @@ MESON_INSTALL_TAGS ?= ""
>>   def noprefix(var, d):
>>       return d.getVar(var).replace(d.getVar('prefix') + '/', '', 1)
>>
>> -MESON_BUILDTYPE ?= "${@oe.utils.vartrue('DEBUG_BUILD', 'debug',
>> 'plain', d)}"
>> -MESON_BUILDTYPE[vardeps] += "DEBUG_BUILD"
>> +MESON_BUILDTYPE ??= "plain"
>>   MESONOPTS = " --prefix ${prefix} \
>>                 --buildtype ${MESON_BUILDTYPE} \
>>                 --bindir ${@noprefix('bindir', d)} \
>> diff --git a/meta/conf/distro/include/debug_build.inc
>> b/meta/conf/distro/include/debug_build.inc
>> index 1062326417..c8e2cf90cf 100644
>> --- a/meta/conf/distro/include/debug_build.inc
>> +++ b/meta/conf/distro/include/debug_build.inc
>> @@ -44,3 +44,6 @@ CXXFLAGS:append:pn-vulkan-validation-layers = " -
>> DXXH_NO_INLINE_HINTS=1"
>>   # No strip sysroot for cross and native
>>   INHIBIT_SYSROOT_STRIP:class-cross ?= "1"
>>   INHIBIT_SYSROOT_STRIP:class-native ?= "1"
>> +
>> +# For meson.bbclass
>> +MESON_BUILDTYPE ?= "debug"
> Should we do this only for target by default?

Copy

//Hongxu

> Cheers,
>
> Richard
>



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [OE-core] [PATCH v5 5/5] debug_build.inc: override BUILD_MODE and BUILD_DIR for cargo.bbclass
  2025-12-15 12:04   ` [OE-core] " Richard Purdie
@ 2025-12-16  9:08     ` Hongxu Jia
  0 siblings, 0 replies; 15+ messages in thread
From: Hongxu Jia @ 2025-12-16  9:08 UTC (permalink / raw)
  To: Richard Purdie, hongxu.jia, peter.kjellerstedt, randy.macleod,
	raj.khem, openembedded-core, mathieu.dubois-briand

On 12/15/25 20:04, Richard Purdie wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Fri, 2025-10-10 at 15:52 +0800, hongxu via lists.openembedded.org wrote:
>> The debug_build.inc is used to collect debug build configuration,
>> override BUILD_MODE and BUILD_DIR for cargo.bbclass when DEBUG_BUILD is enabled
>>
>> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
>> ---
>>   meta/classes-recipe/cargo.bbclass        | 4 ++--
>>   meta/conf/distro/include/debug_build.inc | 4 ++++
>>   2 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/meta/classes-recipe/cargo.bbclass b/meta/classes-recipe/cargo.bbclass
>> index 2dd28e95d3..c90b8c18f0 100644
>> --- a/meta/classes-recipe/cargo.bbclass
>> +++ b/meta/classes-recipe/cargo.bbclass
>> @@ -31,7 +31,7 @@ B = "${WORKDIR}/build"
>>   export RUST_BACKTRACE = "1"
>>
>>   RUSTFLAGS ??= ""
>> -BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
>> +BUILD_MODE ??= "--release"
>>   # --frozen flag will prevent network access (which is required since only
>>   # the do_fetch step is authorized to access network)
>>   # and will require an up to date Cargo.lock file.
>> @@ -41,7 +41,7 @@ CARGO_BUILD_FLAGS = "-v --frozen --target ${RUST_HOST_SYS} ${BUILD_MODE} --manif
>>
>>   # This is based on the content of CARGO_BUILD_FLAGS and generally will need to
>>   # change if CARGO_BUILD_FLAGS changes.
>> -BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
>> +BUILD_DIR ??= "release"
>>   CARGO_TARGET_SUBDIR = "${RUST_HOST_SYS}/${BUILD_DIR}"
>>   oe_cargo_build () {
>>        export RUSTFLAGS="${RUSTFLAGS}"
>> diff --git a/meta/conf/distro/include/debug_build.inc b/meta/conf/distro/include/debug_build.inc
>> index c8e2cf90cf..1b399b6f65 100644
>> --- a/meta/conf/distro/include/debug_build.inc
>> +++ b/meta/conf/distro/include/debug_build.inc
>> @@ -47,3 +47,7 @@ INHIBIT_SYSROOT_STRIP:class-native ?= "1"
>>
>>   # For meson.bbclass
>>   MESON_BUILDTYPE ?= "debug"
>> +
>> +# For cargo.bbclass
>> +BUILD_MODE ?= ""
>> +BUILD_DIR ?= "debug"
> These worry me as they are generic names not specific to cargo. I'd
> really like to see a more cargo specific name if we're going to call
> this from generic code so we may need to do some renaming.

Copy, and do it for target only

//Hongxu

> Cheers,
>
> Richard




^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled
  2025-12-15 12:00 ` [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Richard Purdie
  2025-12-15 12:30   ` Khem Raj
  2025-12-16  9:06   ` Hongxu Jia
@ 2025-12-17 20:43   ` Peter Kjellerstedt
  2 siblings, 0 replies; 15+ messages in thread
From: Peter Kjellerstedt @ 2025-12-17 20:43 UTC (permalink / raw)
  To: Richard Purdie, hongxu.jia@eng.windriver.com,
	randy.macleod@windriver.com, raj.khem@gmail.com,
	openembedded-core@lists.openembedded.org,
	mathieu.dubois-briand@bootlin.com

> -----Original Message-----
> From: Richard Purdie <richard.purdie@linuxfoundation.org>
> Sent: den 15 december 2025 13:01
> To: hongxu.jia@eng.windriver.com; Peter Kjellerstedt <peter.kjellerstedt@axis.com>; randy.macleod@windriver.com; raj.khem@gmail.com; openembedded-core@lists.openembedded.org; mathieu.dubois-briand@bootlin.com
> 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 <peter.kjellerstedt@axis.com>
> > Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> > ---
> >  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


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2025-12-17 20:43 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-10  7:52 [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Hongxu Jia
2025-10-10  7:52 ` [PATCH v5 2/5] debug_build.inc: collect debug build tuning configuration Hongxu Jia
2025-10-10  7:52 ` [PATCH v5 3/5] debug_build.inc: override INHIBIT_SYSROOT_STRIP for cross and native Hongxu Jia
2025-12-15 12:02   ` [OE-core] " Richard Purdie
2025-12-16  9:07     ` Hongxu Jia
2025-10-10  7:52 ` [PATCH v5 4/5] debug_build.inc: override MESON_BUILDTYPE for meson.bbclass Hongxu Jia
2025-12-15 12:02   ` [OE-core] " Richard Purdie
2025-12-16  9:08     ` Hongxu Jia
2025-10-10  7:52 ` [PATCH v5 5/5] debug_build.inc: override BUILD_MODE and BUILD_DIR for cargo.bbclass Hongxu Jia
2025-12-15 12:04   ` [OE-core] " Richard Purdie
2025-12-16  9:08     ` Hongxu Jia
2025-12-15 12:00 ` [OE-core] [PATCH v5 1/5] distro/include: Add debug_build.inc when DEBUG_BUILD is enabled Richard Purdie
2025-12-15 12:30   ` Khem Raj
2025-12-16  9:06   ` Hongxu Jia
2025-12-17 20:43   ` Peter Kjellerstedt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox