From 396535664c5645a0b32bd0e06dbab3f1e2849b64 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Fri, 1 Mar 2024 08:54:02 -0600 Subject: subtree updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit meta-arm: 025f76a14f..aba9250494: Anusmita Dutta Mazumder (2): arm-bsp/linux-yocto: Remove EOL Linux yocto kernel 6.1 arm-bsp/n1sdp: update to linux yocto kernel 6.6 Bence Balogh (1): arm-bsp/trusted-firmware-m: disable libmetal doc generation Drew Reed (5): meta-arm: Support firmware building under a multiconfig bsp,ci: Build Corstone-1000 firmware under multiconfig bsp: Restore the ability to build firmware only ci: Add back testing of firmware only builds ci: Ensure tests are in the Corstone-1000 flash image meta-raspberrypi: dbf1113a82..95a9103f91: Khem Raj (1): python3-sense-hat: Drop PYTHON_PN Martin Jansa (2): sdcard_image-rpi.bbclass: include ${IMAGE_NAME_SUFFIX} directly in both ${IMAGE_NAME} and ${IMAGE_LINK_NAME} sdimage-raspberrypi.wks: increase /boot partition minimal size from 20 to 100 meta-openembedded: 528f273006..9f0e513211: Andreas Mützel (1): python3-pynacl: allow -native build Chen Qi (1): unixodbc: fix odbc.pc file generation Daniel Ammann (1): sdmon: add new package Derek Straka (9): python3-trustme: add runtime dependency for tests and re-add to ptest python3-gunicorn: re-enable working ptests for the package python-inotify: re-enable working ptests for the package python3-license-expression: re-enable passing ptests for the package python3-jdcal: re-add functional ptests python3-msgpack: re-add functional ptests python3-parse: re-add functional ptests python3-typeguard: update ptest dependencies and re-enable functional tests python3-service-identity: add missing ptest dependencies and re-enable functional tests Jan Vermaete (1): netdata: version bump 1.43.2 -> 1.44.3 Joerg Hofrichter (1): python3-gevent: adding missing dependency to python3-zopeevent Khawaja Shaheryar (2): libdaq: add recipe snort: add snort3 initial recipe Khem Raj (25): python3-pocketsphinx: Upgrade to 5.0.3 snort: Do not use llvm libunwind snort3: Fix contains reference to TMPDIR [buildpaths] warnings libcamera: Replace VLAs with alloca dav1d: Inherit missing pkgconfig webkitgtk3: Fix build on 32bit x86 ptest-packagelists-meta-oe: Remove oprofile for rv32/rv64 python3-jsmin: Fix ptests to run with python 3.12+ python3-ordered-set: Use automake formatter for ptest output fuse3: Add missing runtime deps for ptests python3-looseversion: Add recipe sshfs-fuse: Fix ptest builds with python 3.12 meta-filesystems: Add meta-filesystems-image-ptest meta-multimedia-image-ptest: Add images to enable BBCLASSEXTEND parallel execution meta-networking-image-ptest: Add images to enable BBCLASSEXTEND parallel execution python3-scapy: Add missing rdeps for ptests ptest-packagelists-meta-oe.inc: Remove oprofile from PTESTS_PROBLEMS_META_OE ptest-packagelists-meta-networking: firewalld hangs therefore disabled ptest-packagelists-meta-perl.inc: Move couple of test to PTESTS_FAST_META_PERL openhpi: Fix ptest run time failures squid: Add missing bash dependency for ptest package meta-networking: Express dependency on meta-python ostree: Remove strace from ptest rdeps python3-pydantic-core,python3-pydantic: Update to 2.16.3 and 2.6.3 respectively python3-pydantic-core: Fix build for arches without 64bit atomics Lei Maohui (1): Fix install error when enable multilib. Markus Volk (7): iwd: update 2.13 -> 2.14 libgedit-gtksourceview: update 299.0.5 -> 299.1.0 gedit: update 46.1 -> 46.2 mutter: update 45.3 -> 45.4 gnome-shell: update 45.3 -> 45.4 gnome-control-center: update 45.2 -> 45.3 dav1d: update 1.3.0 -> 1.4.0 Martin Jansa (5): python3-httpx: respect libdir in packaging snort3: drop SRCPV from PV snort3: fix snort.pc gattlib: use python3native and depend on python3-packaging-native networkmanager-fortisslvpn: use python3native and depend on python3-packaging-native Mingli Yu (1): mariadb: Upgrade to 10.11.7 Niko Mauno (2): python3-pybind11: Migrate to python_setuptools_build_meta python3-pybind11: Restore strip prevention patch Oleh Matiusha (1): yasm: improve reproducibility Peter Marko (1): dnsmasq: Upgrade 2.89 -> 2.90 Romain Naour (1): wavemon: add recipe for version 0.9.5 Sascha Hauer (1): signing.bbclass: fix wrong function name Tim Orling (16): python_mesonpy.bbclass: move to oe-core python3-meson-python: move to oe-core python3-pyproject-metadata: move to oe-core meta-python: drop ${PYTHON_PN} meta-oe: drop ${PYTHON_PN} meta-filesystems: drop ${PYTHON_PN} meta-networking: drop ${PYTHON_PN} meta-gnome: drop ${PYTHON_PN} python3-pytest-lazy-fixtures: add 1.0.5 python3-prettytable: upgrade 3.9.0 => 3.10.0; fix ptests python3-pytest-lazy-fixture: drop recipe meta-oe-image-ptest: add PTESTS_PROBLEMS_META_OE meta-perl-image-ptest: add PTESTS_PROBLEMS_META_PERL meta-python-image-ptest: add PTESTS_PROBLEMS_META_PYTHON libencode-perl: drop recipe libencode-locale-perl: drop recipe Wang Mingyu (49): babl: upgrade 0.1.106 -> 0.1.108 btop: upgrade 1.3.0 -> 1.3.2 gegl: upgrade 0.4.46 -> 0.4.48 gjs: upgrade 1.78.3 -> 1.78.4 gnome-bluetooth: upgrade 42.7 -> 42.8 gnome-keyring: upgrade 42.1 -> 46.1 isomd5sum: upgrade 1.2.3 -> 1.2.4 libei: upgrade 1.2.0 -> 1.2.1 libmanette: upgrade 0.2.6 -> 0.2.7 libmime-types-perl: upgrade 2.24 -> 2.26 logwatch: upgrade 7.9 -> 7.10 mpich: upgrade 4.1.2 -> 4.2.0 ostree: upgrade 2024.1 -> 2024.3 python3-aiohue: upgrade 4.7.0 -> 4.7.1 python3-awesomeversion: upgrade 23.11.0 -> 24.2.0 python3-bidict: upgrade 0.22.1 -> 0.23.0 python3-cantools: upgrade 39.4.3 -> 39.4.4 python3-cmake: upgrade 3.28.1 -> 3.28.3 python3-django: upgrade 5.0.1 -> 5.0.2 python3-dnspython: upgrade 2.5.0 -> 2.6.0 python3-elementpath: upgrade 4.2.0 -> 4.3.0 python3-engineio: upgrade 4.8.2 -> 4.9.0 python3-gevent: upgrade 23.9.1 -> 24.2.1 unbound: upgrade 1.19.0 -> 1.19.1 wireshark: upgrade 4.2.2 -> 4.2.3 protobuf: upgrade 4.25.2 -> 4.25.3 webkitgtk3: upgrade 2.42.4 -> 2.42.5 python3-tqdm: upgrade 4.66.1 -> 4.66.2 python3-google-api-python-client: upgrade 2.116.0 -> 2.118.0 python3-httpcore: upgrade 1.0.2 -> 1.0.3 python3-jsbeautifier: upgrade 1.14.11 -> 1.15.1 python3-langtable: upgrade 0.0.64 -> 0.0.65 python3-polyline: upgrade 2.0.1 -> 2.0.2 python3-protobuf: upgrade 4.25.2 -> 4.25.3 python3-pymisp: upgrade 2.4.184 -> 2.4.185 python3-pymodbus: upgrade 3.6.3 -> 3.6.4 python3-pytest-asyncio: upgrade 0.23.4 -> 0.23.5 python3-tox: upgrade 4.12.1 -> 4.13.0 python3-twine: upgrade 4.0.2 -> 5.0.0 python3-watchdog: upgrade 3.0.0 -> 4.0.0 python3-zopeinterface: upgrade 6.1 -> 6.2 remmina: upgrade 1.4.33 -> 1.4.34 sip: upgrade 6.8.2 -> 6.8.3 python3-google-auth: upgrade 2.27.0 -> 2.28.0 python3-gspread: upgrade 6.0.1 -> 6.0.2 python3-socketio: upgrade 5.11.0 -> 5.11.1 python3-sentry-sdk: upgrade 1.40.0 -> 1.40.4 python3-pydantic-core: upgrade 2.14.6 -> 2.16.1 python3-pydantic: upgrade 2.5.3 -> 2.6.0 William Lyu (1): e2tools: Add ptest Yi Zhao (1): audit: upgrade 3.1.2 -> 4.0 Yoann Congal (2): influxdb: Fix /etc files owner influxdb: Add missing group to static id chenheyun (1): dropwatch: Use header files from sysroot instead of build host poky: fc8e5d7c13..25d60ac6f6: Adrian Freihofer (5): devtool: ide-sdk python 3.12 escaping sdk-manual: extensible.rst: cover devtool ide-sdk devtool: ide-sdk launch.json per recipe only devtool: ide-sdk prefer sources from workspace oe-selftest devtool: ide-sdk tests Alexander Kanavin (1): dbus: disable assertions and enable only modular tests Alexis Lothoré (7): testimage: log exception when failing to retrieve artifacts lib/oeqa: share get_json_result_dir helper testimage: create a list of failed test post actions oeqa/utils/postactions: isolate directory creation in dedicated action oeqa/utils/postactions: add target disk usage stat as post action oeqa/utils/postactions: testimage: add host disk usage stat as post action oeqa/lib/utils/postactions: fix host disk usage stats retrieval Bruce Ashfield (8): linux-yocto/6.6: update to v6.6.17 linux-yocto/6.6: update CVE exclusions linux-yocto/6.6: enable squashfs for selftests linux-yocto/6.6: config: x86 tidy & consolidation kern-tools: depend on git-replacement-native linux-yocto/6.6: genericarm64 configuration/definition linux-yocto/6.6: update to v6.6.18 linux-yocto/6.6: update CVE exclusions Christoph Vogtländer (1): overlayfs: add missing vardeps Claus Stovgaard (1): wpa-supplicant: Fix CVE-2023-52160 Eilís 'pidge' Ní Fhlannagáin (2): creategroup*: Remove coreutils-native as a DEPENDS selftest-users: Convoluted selftest for USERADD_DEPENDS Emil Kronborg (1): bluez5: remove configuration files from install task Enguerrand de Ribaucourt (4): devtool: ide: define compilerPath for meson projects Revert "meson: use absolute cross-compiler paths" bitbake: bitbake: progressbar: accept value over initial maxval devtool: ide-sdk source mapping for vscode Enrico Jörns (1): wic: 'empty' plugin: fix typo in comment Joe Slater (1): qemuboot: predictable network interface names Jonathan GUILLOT (2): lib/oe/package: fix LOCALE_PATHS scan to create locale packages glibc-locale: add an explicit dedicated package for locale.alias file Jose Quaresma (1): go: update 1.20.13 -> 1.20.14 Joshua Watt (1): bitbake: asyncrpc: Add support for server headers Khem Raj (6): ncurses: Always pass -D_GNU_SOURCE linux-yocto: Remove unused patch ref-manual: variables: remove PYTHON_PN python3-bcrypt: Fix build break on arches without 64 bit atomics python3-maturin: Recognise riscv32 architecture llvm: Update to 18.1.0 RC4 Lee Chee Yang (1): migration-guide: add release notes for 4.3.3 Lei Maohui (1): rpm: Fix the following error when run nativesdk-rpm in nativesdk environment. Martin Jansa (1): glib-2.0: backport a switch from distutils to packaging in codegen Michael Halstead (1): yocto-uninative: Update to 4.4 for glibc 2.39 Michael Opdenacker (5): ref-manual: system-requirements: update packages to build docs ref-manual: release-process: grammar fix manuals: suppress excess use of "following" word dev-manual: packages: clarify shared PR service constraint dev-manual: packages: need enough free space Munehisa Kamata (1): kernel.bbclass: Set pkg-config variables for building modules Nick Owens (1): python3: dont disable readline module for editline Philip Lorenz (1): bitbake: fetch2: Ensure that git LFS objects are available Piotr Łobacz (1): useradd.bbclass: Fix order of postinst-useradd-* Richard Purdie (6): numactl: Upgrade 2.0.17 -> 2.0.18 lttng-ust: Upgrade 2.13.6 -> 2.13.7 oeqa/selftest/rust: Simplify the rust testsuite output gathering/processing recipetool: Fix errors with meta-poky bbappend bitbake: runqueue: Add support for BB_LOADFACTOR_MAX mirrors: Switch llvm to use shallow cloning Ross Burton (4): base-files: add usage warning to motd libexif: remove unused version_underscore gstreamer1.0: skip a test that is known to be flaky linux-firmware: split out more firmware pieces Simone Weiß (6): patchtest: provide further guidance for failed testcases patchtest: Skip test for CVE_CHECK_IGNORE for older branches meta: Remove some not needed CVE_STATUS meta: Update CVE_STATUS for incorrect cpes cve-check: Log if CVE_STATUS set but not reported for component dev-manual: Rephrase spdx creation Soumya Sambu (1): bind: Upgrade 9.18.21 -> 9.18.24 Tim Orling (3): bitbake: layerindexlib: fix missing layer branch backtrace python3-cryptography{-vectors}: upgrade to 42.0.5 python3-attrs: disable Hypothesis deadline Tobias Hagelborn (1): bitbake: hashserv: Re-enable connection pooling with psycopg 3 driver Trevor Gamblin (1): python3-git: upgrade 3.1.41 -> 3.1.42 Trevor Woerner (1): wic: allow imager-specific filename extensions Ulrich Ölmann (1): bitbake: taskexp_ncurses: fix execution example in introductory comment Wang Mingyu (44): bash-completion: upgrade 2.11 -> 2.12.0 ccache: upgrade 4.9 -> 4.9.1 createrepo-c: upgrade 1.0.3 -> 1.0.4 ed: upgrade 1.20 -> 1.20.1 efivar: upgrade 38 -> 39 gcr: upgrade 4.1.0 -> 4.2.0 git: upgrade 2.43.0 -> 2.44.0 libffi: upgrade 3.4.5 -> 3.4.6 libgpg-error: upgrade 1.47 -> 1.48 libhandy: upgrade 1.8.2 -> 1.8.3 libksba: upgrade 1.6.5 -> 1.6.6 libmicrohttpd: upgrade 0.9.77 -> 1.0.1 libpng: upgrade 1.6.41 -> 1.6.42 libsecret: upgrade 0.21.2 -> 0.21.4 libunistring: upgrade 1.1 -> 1.2 liburi-perl: upgrade 5.25 -> 5.27 libxext: upgrade 1.3.5 -> 1.3.6 libxkbfile: upgrade 1.1.2 -> 1.1.3 libxvmc: upgrade 1.0.13 -> 1.0.14 lighttpd: upgrade 1.4.73 -> 1.4.74 makedepend: upgrade 1.0.8 -> 1.0.9 mpg123: upgrade 1.32.4 -> 1.32.5 ofono: upgrade 2.3 -> 2.4 pango: upgrade 1.51.0 -> 1.52.0 pciutils: upgrade 3.10.0 -> 3.11.1 pkgconf: upgrade 2.1.0 -> 2.1.1 python3-beartype: upgrade 0.17.0 -> 0.17.2 python3-certifi: upgrade 2023.11.17 -> 2024.2.2 python3-dbusmock: upgrade 0.30.2 -> 0.31.1 python3-hypothesis: upgrade 6.97.3 -> 6.98.12 python3-pip: upgrade 23.3.2 -> 24.0 python3-pycairo: upgrade 1.25.1 -> 1.26.0 python3-pytest: upgrade 8.0.0 -> 8.0.2 python3-pytz: upgrade 2023.4 -> 2024.1 python3-setuptools-rust: upgrade 1.8.1 -> 1.9.0 python3-trove-classifiers: upgrade 2024.1.8 -> 2024.2.23 python3-typing-extensions: upgrade 4.9.0 -> 4.10.0 python3: upgrade 3.12.1 -> 3.12.2 python3-urllib3: upgrade 2.1.0 -> 2.2.1 python3-yamllint: upgrade 1.33.0 -> 1.35.1 swig: upgrade 4.2.0 -> 4.2.1 xkbcomp: upgrade 1.4.6 -> 1.4.7 xkeyboard-config: upgrade 2.40 -> 2.41 xprop: upgrade 1.2.6 -> 1.2.7 Xiangyu Chen (2): systemd-systemctl: fix dead loop when multi services enable each other libc-locale: fix ASCII compatible warning cause build failure. Xiaotian Wu (2): loongarch64: change -march to loongarch64 openssl: Match target name for loongarch64 Yash Shinde (3): rust: Upgrade 1.74.1 -> 1.75.0 rust: Revert PGO to it's default rust: reproducibility issue fix with v1.75 Yoann Congal (1): waf: Improve version parsing to avoid failing on warnings Change-Id: I6dfb848feb4ec8f5aae56a9ccbff475f4eb1edc6 Signed-off-by: Patrick Williams --- poky/documentation/sdk-manual/extensible.rst | 283 ++++++++++++++++++++++++++- 1 file changed, 282 insertions(+), 1 deletion(-) (limited to 'poky/documentation/sdk-manual/extensible.rst') diff --git a/poky/documentation/sdk-manual/extensible.rst b/poky/documentation/sdk-manual/extensible.rst index 355c6cb0e4..05dd527469 100644 --- a/poky/documentation/sdk-manual/extensible.rst +++ b/poky/documentation/sdk-manual/extensible.rst @@ -63,6 +63,8 @@ their own pros and cons: need to provide a well-functioning binary artefact cache over the network for developers with underpowered laptops. +.. _setting_up_ext_sdk_in_build: + Setting up the Extensible SDK environment directly in a Yocto build ------------------------------------------------------------------- @@ -168,6 +170,8 @@ architecture. The example assumes the SDK installer is located in that case, set up the proper permissions in the directory and run the installer again. +.. _running_the_ext_sdk_env: + Running the Extensible SDK Environment Setup Script =================================================== @@ -205,6 +209,8 @@ use the SDK (e.g. ``PATH``, :term:`CC`, :term:`LD`, and so forth). If you want to see all the environment variables the script exports, examine the installation file itself. +.. _using_devtool: + Using ``devtool`` in Your SDK Workflow ====================================== @@ -230,13 +236,15 @@ all the commands. See the ":doc:`/ref-manual/devtool-reference`" section in the Yocto Project Reference Manual. -Three ``devtool`` subcommands provide entry-points into development: +``devtool`` subcommands provide entry-points into development: - *devtool add*: Assists in adding new software to be built. - *devtool modify*: Sets up an environment to enable you to modify the source of an existing component. +- *devtool ide-sdk*: Generates a configuration for an IDE. + - *devtool upgrade*: Updates an existing recipe so that you can build it for an updated set of source files. @@ -614,6 +622,279 @@ command: decide you do not want to proceed with your work. If you do use this command, realize that the source tree is preserved. +``devtool ide-sdk`` configures IDEs for the extensible SDK +---------------------------------------------------------- + +``devtool ide-sdk`` automatically configures IDEs to use the extensible SDK. +To make sure that all parts of the extensible SDK required by the generated +IDE configuration are available, ``devtool ide-sdk`` uses BitBake in the +background to bootstrap the extensible SDK. + +The extensible SDK supports two different development modes. +``devtool ide-sdk`` supports both of them: + +#. *Modified mode*: + + By default ``devtool ide-sdk`` generates IDE configurations for recipes in + workspaces created by ``devtool modify`` or ``devtool add`` as described in + :ref:`using_devtool`. This mode creates IDE configurations with support for + advanced features, such as deploying the binaries to the remote target + device and performing remote debugging sessions. The generated IDE + configurations use the per recipe sysroots as Bitbake does internally. + + In order to use the tool, a few settings are needed. As a starting example, + the following lines of code can be added to the ``local.conf`` file:: + + # Build the companion debug file system + IMAGE_GEN_DEBUGFS = "1" + # Optimize build time: with devtool ide-sdk the dbg tar is not needed + IMAGE_FSTYPES_DEBUGFS = "" + # Without copying the binaries into roofs-dbg, GDB does not find all source files. + IMAGE_CLASSES += "image-combined-dbg" + + # SSH is mandatory, no password simplifies the usage + EXTRA_IMAGE_FEATURES += "\ + ssh-server-openssh \ + debug-tweaks \ + " + + # Remote debugging needs gdbserver on the target device + IMAGE_INSTALL:append = " gdbserver" + + # Add the recipes which should be modified to the image + # Otherwise some dependencies might be missing. + IMAGE_INSTALL:append = " my-recipe" + + Assuming the BitBake environment is set up correctly and a workspace has + been created for the recipe using ``devtool modify my-recipe``, the + following command can create the SDK and the configuration for VSCode in + the recipe workspace:: + + $ devtool ide-sdk my-recipe core-image-minimal --target root@192.168.7.2 + + The command requires an image recipe (``core-image-minimal`` for this example) + that is used to create the SDK. This firmware image should also be installed + on the target device. It is possible to pass multiple package recipes. + ``devtool ide-sdk`` tries to create an IDE configuration for all package + recipes. + + What this command does exactly depends on the recipe, more precisely on the + build tool used by the recipe. The basic idea is to configure the IDE so + that it calls the build tool exactly as ``bitbake`` does. + + For example, a CMake preset is created for a recipe that inherits + :ref:`ref-classes-cmake`. In the case of VSCode, CMake presets are supported + by the CMake Tools plugin. This is an example of how the build + configuration used by ``bitbake`` is exported to an IDE configuration that + gives exactly the same build results. + + Support for remote debugging with seamless integration into the IDE is + important for a cross-SDK. ``devtool ide-sdk`` automatically generates the + necessary helper scripts for deploying the compiled artifacts to the target + device as well as the necessary configuration for the debugger and the IDE. + + .. note:: + + To ensure that the debug symbols on the build machine match the binaries + running on the target device, it is essential that the image built by + ``devtool ide-sdk`` is running on the target device. + + ``devtool ide-sdk`` aims to support multiple programming languages and + multiple IDEs natively. "Natively" means that the IDE is configured to call + the build tool (e.g. CMake or Meson) directly. This has several advantages. + First of all, it is much faster than ``devtool build``, but it also allows + to use the very good integration of tools like CMake or GDB in VSCode and + other IDEs. However, supporting many programming languages and multiple + IDEs is quite an elaborate and constantly evolving thing. Support for IDEs + is therefore implemented as plugins. Plugins can also be provided by + optional layers. + + The default IDE is VSCode. Some hints about using VSCode: + + - To work on the source code of a recipe an instance of VSCode is started in + the recipe's workspace. Example:: + + code build/workspace/sources/my-recipe + + - To work with CMake press ``Ctrl + Shift + p``, type ``cmake``. This will + show some possible commands like selecting a CMake preset, compiling or + running CTest. + + For recipes inheriting :ref:`ref-classes-cmake-qemu` rather than + :ref:`ref-classes-cmake`, executing cross-compiled unit tests on the host + can be supported transparently with QEMU user-mode. + + - To work with Meson press ``Ctrl + Shift + p``, type ``meson``. This will + show some possible commands like compiling or executing the unit tests. + + A note on running cross-compiled unit tests on the host: Meson enables + support for QEMU user-mode by default. It is expected that the execution + of the unit tests from the IDE will work easily without any additional + steps, provided that the code is suitable for execution on the host + machine. + + - For the deployment to the target device, just press ``Ctrl + Shift + p``, + type ``task``. Select ``install && deploy-target``. + + - For remote debugging, switch to the debugging view by pressing the "play" + button with the ``bug icon`` on the left side. This will provide a green + play button with a drop-down list where a debug configuration can be + selected. After selecting one of the generated configurations, press the + "play" button. + + Starting a remote debugging session automatically initiates the deployment + to the target device. If this is not desired, the + ``"dependsOn": ["install && deploy-target...]`` parameter of the tasks + with ``"label": "gdbserver start...`` can be removed from the + ``tasks.json`` file. + + VSCode supports GDB with many different setups and configurations for many + different use cases. However, most of these setups have some limitations + when it comes to cross-development, support only a few target + architectures or require a high performance target device. Therefore + ``devtool ide-sdk`` supports the classic, generic setup with GDB on the + development host and gdbserver on the target device. + + Roughly summarized, this means: + + - The binaries are copied via SSH to the remote target device by a script + referred by ``tasks.json``. + + - gdbserver is started on the remote target device via SSH by a script + referred by ``tasks.json``. + + Changing the parameters that are passed to the debugging executable + requires modifying the generated script. The script is located at + ``oe-scripts/gdbserver_*``. Defining the parameters in the ``args`` + field in the ``launch.json`` file does not work. + + - VSCode connects to gdbserver as documented in + `Remote debugging or debugging with a local debugger server + `__. + + Additionally ``--ide=none`` is supported. With the ``none`` IDE parameter, + some generic configuration files like ``gdbinit`` files and some helper + scripts starting gdbserver remotely on the target device as well as the GDB + client on the host are generated. + + Here is a usage example for the ``cmake-example`` recipe from the + ``meta-selftest`` layer which inherits :ref:`ref-classes-cmake-qemu`: + + .. code-block:: sh + + # Create the SDK + devtool modify cmake-example + devtool ide-sdk cmake-example core-image-minimal -c --debug-build-config --ide=none + + # Install the firmware on a target device or start QEMU + runqemu + + # From exploring the workspace of cmake-example + cd build/workspace/sources/cmake-example + + # Find cmake-native and save the path into a variable + # Note: using just cmake instead of $CMAKE_NATIVE would work in many cases + CMAKE_NATIVE="$(jq -r '.configurePresets[0] | "\(.cmakeExecutable)"' CMakeUserPresets.json)" + + # List available CMake presets + "$CMAKE_NATIVE" --list-presets + Available configure presets: + + "cmake-example-cortexa57" - cmake-example: cortexa57 + + # Re-compile the already compiled sources + "$CMAKE_NATIVE" --build --preset cmake-example-cortexa57 + ninja: no work to do. + # Do a clean re-build + "$CMAKE_NATIVE" --build --preset cmake-example-cortexa57 --target clean + [1/1] Cleaning all built files... + Cleaning... 8 files. + "$CMAKE_NATIVE" --build --preset cmake-example-cortexa57 --target all + [7/7] Linking CXX executable cmake-example + + # Run the cross-compiled unit tests with QEMU user-mode + "$CMAKE_NATIVE" --build --preset cmake-example-cortexa57 --target test + [0/1] Running tests... + Test project .../build/tmp/work/cortexa57-poky-linux/cmake-example/1.0/cmake-example-1.0 + Start 1: test-cmake-example + 1/1 Test #1: test-cmake-example ............... Passed 0.03 sec + + 100% tests passed, 0 tests failed out of 1 + + Total Test time (real) = 0.03 sec + + # Using CTest directly is possible as well + CTEST_NATIVE="$(dirname "$CMAKE_NATIVE")/ctest" + + # List available CMake presets + "$CTEST_NATIVE" --list-presets + Available test presets: + + "cmake-example-cortexa57" - cmake-example: cortexa57 + + # Run the cross-compiled unit tests with QEMU user-mode + "$CTEST_NATIVE" --preset "cmake-example-cortexa57" + Test project ...build/tmp/work/cortexa57-poky-linux/cmake-example/1.0/cmake-example-1.0 + Start 1: test-cmake-example + 1/1 Test #1: test-cmake-example ............... Passed 0.03 sec + + 100% tests passed, 0 tests failed out of 1 + + Total Test time (real) = 0.03 sec + + # Deploying the new build to the target device (default is QEUM at 192.168.7.2) + oe-scripts/install_and_deploy_cmake-example-cortexa57 + + # Start a remote debugging session with gdbserver on the target and GDB on the host + oe-scripts/gdbserver_1234_usr-bin-cmake-example_m + oe-scripts/gdb_1234_usr-bin-cmake-example + break main + run + step + stepi + continue + quit + + # Stop gdbserver on the target device + oe-scripts/gdbserver_1234_usr-bin-cmake-example_m stop + +#. *Shared sysroots mode* + + For some recipes and use cases a per-recipe sysroot based SDK is not + suitable. Optionally ``devtool ide-sdk`` configures the IDE to use the + toolchain provided by the extensible SDK as described in + :ref:`running_the_ext_sdk_env`. ``devtool ide-sdk --mode=shared`` is + basically a wrapper for the setup of the extensible SDK as described in + :ref:`setting_up_ext_sdk_in_build`. The IDE gets a configuration to use the + shared sysroots. + + Creating a SDK with shared sysroots that contains all the dependencies needed + to work with ``my-recipe`` is possible with the following example command:: + + $ devtool ide-sdk --mode=shared my-recipe + + For VSCode the cross-toolchain is exposed as a CMake kit. CMake kits are + defined in ``~/.local/share/CMakeTools/cmake-tools-kits.json``. + The following example shows how the cross-toolchain can be selected in + VSCode. First of all we need a folder containing a CMake project. + For this example, let's create a CMake project and start VSCode:: + + mkdir kit-test + echo "project(foo VERSION 1.0)" > kit-test/CMakeLists.txt + code kit-test + + If there is a CMake project in the workspace, cross-compilation is supported: + + - Press ``Ctrl + Shift + P``, type ``CMake: Scan for Kits`` + - Press ``Ctrl + Shift + P``, type ``CMake: Select a Kit`` + + Finally most of the features provided by CMake and the IDE should be available. + + Other IDEs than VSCode are supported as well. However, + ``devtool ide-sdk --mode=shared --ide=none my-recipe`` is currently + just a simple wrapper for the setup of the extensible SDK, as described in + :ref:`setting_up_ext_sdk_in_build`. + Use ``devtool upgrade`` to Create a Version of the Recipe that Supports a Newer Version of the Software ------------------------------------------------------------------------------------------------------- -- cgit v1.2.3