Openembedded Core Discussions
 help / color / mirror / Atom feed
From: AdrianF <adrian.freihofer@siemens.com>
To: openembedded-core@lists.openembedded.org
Cc: Adrian Freihofer <adrian.freihofer@siemens.com>
Subject: [PATCH v2 00/14] devtool ide-sdk: clang and lldb support
Date: Tue,  4 Aug 2026 13:59:24 +0200	[thread overview]
Message-ID: <20260804120034.378787-1-adrian.freihofer@siemens.com> (raw)

From: Adrian Freihofer <adrian.freihofer@siemens.com>

Changes between v1 and v2:
- Drop commit: qemuboot: make do_write_qemuboot_conf a standalone
  sstate task. There is now a better fix on master-next:
  qemboot: Correct task dependency tree
  (commit message has a typo qemboot --> qemuboot)
- Add one more commit: devtool: deploy-target: fix run strip under pseudo
  This should fix the issues found on the autobuilder with v1:
  - https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/4515
  - https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/4269
  - https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/4451
  On my local setup, the tests passed, but looking into pseudo's log file
  showed some file issues too which are now solved.

This series adds clang toolchain support to devtool ide-sdk. LLDB is
part of the same LLVM project as clang and is the more natural debugger
pairing for it (much like GDB pairs with gcc), so ide-sdk now picks LLDB
as the debugger whenever the recipe is built with clang, while
continuing to use GDB for gcc-built recipes as before. The series also
significantly extends oe-selftest coverage for both debugging paths
(ide=code and ide=none).

Highlights:
 - Introduce a debugger back-end abstraction in ide-sdk so GDB and LLDB
   can share the common ide=code/ide=none plumbing, and select LLDB
   automatically when the recipe's toolchain is clang.
 - Add LLDB support for the clang toolchain, for both ide=code
   (lldb-server platform mode + CodeLLDB launch/task config) and ide=none
   (generated shell scripts).
 - Fix a handful of pre-existing ide-sdk issues found along the way:
   waiting for the gdbserver port before returning, a duplicate -p flag in
   _target_ssh_args, $@ getting overwritten by `set` in the
   install_and_deploy script, and meson compile_commands.json generation.
 - Fix a bug in devtool deploy-target --strip
 - Refactor the meta-selftest cpp debugging examples into shared .inc
   files with clang variants, and add real, end-to-end debug session
   coverage (breakpoints in the executable, a library and a header-only
   inline function) for GDB (meson) and LLDB (clang, both ide=code and
   ide=none), including a recompile/redeploy cycle.

For now the debugger is selected purely based on the recipe's
TOOLCHAIN (gcc -> GDB, clang -> LLDB). Other combinations, e.g. gcc for
compiling with clang-tidy for static analysis, or support for the VSCode
clangd plugin are not covered yet but could be supported in the future
by making the debugger selection more independent from the compiler
choice.

