summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe
Commit message (Collapse)AuthorAgeFilesLines
* classes/lib: Switch classextend to use new filter APIRichard Purdie2025-08-123-37/+17
| | | | | | | | | | | | | | | | | | Currently, class extensions are implmented using shadow variables and access indirection which is horribly ineffient and ugly. Switch to using the new bitbake filter API, which allows a translation of the variable before the expanded value is returned. This allows us to drop the shadow variable accesses. It also avoids the need to iterate PACKAGES and make many variable changes since a filter against RDEPENDS applies to RDEPENDS:${PN} and all of it's other overridden values. Since data expansion happens at access, it also avoids many of the race conditions this code has tranditionally been plagued with. (From OE-Core rev: 24a9858a8927e91d499ee342ed93a0dbb44d83bc) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/python_pep517: use pyproject-build instead of nativepython3Ross Burton2025-08-071-1/+1
| | | | | | | | | | | The build package installs an entry point now, so we run that instead of calling the module directly. (From OE-Core rev: e064e71b4003666de1644f8e3c08ed6844d710e5) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* Revert "python_setuptools_build_meta: clean the build directory in configure"Ross Burton2025-08-071-4/+0
| | | | | | | | | | | | | This is not needed: setuptools.build_meta does the build under a new temporary directory. This reverts commit ad488915b0e802f5525f9d857112e5513376fcaf. (From OE-Core rev: a532cb50151d773c1c351ffccf4d47a37f26f8aa) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* bitbake/conf: Default to zstd compressed image outputRichard Purdie2025-08-061-1/+1
| | | | | | | | | | | | Switch our default qemu images to use .zst compressed images by default since this is the output format we release during the release process and is the one that users would prefer to download. This makes the release process use the actual generated output from the system and avoids post processing. (From OE-Core rev: aa5f60d1fcb716a2b2174dffcaf35442bff1f1fb) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/python_pdm: add PEP517 build class for PDMRoss Burton2025-08-041-0/+9
| | | | | | | | | | | | | | PDM[1] is yet another build/package manager for Python that is fairly common now, so add a class for it. (From OE-Core rev: 20758865e9e0598966a1c678fd4aebe384a99765) Signed-off-by: Ross Burton <ross.burton@arm.com> [1] https://pdm-project.org/ Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/python_maturin: don't pull in setuptoolsRoss Burton2025-08-041-1/+1
| | | | | | | | | | | There's no need to pull in python_setuptools_build_meta as maturin is a build system of its own. (From OE-Core rev: ea639b83816ae89c0da0a0695ac80f4d678b33db) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/python_pep517: centralise shared inheritsRoss Burton2025-08-046-5/+7
| | | | | | | | | | | | | | | | | For the build process to actually work some inherits are always needed: - python3native for the python that is actually running build. - setuptools3-base (badly named) defines how to build extensions and where to put modules. Instead of inheriting these in every class, inherit them once in the python_pep517 class. (From OE-Core rev: 449b226aca6a5db378dc5576dde47499925dfb26) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* python_setuptools_build_meta: clean the build directory in configureRoss Burton2025-07-311-0/+4
| | | | | | | | | | | | It's not currently possible to set the build tree to be somewhere we control, but we know it will always be in the build directory alongside the pyproject.toml so we can [cleandirs] that. (From OE-Core rev: 383862cfe4c5acf04124080827c8bc6d00b2e86d) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* setuptools3: clean the build directory in configureRoss Burton2025-07-311-0/+3
| | | | | | | | | | | | It's not currently possible to set the build tree to be somewhere we control, but we know it will always be in the build directory alongside the setup.py so we can [cleandirs] that. (From OE-Core rev: f3854f4f60801e3b6788bee3a0a1850fc498d536) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* setuptools3: pass -j to build stepRoss Burton2025-07-311-0/+1
| | | | | | | | | | | | | | | | | Explicitly call the build command, as by doing this we get to pass -j. In packages without any C extensions this is mostly a no-op as bdist_wheel will call it anyway. However, this does make a big difference to build time for packages with non-trivial C extensions: python3-cython:do_compile 204.8s -> 70.9s python3-lxml:do_compile 157.5s -> 92.4s (From OE-Core rev: 96d13feaa881ae4d275d16f7efca92dbd075241b) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* setuptools3: tidy up do_compileRoss Burton2025-07-311-5/+7
| | | | | | | | | | This function was untidy and has pointless logging, rewrite. (From OE-Core rev: d508ee5c7bb03da5ae37bd098fa4ef8a5128e398) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* setuptools3_legacy: add pyproject.toml checkRoss Burton2025-07-311-0/+14
| | | | | | | | | | | Copy the pyproject.toml check from setuptools3.bbclass so that the legacy class will also warn if there's a modern build framework available. (From OE-Core rev: f524589f3d35475600954f5b27b4b74ea079e13c) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* setuptools3_legacy: ensure ${B} is cleanRoss Burton2025-07-311-0/+1
| | | | | | | | | | | We do builds in a separate directory in this class, so add it to cleandirs to ensure that it is empty. (From OE-Core rev: 2575adeceedae72f6359c0a35ec5c5325a4ec363) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* python_pep517: set CONFIGURE_FILESRoss Burton2025-07-312-2/+3
| | | | | | | | | | | | | Move the CONFIGURE_FILES assignment from python_mesonpy to the common class, as it isn't specific to mesonpy. Also extend, so that it doesn't clobber existing settings. (From OE-Core rev: 049cd6b62853c020b0c85ccee18638ec58887866) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* setuptools3: Add missing call to exit_if_errorsPhilip Lorenz2025-07-311-0/+1
| | | | | | | | | | | `exit_if_errors` must be called explicitly at the end of the task execution to ensure that QA issues categorized as errors fail the task. (From OE-Core rev: acc0c57e455670501433ba4514a977e16dc88c34) Signed-off-by: Philip Lorenz <philip.lorenz@bmw.de> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cmake: remove CMAKE_SYSTEM_* from the native toolchainRoss Burton2025-07-211-2/+0
| | | | | | | | | | | | | If these variables are set explictly then CMake assumes that it is cross-compiling[1]. We don't need to set them as the default values as detected by CMake are correct for native. [1] https://cmake.org/cmake/help/latest/variable/CMAKE_CROSSCOMPILING.html (From OE-Core rev: 0ea50cba64b5004722051c0ece900443dc4ca929) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cmake: Define CMAKE_CLANG_TIDY with toolchain-clangKhem Raj2025-07-211-0/+6
| | | | | | | | | | | clang-tidy is used by many packages these days and probed during build. (From OE-Core rev: 71ff6d6d1b152076e6dbf03a146f6a9fd2a9c065) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* toolchain-scripts: Make -mmusl apply only for gcc toolchainsKhem Raj2025-07-211-1/+1
| | | | | | | | | | This option is not respected by clang (From OE-Core rev: 82484ccb3eb1a7b5562131881b5ed6545144e5eb) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-fit-image: fix symbolic link fit-image.itsBenjamin Missey2025-07-101-1/+1
| | | | | | | | | | | | Bad symbolic link is used for kernel-fit-image. fit-image-its used instead of fit-image.its. Fix bad typo. (From OE-Core rev: 1938864012ed5e9bae274ea1710802d8f4606bb6) Signed-off-by: Benjamin Missey <benjamin.missey@non.se.com> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* testexport.bbclass oe-test: capture all tests and data from all layersMikko Rapeli2025-07-101-21/+22
| | | | | | | | | | | | | | | | | | | | | | testexport.bbclass only copied files from core layer to the testexport.tar.gz to run tests. Then it filtered out tests and files which were not specified in TEST_SUITES variable. Remove filtering of files to include parselogs.py test data files which are machine and/or layer specific. TEST_SUITES variable is now read from build time exported data store when running tests so there is no need to remove files from exported tests in testexport.bbclass. Adapt oe-test script to find "lib" directories from the new structure with layer specific paths which are used to find tests and test data files. (From OE-Core rev: 5c39fedee1dd0e101e2611b71a895c0251ba968d) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: State riscv required tune_features for LinuxMark Hatle2025-07-071-1/+5
| | | | | | | | | | | | | | | | | | Required: rv32ima_zicsr_zifencei rv64ima_zicsr_zifencei See the arch/riscv/Makefile: riscv-march-$(CONFIG_ARCH_RV32I) := rv32ima riscv-march-$(CONFIG_ARCH_RV64I) := rv64ima riscv-march-$(CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI) := $(riscv-march-y)_zicsr_zifencei (From OE-Core rev: 6fd37774eda090951c48a3d9ad482e53f98b0529) Signed-off-by: Mark Hatle <mark.hatle@amd.com> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* features_check.bbclass: Add support for required TUNE_FEATURESMark Hatle2025-07-071-1/+1
| | | | | | | | (From OE-Core rev: a8ef7339ecb9eee909224e7cf23ccd48ef105d93) Signed-off-by: Mark Hatle <mark.hatle@amd.com> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernelsrc/perf: clean up package version while using kernel sourceHongxu Jia2025-07-031-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If recipe inherits bbclass kernelsrc to use kernel sources, the recipe should explicitly set ${KERNEL_VERSION} to ${PKGV} in task do_package, otherwise package version (${PV} is usually default 1.0) is not consistent with kernel source. For example, there are 5 recipes in meta-openembedded to inherit kernelsrc, but 4 recipes explicitly set PKGV. meta-openembedded$ grep -e "setVar(.*PKGV.*KERNEL_VERSION" -e kernelsrc -rn * meta-oe/recipes-kernel/intel-speed-select/intel-speed-select.bb:9:inherit kernelsrc meta-oe/recipes-kernel/bpftool/bpftool.bb:8:inherit bash-completion kernelsrc kernel-arch meta-oe/recipes-kernel/bpftool/bpftool.bb:44: d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) meta-oe/recipes-kernel/cpupower/cpupower.bb:8:inherit kernelsrc kernel-arch bash-completion meta-oe/recipes-kernel/cpupower/cpupower.bb:32: d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) meta-oe/recipes-kernel/turbostat/turbostat.bb:98: d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) meta-oe/recipes-kernel/usbip-tools/usbip-tools.bb:25:inherit kernelsrc autotools-brokensep meta-oe/recipes-kernel/usbip-tools/usbip-tools.bb:68: d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) meta-oe/recipes-kernel/spidev-test/spidev-test.bb:7:inherit bash-completion kernelsrc kernel-arch meta-oe/recipes-kernel/spidev-test/spidev-test.bb:26: d.setVar('PKGV', d.getVar("KERNEL_VERSION").split("-")[0]) This commit clean up the setting of PKGV, move it to kernelsrc.bbclass for common use, the recipe (such as intel-speed-select) that inherited kernelsrc will not be required to explicitly set ${PKGV} with ${KERNEL_VERSION} (From OE-Core rev: 77a93e8cf1da4231341c56f64f9d4d474f9f2bb7) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uninative/utils: Drop workarounds for gcc 4.8/4.9Richard Purdie2025-07-032-7/+2
| | | | | | | | | We require at least gcc 8.0 in sanity.bbclass so drop the 4.8/4.9 special case handling in uninative. (From OE-Core rev: 552e037bf598ac523f35b69d2dafc99e5ba59c5f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* oeqa/sdk: Simplify test specification and discoveryThune Tran2025-07-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify how tests are specified and discovered for different SDK configurations to allow per-layer customization. * Introduce `TESTSDK_CASE_DIRS` variable to specify test directory types, replacing the need to modify the default_cases class member * Discover tests from configured layers using a common discovery pattern (`<LAYER_DIR>/lib/oeqa/<dirname>/cases`) where `<dirname>` is specified in `TESTSDK_CASE_DIRS` * The buildtools directories were renamed to follow the common discovery pattern (`<LAYER_DIR>/lib/oeqa/<dirname>/cases`) for consistency across all SDK configurations. meta/lib/oeqa/ ├── sdk/cases/ # Standard SDK: dirname="sdk" ├── buildtools/cases/ # Buildtools: dirname="buildtools" └── buildtools-docs/cases/ # Buildtools-docs: dirname="buildtools-docs" meta-mingw/lib/oeqa/ └── sdkmingw/cases/ # MinGW: dirname="sdkmingw" meta-foo/lib/oeqa/ └── sdk/cases/ # Standard SDK: dirname="sdk" Tested by: 1. Adding new tests using the default discovery pattern `<LAYER_DIR>/lib/oeqa/sdk/cases` and verifying they are discovered and executed. 2. Verifying existing SDK configuration tests work (requires -c populate_sdk first): * Standard SDK: `bitbake core-image-minimal -c testsdk` * Buildtools tarball: `bitbake buildtools-tarball -c testsdk` * Buildtools docs tarball: `bitbake buildtools-docs-tarball -c testsdk` * Mingw SDK: (SDKMACHINE = "x86_64-mingw32") `bitbake core-image-minimal -c testsdk` (From OE-Core rev: bde94c128c0b4e7e1ebea40f582b4dd6dcc965ff) Signed-off-by: Thune Tran <thune.a.tran@boeing.com> Signed-off-by: Chuck Wolber <chuck.wolber@boeing.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* recipetool/create_go: proxy module fetching to go-mod-update-modulesRoss Burton2025-07-011-2/+2
| | | | | | | | | | Now that the go-mod-update-modules class exists, this Go handler can create a stub recipe and then proxy the module handling to the class. (From OE-Core rev: 0aa406d0582d32399c48dfa78f24adc75696112c) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/go-mod-update-modules: add class to generate module listRoss Burton2025-07-011-0/+152
| | | | | | | | | | | | | | | Almost entirely based on the create_go.py module for recipetool by Christian Lindeberg <christian.lindeberg@axis.com>, this instead has the logic inside a class that can be used to update the list of Go modules that are used, both SRC_URI and LICENSE. Integration with devtool upgrade will come shortly, but it needs a bit more work. (From OE-Core rev: 34bb889ffaae15f89c5627610826b498697c51f2) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go-mod.bbclass: Calculate GO_MOD_CACHE_DIR relative to ${UNPACKDIR}Peter Kjellerstedt2025-07-011-1/+1
| | | | | | | | | Adapt to the recent move of S from ${WORKDIR} to ${UNPACKDIR}. (From OE-Core rev: 5f8218c62637208259a94979fe9a8a9b672e4ea4) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image-live.bbclass: support disable isohybrid for EFI-only bootHongxu Jia2025-06-261-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While NO PCBIOS and EFI only for ISO 9660 image, burn the image to SandDisk USB stick, plug it into laptop, then boot laptop and enter UEFI mode, there are two boot options in UEFI system. Here is the steps: $ echo 'MACHINE = "genericx86-64"' >> conf/local.conf $ echo 'MACHINE_FEATURES:remove = "pcbios"' >> conf/local.conf $ echo 'IMAGE_FSTYPES:pn-core-image-minimal = " live"' >> conf/local.conf $ bitbake core-image-minimal $ sudo dd if=tmp/deploy/images/genericx86-64/core-image-minimal-genericx86-64.rootfs.iso of=/dev/sda Boot laptop and entery UEFI mode ... Boot mode is set to: UEFI UEFI BOOT: UEFI: SanDisk UEFI: SanDisk 2 ... In this case, PCBIOS is not used, calling isohybrid for ISO 9660 image is not necessary, and do not call isohybrid for ISO 9660 image could remove duplicated boot option in UEFI mode. According to [1][2], use `[ "${PCBIOS}" != "1" ] && [ "${EFI}" = "1" ]' as the EFI-only condition, the revert condition is `[ "${PCBIOS}" = "1" ] || [ "${EFI}" != "1" ]' [1] https://git.openembedded.org/openembedded-core/commit/?id=be3fc8c07e84c654f55c5d09934dfbdc7ff7e2b6 [2] https://git.openembedded.org/openembedded-core/commit/?id=be95f54495bf9e03062f86b929c66cab6e385a03 (From OE-Core rev: 4ea24276ad3b6cf3d63a839f3c5fbe697ccd28cd) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* rust: Upgrade 1.86.0 -> 1.87.0Yash Shinde2025-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rust stable version updated to 1.87.0. https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/ * Update LLVM data-layout for arm64. LLVM requires matching data layouts and the aarch64 llvm data-layout was updated to to allow using 32-bit signed/unsigned pointers when building 64-bit targets using 270, 271 and 272 address spaces. https://github.com/rust-lang/rust/commit/e9853961452b56997cc127b51308879b9cd09482 https://github.com/llvm/llvm-project/commit/c9f27275c1330a325661bdf14fb3bc444a5e3648 * Rebase existing patches with v1.87.0. * Two tests from the `ui` and `codegen` modules now fail only on riscv64. Enable them on arm32/64 and x86-32/64 targets, while restricting them on riscv64 via `only-<target_arch>` tags. Test Results Summary: +-----------+--------+---------+ | Machine | Passed | Ignored | +-----------+--------+---------+ | arm-32 | 28,320 | 901 | | arm-64 | 28,400 | 849 | | x86-32 | 28,285 | 885 | | x86-64 | 28,518 | 676 | | riscv-64 | 27,845 | 868 | +-----------+--------+---------+ * Backport triagebot.patch to skip tidy linkcheck when triagebot.toml is not present. Distribution tarballs won't include triagebot.toml, which causes tidy checks to fail. This backport ensures tidy checks can still run successfully even when the file is missing. https://github.com/rust-lang/rust/pull/142666/commits * During rust installation, some binaries were installed from 'stage2-tools' built path to '${D}${bindir}'. However, from v1.87 the stage2-tools are no longer built by default. Update logic to install from `stage1-tools` instead. (From OE-Core rev: 16ce25e6970b4a50f6433606a0c87d22ec74ea5a) Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image_types_wic: Fix file-checksums for missing files in search pathRichard Purdie2025-06-241-1/+11
| | | | | | | | | | | | | | | When we tell bitbake about file-checksums, we need to tell it both the files we look at that exist, but also the ones we looked for but aren't present. This means that if files appear earlier in the search path, bitbake can then do the correct things like updating the taskhash and re-running the recipe/task. In this case, wic was only signalling file presence. This patch adds in the files it looked at but didn't find too. (From OE-Core rev: ef96e2efcd95785e29ff7c62b2cb76e26f46f5ec) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* u-boot: Allow for customizing installed/deployed file namesRyan Eatmon2025-06-231-5/+10
| | | | | | | | | | | | | | | | | | | | | When assembling all of the various filenames that are installed/deployed from u-boot, we have been including the PV and PR in the filenames. This change introduces a single variable to replace these two in the filenames. This change should not be disruptive since the default value for the new UBOOT_VERSION variable is "${PV}-${PR}". In one case (UBOOT_EXTLINUX_SYMLINK [1]), PR was used without PV, this patch assumes this was a mistake and corrects it as PR would not be of much use alone. [1] https://git.openembedded.org/openembedded-core/commit/?h=master-next&id=33df3a65f3e8e136811da715d0cc247ce66ae0ea (From OE-Core rev: debc691853e2954bd325bad395b8829939afaa08) Signed-off-by: Ryan Eatmon <reatmon@ti.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: set S from UNPACKDIR in recipes that use only local filesAlexander Kanavin2025-06-202-4/+2
| | | | | | | | | | | | | | | There is no need to have two assignments; also setting S from UNPACKDIR (and not vice versa) is more logical as unpack task comes first, and tasks that come after unpack use S to access unpack results. Also adjust reference test data in selftest/recipeutils to reflect changes in test recipes. (From OE-Core rev: f64b7e5fb3181734c8dde87b27e872a026261a74) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: set S to be in UNPACKDIR in recipes that explicitly set SAlexander Kanavin2025-06-202-2/+2
| | | | | | | | (From OE-Core rev: 7321cc17ae5483f17fe9cdffea7b62acd9d9c3a2) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: remove S in recipes that fetch from git via setting ↵Alexander Kanavin2025-06-202-14/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BB_GIT_DEFAULT_DESTSUFFIX Removing all the S = ${WORKDIR}/git assignments works because BB_GIT_DEFAULT_DESTSUFFIX is set to match S from bitbake.conf (which itself is set to match typical tarball releases). A few recipes are setting S to a sub-directory of the git tree and need to be adjusted accordingly. bzip2 recipe is fetching a tarball and separately cloning tests; adjust the recipe to put the latter into 'bzip2-tests', instead of 'git'. devupstream.bbclass no longer needs to rewrite S, and is adjusted accordingly. Adjust scripts/lib/recipetool/append.py to not hardcode 'git' as unpack destination. Adjust kernel-yocto.bbclass to use the git unpack variable instead of hardcoding 'git' (there's also removal of repetition of string constants and a correction of workdir/unpackdir mismatch in one of the if-else branches). Ensure build-appliance-image recipe does not use 'git' as checkout directory for poky repo, but rather explicitly name it 'poky'. Ensure reproducible.py code that looks for git repositories does not hardcode 'git' but uses the destination set by BB_GIT_DEFAULT_DESTSUFFIX. Ensure recipetool does not write out unneeded S settings into newly created recipes that fetch from git. Adjust selftest to not hardcode 'git' as unpack directory. (From OE-Core rev: f80c07019ddadaf9c5fb890faabfda7920ecd15e) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* rust-target-config.bbclass: Update for new riscv TUNE_FEATURESMark Hatle2025-06-201-24/+41
| | | | | | | | | | | | | | | | Add the new TUNE_FEATURES to the 'features:' list, based on matching output with: rustc --target=riscv32i-unknown-none-elf -Ctarget-feature=help Use the TUNE_RISCV_ABI instead of guessing for the ABI. Pass the arch "as-is", since it should now be riscv32 or riscv64. (From OE-Core rev: 88b59db87d2c65e5be0f3fee1ebf4ee64ef05f18) Signed-off-by: Mark Hatle <mark.hatle@amd.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uboot-sign.bbclass: Refactor condition checks to use && and || instead of -a ↵Jamin Lin2025-06-191-12/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | and -o This commit cleans up and modernizes the shell condition expressions in `uboot-sign.bbclass` to follow best practices for portable and reliable shell usage. Key changes: - Replace legacy `[ -a ]` and `[ -o ]` with explicit `[ ] && [ ]` and `[ ] || [ ]`. Modern POSIX and busybox sh recommend using `&&` and `||` instead of `-a` and `-o` because `-a` and `-o` are less robust and can cause parsing ambiguities in some shells. - Simplify `concat_dtb()` by moving the DTB existence check to the top and using early `return` to avoid deep nesting. - Remove redundant fallback `else` blocks; use clearer control flow with direct checks. This improves maintainability, reduces shell syntax pitfalls, and aligns with current shell scripting best practices. References: - POSIX recommends avoiding `-a` and `-o` in `[ ]` and using explicit `&&` and `||`: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html (From OE-Core rev: d2740e39800a044d557b620e38ca0ac1b8c6d030) Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uboot-sign: Support signing U-Boot FIT image without SPLJamin Lin2025-06-191-21/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the signing flow in "uboot-sign.bbclass" assumed that SPL was always present and that the FIT signing process must inject the public key into the SPL DTB. This made it inflexible for use cases where only the U-Boot proper FIT image is built and signed, with no SPL binary at all. This change introduces the following adjustments: - The `SPL_DTB_BINARY` variable can be explicitly set to an empty string to indicate that no SPL is present. - The signing logic checks `SPL_DTB_BINARY` and skips injecting the key or verifying the SPL DTB if it is empty. - The FIT image generation and deployment are always performed if `UBOOT_FITIMAGE_ENABLE` is enabled, regardless of the SPL settings. - The deploy helper now uses a single check on `SPL_DTB_BINARY` to decide whether to deploy the signed SPL DTB. Now the sign step checks if SPL_DTB_BINARY is empty: If present, it signs the FIT image and injects the public key into the SPL DTB, then verifies both. If empty, it only signs the FIT image and generates the ITS with the signature node, but does not attempt to verify or add the key to a non-existent SPL DTB. Key Behavior Explained If SPL_DTB_BINARY is empty, we assume there is no SPL. If UBOOT_FITIMAGE_ENABLE=1, we always create the FIT image and ITS. If SPL_SIGN_ENABLE=1, we always sign the FIT image, but only inject the key into the SPL DTB if it exists. Example usage: UBOOT_FITIMAGE_ENABLE = "1" SPL_SIGN_ENABLE = "1" SPL_DTB_BINARY = "" This means: - Generate and sign the FIT image. - Do not attempt to sign or deploy an SPL DTB. This aligns the implementation with real scenarios where some boards do not require an SPL. (From OE-Core rev: 7ad6acd8841752a5b75b8e2666bca5b609347cc1) Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cross/crosssdk: Allow deferring of these classes tooRichard Purdie2025-06-161-0/+1
| | | | | | (From OE-Core rev: 2e568ba8607a6f65caea891df9bc9341988aaf37) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-module-split: fix conf file generation when KERNEL_SPLIT_MODULES=0Dixit Parmar2025-06-121-15/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | KERNEL_MODULE_AUTOLOAD defines the list of the kernel modules to be autoloaded on boot. kernel-module-split.bbclass generates the required modules.load.d and conf files for each kernel module. This conf files inturn read by system service to perform module loading and configuration. When a kernel module is added to KERNEL_MODULE_AUTOLOAD the conf files must be generated in all cases. When KERNEL_SPLIT_MODULES=0 modprobe and autoload conf files are not getting generated for the kernel modules. To fix that enhanced the class implementation by separating out conf file handling mechanism in two functions, generate_conf_files() and frob_metadata(). generate_conf_files() handles no-split case where as frob_metadata() keeps handling the existing case for spliting the modules. Splitted common handling/generation of conf files stuff in to handle_conf_files() function which gets invoked by both frob_metadata() and generate_conf_files() on top of the scenario specific handling done in respective functions. This implementation covers generation of the conf files for in-tree kernel modules as well as standalone kernel module built as seperate package/recipe. [YOCTO #15145] (From OE-Core rev: cf998576ccfd20a61a9afa6df27fb73d93c8ed9a) Signed-off-by: Dixit Parmar <dixitparmar19@gmail.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cross: Drop unneeded exportsRichard Purdie2025-06-091-11/+11
| | | | | | | | | These exports are made in bitbake.conf, we don't need to duplicate these here. Clean up as was done in native/nativesdk. (From OE-Core rev: 2ddf340be2c4f4b4424d137ba1e87269c2c36357) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* update-alternatives: Simplfy variable dependency logicRichard Purdie2025-06-051-24/+10
| | | | | | | | | | | | | | | When looking at bitbake parsing speed issues, I noticed a lot of weird looking variables from the update-alternatives class. It is possible this was written before variable dependencies could handle flags. It can handle flags now so simplfy the code to take advantage of that and avoid the indirection variables. The win here is a significant reduction in the number of variables, which in turn significantly reduces the looping bitbake's taskhash calculation code needs to do. (From OE-Core rev: bd8fc4c59a137a37bd7a54f398949617982d447e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* barebox: Add missing depndency on lz4-nativeRichard Purdie2025-06-051-1/+1
| | | | | | | | | | | /bin/sh: 1: lz4: not found | make[4]: *** [scripts/Makefile.lib:413: common/boards/qemu-virt/fitimage-pubkey.dtb.z] Error 1 | make[3]: *** [tmp/work/qemuarm64-poky-linux/barebox/2025.04.0/barebox-2025.04.0/scripts/Makefile.build:293: common/boards/qemu-virt] Error 2 (From OE-Core rev: 4329b27773f20933bb47b9ebfc9695c04bdcd3b0) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/recipes-devtools: Drop icecc from OE-CoreRichard Purdie2025-06-051-1/+1
| | | | | | | | | | | | | | | | There are reports this class has been broken since mickledore which suggests there are limited numbers of users. It doesn't have any automated testing and it would be hard to setup and maintain a testing environment for it. The original users/manintainers aren't using it now. For those reasons, drop from OE-Core as we're not in a good position to maintain it. I'd suggest anyone wanting to use it creates a dedicated layer with maintainers who are in a position to test/develop it appropriately since it is standalone code. (From OE-Core rev: ecf8c386cf83ea235bdc4ee0da6671a395a4c358) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-fit-image: Exclude from worldRichard Purdie2025-06-051-0/+3
| | | | | | | | | | Recipes using this class are designed to be pulled in by dependencies and the recipe doesn't build unless the kernel is appropriately configured. Mark as not suitable for world builds as a result to avoid world build failures. (From OE-Core rev: fc4834a8deae27579897d86d82c6f2335636a092) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-fitimage.bbclass: remove itAdrian Freihofer2025-06-052-334/+0
| | | | | | | | | | | | | | | | | | | | | | The integration of the FIT image-related build steps into the kernel recipe has proven to be not very good. The new implementation with kernel-fit-image.bbclass fixes some design issues: * sstate does not work well when a fitImage contains an initramfs. The kernel is rebuilt from scratch if the build runs from an empty TMPDIR. * A fitImage kernel is not available as a package, but all other kernel image types are. * The task dependencies in the kernel are very complex and difficult to debug if something goes wrong. As a separate, downstream recipe, this is now much easier. The long storry about this issue is here: [YOCTO #12912] (From OE-Core rev: deb6bc3bea30dadabdb580a7a58a3b2e277af400) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel.bbclass: remove support for type fitImageAdrian Freihofer2025-06-051-12/+6
| | | | | | | | | | | | | | | kernel.bbclass is no longer involved in FIT image creation. Whether a FIT image is built now depends entirely on whether the linux-yocto-fitimage recipe (or any other recipe capable of producing a FIT image) is selected for the build. As a result, specifying the kernel image type "fitImage" in KERNEL_IMAGETYPE or KERNEL_IMAGETYPES is no longer necessary and gets removed. (From OE-Core rev: ec606ef2879ddba750e275dae4dc8ab1e943b259) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-fitimage: re-write its code in PythonAdrian Freihofer2025-06-052-686/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rewrite the kernel-fitimage.bbclass file in Python. This allows the reuse of the new fitimage Python library and a clear alignment of the two implementations. Actually, the motivation for an implementation in Python was different. During the transition from the kernel-fitimage.bbclass to the new linux-yocto-fitimage.bb, the existing shell code was rewritten in Python so that the fitimage.py library could be extracted. The new kernel-fit-image.bbclass and linux-yocto-fitimage.bb were then developed on this basis. This approach makes it possible to run the same tests for all different implementations: - kernel-fitimage.bbclass in Shell - kernel-fitimage.bbclass in Python - linux-yocto-fitimage.bb Changing the commit order now enables a smooth transition. The two implementations can coexist. Maintenance and testing should be feasible for a few months with reasonable effort as they share most of the code. But of course, the goal is to remove the kernel-fitimage.bbclass as soon as possible. This commit opens the path for different strategies going forward: - Just replace the old implementations with the new one and ignoring this commit. - Add the new implementation and keep the old implementation without any change. - Add the new implementation and this commit and support the old architecture sharing most of the code with the new architecture and implementatiion. (From OE-Core rev: 6b513a530fcc6d99463fd824bb7208043f59414b) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-fit-image.bbclass: add a new FIT image implementationAdrian Freihofer2025-06-052-0/+206
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new recipe linux-yocto-fitimage.bb and the new kernel-fit-image.bbclass are intended to become successors of the kernel-fitimage.bbclass. Instead of injecting the FIT image related build steps into the kernel recipe, the new recipe takes the kernel artifacts from the kernel recipe and creates the FIT image as an independent task. This solves some basic problems: * sstate does not work well when a fitImage contains an initramfs. The kernel is rebuilt from scratch if the build runs from an empty TMPDIR. * A fitImage kernel is not available as a package, but all other kernel image types are. * The task dependencies in the kernel are very complex and difficult to debug if something goes wrong. As a separate, downstream recipe, this is now much easier. The recipe takes the kernel artifacts from the deploy folder. There was also a test implementation passing the kernel artifacts via sysroot directory. This requires changes on the kernel.bbclass to make it copying the artifacts also to the sysroot directory while the same artifacts are already in the sstate-cached deploy directory. The new class kernel-fit-extra-artifacts.bbclass generates and deploys the kernel binary intended for inclusion in a FIT image. Note that the kernel used in a FIT image is a stripped (and optionally compressed) vmlinux ELF binary - not a self-extracting format like zImage, which is already available in the deploy directory if needed separately. The kernel-fit-extra-artifacts.bbclass can be used like this: KERNEL_CLASSES += "kernel-fit-extra-artifacts" (if uImage support is not needed, or with :append otherwise) The long story about this issue is here: [YOCTO #12912] (From OE-Core rev: 05d0c7342d7638dbe8a9f2fd3d1c709ee87d6579) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-uboot.bbclass: do not require the kernel build folderAdrian Freihofer2025-06-052-17/+26
| | | | | | | | | | | | | | | | | | | | | | | The function must be executed in CWD. Make it more flexible by specifying the kernel build folder as a parameter. This is a refactoring without functional change. But later this change will allow to use this function also with a kernel from the sstate-cache instead of requiring the full kernel build folder structure. Another preparation for using a kernel from sstate-cache is to persist the linux_comp variable in a file next to the linux.bin file rather than using a global shell variable. This change also requires to adapt the kernel-uimage.bbclass accordingly. This change also fixes a minor detail: the kernel-uimage.bbclass used ${ instead of $ for evaluatiing a local shell variable. (From OE-Core rev: 8ea95cd419ee4efac5f54124e2ce98304262e8c1) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>