BayLibre contributions to Yocto wrynose
Yocto Wrynose (6.0) was released on May 13, 2026, following Whinlatter (5.3). BayLibre contributed 56 authored commits across openembedded-core, meta-openembedded, meta-riscv, meta-updater, and the Yocto autobuilder configuration repositories.
meta-riscv
Spacemit K1 platform
The bulk of Trevor Gamblin’s meta-riscv work introduces a structured K1 platform family. A new k1-image.bbclass automates bootinfo_sd.bin embedding into the wic image. k1.inc and k1-vendor.inc collect the common K1 features and vendor-specific options shared by the r2s and rv2 boards, and individual MACHINE definitions were simplified to consume the includes rather than duplicate settings. The muse-pi-pro board joins the K1 family as a new MACHINE.
The mainline kernel recipe for K1 tracked upstream closely, moving from 7.0-rc4 through 7.0-rc5 to v7.0 with the K1 series v8 patches that bring SD card support. U-Boot’s SRCREV was dropped now that the recipe follows tags, and the rootfs is selected by explicit label rather than a numeric partition. The wic UUID is hard-coded for spacemit-k1 to keep the bootloader’s root reference stable, and canned .wks files were moved under wic/.
Deprecation, CI, and documentation
Trevor stood up a deprecation framework so obsolete BSPs can announce themselves before removal. A warning function and message fires from layer.conf, a DEPRECATED.md tracks the planned removals for Yocto 6.1 (beaglev, visionfive), and the PR template prompts contributors to acknowledge deprecated targets.
A check-layer.yml GitHub workflow now runs yocto-check-layer on pull requests, and the layer was wired into the upstream Yocto autobuilder through config.py and config.json for nightly compatibility coverage; all 13 check-layer tests pass.
The README was rewritten to lead with a supported-machines table and delegate setup steps to docs/QUICK_START.md. VisionFive 2 links were repaired, a Contributing section landed alongside maintainer e-mail format fixes, muse-pi-pro joined the board list, and the PR template now reminds contributors to keep that table in sync.
Other meta-riscv fixes
Nezha builds were broken by outdated binman/setuptools handling and stale oe-core boot script defaults; u-boot-allwinnerd1 carries the fix. The linux-starfive patch missing an Upstream-Status tag was annotated so yocto-check-layer stops complaining — the patch has been upstream since v5.16. The archived fesvr was removed from riscv-tools; the simulator has lived inside Spike for seven years.
openembedded-core and meta-openembedded
Python 3.14
Trevor drove the Python upgrade to the 3.14 series, taking openembedded-core from 3.13.11 through 3.14.0, 3.14.2, and 3.14.4. The bumps dropped OpenSSL patches accepted upstream, added new skip patches for editline/curses ptest incompatibilities and sysconfig customization issues, and disabled two flaky tests (test_repl_eio for PyREPL’s curses dependency under qemu, and test_only_active_thread for thread-local timing under autobuilder load).
Cross-compile glue had to follow. Python 3.14’s sysconfig refuses to operate without _PYTHON_PROJECT_BASE, so python3targetconfig now exports it to prevent the native interpreter’s paths from contaminating target configuration. The python_pep517 class gained --prefix on its nativepython3 call to stop native sysconfig from overriding cross-compile install paths, which had been emitting QA errors about files landing in home directories.
Three new modules ship in the python3-core package: _py_warnings and annotationlib, required by logging, warnings, and traceback, plus _ast_unparse needed by annotationlib for AST unparsing. Without these, importing the standard library hits ModuleNotFoundError at runtime. The compression manifest tracks the reorganized module set.
The codecs.open() API is no longer recommended for new Python code; calls were swapped for plain open() in package_deb.bbclass, report-error.bbclass, and qemurunner.py. Two Python 3.14 follow-ups landed in meta-openembedded as well, patching libsigrokdecode and python3-geojson to build against the new interpreter.
Other recipe fixes
testlimits in libxml2 was flaking on qemuriscv64 under heavy autobuilder load; the upstream -timeout flag was backported so the cap can be raised from 2s to 5s. GRUB on riscv64 was failing with relocation 0x2b is not implemented yet errors under the large code model in GCC 14.1.1; a medany model patch landed, then was reverted once GRUB 2.14 made it unnecessary. The hdf5 recipe in meta-openembedded received correct shasum and downloadfilename values.
Uwe Kleine-König made busybox honor selinux in DISTRO_FEATURES, enabling CONFIG_SELINUX and the libselinux dependency only when the distro opts in. Hiago De Franco refreshed the maintainer e-mail address for hwdata and libdisplay-info in maintainers.inc.
meta-updater
Hiago De Franco worked on the OSTree and SELinux integration side. The refpolicy-targeted policy was repaired: the regexes matching ostree deployment paths under /sysroot/ostree/deploy/*/deploy/ expected a single hex character where the real deployment directories are 64-character hashes, so .origin files and the deployment directories themselves landed as unlabeled_t. Adding the missing rules for /sysroot/ostree, the boot.X/boot.X.Y pointers, and intermediate deploy directories restored correct labeling.
The asn1c recipe used by aktualizr was failing the buildpaths QA check because the generated sources embedded TMPDIR references. The image_type_ostree class learned SOTA_SKIP_CRED_WARN, an opt-in for cloud-provisioned devices (Torizon Cloud API users) that suppresses the spurious SOTA_PACKED_CREDENTIALS warning emitted by ostreepush.