Adrian Freihofer (14):
  oe-selftest: devtool: use stat for reading user/group names in ide-sdk
    tests
  devtool: ide-sdk: fix duplicate -p flag in _target_ssh_args
  devtool: ide-sdk: fix $@ overwritten by set in install_and_deploy
    script
  devtool: ide-sdk: fix meson compile_commands.json
  devtool: deploy-target: fix run strip under pseudo
  oe-selftest: devtool ide-sdk: cover breakpoints in exe, header and
    library
  oe-selftest: devtool ide-sdk: add real debug coverage for meson+code
  devtool: ide-sdk debugger back-end abstraction
  devtool: ide-sdk: wait for gdbserver port before returning
  devtool: ide-sdk add LLDB support for clang toolchain
  devtool: ide-sdk: add LLDB support for ide=none (clang toolchain)
  meta-selftest: refactor cpp examples into .inc files and add clang
    variants
  oe-selftest: devtool ide-sdk: add clang/LLDB test
  oe-selftest: devtool ide-sdk: add test for ide=none LLDB/clang support

 .../recipes-test/cpp/cmake-example-clang.bb   |  13 +
 .../recipes-test/cpp/cmake-example.bb         |  20 +-
 .../recipes-test/cpp/cmake-example.inc        |  29 +
 .../recipes-test/cpp/cmake-example/run-ptest  |  10 -
 .../recipes-test/cpp/cpp-example.inc          |  20 +-
 .../recipes-test/cpp/files/CMakeLists.txt     |  35 +-
 .../cpp/files/cpp-example-lib.hpp             |  10 +
 .../recipes-test/cpp/files/cpp-example.cpp    |   4 +
 .../recipes-test/cpp/files/meson.build        |  17 +-
 .../recipes-test/cpp/files/meson.options      |   6 +
 .../cpp/{meson-example => files}/run-ptest    |   4 +-
 .../recipes-test/cpp/meson-example-clang.bb   |  13 +
 .../recipes-test/cpp/meson-example.bb         |  24 +-
 .../recipes-test/cpp/meson-example.inc        |  36 +
 meta/lib/oeqa/selftest/cases/devtool.py       | 937 ++++++++++++++++--
 scripts/lib/devtool/deploy.py                 |  21 +-
 scripts/lib/devtool/ide_plugins/__init__.py   | 262 +++--
 scripts/lib/devtool/ide_plugins/ide_code.py   | 401 ++++++--
 scripts/lib/devtool/ide_plugins/ide_none.py   | 188 +++-
 scripts/lib/devtool/ide_sdk.py                | 206 +++-
 20 files changed, 1871 insertions(+), 385 deletions(-)
 create mode 100644 meta-selftest/recipes-test/cpp/cmake-example-clang.bb
 create mode 100644 meta-selftest/recipes-test/cpp/cmake-example.inc
 delete mode 100644 meta-selftest/recipes-test/cpp/cmake-example/run-ptest
 rename meta-selftest/recipes-test/cpp/{meson-example => files}/run-ptest (51%)
 create mode 100644 meta-selftest/recipes-test/cpp/meson-example-clang.bb
 create mode 100644 meta-selftest/recipes-test/cpp/meson-example.inc

-- 
2.55.0



             reply	other threads:[~2026-08-04 12:00 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-04 11:59 AdrianF [this message]
2026-08-04 11:59 ` [PATCH v2 01/14] oe-selftest: devtool: use stat for reading user/group names in ide-sdk tests AdrianF
2026-08-04 11:59 ` [PATCH v2 02/14] devtool: ide-sdk: fix duplicate -p flag in _target_ssh_args AdrianF
2026-08-04 11:59 ` [PATCH v2 03/14] devtool: ide-sdk: fix $@ overwritten by set in install_and_deploy script AdrianF
2026-08-04 11:59 ` [PATCH v2 04/14] devtool: ide-sdk: fix meson compile_commands.json AdrianF
2026-08-04 11:59 ` [PATCH v2 05/14] devtool: deploy-target: fix run strip under pseudo AdrianF
2026-08-04 11:59 ` [PATCH v2 06/14] oe-selftest: devtool ide-sdk: cover breakpoints in exe, header and library AdrianF
2026-08-04 11:59 ` [PATCH v2 07/14] oe-selftest: devtool ide-sdk: add real debug coverage for meson+code AdrianF
2026-08-04 11:59 ` [PATCH v2 08/14] devtool: ide-sdk debugger back-end abstraction AdrianF
2026-08-04 11:59 ` [PATCH v2 09/14] devtool: ide-sdk: wait for gdbserver port before returning AdrianF
2026-08-04 11:59 ` [PATCH v2 10/14] devtool: ide-sdk add LLDB support for clang toolchain AdrianF
2026-08-04 11:59 ` [PATCH v2 11/14] devtool: ide-sdk: add LLDB support for ide=none (clang toolchain) AdrianF
2026-08-04 11:59 ` [PATCH v2 12/14] meta-selftest: refactor cpp examples into .inc files and add clang variants AdrianF
2026-08-04 11:59 ` [PATCH v2 13/14] oe-selftest: devtool ide-sdk: add clang/LLDB test AdrianF
2026-08-07 15:11   ` [OE-core] " Mathieu Dubois-Briand
2026-08-07 15:17     ` Freihofer, Adrian
2026-08-07 15:44       ` Mathieu Dubois-Briand
2026-08-09  9:46         ` adrian.freihofer
2026-08-04 11:59 ` [PATCH v2 14/14] oe-selftest: devtool ide-sdk: add test for ide=none LLDB/clang support AdrianF

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260804120034.378787-1-adrian.freihofer@siemens.com \
    --to=adrian.freihofer@siemens.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox