summaryrefslogtreecommitdiffstats
path: root/meta/classes-recipe
Commit message (Collapse)AuthorAgeFilesLines
* Revert "uboot-sign: fix U-Boot binary with public key"Ryan Eatmon2024-12-091-1/+7
| | | | | | | | | | | | | This reverts commit 0d14e99aa18ee38293df63d585fafc270a4538be. The patch removed logic required for correct handling of UBOOT_SUFFIX=img or UBOOT_SUFFIX=rom. We need to find a better way to handle the fix for [YOCTO #15649]. (From OE-Core rev: 5e82d33451b5662df1e7fe2518a50644d18aa70d) Signed-off-by: Ryan Eatmon <reatmon@ti.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cargo.bbclass: do not install libraries by defaultAlexander Kanavin2024-12-051-3/+5
| | | | | | | | | | | | | | | 'cargo install' only installs executables and examples into the system, and we should follow that. Libraries are vendored into build trees from the crate registry and then baked directly into executables. Neverthless, there's now a condition variable, so individual recipes can opt into installing libraries if there's a use case for it. (From OE-Core rev: 68990af9630da16fc75362ca09046ceab71a1106) 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>
* meson.bbclass: enable qemu exe wrapper in nativesdkAlexander Kanavin2024-12-051-2/+9
| | | | | | | | | | | | | | nativesdk builds are cross-builds like target ones, and so meson expectations regarding ability to run binaries are the same: either provide the wrapper, or disable the build time options that need executing target binaries during build time (if such options are made available by upstream). (From OE-Core rev: f210fc1d3db2e71f484bddc0b23ab252c36f4062) 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>
* classes: create-spdx: Fix variable dependenciesJoshua Watt2024-12-051-0/+3
| | | | | | | | | | | | A few variable dependencies were incorrect from the SPDX tasks, which prevented rebuilds from occurring, or caused them to occur when they should not. (From OE-Core rev: 38a5dd136b3a3713e63d23598011efe1c4b0f459) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta/lib: move buildstats.py and rootfspostcommands.py into oeChen Qi2024-12-051-4/+4
| | | | | | | | | | | These two files are the only ones that are left in meta/lib. They logically belong to meta/lib/oe, so move them there. (From OE-Core rev: c65dd0e3e463d6072b9364ac74e1fef0d998068f) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-uboot: Support lzma compressed algorithmJamin Lin2024-11-281-0/+2
| | | | | | | | | | | | | | | | | | | Linux kernel supports to compress its output binary with lzma algorithm and U-Boot support to decompress lzma compressed image. Both xz and lzma algorithms are identical and users can use xz utility with format parameter to compress Image which supports lzma algorithm. Add the following command to support lzma. This command is refer to Linux kernel, https://github.com/torvalds/linux/blob/master/arch/powerpc/boot/wrapper "xz --format=lzma -f -6 linux.bin" (From OE-Core rev: 211178065bdca293c84c41a9a1e79c10df95b6ad) 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>
* rust-target-config: Fix TARGET_C_INT_WIDTH with correct sizeHarish Sadineni2024-11-231-5/+5
| | | | | | | | | | | | | | | | [YOCTO #15600] The TARGET_C_INT_WIDTH value was incorrectly set to 64 instead of 32. It is updated for PPC, Mips, and riscv64 architectures. Discussion links for solution: https://lists.openembedded.org/g/openembedded-core/message/207486 https://lists.openembedded.org/g/openembedded-core/message/207496 (From OE-Core rev: b9df8cd8b29064d115dab3bfd1ea14f94a5c0238) Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* spdx: Fix SPDX tasks not running when code changesJoshua Watt2024-11-232-0/+5
| | | | | | | | | | | | | | | | The SPDX code makes heavy use of python classes. While this works very well, the bitbake dependency parser is unable to understand how to deal with them, and thus changes to the class code do not cause rebuilds to occur. To correct this, add the library files that include SPDX code as file checksums for the SPDX tasks. If this method works well for SPDX, we will look at implementing something similar in the bitbake dependency parser that should allow correct checksums without having to explicitly add them to each class. (From OE-Core rev: 6ac3033b77a0d1f7ab15801c5c65931adede3923) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uboot-sign: fix U-Boot binary with public keyClayton Casciato2024-11-231-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes [YOCTO #15649] The U-Boot binary in the "deploy" directory is missing the public key when the removed logic branch is used. The simple concatenation of the binary and DTB with public key works as expected on a BeagleBone Black. Given: MACHINE = beaglebone-yocto UBOOT_SIGN_KEYNAME = "dev" Post-patch (poky/build/tmp/deploy/images/beaglebone-yocto): $ hexdump -e "16 \"%_p\" \"\\n\"" u-boot-beaglebone-yocto.dtb \ | tr -d '\n' | grep -o 'key-dev' key-dev $ hexdump -e "16 \"%_p\" \"\\n\"" u-boot.img \ | tr -d '\n' | grep -o 'key-dev' key-dev Non-Poky BeagleBone Black testing (Scarthgap): U-Boot 2024.01 [...] [...] Using 'conf-ti_omap_am335x-boneblack.dtb' configuration Verifying Hash Integrity ... sha256,rsa4096:dev+ OK Trying 'kernel-1' kernel subimage [...] (From OE-Core rev: 0d14e99aa18ee38293df63d585fafc270a4538be) Signed-off-by: Clayton Casciato <majortomtosourcecontrol@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-recipe/python_pep517: remove all RECORD filesRoss Burton2024-11-211-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Python modules install metadata into a .dist-info directory, one of which is RECORD, which contains the files that were installed and their checksum[1]. This is typically used by pip to validate the install, or to know what files to remove when the module is uninstalled. This is slightly problematic when we need to do patching of installed .py files in do_install(), as the RECORD file has already been written at that point. However, the RECORD files only really have a use outside of a system- managed environment, which our python packages are. We already have commands to verify and remove modules (opkg, dpkg, rpm) and the RECORD file existing simply allows people to 'sudo pip' and alter the package- managed directories outside of the package manager. This is not a good idea, and some other distros remove the RECORD file to stop this possibility: - Debian[2] - Fedora[3] - Gentoo[4] We can follow for all packages which inherit python_pep517, which is the majority of the Python packages now. [1] https://peps.python.org/pep-0491/#the-dist-info-directory [2] https://salsa.debian.org/python-team/tools/dh-python/-/blob/master/dhpython/fs.py?ref_type=heads#L185 [3] https://src.fedoraproject.org/rpms/pyproject-rpm-macros/blob/rawhide/f/macros.pyproject#_105 [4] https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=73c49f3c00415dee99407dabba8d3b22895c9d25 (From OE-Core rev: 917df5ed022f9512473fe0971db48b5253c97b85) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* testimage: Handle /var/log being volatileRichard Purdie2024-11-211-0/+1
| | | | | | | | When /var/log is volatile, capturing just the symlink isn't useful. Fix this. (From OE-Core rev: 06bb8069b023c6b71f3c7dd87a6c2bebc5820083) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* testimage.bbclass: change test failure logging from bb.fatal() to bb.error()Mikko Rapeli2024-11-211-2/+2
| | | | | | | | | | | | | | | | | | | | | bb.fatal() exists right away while bb.error() does some cleanup before exiting. Fixes running tests during image build with TESTIMAGE_AUTO multiple times in a row when some of the tests fail: $ killall -9 Cooker ; bitbake -c clean core-image-base ; \ bitbake core-image-base ; \ bitbake core-image-base With bb.fatal() something in cleanup is not done and second image build builds an empty rootfs into .wic image. Workaround is to kill Cooker processes between bitbake calls, or to switch testimage.bbclass from bb.fatal() to bb.error() logging which is done here. (From OE-Core rev: 077bdd26e6c5bd161f082524ceee9e90d56315b5) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cython: swap prefix-mapping patch for an upstream commitRoss Burton2024-11-211-3/+0
| | | | | | | | | | | | | Upstream has solved the absolute path problem differently by taking paths relative to the top of the module. This appears to solve the problem, at least I've not found any cases where it breaks. Drop my patch, and backport the relevant commit from upstream. (From OE-Core rev: 47f7808dd93e50fb3ecddbf980e40e51dd7376cb) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-recipe/cython: handle builds with no .c sourcesRoss Burton2024-11-181-1/+1
| | | | | | | | | | | | | | | | This didn't seem to be possible considering the entire point of Cython is to generate C bindings, but some Python build systems remove the build tree once the wheel has been generated, so we never get to see the sources. As xargs will call the specified command even without any files this results in sed failing. Pass --no-run-if-empty so that this case doesn't result in an error. (From OE-Core rev: f1c1bdb05ea8f79a14a4b53e110889b70881f4d7) 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_mesonpy: remove cython-specific INSANE_SKIPsRoss Burton2024-11-121-4/+0
| | | | | | | | | | These INSANE_SKIPs are specific to cython and unrelated to mesonpy, so remove them. The new cython.bbclass should resolve the cause. (From OE-Core rev: abe08a3238d162a1bdbc68172307eb3eb127bbb1) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-recipe: add cython classRoss Burton2024-11-121-0/+11
| | | | | | | | | | | | | | | Recipes that use Cython typically also do some bespoke fixup. Add a class to centralise the logic: - Set CYTHON_PREFIX_MAP to stop build paths appearing in generated objects - Strip "Cython Metadata" blocks from generated code that ends up in the -src package (From OE-Core rev: 9752da112b618362d2fe1b61c8939b8410e98553) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uki.bbclass: fix debug print logging levelMikko Rapeli2024-11-121-1/+1
| | | | | | | | | Missing/unknown log level triggers a warning. (From OE-Core rev: ab2d1eeb4cad7ef8791954b36f8123cb35b8c000) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uboot-sign: fix concat_dtb argumentsClayton Casciato2024-11-121-1/+1
| | | | | | | | | | | | Fixes [YOCTO #15642] Ensure empty argument passed from do_uboot_assemble_fitimage is passed to concat_dtb (From OE-Core rev: b3c473785e5ceef677ff2b77c5fc17f5704c622f) Signed-off-by: Clayton Casciato <majortomtosourcecontrol@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-recipe/core-image: drop debug-tweaks IMAGE_FEATURERoss Burton2024-11-073-14/+15
| | | | | | | | | | | | | | | | | | | Remove the 'debug-tweaks' IMAGE_FEATURE. It sounds friendly and kind to developers, but it results primarily in an image which root can login remotely without a password. This is incredibly useful for local development and testing purposes, but we really want to be explicit that this is what is happening instead of hiding it behind a vague "debug tweaks" statement. To preserve the eixsting behaviour, debug-tweaks should be replaced with these features: allow-empty-password empty-root-password allow-root-login post-install-logging (From OE-Core rev: 2c229f9542c6ba608912e14c9c3f783c3fa89349) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-yocto: allow early exit to configuration auditBruce Ashfield2024-11-071-0/+5
| | | | | | | | | | | | | | | | With the ability to tag raw configuration fragments as "hardware", there is a chance that badly behaved fragments throw warnings or cause other issues that are not applicable during development (or you understand the risk). Allow kernel configuration audit to be skipped if KMETA_AUDIT is not set (by default it is), to provide a flag for control over auditing. (From OE-Core rev: a39a1f7cf78ad1ca07438bce634a47e970f25047) Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-yocto: allow cfg fragments to be specified as requiredBruce Ashfield2024-11-071-1/+4
| | | | | | | | | | | | | | | | | | | | When .scc files are used, a configuration fragment can be declared as "hardware" (required) or "non-hardware" (optional). By default the configuration audit only warns about hardware options. We can extend that default level of auditing to configuration fragments that are on the SRC_URI or in KERNEL_FEATURES by adding the ability to put a specifier after the fragment. i.e. KERNEL_FEATURES:append = 'hardening.config:required' This is particular useful for fragments that are outside of the kernel-cache (in a layer, in a kernel tree, etc) (From OE-Core rev: 0a84a3dd00543adffdef4fcf5381faab2984541e) Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* kernel-yocto: Support in-tree config fragmentsPaul Barker2024-11-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | [This is currently an RFC as it depends on a separate patch to add support for config fragments with .config file extensions in yocto-kernel-tools: https://lists.yoctoproject.org/g/linux-yocto/message/14431] In Linux 6.8, the in-tree rv32_defconfig file for 32-bit RISC-V support was dropped in favour of a Makefile target which combines the RISC-V defconfig with a config fragment '32-bit.config'. So to build for 32-bit RISC-V using the in-tree configuration from an upstream kernel, we need to be able to enable this 32-bit config fragment. We can support this via KERNEL_FEATURES if we add the in-tree arch config directory (arch/${ARCH}/configs) to the search path. While we're here, let's also add the generic config directory (kernel/configs) to the search path so in-tree config fragments such as 'hardening.config' can be used. (From OE-Core rev: e4e50a9a93d606ba5fef8f10f1ec20deaed7ab9c) Signed-off-by: Paul Barker <paul@pbarker.dev> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: support tar.zst SDK_ARCHIVE_TYPEMing Liu2024-10-281-2/+10
| | | | | | | | | | | | | | | | | zst is much faster than the default xz, test result on my Precision 5680 machine: Installing a tar.xz SDK takes 37 seconds while tar.zst only takes 17 seconds. Let's introduce support for tar.zst. Also add a sanity check for supported archive types. (From OE-Core rev: 1d22562a89e91f19b818b8f9bc214be941303980) Signed-off-by: Ming Liu <liu.ming50@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes-global/license: Move functions to library codeJoshua Watt2024-10-251-7/+7
| | | | | | | | | | | | | | Moves several of the functions in license.bbclass to be library code New function dependencies were manually verified using bitbake-dumpsigs to ensure that bitbake identified the same dependencies even though they are now in library code (although the new function names mean that the task hashes still change) (From OE-Core rev: 0333e04e353991260c5f67a72f80f3ab9dcf526a) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic bootimg-efi.py: change UKI support from wic plugin to uki.bbclassMikko Rapeli2024-10-251-1/+2
| | | | | | | | | | | | | | | | | | | Remove custom wic plugin implementation and use systemd ukify reference implementation when generating UKI images. Fail if users still have create-unified-kernel-image in wic image config. uki.bbclass use is detected from IMAGE_CLASSES variable ("inherit uki" in image recipe) so export that to wic plugins. If UKI is used, then only generate a minimal loader config for systemd-boot which basically just sets a timeout. Also set 5 second timeout by default instead of failing if wic bootloader config is missing. Boot menu is generated at runtime based on UKI binaries found from ESP partition. (From OE-Core rev: 725fed6ea40c7443b5e0e69dc1dd9c38ac814c56) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uki.bbclass: add class for building Unified Kernel Images (UKI)Michelle Lin2024-10-251-0/+195
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This class calls systemd ukify tool, which will combine kernel/initrd/stub components to build the UKI. To sign the UKI (i.e. SecureBoot), the keys/cert files can be specified in a configuration file or UEFI binary signing can be done via separate steps, see qemuarm64-secureboot in meta-arm. UKIs are loaded by UEFI firmware on target which can improve security by loading only correctly signed kernel, initrd and kernel command line. Using systemd-measure to pre-calculate TPM PCR values and sign them is not supported since that requires a TPM device on the build host. Thus "ConditionSecurity=measured-uki" default from systemd 256 does not work but "ConditionSecurity=tpm2" in combination with secure boot will. These can be used to boot securely into systemd-boot, kernel, kernel command line and initrd which then securely mounts a read-only dm-verity /usr partition and creates a TPM encrypted read-write / rootfs. Tested via qemuarm64-secureboot in meta-arm with https://lists.yoctoproject.org/g/meta-arm/topic/patch_v3_02_13/108031399 and a few more changes needed, will be posted separately. (From OE-Core rev: da69a73491a72b46e299f874ce90d81135cd9656) Signed-off-by: Michelle Lin <michelle.linto91@gmail.com> Acked-by: Erik Schilling <erik.schilling@linaro.org> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* python3: update 3.12.6 -> 3.13.0Alexander Kanavin2024-10-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | License-update: copyright years Update 0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch to only include tests that do not fail under qemu (following upstream change that also no longer obscures failures). Drop 0001-gh-107811-tarfile-treat-overflow-in-UID-GID-as-failu.patch (backport) 0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch (fixed upstream) 0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch (code completely rewritten upstream) cgi_py.patch (cgi and cgitb modules removed upstream) Add fix-armv5.patch (address armv5 crashes) Modules removed in 3.13 (look for 'important removals'): https://docs.python.org/3/whatsnew/3.13.html Manifest updated accordingly. Add an explicit dependency on libatomic (needed on mips and ppc), as upstream has explicitly switched it off in cross builds. It's a no-op on other targets. Fcntl relocated to python3-core by the manifest script. (From OE-Core rev: 0b49c9aa31279ecda565cc66b63d1d61723b37b8) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* rust-target-config: Update the data layout for x86-64 targetDeepesh Varatharajan2024-10-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | The data layout for x86-64 target was different in rust from llvm. It resulted in the following data layout error: -------------------------------------------------------------------------------------- error: data-layout for target `x86_64-linux`, `e-m:e-i64:64-f80:128-n8:16:32:64-S128`, differs from LLVM target's `x86_64-unknown-linux-gnu` default layout, `e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128` -------------------------------------------------------------------------------------- The issue was reported in meta-rust layer as: https://github.com/meta-rust/meta-rust/pull/442 Hence, the data layout for x86-64 is modified as per the llvm sources which fixes the issue. After running the testsuite with the modified data layout; it was observed that the "tests/codegen/i128-x86-align.rs" passed. The modified data layout fixed the scalar pair which resolved the testcase failure. Hence, the testcase has been removed from the exclude list. (From OE-Core rev: 96f11d299b32a32086eb3d890c88eb7ce42057b0) Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: use explicit uri for all sourceforge upstream version checksAlexander Kanavin2024-10-151-0/+2
| | | | | | | | | | | | | | | | | Previously the check for some recipes relied on sourceforge redirecting from downloads.sourceforge.net (SRC_URI is set to that) into the actual project page. Sourceforge does this for interactive browsers, but not for wget. With the check no longer mimicking a browser, and being truthful about coming from wget we need to explicitly fetch the project page in all cases, which is what this commit does. (many recipes already set this explicitly and don't need to be tweaked) (From OE-Core rev: 4c21ce6e34f6ce8fbf4db7bc2fd017c8f7a811b4) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* barebox: set default BAREBOX_CONFIG for qemu machinesEnrico Jorns2024-10-111-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | These are set in the barebox class rather in the corresponding machines (where they would belong otherwise) to keep the impact of barebox to oe-core minimal for now. "multi_v7_defconfig" is used for qemuarm since this is the default barebox armv7 config that just enables all supported platforms. "multi_v8_defconfig" is used for qemuarm64 sine this is the default barebox armv8 config that just enables all supported platforms. "efi_defconfig" is used for qemux86-64 which is the primary platform where barebox will not be the first stage bootloader but an EFI payload. Since these changes make barebox a provider for virtual/bootloader, explicitly default to u-boot in the corresponding MACHINE configs to not unnecessarily surprise users. (From OE-Core rev: 93da14f8f85202bad3dec9d979d01f4e8f9708d6) Signed-off-by: Enrico Jorns <ejo@pengutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* barebox: add initial supportMarco Felsch2024-10-111-0/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the support for the barebox bootloader to oe-core. The recipe is inspired by meta-ptx [1] but is a major rework of the one found there. Barebox comes with a wide range of supported architectures and follows the concepts of Linux in various aspects like the driver model, the shell, or the virtual file system. This not only eases porting Linux drivers but also makes barebox a developer-friendly and feature-rich bootloader alternative [2]. For barebox (like for the kernel or other bootloaders) it is quite likely that people will not just build the original recipe but need to adapt it, point to custom repositories, apply patch stacks, COMPATIBLE_MACHINE etc. They may also choose to have different recipe names for different variants. Having only a single .bb file and requiring to copy or .bbappend it is inconvenient and results in unnecessary code duplication. Therefore, the base support for building barebox is encapsulated in barebox.bbclass (like kernel.bbclass for the kernel). Adds barebox to maintainers.inc but excludes it from the maintainers check since with the current check mechanism barebox would be skipped (and making the check fail) due to not being the PREFERRED_PROVIDER for virtual/bootloader. [1] https://github.com/pengutronix/meta-ptx/tree/master/recipes-bsp/barebox [2] https://www.barebox.org/demo/?graphic=0 (From OE-Core rev: 5c69f5626278a6e9756188a5771b18075380f52d) Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> Signed-off-by: Enrico Jorns <ejo@pengutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cml1.bbclass: do_diffconfig: Don't override .config with .config.origRobert Yang2024-10-111-2/+1
| | | | | | | | | | | | | | | | | | | | | Fixed: 1) $ bitbake virtual/kernel -cmenuconfig Do some changes and save the new config to default .config. 2) $ bitbake virtual/kernel -cdiffconfig The config fragment is dumped into ${WORKDIR}/fragment.cfg. But the .config which was saved by step #1 is overridden by .config.orig, so the changes will be lost if run 'bitbake virtual/kernel' And the following comment is for subprocess.call(), not for shutil.copy(), so move subprocess.call() to the correct location. # No need to check the exit code as we know it's going to be # non-zero, but that's what we expect. (From OE-Core rev: 6cccf6b02f92dad514e65fd779ff659b19eb6be7) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* default-distrovars: Have KERNEL_CONSOLE reference SERIAL_CONSOLESJon Mason2024-10-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | Currently, KERNEL_CONSOLE has a default value of "ttyS0". However, Arm machines and those using virtio serial prefer to use "ttyAMA0" or "hvc0" (or something else). These are usually defined by the machine config file as SERIAL_CONSOLES, which has one or more entries. Take the first one of those instead of ttyS0, but default back to ttyS0 if nothing is set. Also, use this variable in the efi wic file instead of "ttyS0". Of note, this changes the default speed of the default kernel console from undefined (9600) to 115200. This allows for users of the mkefidisk.wks to work as before but any users of this variable could see changed behavior and would now need to define this as: KERNEL_CONSOLE ?= "ttyS0,9600" This includes revisions suggested by Quentin Schulz and Ross Burton. (From OE-Core rev: da42fc9ad55d1d60a04e38ff94c965f711f60cd6) Signed-off-by: Jon Mason <jdmason@kudzu.us> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* rootfs-postcommands.bbclass: make opkg status reproducibleJonas Gorski2024-09-301-0/+4
| | | | | | | | | | | | | | | | opkg stores the current time as Installed-Time in its status file when installing packages to the rootfs. Make this reproducible by replacing Installed-Time with ${REPRODUCIBLE_TIMESTAMP_ROOTFS}, which then also matches the files' datestamps. Based on OpenWrt's approach for the issue [1]. [1] https://github.com/openwrt/openwrt/blob/main/include/rootfs.mk#L103 (From OE-Core rev: 61a9b1b1cb618ce90ba7886036f41263075c07df) Signed-off-by: Jonas Gorski <jonas.gorski@bisdn.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image.bbclass: Drop support for ImageQAFailed exceptions in image_qaPeter Kjellerstedt2024-09-301-11/+4
| | | | | | | | | | | | | | | | | | | | After commit 905e224849fbbed1719e0add231b00e2d570b3b4 (image_qa: fix error handling), any unexpected exceptions in do_image_qa() would result in a variable being set, but never used, effectively hiding the error. Since image_qa now calls oe.qa.exit_if_errors(), remove the support for oe.utils.ImageQAFailed and instead rely on the called functions to call oe.qa.handle_error() themselves. This matches what do_package_qa() does. Also update the description of do_image_qa() to explain that the called functions are expected to call oe.qa.handle_error() themselves. [ YOCTO #15601 ] (From OE-Core rev: 0c3e111c965af2bc56533633c376b70b7fa5e1de) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image_types: make tar images more reproducibleDan McGregor2024-09-201-1/+4
| | | | | | | | | | | | | | | | | | Use tar-native from our build system. GNU tar changed its behaviour starting with version 1.35. It no longer stores device numbers for regular, non-device files. Since some supported host distributions still use 1.34, rely on tar-native for consistency. Strip atime and ctime from tar archives, they're not necessary and can change from invocation to invocation. Eliminate them from the tar output as suggested in the tar 1.35 documentation[1]. [1] https://www.gnu.org/software/tar/manual/html_node/Reproducibility.html (From OE-Core rev: 24d85d626aaad7eee7ba064410b80947e4f2faea) Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go-mod.bbclass: Unpack module dependency license filesChristian Lindeberg2024-09-201-0/+4
| | | | | | | | | | | | | To keep the module cache logic in the go module fetchers simple, the unpacking of the module zip files in the module cache directory is left to the go install command in do_compile. So for do_populate_lic to find the license files of module dependencies, do_compile needs to run before do_populate_lic. (From OE-Core rev: 35496654db325a4a904997be7a02fb04de74e9be) Signed-off-by: Christian Lindeberg <christian.lindeberg@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go-mod.bbclass: Set GO_MOD_CACHE_DIRChristian Lindeberg2024-09-201-4/+4
| | | | | | | | | | | | Set the GO_MOD_CACHE_DIR variable and move the location of the module cache to enable the use of the go module fetchers for downloading and unpacking module dependencies to the module cache. Also, clean out the module cache before unpacking. (From OE-Core rev: 287daff0bbd877990ce272e10601d4540d71f239) Signed-off-by: Christian Lindeberg <christian.lindeberg@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* image_qa: fix error handlingLouis Rannou2024-09-171-5/+6
| | | | | | | | | | | | | | | | Make ImageQAFailed inherit BBHandledException so exceptions raised in tests are catched when the actual test function is executed by bb.utils.better_exec. Change the do_image_qa tasks so errors are handled with oe.qa.handle_error. Add some comment to explain this requires to list the test in ERROR_QA or WARN_QA. [YOCTO #14807] https://bugzilla.yoctoproject.org/show_bug.cgi?id=14807 (From OE-Core rev: 905e224849fbbed1719e0add231b00e2d570b3b4) Signed-off-by: Louis Rannou <louis.rannou@non.se.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* conf/defaultsetup.conf: Drop TCLIBCAPPENDRichard Purdie2024-09-051-2/+0
| | | | | | | | | | | | | | We've been able to run musl and glibc builds in the same TMPDIR for many years and a separate directory is not required. Most distros disable this value for that reason. Drop support for the variable to make it clear and easy for distros to be able to set multiconfigs which behave consistently for distros which do and don't clear it by dropping it entirely. (From OE-Core rev: ebcd355a32e2711263e22d9b45b502696ecbb4d2) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* cml1: add do_savedefconfigAdrian Freihofer2024-09-052-7/+7
| | | | | | | | | | | Move the do_savedefconfig task definition from u-boot and kernel to cml1.bbclass. There are more recipes which use the kbuild framework and benefit from a do_savedefconfig task. (From OE-Core rev: 2b2ed48903e09196ee20da7f66b1d3689e4a4473) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uboot-config: fix devtool modify with kernel-fitimageAdrian Freihofer2024-09-041-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | How to reproduce: - UBOOT_CONFIG must be used. With UBOOT_MACHINE it works fine. A simple example based on oe-core is to modify the beaglebone-yocto.conf file like this: -UBOOT_MACHINE = "am335x_evm_defconfig" +UBOOT_CONFIG = "foo" +UBOOT_CONFIG[foo] = "am335x_evm_defconfig" - A build configuration which inherits the kernel-fitimage.bbclass is needed. For example: MACHINE = "beaglebone-yocto" KERNEL_IMAGETYPE = "Image" KERNEL_IMAGETYPES += " fitImage " KERNEL_CLASSES = " kernel-fitimage " devtool modify linux-yocto devtool build linux-yocto ... | cp: cannot stat '.../linux-yocto-6.6.21+git/am335x_evm_defconfig/.config': No such file or directory | WARNING: .../linux-yocto/6.6.21+git/temp/run.do_configure.2081673:172 exit 1 from 'cp .../linux-yocto-6.6.21+git/am335x_evm_defconfig/.config .../build/workspace/sources/linux-yocto/.config.baseline' The reason for this problem is that the uboot-config.bbclass sets the variable KCONFIG_CONFIG_ROOTDIR to a path that makes sense for u-boot, but not for other recipes. However, the kernel-fitimage.bbclasse, for example, inherits the uboot-config.bbclass, which brings the u-boot-specific path into the kernel build context. This change removes the uboot-specific KCONFIG_CONFIG_ROOTDIR path from recipes other than u-boot itself. (From OE-Core rev: b23581a22619c52724c8e078f29e871e2ee74259) Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/create-spdx-image-3.0: Fix SSTATE_SKIP_CREATIONJoshua Watt2024-09-041-1/+1
| | | | | | | | | Fixes SSTATE_SKIP_CREATION for do_create_image_spdx (From OE-Core rev: 97cb97c0948db0d46b92fd13ce0a4d5907e22b33) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* testexport: support for executing tests over serialAndrew Oppelt2024-09-012-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Uses TEST_SERIALCONTROL_CMD to open a serial connection to the target and execute commands. This is a drop in replacement for the ssh target, fully supporting the same API. Supported with testexport. To use, set the following in local.conf: - TEST_TARGET to "serial" - TEST_SERIALCONTROL_CMD to a shell command or script which connects to the serial console of the target and forwards that connection to standard input/output. - TEST_SERIALCONTROL_EXTRA_ARGS (optional) any parameters that must be passed to the serial control command. - TEST_SERIALCONTROL_PS1 (optional) A regex string representing an empty prompt on the target terminal. Example: "root@target:.*# ". This is used to find an empty shell after each command is run. This field is optional and will default to "root@{MACHINE}:.*# " if no other value is given. - TEST_SERIALCONTROL_CONNECT_TIMEOUT (optional) Specifies the timeout in seconds for the initial connection to the target. Defaults to 10 if no other value is given. The serial target does have some additional limitations over the ssh target. 1. Only supports one "run" command at a time. If two threads attempt to call "run", one will block until it finishes. This is a limitation of the serial link, since two connections cannot be opened at once. 2. For file transfer, the target needs a shell and the base32 program. The file transfer implementation was chosen to be as generic as possible, so it could support as many targets as possible. 3. Transferring files is significantly slower. On a 115200 baud serial connection, the fastest observed speed was 30kbps. This is due to overhead in the implementation due to decisions documented in #2 above. (From OE-Core rev: d817b27d73d29ba2beffa2e0a4e31a14dbe0f1bf) Signed-off-by: Andrew Oppelt <andrew.j.oppelt@boeing.com> Signed-off-by: Matthew Weber <matthew.l.weber3@boeing.com> Signed-off-by: Chuck Wolber <chuck.wolber@boeing.com> -- Tested with core-image-sato on real hardware. TEST_SERIALCONTROL_CMD was set to a bash script which connected with telnet to the target. Additionally tested with QEMU by setting TEST_SERIALCONTROL_CMD to "ssh -o StrictHostKeyChecking=no root@192.168.7.2". This imitates a serial connection to the QEMU instance. Steps: 1) Set the following in local.conf: - IMAGE_CLASSES += "testexport" - TEST_TARGET = "serial" - TEST_SERIALCONTROL_CMD="ssh -o StrictHostKeyChecking=no root@192.168.7.2" 2) Build an image - bitbake core-image-sato 3) Run the test export - bitbake -c testexport core-image-sato 4) Run the image in qemu - runqemu nographic core-image-sato 5) Navigate to the test export directory 6) Run the exported tests with target-type set to serial - ./oe-test runtime --test-data-file ./data/testdata.json --packages-manifest ./data/manifest --debug --target-type serial Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* systemd.bbclass: Clean up empty parent directoriesPeter Kjellerstedt2024-09-011-25/+20
| | | | | | | | | | | | | | | | Previously, rm_systemd_unitdir() would remove one parent directory of ${systemd_unitdir} if it was empty after removing ${systemd_unitdir}. rm_sysvinit_initddir() would not remove any parent directory. Thus, if the only directory created in /etc was /etc/init.d, an empty /etc would remain after the cleanup and would be packaged. Simplify rm_systemd_unitdir() and rm_sysvinit_initddir() by rewriting them in shell, and use rmdir -p to remove all empty parent directories. (From OE-Core rev: 73159c0bbc636a08934f47690885d75fd37b701a) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* uboot-sign: fix counters in do_uboot_assemble_fitimagePaul Gerber2024-08-301-1/+2
| | | | | | | | | | | | Without unsetting `j` and `k` for each `UBOOT_MACHINE`, `j` and `k` are incremented in the same frequency as `i` and therefore `$j -eq $i` and `$k -eq $i` is always true for the first `type` from `UBOOT_CONFIG` and the first `binary` from `UBOOT_BINARIES`. (From OE-Core rev: 3aef55c7ceb654b0012f20618bfd6ead1ef578b6) Signed-off-by: Paul Gerber <paul.gerber@ew.tq-group.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* insane: Drop oe.qa.add_message usageRichard Purdie2024-08-291-1/+1
| | | | | | | | | | | | | | | Drop the oe.qa.add_message() usage in favour of oe.qa.handle_error() which has code allowing it to be optimised with contains usage. The patch also drops unused return values which we stopped using a while ago and drops the now unneeded function parameters, generally leading to cleaner code. The code should be functionally equivalent. (From OE-Core rev: 9b2eea9fd4eab4f5e12e955738db22091b91f698) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* npm: accept unspecified versions in package.jsonEnguerrand de Ribaucourt2024-08-231-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | Our current emulation mandates that the package.json contains a version field. Some packages may not provide it when they are not published to the registry. The actual `npm pack` would allow such packages, so should we. This patch adds a default value to allow building such packages. This applies for instance to this package which doesn't declare a version: - https://github.com/cockpit-project/cockpit/blob/23701a555a5af13f998ee4c7526d27fdb5669d63/package.json#L2 v3: - Split bitbake npmsw.py modification in another commit Co-authored-by: Tanguy Raufflet <tanguy.raufflet@savoirfairelinux.com> (From OE-Core rev: 470c4c027c2b8bbecf23aa63650a22a312de9aa6) Signed-off-by: Tanguy Raufflet <tanguy.raufflet@savoirfairelinux.com> Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* scons.bbclass: Add scons class prefix to do_configureOla x Nilsson2024-08-231-2/+2
| | | | | | | | | | | While do_compile and do_install already have the scons_ prefix, do_configure did not. This was most likely an oversight from when it was converted from do_configure[noexec] = "1". (From OE-Core rev: c2213e0393fc589ac0ee1dd6e67ad624eb0a2706) Signed-off-by: Ola x Nilsson <olani@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* license_image.bbclass: Rename license-incompatible to license-exceptionPeter Kjellerstedt2024-08-211-1/+1
| | | | | | | | | | | | | | | | There is currently both an incompatible-license and a license-incompatible QA message. This is very confusing. However, license-incompatible is only used to output a message when a package is included in an image despite it having a license that is normally incompatible (by using the INCOMPATIBLE_LICENSE_EXCEPTIONS variable). To better match how it is used and to distinguish it from incompatible-license, rename it to license-exception. (From OE-Core rev: d309eed66f5a4a4bce082536e51207fe65725fab) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>