subtree updates

meta-security: 30e755c592..283a773f24:
  Armin Kuster (2):
        meta-security: Drop ${PYTHON_PN}
        openscap: update to tip to fix new build issue.

  Jeremy A. Puhlman (4):
        arpwatch: fix misspelling of PACKAGECONFIG
        aprwatch: Add path for sendmail
        Check for usrmerge before removing /usr/lib
        arpwatch: install man8 dir

  Kevin Hao (4):
        docs: dm-verity.txt: Fix a typo
        dm-verity: Adjust the image names according to the oe-core change
        dm-verity: Set the IMAGE_FSTYPES correctly when dm-verity is enabled
        dm-verity-image-initramfs: Set IMAGE_NAME_SUFFIX to empty

  Max Krummenacher (1):
        layer.conf: Update for the scarthgap release series

  Mingli Yu (1):
        python3-pyinotify: Make asyncore support optional for Python 3

poky: 7165c23237..110ee701b3:
  Alejandro Hernandez Samaniego (1):
        python3-manifest: Sync RDEPENDS with latest version

  Alexander Kanavin (11):
        meson: correct upstream version check (exclude pre-releases)
        cargo-c-native: convert from git fetcher to crate fetcher
        cargo-c-native: update 0.9.18 -> 0.9.30
        man-pages: use env from coreutils-native
        sdk-manual: correctly describe separate build-sysroots tasks in direct sdk workflows
        dev/ref-manual: document conf-summary.txt together with conf-notes.txt
        dev-manual: improve descriptions of 'bitbake -S printdiff'
        wayland: fix upstream version check by asking gitlab directly
        python3: correct upstream version check
        bitbake: bitbake: improve descriptions of '-S printdiff'
        selftest/sstatetests: run CDN check twice, ignoring errors the first time

  Alexandre Truong (1):
        oeqa/selftest/devtool: fix test_devtool_add_git_style2

  Anibal Limon (1):
        wic: bootimg-partition allow to set var to get boot files

  BELOUARGA Mohamed (1):
        ref-manual: add documentation of the variable SPDX_NAMESPACE_PREFIX

  Bartosz Golaszewski (1):
        linux-firmware: update to 20240312

  Baruch Siach (1):
        oeqa/selftest/overlayfs: test read-only rootfs

  Bruce Ashfield (16):
        linux-yocto/6.6: cfg: generic arm64
        linux-yocto/6.6: cfg: riscv XHCI
        linux-yocto/6.6: update to v6.6.21
        linux-yocto/6.6: update CVE exclusions (6.6.21)
        linux-yocto/6.6: cfg: drop unsettable options
        linux-yocto/6.6: drm/tilcdc: Set preferred depth
        linux-yocto/6.6: update to v6.6.22
        linux-yocto/6.6: update CVE exclusions (6.6.22)
        yocto-bsps: update to v6.6.21
        linux-yocto/6.6: cfg: genericarm64 platform/peripheral support
        linux-yocto/6.6: cfg: genericarm64 configuration updates
        linux-yocto/6.6: nftables: ptest and cleanup tweaks
        linux-yocto/6.6: update to v6.6.23
        linux-yocto/6.6: update CVE exclusions (6.6.23)
        linux-yocto-dev: bump to v6.9
        lttng-modules: update to v2.13.12

  Changqing Li (1):
        dnf: fix Exception handling for class ProcessLock

  Chen Qi (1):
        ovmf: set CVE_PRODUCT and CVE_VERSION

  Christian Taedcke (1):
        kernel-fitImage: only include valid compatible line

  Derek Erdmann (1):
        bitbake: fetch2/git: Install Git LFS in local repository config

  Enrico Jörns (3):
        cml1: remove needless check for write_taint attribute
        cml1: prompt location of updated .config after do_menuconfig()
        perf: fix TMPDIR contamination for recent mainline kernels

  Enrico Scholz (1):
        shadow: fix copydir operation with 'pseudo'

  Felix Moessbauer (1):
        bitbake: utils: better estimate number of available cpus

  Harish Sadineni (3):
        gcc: Oe-selftest failure analysis - fix for tcl errors
        gcc: Oe-selftest failure analysis - fix for vect-simd test failures
        binutils: gprofng - change use of bignum to use of bignint

  Jermain Horsman (1):
        bblayers/makesetup.py: Move git utility functions to oe.buildcfg module

  Joe Slater (1):
        systemd: enable mac based names in NamePolicy

  Jose Quaresma (5):
        go.bbclass: set GOPROXY
        elfutils: fix unused variable BUFFER_SIZE
        go: keep the patches in order
        go: upgrade 1.22.1 -> 1.22.2
        sstatesig: fix netrc.NetrcParseError exception

  Joshua Watt (4):
        sstatesig: Set hash server credentials from bitbake variables
        bitbake: siggen: Add support for hashserve credentials
        sstatesig: Warn on bad .netrc
        bitbake: bitbake-hashclient: Warn on bad .netrc

  Jörg Sommer (1):
        autotools: update link in comment for cross compiling

  Kevin Hao (1):
        image-live.bbclass: Adjust the default value for INITRD_LIVE

  Khem Raj (13):
        systemd: Check for directory before chmod'ing it
        llvm: Update to 18.1.1 release
        elfutils: Fix build break with clang
        glibc: Update to tip of 2.39 branch
        pam: Fix build with musl
        piglit: Switch to upstreamed patch for musl fix
        qemuriscv: Fix kbd and mouse emulation for qemuriscv64
        llvm: Upgrade to 18.1.2 bugfix release
        glibc: Repace aarch configure patch fix with a backport
        valgrind: Backport fixes from 3.22 branch
        tcl: Forward port skip logic for musl ptests
        readline: Apply patches from readline-8.2-patches
        mesa: Drop LLVM-17 patch

  Lee Chee Yang (1):
        migration-guides: add release notes for 4.0.17

  Marcel Ziswiler (1):
        mesa: enable imagination powervr support

  Markus Volk (11):
        mesa: fix opencl-spirv build
        vala: merge bb and inc files
        vala: fix for gtk4 prior to 4.14
        libsoup: enable vapi support
        gsettings-desktop-schemas: update 45.0 -> 46.0
        libadwaita: update 1.4.4 -> 1.5.0
        gtk4: update 4.12.5 -> 4.14.1
        systemd: disable mdns feature in resolved for zeroconf
        webkitgtk: update 2.42.5 -> 2.44.0
        gtk+3: disable wayland without opengl
        epiphany: update 45.3 -> 46.0

  Martin Jansa (2):
        contributor-guide: be more specific about meta-* trees
        pixman: explicitly disable openmp in native builds

  Max Krummenacher (1):
        git: git-replacement-native: depend on ca-certificate

  Michael Opdenacker (8):
        manuals: add initial stylechecks with Vale
        profile-manual: usage.rst: formatting fixes
        manuals: use "manual page(s)"
        profile-manual: usage.rst: fix reference to bug report
        documentation: Makefile: remove releases.rst in "make clean"
        migration-guides: draft notes for upcoming release 5.0
        manuals: add initial stylechecks with Vale
        profile-manual: usage.rst: further style improvements

  Oleh Matiusha (3):
        bash: improve reproducibility
        curl: improve reproducibility
        gmp: improve reproducibility

  Paul Barker (1):
        kernel: Fix check_oldest_kernel

  Peter A. Bigot (1):
        bitbake: lib/bb: support NO_COLOR

  Peter Kjellerstedt (1):
        util-linux: Set the license for util-linux-fcntl-lock to MIT

  Philippe Rivest (1):
        bitbake: bitbake: fetch2/git: Escape parentheses in git src name

  Quentin Schulz (1):
        u-boot: fix externalsrc not triggering do_configure on defconfig changes

  Randy MacLeod (1):
        gstreamer: upgrade 1.22.10 -> 1.22.11

  Richard Purdie (10):
        poky: Update to prepare for scarthgap release
        layer.conf: Prepare for release, drop nanbield LAYERSERIES
        expat: Upgrade 2.6.1 -> 2.6.2
        bash/flex: Ensure BUILD_FLAGS doesn't leak onto target
        uninative: Add pthread linking workaround
        poky-altcfg: Default to ipk packaging
        util-linux: Add missing MIT license
        util-linux: Add fcntl-lock
        run-postinsts: Add workaround for locking deadlock issue
        oeqa/sstatetests: Fix race issue

  Ross Burton (22):
        genericarm64.wks: reorder partitions
        genericarm64: clean up kernel modules and firmware
        linux-firmware: add support for deduplicating the firmware
        linux-firmware: set LICENSE field for -liquidui and -mellanox
        linux-firmware: remove pointless linux-firmware-gplv2-license package
        curl: improve run-ptest
        curl: increase test timeouts
        gstreamer1.0: improve test reliability
        linux-yocto: put COMPATIBLE_MACHINE first
        linux-yocto: implicitly track oe-core's kernel version for genericarm64
        bitbake: fetch2: handle URIs with single-valued query parameters
        python3_pip517: just count wheels in the directory, not subdirectories
        python-*: don't set PYPI_ARCHIVE_NAME and S when PYPI_PACKAGE is sufficient
        tcl: improve run-ptest
        tcl: skip I/O channel 46.1
        genericarm64: add qemuboot configuration
        classes/qemuboot: add depends on qemu-system-native and qemu-helper-native
        README.hardware.md: fix Markdown formatting
        README.hardware.md: add section on genericarm64 on qemu
        glib-2.0: skip a timing sensitive ptest
        openssl: fix crash on aarch64 if BTI is enabled but no Crypto instructions
        curl: fix quoting when disabling flaky tests

  Ryan Eatmon (1):
        perf: Fix QA error due to most recent kernel

  Sam Van Den Berge (1):
        shadow: don't install libattr.so.* when xattr not in DISTRO_FEATURES

  Sava Jakovljev (1):
        bitbake: bitbake-worker: Fix bug where umask 0 was not being applied to a task

  Simone Weiß (1):
        gnutls: upgrade 3.8.3 -> 3.8.4

  Soumya Sambu (1):
        go: Upgrade 1.22.0 -> 1.22.1

  Sourav Kumar Pramanik (1):
        libseccomp: Add back in PTESTS_SLOW list

  Sundeep KOKKONDA (1):
        rust: reproducibility issue fix with v1.75

  Tim Orling (2):
        coreutils: drop obsolete liberror-perl RDEPENDS
        liberror-perl: move to meta-perl

  Timon Bergelt (1):
        populate_sdk_ext.bbclass: only overwirte lsb string if uninative is used

  Tom Hochstein (2):
        bmaptool: Add bmap-tools runtime alias for compatibility
        toolchain-shar-relocate.sh: Add check for missing command 'file'

  Trevor Woerner (1):
        bmaptool: update to latest

  Ulrich Ölmann (1):
        ref-manual: classes: update description of class 'image_types'

  Viswanath Kraleti (1):
        bitbake: fetch2: Fix misleading "no output" msg

  Wang Mingyu (1):
        libadwaita: upgrade 1.4.3 -> 1.4.4

  William Lyu (1):
        openssh: Add a workaround for ICE on powerpc64le

  Xiangyu Chen (3):
        lttng-tools: skip kernel tests if no kernel modules present
        ltp: fix missing connectors tests in scenario_groups/default
        lttng-tools: fix rotation-destroy-flush test fails if no kernel module present

  Yang Xu (1):
        bitbake: bitbake-worker: Fix silent hang issue caused by unexpected stdout content

  Yannick Rodriguez (1):
        linux-firmware: Move Intel 9260 modules firmware.

  Yash Shinde (1):
        glibc: Skip 2 qemu tests that can hang in oe-selftest

  Yi Zhao (1):
        libtirpc: drop redundant PACKAGECONFIG

  Yoann Congal (6):
        cve-update-nvd2-native: Fix typo in comment
        cve-update-nvd2-native: Add an age threshold for incremental update
        cve-update-nvd2-native: Remove duplicated CVE_CHECK_DB_FILE definition
        cve-update-nvd2-native: nvd_request_next: Improve comment
        cve-update-nvd2-native: Fix CVE configuration update
        cve-update-nvd2-native: Remove rejected CVE from database

  Yogesh Tyagi (1):
        lttng-modules: fix v6.8+ build

  david d zuhn (1):
        bitbake: bitbake-worker: allow '=' in environment variable values

  lixiaoyong (3):
        kernel-module-split.bbclass: enhance objcopy command call for kernel compilation with llvm
        utils: enhance readelf command call with llvm
        oe/package: enhance objdump command call with llvm

meta-raspberrypi: 92a9b7a012..d072cc8a48:
  Khem Raj (9):
        linux-raspberrypi: Add recipe for 6.6 LTS kernel
        bluez-firmware-rpidistro: Upgrade to 1.2-9+rpt3 release
        linux-firmware-rpidistro: Upgrade to bookworm/20230625-2+rpt2
        raspberrypi-firmware: Fetch using git URI
        rpi-base: Add missing broadcom/ prefix to find DTB files
        rpi-default-versions: Switch default kernel to 6.6
        linux-raspberrypi_6.6: Bump to 6.6.22
        rpi-bootfiles: Resort to github APIs for tarballs
        raspberrypi-firmware: Revert to debian archive

  Martin Jansa (1):
        userland: fix installed-vs-shipped in multilib builds

  jdavidsson (1):
        rpi-base: Add hifiberry-dacplusadc overlay

meta-arm: aba9250494..d9e18ce792:
  Abdellatif El Khlifi (1):
        arm-bsp/corstone1000: add documentation disclaimer

  Alexander Sverdlin (1):
        optee-ftpm: fix EARLY_TA_PATHS passed to optee-os

  Ali Can Ozaslan (4):
        arm-bsp/trusted-firmware-m: corstone1000: update to 2.0
        arm-bsp/trusted-services: corstone1000: Client Id adjustments after TF-M 2.0
        arm/trusted-firmware-m: Change GNU Arm compiler version for TF-M 2.0
        arm-bsp/trusted-firmware-a: n1sdp: update to 2.10

  Anusmita Dutta Mazumder (2):
        arm-bsp/n1sdp: Update scp-firmware version
        arm-bsp/n1sdp: Update EDK2 version

  Bence Balogh (2):
        arm-bsp/u-boot: corstone1000: fix SMCCC_ARCH_FEATURES detection in the PSCI driver
        arm-bsp/trusted-firmware-a: corstone1000: remove SMCCC_ARCH_FEATURES discovery workaround

  Delane Brandy (1):
        arm/trusted-firmware-a: fix mbedTLS version

  Drew Reed (2):
        kas: Corstone-1000 kas files updated
        bsp: Corstone-1000 userguide updates

  Emekcan Aras (2):
        arm-bsp/trusted-firmware-a: Upgrade Corstone1000 to TF-A v2.10
        arm/trusted-services: Add recipe for block storage service

  Jon Mason (17):
        README: Add information about release process and mailing list
        arm/linux-yocto: remove unreferenced patch
        arm/optee: disable clang due to breakage
        arm-bsp/tf-a-tests: remove corstone1000 intermediate SHA
        arm-bsp/tfa-tests: move n1sdp patch to platform directory
        CI: update kas to 4.3.1
        arm/edk2: update to 202402
        arm/trusted-firmware-a: update to 2.10.2
        arm/sbsa-acs: update to 7.1.4
        arm/scp-firmware: update to v2.14.0
        arm-toolchain/gcc-arm-none-eabi: remove 11.2
        CI: reduce coverage of dev kernel
        arm/sbsa-acs: remove unreferenced patch
        arm-toolchain: correct UPSTREAM_CHECK
        Revert "arm/rmm: Add bitbake, include and patch file for RMM firmware"
        arm/sbsa-acs: use UPSTREAM_CHECK_URI for version checking
        arm: use UPSTREAM_CHECK_COMMITS for git versioned recipes

  Mathieu Poirier (1):
        arm/rmm: Add bitbake, include and patch file for RMM firmware

  Ross Burton (3):
        arm arm-bsp: enable patch-status warnings
        Add SECURITY.md
        CI: ignore netrc warnings caused by Kas

meta-openembedded: a0237019f5..a6bcdca5b4:
  Bartosz Golaszewski (1):
        libgpiod: update to v2.1.1

  Chad Rockey (1):
        cppzmq-dev expects /usr/lib/libzmq.a

  Changqing Li (1):
        postgresql: fix a runtime error

  Chen Qi (1):
        tcprelay: fix a minor cross compilation do_configure issue

  Christophe Chapuis (9):
        lvgl: fix typo in lv-conf.inc
        lvgl: install lv_conf.h
        lvgl: remove useless FILES include
        lvgl: cleanup sed instructions in lv-conf.inc
        lvgl: add more variables to lv-conf.inc
        lvgl: fix libdrm include
        lvgl: lv-conf.inc: generalize sed instructions
        lvgl: make libdrm include conditional
        lvgl: cleanup sed expression

  Dan McGregor (2):
        python3-pylint: Update to 3.1.0
        python3-pylint: Fix ptest failures

  Derek Straka (1):
        python3-dbus: re-add recipe with latest patches and add ptest

  Etienne Cordonnier (1):
        uutils-coreutils: upgrade 0.0.24 -> 0.0.25

  Fathi Boudra (1):
        python3-django: upgrade 4.2.10 -> 4.2.11

  Guðni Már Gilbert (2):
        python3-ecdsa: remove python3-pbr
        python3-ecdsa: cleanup DEPENDS

  Jaeyoon Jung (1):
        lvgl: Set resolution prior to buffer

  Joe Slater (1):
        googletest: allow for shared libraries

  Jose Quaresma (1):
        ostree: Upgrade 2024.4 -> 2024.5

  Jörg Sommer (3):
        sngrep: new recipe for ncurses SIP Messages flow viewer
        spandsp: new telephony DSP library
        bluez-tools: New recipe for bluez5 tools

  Kai Kang (2):
        Packages depends on libadwaita should require distro feature opengl
        thin-provisioning-tools: install binary to ${sbindir}

  Khem Raj (55):
        squid: Upgrade to 6.8
        libosinfo: Fix build with libxml2 v2.12
        xmlstarlet: Fix build with API breakage in libxml2 2.12
        mariadb: Fix build with libxml2 2.12 ABI changes
        libmusicbrainz: Update to tip of trunk
        gnome-commander: Fix build with taglib 2.0
        gnome-online-accounts: Fix build with libxml2 2.12
        vlc: Upgrade to 3.0.20
        netcf: Fix build with latest gnulib
        php: Upgrade to 8.2.16
        vlc: Fix build on 32bit x86
        libtinyxml2: Extend for nativesdk
        lvgl: Fix dev-elf build QA
        layer.conf: Update for the scarthgap release series
        dietsplash: Update and fix build with musl
        frr: Upgrade to latest on 9.1 stable
        frr: Fix build on newer musl
        layer.conf: Prepare for release, drop nanbield LAYERSERIES
        libcamera: Fix clang support patches
        plocate: Fix sys/stat.h and linux/stat.h conflicts with musl
        liburing: Upgrade to 2.5
        openflow: Delete recipe for 1.0
        openflow: Merge .inc into .bb
        openflow: Fix build with musl
        tracker-miners: Disable seccomp support on musl
        libcamera: Fix build on musl systems
        ipset: Update to 7.21
        ot-daemon: Update to tip of trunk
        ot-br-posix: Update to latest
        wpantund: Update to latest
        xfsdump: Fix build with musl >= 1.2.5
        xfstests: Fix build with musl >= 1.2.5
        net-snmp: Fix build with musl
        rdma-core: Fix build with musl >= 1.2.5
        ssmtp: Fix build with musl >= 1.2.5
        autofs: Fix build with musl >= 1.2.5
        lvm2: Fix build with musl 1.5.2+
        sanlock: Fix build with musl >= 1.2.5
        ndctl: Fix build issues seen with musl 1.2.5
        sdbus-c++-libsystemd: Upgrade to 255.4 release of systemd
        sdbus-c++,sdbus-c++-tools: Upgrade to 1.5.0 release
        wtmpdb: Upgrade to 0.11.0 release
        uftrace: Fix build with musl >= 1.2.5
        fio: Upgrade to 3.36+git
        i2cdev: Include libgen.h on musl
        directfb: Fix build with musl >= 1.2.5
        iwd: Upgrade to 2.16
        minifi-cpp: Fix libsodium build on aarch64/clang
        multipath-tools: Fix build with musl >= 1.2.5
        aer-inject: Fix build with latest musl
        aer-inject: Replace hardcoded /usr with ${prefix}
        microsoft-gsl: Disable disabled-macro-expansion warning as error on clang/musl
        meta-python-image-ptest: Use 2G RAM for some demanding tests
        python3-pydbus: Add bash dependency for ptests
        highway,libjxl: Remove -mfp16-format=ieee when using clang compiler

  Leon Anavi (7):
        python3-anyio: Upgrade 4.2.0 -> 4.3.0
        python3-httpx: Upgrade 0.26.0 -> 0.27.0
        python3-multidict: Upgrade 6.0.4 -> 6.0.5
        python3-croniter: Upgrade 2.0.1 -> 2.0.3
        python3-paho-mqtt: Upgrade 1.6.1 -> 2.0.0
        python3-typeguard: Upgrade 4.1.5 -> 4.2.1
        python3-cachetools: Upgrade 5.3.2 -> 5.3.3

  Marek Vasut (14):
        lvgl: Drop dialog-lvgl
        lvgl: Upgrade to LVGL 9 series
        lvgl: Rename lv-drivers.inc to lv-conf.inc
        lvgl: Add SDL2 fullscreen mode configuration option
        lvgl: Configure assertions based on DEBUG_BUILD
        lvgl: Default to XRGB8888 DRM framebuffer
        lvgl: Build shared library
        lvgl: Replace sed patching with real patches
        lvgl: Generate proper shared libraries with version suffix
        lvgl: Reinstate demo configuration settings
        lvgl: Update to 9.1.0
        lvgl: Drop superfluous ALLOW_EMPTY
        lvgl: Drop unnecessary PV append
        lvgl: Deduplicate PACKAGECONFIG into lv-conf

  Markus Volk (66):
        mozjs-115: fix reproducibility issue
        webp-pixbuf-loader: update 0.2.5 -> 0.2.7
        gnome-control-center: fix reproducibility issue
        gnome-disk-utility: fix reproducibility issue
        gnome-settings-daemon: fix reproducibility issue
        gnome-terminal: fix reproducibility issue
        libvncserver: fix reproducibility issue
        editorconfig-core-c: fix reproducibility issue
        crossguid: fix reproducibility issue
        waylandpp: fix reproducibility issue
        polkit: remove unneeded workaround
        gtk-vnc: fix reproducibility issue
        pipewire: update 1.0.3 -> 1.0.4
        mutter: remove zenity from rdepends
        mutter: update 45.4 -> 46.0
        gnome-shell: update 45.4 -> 46.0
        gnome-settings-daemon: update 45.0 -> 46.0
        gnome-software: update 45.3 -> 46.0
        evince: update 45.0 -> 46.0
        gnome-online-accounts: update 3.48.0 -> 3.50.0
        evolution-data-server: build with webkitgtk4
        folks: update 0.15.7 -> 0.15.8
        gnome-control-center: update 45.3 -> 46.0
        xdg-desktop-portal-gnome: update 45.1 -> 46.0
        tracker: update 3.6.0 -> 3.7.0
        tracker-miners: update 3.6.2 -> 3.7.0
        freerdp3: add recipe
        wireplumber: update 0.4.17 -> 0.5.0
        tecle: update 45.0 -> 46.0
        gnome-calculator: update 45.0.2 -> 46.0
        gnome-session: update 45.0 -> 46.0
        gnome-remote-desktop: update 45.1 -> 46.0
        gnome-calendar: update 45.1 -> 46.0
        libgweather4: update 4.4.0 -> 4.4.2
        gtksourceview5: update 5.10.0 -> 5.12.0
        gnome-control-center: use gcr4 variant
        libcloudproviders: update 0.3.5 -> 0.3.6
        gnome-themes-extra: build with gtk+3
        gtk4mm: add recipe
        gnome-system-monitor: update 45.0.1 -> 46.0
        gnome-boxes: update 45.0 -> 46.0
        eog: update 45.2 -> 45.3
        gparted: update 1.5.0 -> 1.6.0
        libgtop: update 2.41.1 -> 2.41.3
        gnome-bluetooth: update 42.8 -> 46.0
        gnome-text-editor: update 45.1 -> 46.0
        gnome-chess: update 43.2 -> 46.0
        gnome-disk-utility: update 45.0 -> 46.0
        gnome-shell-extensions: update 45.2 -> 46.0
        msgraph: add recipe
        gvfs: update 1.52.2 -> 1.54.0
        tracker-miners: drop buildpath from tracker-miner-fs-3
        evolution-data-server: disable tests and examples
        tracker-miners: fix reproducibility issue for landlock
        file-roller: update 43.1 -> 44.0
        apache2: preset mpm=prefork by default
        gnome-user-share: add recipe
        gnome-control-center: update 46.0 -> 46.0.1
        gdm: update 45.0.1 -> 46.0
        gnome-user-share: remove hardcoded paths
        ghex: update 45.1 -> 46.0
        libjxl: add recipe
        gnome-backgrounds: add runtime depenency for libjxl
        highway: add recipe
        webkitgtk3: update 2.42.5 -> 2.44.0
        gnome-control-center: restore Upstream-Status line

  Martin Jansa (5):
        unionfs-fuse, dropwatch, postgresql, yasm, multipath-tools, python3-pybind11: add missing Upstream-Status
        recipes: Drop remaining PR values from recipes
        freerdp3: disable shadow without x11
        xfstests: upgrade to v2024.03.03
        gtkmm4: add x11 to REQUIRED_DISTRO_FEATURES

  Maxin John (7):
        tracker: remove unused patch
        openal-soft: remove unused patches
        libio-pty-perl: remove unsed patch
        opengl-es-cts: remove unused patch
        emacs: remove unused patch
        webkitgtk3: remove unused patch
        python3-eth-utils: remove unused patches

  Michael Heimpold (1):
        ser2net: add a systemd service file

  Mingli Yu (4):
        gosu: Upgrade to 1.17
        googletest: Pass -fPIC to CFLAGS
        re2: Upgrade 2023.03.01 -> 2024.03.01
        nss: Upgrade 3.74 -> 3.98

  Ola x Nilsson (2):
        abseil-cpp: Split so-files into separate packages
        abseil-cpp: Split so-files into separate packages

  Peter Kjellerstedt (3):
        abseil-cpp: A little clean-up
        libnice: Disable the examples and the tests
        abseil-cpp: A little clean-up

  Peter Marko (5):
        jwt-cpp: fix cmake file install path
        soci: fix buildpaths warning
        libcpr: add new recipe
        python3-grpcio: cleanup dependencies
        microsoft-gsl: add new recipe including ptest

  Petr Gotthard (2):
        libmbim: Revert back to the latest stable 1.30.0
        libqmi: Revert back to the latest stable 1.34.0

  Randy MacLeod (2):
        rsyslog: update from 8.2306.0 to 8.2402.0
        nftables: Add DESCRIPTION and HOMEPAGE

  Richard Purdie (2):
        imagemagick/lcms/fftw: Allow nativesdk versions to exist
        buildtools-imagemagick: Add new recipe

  Robert P. J. Day (1):
        fmt: remove unnecessary "inherit ptest" directive

  Robert Yang (6):
        yaffs2-utils: Upgrade to 20221209
        xfsprogs: 6.5.0 -> 6.6.0
        gnulib: 2018-12-18 -> 202401
        thin-provisioning-tools: 1.0.9 -> 1.0.12
        gperftools: 2.10 -> 2.15
        freeradius: 3.0.26 -> 3.2.3

  Ross Burton (1):
        python3-pydantic-core: just set PYPI_PACKAGE

  Sam Van Den Berge (1):
        python3-aiohttp: add missing dependencies

  Samuli Piippo (1):
        geoclue: enable demo agent

  Thomas Roos (1):
        usrsctp: upgrade to latest version

  Tim Orling (1):
        liberror-perl: move recipe from oe-core

  Tomasz Żyjewski (1):
        python: python-libusb1: add recipe

  Wang Mingyu (124):
        bats: upgrade 1.10.0 -> 1.11.0
        c-ares: upgrade 1.26.0 -> 1.27.0
        ctags: upgrade 6.1.20240114.0 -> 6.1.20240225.0
        dbus-cxx: upgrade 2.5.0 -> 2.5.1
        ddrescue: upgrade 1.27 -> 1.28
        fetchmail: upgrade 6.4.37 -> 6.4.38
        libtalloc: upgrade 2.4.1 -> 2.4.2
        libtdb: upgrade 1.4.9 -> 1.4.10
        neatvnc: upgrade 0.7.2 -> 0.8.0
        ostree: upgrade 2024.3 -> 2024.4
        python3-astroid: upgrade 3.0.3 -> 3.1.0
        python3-cbor2: upgrade 5.6.1 -> 5.6.2
        python3-dnspython: upgrade 2.6.0 -> 2.6.1
        python3-eventlet: upgrade 0.35.1 -> 0.35.2
        python3-gcovr: upgrade 7.0 -> 7.2
        python3-google-api-core: upgrade 2.16.2 -> 2.17.1
        python3-google-api-python-client: upgrade 2.118.0 -> 2.120.0
        python3-grpcio(-tools): upgrade 1.60.1 -> 1.62.0
        python3-ipython: upgrade 8.21.0 -> 8.22.1
        python3-pdm: upgrade 2.12.3 -> 2.12.4
        python3-pymisp: upgrade 2.4.185 -> 2.4.186
        python3-scrypt: upgrade 0.8.20 -> 0.8.24
        python3-sentry-sdk: upgrade 1.40.4 -> 1.40.6
        smarty: upgrade 4.3.4 -> 4.4.1
        stunnel: upgrade 5.69 -> 5.72
        abseil-cpp: upgrade 20230802.1 -> 20240116.1
        dnf-plugin-tui: upgrade 1.3 -> 1.4
        boost-sml: upgrade 1.1.9 -> 1.1.11
        ctags: upgrade 6.1.20240225.0 -> 6.1.20240310.0
        dialog: upgrade 1.3-20240101 -> 1.3-20240307
        flatbuffers: upgrade 23.5.26 -> 24.3.7
        gjs: upgrade 1.78.4 -> 1.80.0
        hwdata: upgrade 0.379 -> 0.380
        iceauth: upgrade 1.0.9 -> 1.0.10
        libdnet: upgrade 1.17.0 -> 1.18.0
        libopus: upgrade 1.4 -> 1.5.1
        libreport: upgrade 2.17.11 -> 2.17.15
        libxaw: upgrade 1.0.15 -> 1.0.16
        mcelog: upgrade 196 -> 197
        networkd-dispatcher: upgrade 2.1 -> 2.2.4
        openlldp: upgrade 1.1.0 -> 1.1.1
        opensc: upgrade 0.24.0 -> 0.25.0
        pcsc-lite: upgrade 2.0.1 -> 2.0.3
        python3-a2wsgi: upgrade 1.10.2 -> 1.10.4
        python3-apiflask: upgrade 2.1.0 -> 2.1.1
        python3-argcomplete: upgrade 3.2.2 -> 3.2.3
        python3-bandit: upgrade 1.7.7 -> 1.7.8
        python3-blivet: upgrade 3.8.2 -> 3.9.1
        python3-blivetgui: upgrade 2.4.2 -> 2.5.0
        python3-django: upgrade 5.0.2 -> 5.0.3
        python3-elementpath: upgrade 4.3.0 -> 4.4.0
        python3-eth-abi: upgrade 5.0.0 -> 5.0.1
        python3-eth-rlp: upgrade 1.0.1 -> 2.0.0
        python3-flask-migrate: upgrade 4.0.5 -> 4.0.7
        python3-google-api-python-client: upgrade 2.120.0 -> 2.122.0
        python3-google-auth: upgrade 2.28.1 -> 2.28.2
        python3-googleapis-common-protos: upgrade 1.62.0 -> 1.63.0
        python3-grpcio-tools: upgrade 1.62.0 -> 1.62.1
        python3-grpcio: upgrade 1.62.0 -> 1.62.1
        python3-ipython: upgrade 8.22.1 -> 8.22.2
        python3-mypy: upgrade 1.8.0 -> 1.9.0
        python3-pydantic: upgrade 2.6.3 -> 2.6.4
        python3-pymisp: upgrade 2.4.186 -> 2.4.187
        python3-pymodbus: upgrade 3.6.4 -> 3.6.6
        python3-pyperf: upgrade 2.6.2 -> 2.6.3
        python3-pytest-lazy-fixtures: upgrade 1.0.5 -> 1.0.6
        python3-pytest-timeout: upgrade 2.2.0 -> 2.3.1
        python3-requests-oauthlib: upgrade 1.3.1 -> 1.4.0
        python3-sentry-sdk: upgrade 1.40.6 -> 1.42.0
        python3-tox: upgrade 4.13.0 -> 4.14.1
        python3-traitlets: upgrade 5.14.1 -> 5.14.2
        python3-types-psutil: upgrade 5.9.5.20240205 -> 5.9.5.20240316
        python3-types-python-dateutil: upgrade 2.8.19.20240106 -> 2.9.0.20240316
        tcsh: upgrade 6.24.10 -> 6.24.11
        thingsboard-gateway: upgrade 3.4.4 -> 3.4.5
        xmessage: upgrade 1.0.6 -> 1.0.7
        xrefresh: upgrade 1.0.7 -> 1.1.0
        gjs: upgrade 1.80.0 -> 1.80.2
        gnome-backgrounds: upgrade 45.0 -> 46.0
        gnome-font-viewer: upgrade 45.0 -> 46.0
        libblockdev: upgrade 3.1.0 -> 3.1.1
        libdeflate: upgrade 1.19 -> 1.20
        libmbim: upgrade 1.30.0 -> 1.31.2
        libqmi: upgrade 1.34.0 -> 1.35.2
        libtommath: upgrade 1.2.1 -> 1.3.0
        mcelog: upgrade 197 -> 198
        metacity: upgrade 3.50.0 -> 3.52.0
        python3-asgiref: upgrade 3.7.2 -> 3.8.1
        python3-blivet: upgrade 3.9.1 -> 3.9.2
        python3-cassandra-driver: upgrade 3.29.0 -> 3.29.1
        python3-djangorestframework: upgrade 3.14.0 -> 3.15.1
        python3-eth-rlp: upgrade 2.0.0 -> 2.1.0
        python3-eventlet: upgrade 0.35.2 -> 0.36.1
        python3-filelock: upgrade 3.13.1 -> 3.13.3
        python3-flask-marshmallow: upgrade 1.2.0 -> 1.2.1
        python3-flatbuffers: upgrade 24.3.7 -> 24.3.25
        python3-google-api-core: upgrade 2.17.1 -> 2.18.0
        python3-google-api-python-client: upgrade 2.122.0 -> 2.124.0
        python3-google-auth: upgrade 2.28.2 -> 2.29.0
        python3-graphviz: upgrade 0.20.1 -> 0.20.3
        python3-gspread: upgrade 6.0.2 -> 6.1.0
        python3-jdatetime: upgrade 4.1.1 -> 5.0.0
        python3-pdm: upgrade 2.12.4 -> 2.13.2
        python3-pyasn1-modules: upgrade 0.3.0 -> 0.4.0
        python3-pymisp: upgrade 2.4.187 -> 2.4.188
        python3-pytest-asyncio: upgrade 0.23.5 -> 0.23.6
        python3-pytest-cov: upgrade 4.1.0 -> 5.0.0
        python3-pytest-lazy-fixtures: upgrade 1.0.6 -> 1.0.7
        python3-pywbem: upgrade 1.6.2 -> 1.6.3
        python3-pywbemtools: upgrade 1.2.0 -> 1.2.1
        python3-pyzstd: upgrade 0.15.9 -> 0.15.10
        python3-requests-oauthlib: upgrade 1.4.0 -> 2.0.0
        python3-sentry-sdk: upgrade 1.42.0 -> 1.44.0
        python3-socketio: upgrade 5.11.1 -> 5.11.2
        python3-thrift: upgrade 0.16.0 -> 0.20.0
        python3-tox: upgrade 4.14.1 -> 4.14.2
        python3-web3: upgrade 6.15.1 -> 6.16.0
        st: upgrade 0.9 -> 0.9.1
        thingsboard-gateway: upgrade 3.4.5 -> 3.4.6
        thrift: upgrade 0.19.0 -> 0.20.0
        tracker-miners: upgrade 3.7.0 -> 3.7.1
        tracker: upgrade 3.7.0 -> 3.7.1
        wireshark: upgrade 4.2.3 -> 4.2.4
        wolfssl: upgrade 5.6.6 -> 5.7.0

  William Lyu (3):
        nftables: Fix ptest output format issues
        nftables: Fix ShellCheck violations in ptest wrapper script "run-ptest"
        nftables: Fix failed ptest testcases

  Yi Zhao (13):
        netplan: upgrade 0.106 -> 1.0
        networkmanager: 1.44.0 -> 1.46.0
        postfix: upgrade 3.8.5 -> 3.8.6
        net-snmp: upgrade 5.9.3 -> 5.9.4
        cryptsetup: upgrade 2.7.0 -> 2.7.1
        samba: upgrade 4.19.4 -> 4.19.5
        civetweb: remove buildpaths from civetweb-targets.cmake
        minifi-cpp: upgrade 0.7.0 -> 0.15.0
        openvpn: upgrade 2.6.9 -> 2.6.10
        rocksdb: upgrade 7.9.2 -> 9.0.0
        audit: upgrade 4.0 -> 4.0.1
        netplan: add missing config directory
        strongswan: upgrade 5.9.13 -> 5.9.14

  alperak (15):
        python3-icecream: add recipe
        python3-invoke: add recipe
        python3-traitlets: add ptest and update runtime dependencies
        python3-google-auth-oauthlib: add ptest
        python3-tomli-w: added recipe which is also include ptest
        python3-pytest-localserver: added recipe which is also include ptest
        python3-responses: add recipe
        python3-google-auth: add ptest and update runtime dependencies
        remove obsolete PIP_INSTALL_PACKAGE and PIP_INSTALL_DIST_PATH
        python3-a2wsgi: added recipe which is also include ptest
        python3-httptools: added recipe which is also include ptest
        python3-wsproto: Add recipe
        python3-portalocker: enable ptest
        python3-validators: upgrade 0.22.0 > 0.24.0 and enable ptest
        python3-pydbus: Drop ${PYTHON_PN}

  chenheyun (1):
        aer-inject:add new recipe

Change-Id: I3cf0e5c87ecdfa18c35d318cb64c0e6559348618
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/meta-arm/.gitlab-ci.yml b/meta-arm/.gitlab-ci.yml
index 15cf4ec..d6ac361 100644
--- a/meta-arm/.gitlab-ci.yml
+++ b/meta-arm/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-image: ${MIRROR_GHCR}/siemens/kas/kas:4.0
+image: ${MIRROR_GHCR}/siemens/kas/kas:4.3.1
 
 variables:
   # These are needed as the k8s executor doesn't respect the container
@@ -186,56 +186,66 @@
   extends: .build
   parallel:
     matrix:
-      - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
+      - KERNEL: [linux-yocto, linux-yocto-rt]
         TOOLCHAINS: [gcc, clang]
         TESTING: testimage
+      - KERNEL: linux-yocto-dev
+        TESTING: testimage
 
 qemuarm64-secureboot:
   extends: .build
   parallel:
     matrix:
-      - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
+      - KERNEL: [linux-yocto, linux-yocto-rt]
         TOOLCHAINS: [gcc, clang]
         TCLIBC: [glibc, musl]
         TS: [none, qemuarm64-secureboot-ts]
         TESTING: testimage
+      - KERNEL: linux-yocto-dev
+        TESTING: testimage
 
 qemuarm64:
   extends: .build
   parallel:
     matrix:
       - DISTRO: poky
-        KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
+        KERNEL: [linux-yocto, linux-yocto-rt]
         TOOLCHAINS: [gcc, clang]
         FIRMWARE: [u-boot, edk2]
         TESTING: testimage
       - DISTRO: poky-tiny
         TESTING: testimage
       - VIRT: xen
+      - KERNEL: linux-yocto-dev
+        TESTING: testimage
 
 qemuarm-secureboot:
   extends: .build
   parallel:
     matrix:
-      - KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
+      - KERNEL: [linux-yocto, linux-yocto-rt]
         TOOLCHAINS: [gcc, clang]
         TCLIBC: [glibc, musl]
         TESTING: testimage
       - TOOLCHAINS: external-gccarm
         TESTING: testimage
+      - KERNEL: linux-yocto-dev
+        TESTING: testimage
 
 qemuarm:
   extends: .build
   parallel:
     matrix:
       - DISTRO: poky
-        KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
+        KERNEL: [linux-yocto, linux-yocto-rt]
         TOOLCHAINS: [gcc, clang]
         FIRMWARE: [u-boot, edk2]
         TESTING: testimage
       - DISTRO: poky-tiny
         TESTING: testimage
       - VIRT: xen
+      - KERNEL: linux-yocto-dev
+        TESTING: testimage
 
 qemuarmv5:
   extends: .build
diff --git a/meta-arm/README.md b/meta-arm/README.md
index 82c326d..e77e5ac 100644
--- a/meta-arm/README.md
+++ b/meta-arm/README.md
@@ -29,6 +29,13 @@
 
   This directory contains scripts used in running the CI tests
 
+Mailing List
+------------
+To interact with the meta-arm developer community, please email the meta-arm mailing list at meta-arm@lists.yoctoproject.org
+Currently, it is configured to only allow emails to members from those subscribed.
+To subscribe to the meta-arm mailing list, please go to
+https://lists.yoctoproject.org/g/meta-arm
+
 Contributing
 ------------
 Currently, we only accept patches from the meta-arm mailing list.  For general
@@ -49,6 +56,13 @@
 
   arm-toolchain/gcc: enable foobar v2
 
+Releases and Release Schedule
+--------------
+We follow the Yocto Project release methodology, schedule, and stable/LTS support timelines.  For more information on these, please reference:
+https://docs.yoctoproject.org/ref-manual/release-process.html
+https://wiki.yoctoproject.org/wiki/Releases
+https://wiki.yoctoproject.org/wiki/Stable_Release_and_LTS
+
 Reporting bugs
 --------------
 E-mail meta-arm@lists.yoctoproject.org with the error encountered and the steps
diff --git a/meta-arm/SECURITY.md b/meta-arm/SECURITY.md
new file mode 100644
index 0000000..0fa6cbc
--- /dev/null
+++ b/meta-arm/SECURITY.md
@@ -0,0 +1,37 @@
+# Reporting vulnerabilities
+
+Arm takes security issues seriously and welcomes feedback from researchers and
+the security community in order to improve the security of its products and
+services. We operate a coordinated disclosure policy for disclosing
+vulnerabilities and other security issues.
+
+Security issues can be complex and one single timescale doesn't fit all
+circumstances. We will make best endeavours to inform you when we expect
+security notifications and fixes to be available and facilitate coordinated
+disclosure when notifications and patches/mitigations are available.
+
+
+## How to Report a Potential Vulnerability?
+
+If you would like to report a public issue (for example, one with a released CVE
+number), please contact the meta-arm mailing list at
+meta-arm@lists.yoctoproject.org and arm-security@arm.com.
+
+If you are dealing with a not-yet released or urgent issue, please send a mail
+to the maintainers (see README.md) and arm-security@arm.com, including as much
+detail as possible.  Encrypted emails using PGP are welcome.
+
+For more information, please visit https://developer.arm.com/support/arm-security-updates/report-security-vulnerabilities.
+
+
+## Branches maintained with security fixes
+
+meta-arm follows the Yocto release model, so see
+[https://wiki.yoctoproject.org/wiki/Stable_Release_and_LTS Stable release and
+LTS] for detailed info regarding the policies and maintenance of stable
+branches.
+
+The [https://wiki.yoctoproject.org/wiki/Releases Release page] contains a list of all
+releases of the Yocto Project. Versions in grey are no longer actively maintained with
+security patches, but well-tested patches may still be accepted for them for
+significant issues.
diff --git a/meta-arm/ci/check-warnings b/meta-arm/ci/check-warnings
index 89ae955..cdf84aa 100755
--- a/meta-arm/ci/check-warnings
+++ b/meta-arm/ci/check-warnings
@@ -7,7 +7,7 @@
 
 LOGFILE=$1
 
-LINES=$(grep --invert-match "attempting MIRRORS if available" $LOGFILE | wc -l)
+LINES=$(sed -e "/attempting MIRRORS if available/d" -e "/Error parsing .*netrc:/d" $LOGFILE | wc -l)
 if test "$LINES" -ne 0; then
     echo ==============================
     echo The build had warnings/errors:
diff --git a/meta-arm/ci/corstone1000-common.yml b/meta-arm/ci/corstone1000-common.yml
index 4c71517..7fe9e87 100644
--- a/meta-arm/ci/corstone1000-common.yml
+++ b/meta-arm/ci/corstone1000-common.yml
@@ -4,44 +4,7 @@
     - ci/base.yml
     - ci/meta-openembedded.yml
     - ci/meta-secure-core.yml
-
-local_conf_header:
-  extrapackages: |
-    # Intentionally blank to prevent perf from being added to the image in base.yml
-
-  firmwarebuild: |
-    # Only needed as kas doesn't add it automatically unless you have 2 targets in seperate configs
-    BBMULTICONFIG ?= "firmware"
-
-  distrosetup: |
-    DISTRO_FEATURES = "usbhost ipv4"
-
-  initramfsetup: |
-    # Telling the build system which image is responsible of the generation of the initramfs rootfs
-    INITRAMFS_IMAGE_BUNDLE:firmware = "1"
-    INITRAMFS_IMAGE:firmware ?= "core-image-minimal"
-    IMAGE_FSTYPES:firmware:pn-core-image-minimal = "${INITRAMFS_FSTYPES}"
-    IMAGE_NAME_SUFFIX:firmware = ""
-
-    # enable mdev/busybox for init
-    INIT_MANAGER:firmware = "mdev-busybox"
-    VIRTUAL-RUNTIME_init_manager:firmware = "busybox"
-
-    # prevent the kernel image from being included in the intramfs rootfs
-    PACKAGE_EXCLUDE:firmware += "kernel-image-*"
-
-    # Disable openssl in kmod to shrink the initramfs size
-    PACKAGECONFIG:remove:firmware:pn-kmod = "openssl"
-
-  imageextras: |
-    # Don't include kernel binary in rootfs /boot path
-    RRECOMMENDS:${KERNEL_PACKAGE_NAME}-base = ""
-
-    # all optee packages
-    CORE_IMAGE_EXTRA_INSTALL += "optee-client"
-
-    # TS PSA API tests commands for crypto, its, ps and iat
-    CORE_IMAGE_EXTRA_INSTALL += "packagegroup-ts-tests-psa"
+    - kas/corstone1000-image-configuration.yml
 
 target:
   - core-image-minimal
diff --git a/meta-arm/ci/corstone1000-firmware-only.yml b/meta-arm/ci/corstone1000-firmware-only.yml
index 9cc4299..8af0146 100644
--- a/meta-arm/ci/corstone1000-firmware-only.yml
+++ b/meta-arm/ci/corstone1000-firmware-only.yml
@@ -1,24 +1,8 @@
 ---
 header:
   version: 14
-
-local_conf_header:
-  rescuebuild: |
-    # Need to ensure the rescue linux options are selected
-    OVERRIDES .= ":firmware"
-
-    # Need to ensure we build with a small libc
-    TCLIBC="musl"
-
-  mass-storage: |
-    # Ensure the Mass Storage device is absent
-    FVP_CONFIG[board.msd_mmc.p_mmc_file] = "invalid.dat"
-
-  test-configuration: |
-    TEST_SUITES = "_qemutiny ping"
-    # Remove Dropbear SSH as it will not fit into the corstone1000 image.
-    IMAGE_FEATURES:remove = "ssh-server-dropbear"
-    CORE_IMAGE_EXTRA_INSTALL:remove = "ssh-pregen-hostkeys"
+  includes:
+    - kas/corstone1000-firmware-only.yml
 
 target:
   - corstone1000-flash-firmware-image
diff --git a/meta-arm/ci/toolchains.yml b/meta-arm/ci/toolchains.yml
index 9b63bf2..056269b 100644
--- a/meta-arm/ci/toolchains.yml
+++ b/meta-arm/ci/toolchains.yml
@@ -16,5 +16,3 @@
   - nativesdk-gcc-aarch64-none-elf
   - gcc-arm-none-eabi
   - nativesdk-gcc-arm-none-eabi
-  - gcc-arm-none-eabi-11.2
-  - nativesdk-gcc-arm-none-eabi-11.2
diff --git a/meta-arm/kas/corstone1000-base.yml b/meta-arm/kas/corstone1000-base.yml
index 1ab6545..a8b9860 100644
--- a/meta-arm/kas/corstone1000-base.yml
+++ b/meta-arm/kas/corstone1000-base.yml
@@ -1,14 +1,11 @@
 header:
   version: 14
 
-env:
-  DISPLAY: ""
-
-distro: poky-tiny
+distro: poky
 
 defaults:
   repos:
-    branch: nanbield
+    branch: master
 
 repos:
   meta-arm:
@@ -19,14 +16,14 @@
 
   poky:
     url: https://git.yoctoproject.org/git/poky
-    commit: 2e9c2a2381105f1306bcbcb54816cbc5d8110eff
+    # commit: 2e9c2a2381105f1306bcbcb54816cbc5d8110eff
     layers:
       meta:
       meta-poky:
 
   meta-openembedded:
     url: https://git.openembedded.org/meta-openembedded
-    commit: 1750c66ae8e4268c472c0b2b94748a59d6ef866d
+    # commit: 1750c66ae8e4268c472c0b2b94748a59d6ef866d
     layers:
       meta-oe:
       meta-python:
@@ -34,15 +31,17 @@
 
   meta-secure-core:
     url: https://github.com/wind-river/meta-secure-core.git
-    commit: e29165a1031dcf601edbed1733cedd64826672a5
+    # commit: e29165a1031dcf601edbed1733cedd64826672a5
     layers:
-      meta:
+      meta-secure-core-common:
       meta-signing-key:
       meta-efi-secure-boot:
 
 local_conf_header:
   base: |
     CONF_VERSION = "2"
+
+  setup: |
     PACKAGE_CLASSES = "package_ipk"
     BB_NUMBER_THREADS ?= "16"
     PARALLEL_MAKE ?= "-j16"
@@ -51,4 +50,4 @@
 machine: unset
 
 target:
-  - corstone1000-image
+  - corstone1000-flash-firmware-image
diff --git a/meta-arm/kas/corstone1000-firmware-only.yml b/meta-arm/kas/corstone1000-firmware-only.yml
new file mode 100644
index 0000000..f164036
--- /dev/null
+++ b/meta-arm/kas/corstone1000-firmware-only.yml
@@ -0,0 +1,21 @@
+---
+header:
+  version: 14
+
+local_conf_header:
+  firmwarebuild: |
+    # Need to ensure the rescue linux options are selected
+    OVERRIDES .= ":firmware"
+
+    # Need to ensure we build with a small libc
+    TCLIBC="musl"
+
+  mass-storage: |
+    # Ensure the Mass Storage device is absent
+    FVP_CONFIG[board.msd_mmc.p_mmc_file] = "invalid.dat"
+
+  test-configuration: |
+    TEST_SUITES = "_qemutiny ping"
+    # Remove Dropbear SSH as it will not fit into the corstone1000 image.
+    IMAGE_FEATURES:remove = "ssh-server-dropbear"
+    CORE_IMAGE_EXTRA_INSTALL:remove = "ssh-pregen-hostkeys"
diff --git a/meta-arm/kas/corstone1000-fvp.yml b/meta-arm/kas/corstone1000-fvp.yml
index abf4070..0d6d5fe 100644
--- a/meta-arm/kas/corstone1000-fvp.yml
+++ b/meta-arm/kas/corstone1000-fvp.yml
@@ -2,15 +2,22 @@
   version: 14
   includes:
     - kas/corstone1000-base.yml
+    - kas/corstone1000-image-configuration.yml
+    - kas/corstone1000-firmware-only.yml
     - kas/fvp-eula.yml
 
-machine: corstone1000-fvp
+env:
+  DISPLAY:
+  WAYLAND_DISPLAY:
+  XAUTHORITY:
 
 local_conf_header:
-    fvp-config: |
-        # Remove Dropbear SSH as it will not fit into the corstone1000 image.
-        IMAGE_FEATURES:remove = " ssh-server-dropbear"
-        INHERIT += "fvpboot"
+  testimagefvp: |
+    LICENSE_FLAGS_ACCEPTED += "Arm-FVP-EULA"
+    IMAGE_CLASSES += "fvpboot"
 
-target:
-  - corstone1000-image
+  mass-storage: |
+    # Ensure the Mass Storage device is absent
+    FVP_CONFIG[board.msd_mmc.p_mmc_file] = "invalid.dat"
+
+machine: corstone1000-fvp
diff --git a/meta-arm/kas/corstone1000-image-configuration.yml b/meta-arm/kas/corstone1000-image-configuration.yml
new file mode 100644
index 0000000..2b28522
--- /dev/null
+++ b/meta-arm/kas/corstone1000-image-configuration.yml
@@ -0,0 +1,40 @@
+header:
+  version: 14
+
+local_conf_header:
+  extrapackages: |
+    # Intentionally blank to prevent perf from being added to the image in base.yml
+
+  firmwarebuild: |
+    # Only needed as kas doesn't add it automatically unless you have 2 targets in seperate configs
+    BBMULTICONFIG ?= "firmware"
+
+  distrosetup: |
+    DISTRO_FEATURES = "usbhost ipv4"
+
+  initramfsetup: |
+    # Telling the build system which image is responsible of the generation of the initramfs rootfs
+    INITRAMFS_IMAGE_BUNDLE:firmware = "1"
+    INITRAMFS_IMAGE:firmware ?= "core-image-minimal"
+    IMAGE_FSTYPES:firmware:pn-core-image-minimal = "${INITRAMFS_FSTYPES}"
+    IMAGE_NAME_SUFFIX:firmware = ""
+
+    # enable mdev/busybox for init
+    INIT_MANAGER:firmware = "mdev-busybox"
+    VIRTUAL-RUNTIME_init_manager:firmware = "busybox"
+
+    # prevent the kernel image from being included in the intramfs rootfs
+    PACKAGE_EXCLUDE:firmware += "kernel-image-*"
+
+    # Disable openssl in kmod to shrink the initramfs size
+    PACKAGECONFIG:remove:firmware:pn-kmod = "openssl"
+
+  imageextras: |
+    # Don't include kernel binary in rootfs /boot path
+    RRECOMMENDS:${KERNEL_PACKAGE_NAME}-base = ""
+
+    # all optee packages
+    CORE_IMAGE_EXTRA_INSTALL += "optee-client"
+
+    # TS PSA API tests commands for crypto, its, ps and iat
+    CORE_IMAGE_EXTRA_INSTALL += "packagegroup-ts-tests-psa"
diff --git a/meta-arm/kas/corstone1000-mps3.yml b/meta-arm/kas/corstone1000-mps3.yml
index 7d63a18..30f465a 100644
--- a/meta-arm/kas/corstone1000-mps3.yml
+++ b/meta-arm/kas/corstone1000-mps3.yml
@@ -2,5 +2,7 @@
   version: 14
   includes:
     - kas/corstone1000-base.yml
+    - kas/corstone1000-image-configuration.yml
+    - kas/corstone1000-firmware-only.yml
 
 machine: corstone1000-mps3
diff --git a/meta-arm/meta-arm-bsp/conf/layer.conf b/meta-arm/meta-arm-bsp/conf/layer.conf
index 543b8c2..9013d11 100644
--- a/meta-arm/meta-arm-bsp/conf/layer.conf
+++ b/meta-arm/meta-arm-bsp/conf/layer.conf
@@ -24,3 +24,5 @@
     meta-arm-systemready:${LAYERDIR}/dynamic-layers/meta-arm-systemready/*/*/*.bb \
     meta-arm-systemready:${LAYERDIR}/dynamic-layers/meta-arm-systemready/*/*/*.bbappend \
 "
+
+WARN_QA:append:layer-meta-arm-bsp = " patch-status"
diff --git a/meta-arm/meta-arm-bsp/conf/machine/include/corstone1000.inc b/meta-arm/meta-arm-bsp/conf/machine/include/corstone1000.inc
index 8d79342..a82d007 100644
--- a/meta-arm/meta-arm-bsp/conf/machine/include/corstone1000.inc
+++ b/meta-arm/meta-arm-bsp/conf/machine/include/corstone1000.inc
@@ -3,11 +3,11 @@
 MACHINEOVERRIDES =. "corstone1000:"
 
 # TF-M
-PREFERRED_VERSION_trusted-firmware-m ?= "1.8.%"
+PREFERRED_VERSION_trusted-firmware-m ?= "2.0.%"
 
 # TF-A
 TFA_PLATFORM = "corstone1000"
-PREFERRED_VERSION_trusted-firmware-a ?= "2.9.%"
+PREFERRED_VERSION_trusted-firmware-a ?= "2.10.%"
 PREFERRED_VERSION_tf-a-tests ?= "2.8.%"
 
 TFA_BL2_BINARY = "bl2-corstone1000.bin"
diff --git a/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf b/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf
index 12b22ce..662cf62 100644
--- a/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf
+++ b/meta-arm/meta-arm-bsp/conf/machine/n1sdp.conf
@@ -27,7 +27,7 @@
 # TF-A
 EXTRA_IMAGEDEPENDS += "trusted-firmware-a"
 TFA_PLATFORM = "n1sdp"
-PREFERRED_VERSION_trusted-firmware-a ?= "2.9.%"
+PREFERRED_VERSION_trusted-firmware-a ?= "2.10.%"
 PREFERRED_VERSION_tf-a-tests ?= "2.10.%"
 
 # SCP
@@ -35,7 +35,7 @@
 
 #UEFI EDK2 firmware
 EXTRA_IMAGEDEPENDS += "edk2-firmware"
-PREFERRED_VERSION_edk2-firmware ?= "202305"
+PREFERRED_VERSION_edk2-firmware ?= "202311"
 
 #optee
 PREFERRED_VERSION_optee-os ?= "4.1.%"
diff --git a/meta-arm/meta-arm-bsp/documentation/corstone1000/images/ExternalFlash.png b/meta-arm/meta-arm-bsp/documentation/corstone1000/images/ExternalFlash.png
index 399f875..578f038 100644
--- a/meta-arm/meta-arm-bsp/documentation/corstone1000/images/ExternalFlash.png
+++ b/meta-arm/meta-arm-bsp/documentation/corstone1000/images/ExternalFlash.png
Binary files differ
diff --git a/meta-arm/meta-arm-bsp/documentation/corstone1000/index.rst b/meta-arm/meta-arm-bsp/documentation/corstone1000/index.rst
index 8626c42..cbe78c5 100644
--- a/meta-arm/meta-arm-bsp/documentation/corstone1000/index.rst
+++ b/meta-arm/meta-arm-bsp/documentation/corstone1000/index.rst
@@ -1,11 +1,21 @@
 ..
- # Copyright (c) 2022, Arm Limited.
+ # Copyright (c) 2022, 2024, Arm Limited.
  #
  # SPDX-License-Identifier: MIT
 
-################
-ARM Corstone1000
-################
+#################
+Arm Corstone-1000
+#################
+
+*************************
+Disclaimer
+*************************
+
+Arm reference solutions are Arm public example software projects that track and
+pull upstream components, incorporating their respective security fixes
+published over time. Arm partners are responsible for ensuring that the
+components they use contain all the required security fixes, if and when they
+deploy a product derived from Arm reference solutions.
 
 .. toctree::
    :maxdepth: 1
diff --git a/meta-arm/meta-arm-bsp/documentation/corstone1000/user-guide.rst b/meta-arm/meta-arm-bsp/documentation/corstone1000/user-guide.rst
index a308e42..dc1d102 100644
--- a/meta-arm/meta-arm-bsp/documentation/corstone1000/user-guide.rst
+++ b/meta-arm/meta-arm-bsp/documentation/corstone1000/user-guide.rst
@@ -1,5 +1,5 @@
 ..
- # Copyright (c) 2022-2023, Arm Limited.
+ # Copyright (c) 2022-2024, Arm Limited.
  #
  # SPDX-License-Identifier: MIT
 
@@ -152,7 +152,7 @@
 
     pip3 install kas
 
-If 'kas' command is not found in command-line, please make sure the user installation directories are visible on $PATH. If you have sudo rights, try 'sudo pip3 install kas'. 
+If 'kas' command is not found in command-line, please make sure the user installation directories are visible on $PATH. If you have sudo rights, try 'sudo pip3 install kas'.
 
 In the top directory of the workspace ``<_workspace>``, run:
 
@@ -171,7 +171,7 @@
 by setting the ARM_FVP_EULA_ACCEPT environment variable as follows:
 
 ::
-  
+
     export ARM_FVP_EULA_ACCEPT="True"
 
 then run:
@@ -189,12 +189,12 @@
  - ``<_workspace>/build/tmp/deploy/images/corstone1000-mps3/`` folder for FPGA build.
 
 Everything apart from the Secure Enclave ROM firmware and External System firmware, is bundled into a single binary, the
-``corstone1000-image-corstone1000-{mps3,fvp}.wic`` file.
+``corstone1000-flash-firmware-image-corstone1000-{mps3,fvp}.wic`` file.
 
 The output binaries run in the Corstone-1000 platform are the following:
  - The Secure Enclave ROM firmware: ``<_workspace>/build/tmp/deploy/images/corstone1000-{mps3,fvp}/bl1.bin``
  - The External System firmware: ``<_workspace>/build/tmp/deploy/images/corstone1000-{mps3,fvp}/es_flashfw.bin``
- - The flash image: ``<_workspace>/build/tmp/deploy/images/corstone1000-{mps3,fvp}/corstone1000-image-corstone1000-{mps3,fvp}.wic``
+ - The flash image: ``<_workspace>/build/tmp/deploy/images/corstone1000-{mps3,fvp}/corstone1000-flash-firmware-image-corstone1000-{mps3,fvp}.wic``
 
 Flash the firmware image on FPGA
 --------------------------------
@@ -252,17 +252,17 @@
 
   [IMAGES]
   TOTALIMAGES: 3      ;Number of Images (Max: 32)
-   
+
   IMAGE0PORT: 1
   IMAGE0ADDRESS: 0x00_0000_0000
   IMAGE0UPDATE: RAM
   IMAGE0FILE: \SOFTWARE\bl1.bin
-   
+
   IMAGE1PORT: 0
   IMAGE1ADDRESS: 0x00_0000_0000
   IMAGE1UPDATE: AUTOQSPI
   IMAGE1FILE: \SOFTWARE\cs1000.bin
-   
+
   IMAGE2PORT: 2
   IMAGE2ADDRESS: 0x00_0000_0000
   IMAGE2UPDATE: RAM
@@ -273,7 +273,7 @@
 1. Copy ``bl1.bin`` from OUTPUT_DIR directory to SOFTWARE directory of the FPGA bundle.
 2. Copy ``es_flashfw.bin`` from OUTPUT_DIR directory to SOFTWARE directory of the FPGA bundle
    and rename the binary to ``es0.bin``.
-3. Copy ``corstone1000-image-corstone1000-mps3.wic`` from OUTPUT_DIR directory to SOFTWARE
+3. Copy ``corstone1000-flash-firmware-image-corstone1000-mps3.wic`` from OUTPUT_DIR directory to SOFTWARE
    directory of the FPGA bundle and rename the wic image to ``cs1000.bin``.
 
 **NOTE:** Renaming of the images are required because MCC firmware has
@@ -337,7 +337,7 @@
 
 ::
 
-<_workspace>/meta-arm/scripts/runfvp <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- --version
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp -- --version"
 
 The FVP can also be manually downloaded from the `Arm Ecosystem FVPs`_ page. On this page, navigate
 to "Corstone IoT FVPs" section to download the Corstone-1000 platform FVP installer.  Follow the
@@ -347,7 +347,7 @@
 
 ::
 
-<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm"
 
 When the script is executed, three terminal instances will be launched, one for the boot processor
 (aka Secure Enclave) processing element and two for the Host processing element. Once the FVP is
@@ -488,7 +488,7 @@
 
 ::
 
-   <_workspace>/meta-arm/scripts/runfvp <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="${<path-to-img>/ir_acs_live_image.img}" -C board.msd_mmc_2.p_mmc_file="${<path-to-img>/corstone1000-efi-partition.img}"
+   kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp -- -C board.msd_mmc.p_mmc_file="${<path-to-img>/ir_acs_live_image.img}" -C board.msd_mmc_2.p_mmc_file="${<path-to-img>/corstone1000-efi-partition.img}"
 
 Clean Secure Flash Before Testing (applicable to FPGA only)
 ===========================================================
@@ -510,7 +510,7 @@
 
 Replace the bl1.bin and cs1000.bin files on the SD card with following files:
   - The ROM firmware: <_workspace>/build/tmp/deploy/images/corstone1000-mps3/bl1.bin
-  - The flash image: <_workspace>/build/tmp/deploy/images/corstone1000-mps3/corstone1000-image-corstone1000-mps3.wic
+  - The flash image: <_workspace>/build/tmp/deploy/images/corstone1000-mps3/corstone1000-flash-firmware-image-corstone1000-mps3.wic
 
 Now reboot the board. This step erases the Corstone-1000 SecureEnclave flash
 completely, the user should expect following message from TF-M log (can be seen
@@ -626,7 +626,7 @@
 
   unxz ${<path-to-img>/ir-acs-live-image-generic-arm64.wic.xz}
 
-  <_workspace>/meta-arm/scripts/runfvp  --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic -C board.msd_mmc_2.p_mmc_file="${<path-to-img>/corstone1000-efi-partition.img}"
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic -C board.msd_mmc_2.p_mmc_file="${<path-to-img>/corstone1000-efi-partition.img}"
 
 The test results can be fetched using following commands:
 
@@ -658,7 +658,7 @@
   cd meta-arm
   git am 0001-embedded-a-corstone1000-sr-ir-workaround.patch
   cd ..
-  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot -c cleanall; bitbake trusted-firmware-a -c cleanall; bitbake corstone1000-image -c cleanall; bitbake corstone1000-image"
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "bitbake u-boot -c cleanall; bitbake trusted-firmware-a -c cleanall; bitbake corstone1000-flash-firmware-image -c cleanall; bitbake corstone1000-flash-firmware-image"
 
 
 Common to FVP and FPGA
@@ -833,7 +833,7 @@
 
 ::
 
-   <_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic
+   kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic"
 
 **NOTE:** <path-to-img> must start from the root directory. make sure there are no spaces before or after of "=". board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic.
 
@@ -857,25 +857,25 @@
 
   FS0:
 
-In case of the positive scenario run the update with the higher version capsule as shown below: 
+In case of the positive scenario run the update with the higher version capsule as shown below:
 
 ::
-  
+
   EFI/BOOT/app/CapsuleApp.efi cs1k_cap_<fvp/mps3>_v6
 
 After successfully updating the capsule the system will reset.
 
-In case of the negative scenario run the update with the lower version capsule as shown below: 
+In case of the negative scenario run the update with the lower version capsule as shown below:
 
 ::
-  
+
   EFI/BOOT/app/CapsuleApp.efi cs1k_cap_<fvp/mps3>_v5
 
 The command above should fail and in the TF-M logs the following message should appear:
 
 ::
 
-   ERROR: flash_full_capsule: version error 
+   ERROR: flash_full_capsule: version error
 
 Then, reboot manually:
 
@@ -942,7 +942,7 @@
 
    # cd /sys/firmware/efi/esrt/entries/entry0
    # cat *
-    
+
    0x0
    989f3a4e-46e0-4cd0-9877-a25c70c01329
    0
@@ -956,7 +956,7 @@
    fw_class:	989f3a4e-46e0-4cd0-9877-a25c70c01329
    fw_type:	0
    fw_version:	6
-   last_attempt_status:	0 
+   last_attempt_status:	0
    last_attempt_version:	6
    lowest_supported_fw_ver:	0
 
@@ -964,12 +964,12 @@
 Negative scenario (Applicable to FPGA only)
 ===========================================
 
-In the negative case scenario (rollback the capsule version), the user should 
-see appropriate logs in the secure enclave terminal. 
+In the negative case scenario (rollback the capsule version), the user should
+see appropriate logs in the secure enclave terminal.
 
 ::
 
-  ...  
+  ...
     uefi_capsule_retrieve_images: image 0 at 0xa0000070, size=15654928
     uefi_capsule_retrieve_images: exit
     flash_full_capsule: enter: image = 0x0xa0000070, size = 7764541, version = 5
@@ -988,8 +988,8 @@
   ...
 
 
-If capsule pass initial verification, but fails verifications performed during 
-boot time, secure enclave will try new images predetermined number of times 
+If capsule pass initial verification, but fails verifications performed during
+boot time, secure enclave will try new images predetermined number of times
 (defined in the code), before reverting back to the previous good bank.
 
 ::
@@ -1007,7 +1007,7 @@
 
    # cd /sys/firmware/efi/esrt/entries/entry0
    # cat *
-    
+
    0x0
    989f3a4e-46e0-4cd0-9877-a25c70c01329
    0
@@ -1035,7 +1035,7 @@
 -------------------
 
 *************************************************************
-Debian install and boot preparation 
+Debian install and boot preparation
 *************************************************************
 
 There is a known issue in the `Shim 15.7 <https://salsa.debian.org/efi-team/shim/-/tree/upstream/15.7?ref_type=tags>`__
@@ -1064,12 +1064,12 @@
 **On FPGA**
 ::
 
-  kas shell meta-arm/kas/corstone1000-mps3.yml:meta-arm/ci/debug.yml -c="bitbake u-boot trusted-firmware-a corstone1000-image -c cleansstate; bitbake corstone1000-image"
+  kas shell meta-arm/kas/corstone1000-mps3.yml:meta-arm/ci/debug.yml -c="bitbake u-boot trusted-firmware-a corstone1000-flash-firmware-image -c cleansstate; bitbake corstone1000-flash-firmware-image"
 
 **On FVP**
 ::
 
-  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot trusted-firmware-a corstone1000-image -c cleansstate; bitbake corstone1000-image"
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot trusted-firmware-a corstone1000-flash-firmware-image -c cleansstate; bitbake corstone1000-flash-firmware-image"
 
 On FPGA, please update the cs1000.bin on the SD card with the newly generated wic file.
 
@@ -1080,7 +1080,7 @@
   cd <_workspace>/meta-arm
   git reset --hard HEAD~1
   cd ..
-  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot -c cleanall; bitbake trusted-firmware-a -c cleanall; bitbake corstone1000-image -c cleanall; bitbake corstone1000-image"
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot -c cleanall; bitbake trusted-firmware-a -c cleanall; bitbake corstone1000-flash-firmware-image -c cleanall; bitbake corstone1000-flash-firmware-image"
 
 *************************************************
 Preparing the Installation Media
@@ -1089,7 +1089,7 @@
 Download one of following Linux distro images:
  - `Debian installer image <https://cdimage.debian.org/debian-cd/current/arm64/iso-dvd/>`__ (Tested on: debian-12.2.0-arm64-DVD-1.iso)
  - `OpenSUSE Tumbleweed installer image <http://download.opensuse.org/ports/aarch64/tumbleweed/iso/>`__ (Tested on: openSUSE-Tumbleweed-DVD-aarch64-Snapshot20231120-Media.iso)
-  
+
 **NOTE:** For OpenSUSE Tumbleweed, the user should look for a DVD Snapshot like
 openSUSE-Tumbleweed-DVD-aarch64-Snapshot<date>-Media.iso
 
@@ -1100,7 +1100,7 @@
 To test Linux distro install and boot on FPGA, the user should prepare two empty USB
 sticks (minimum size should be 4GB and formatted with FAT32).
 
-The downloaded iso file needs to be flashed to your USB drive. 
+The downloaded iso file needs to be flashed to your USB drive.
 This can be done with your development machine.
 
 In the example given below, we assume the USB device is ``/dev/sdb`` (the user
@@ -1157,10 +1157,10 @@
 
 ::
 
-  <_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="<path-to-iso_file>" -C board.msd_mmc_2.p_mmc_file="<_workspace>/mmc2_file.img"
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file="<path-to-iso_file>" -C board.msd_mmc_2.p_mmc_file="<_workspace>/mmc2_file.img"
 
 The installer should now start.
-The os will be installed on the second mmc 'mmc2_file.img'. 
+The os will be installed on the second mmc 'mmc2_file.img'.
 
 *******************************************************
 Debian install clarifications
@@ -1209,24 +1209,23 @@
 Once the installation is complete, unplug the first USB stick and reboot the
 board.
 The board will then enter recovery mode, from which the user can access a shell
-after entering the password for the root user. 
+after entering the password for the root user.
 
 FVP
 ==============
-Once the installation is complete, you will need to exit the shell instance 
+Once the installation is complete, you will need to exit the shell instance
 and run this command to boot into the installed OS:
 
-:: 
+::
 
-  <_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="<_workspace>/mmc2_file.img"
-
+  kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c "../meta-arm/scripts/runfvp --terminals=xterm -- -C board.msd_mmc.p_mmc_file="<path-to-iso_file>" -C board.msd_mmc.p_mmc_file="<_workspace>/mmc2_file.img"
 
 Once the FVP begins booting, you will need to quickly change the boot option in grub,
-to boot into recovery mode. 
+to boot into recovery mode.
 
 **NOTE:** This option will disappear quickly, so it's best to preempt it.
 
-Select 'Advanced Options for '<OS>' and then '<OS> (recovery mode)'. 
+Select 'Advanced Options for '<OS>' and then '<OS> (recovery mode)'.
 
 Common
 ==============
@@ -1247,7 +1246,7 @@
 
   The system.conf has been moved from /etc/systemd/ to /usr/lib/systemd/ and directly modifying
   the /usr/lib/systemd/system.conf is not working and it is getting overridden. We have to create
-  drop ins system configurations in /etc/systemd/system.conf.d/ directory. So, copy the 
+  drop ins system configurations in /etc/systemd/system.conf.d/ directory. So, copy the
   /usr/lib/systemd/system.conf to /etc/systemd/system.conf.d/ directory after the mentioned modifications.
 
 The file to be edited next is different depending on the installed distro:
@@ -1338,7 +1337,7 @@
 
 --------------
 
-*Copyright (c) 2022-2023, Arm Limited. All rights reserved.*
+*Copyright (c) 2022-2024, Arm Limited. All rights reserved.*
 
 .. _Arm Ecosystem FVPs: https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
 .. _U-Boot repo: https://github.com/u-boot/u-boot.git
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc
index 41d8f44..c89b132 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-n1sdp.inc
@@ -13,9 +13,6 @@
 EXTRA_OECMAKE:append = " \
     -DSCP_N1SDP_SENSOR_LIB_PATH=${RECIPE_SYSROOT}/n1sdp-board-firmware_source/LIB/sensor.a \
 "
-# scp-firmware version aligning to Arm Reference Solutions N1SDP-2023.06.22 Release
-SRCREV = "543ae8ca3c9e38da3058311118fa3ceef1da47f7"
-PV .= "+git"
 
 do_install:append() {
    fiptool \
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-sgi575.inc b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-sgi575.inc
index 3413822..79a41a0 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-sgi575.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-sgi575.inc
@@ -1,5 +1,6 @@
 # SGI575 specific SCP configurations and build instructions
 
 COMPATIBLE_MACHINE:sgi575 = "sgi575"
+SCP_PRODUCT_GROUP = "neoverse-rd"
 
 SCP_LOG_LEVEL = "INFO"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-tc.inc b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-tc.inc
index 2c65635..8716059 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-tc.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/scp-firmware/scp-firmware-tc.inc
@@ -1,5 +1,6 @@
 # TC specific SCP configuration
 
 COMPATIBLE_MACHINE = "(tc1)"
+SCP_PRODUCT_GROUP = "totalcompute"
 
 FW_TARGETS = "scp"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0002-feat-corstone1000-bl2-loads-fip-based-on-metadata.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0002-feat-corstone1000-bl2-loads-fip-based-on-metadata.patch
deleted file mode 100644
index e26fd34..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0002-feat-corstone1000-bl2-loads-fip-based-on-metadata.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-From fa7ab9b40babee29d2aadb267dfce7a96f8989d4 Mon Sep 17 00:00:00 2001
-From: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
-Date: Mon, 9 Jan 2023 13:59:06 +0000
-Subject: [PATCH] feat(corstone1000): bl2 loads fip based on metadata
-
-Previously bl2 was reading the boot_index directly with a hard coded
-address and then set the fip image spec with fip offsets base based on
-the boot_index value.
-This commit removes this logic and rely on PSA_FWU_SUPPORT
-which reads the fip partition based on the active firmware bank written in
-metadata.
-
-Note: fip partition contains signature area at the begining. Hence, the fip
-image starts at fip partition + fip signature area size.
-
-Upstream-Status: Pending
-Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
----
- bl2/bl2_main.c                                |  4 +++
- .../corstone1000/common/corstone1000_plat.c   | 32 ++++++-------------
- .../common/include/platform_def.h             | 12 +++----
- tools/cert_create/Makefile                    |  4 +--
- tools/fiptool/Makefile                        |  4 +--
- 5 files changed, 24 insertions(+), 32 deletions(-)
-
-diff --git a/bl2/bl2_main.c b/bl2/bl2_main.c
-index ce83692e0ebc..1a9febc007b2 100644
---- a/bl2/bl2_main.c
-+++ b/bl2/bl2_main.c
-@@ -87,6 +87,10 @@ void bl2_main(void)
- 	/* Perform remaining generic architectural setup in S-EL1 */
- 	bl2_arch_setup();
- 
-+#if ARM_GPT_SUPPORT
-+	partition_init(GPT_IMAGE_ID);
-+#endif
-+
- #if PSA_FWU_SUPPORT
- 	fwu_init();
- #endif /* PSA_FWU_SUPPORT */
-diff --git a/plat/arm/board/corstone1000/common/corstone1000_plat.c b/plat/arm/board/corstone1000/common/corstone1000_plat.c
-index 0235f8b8474c..7f9708a82489 100644
---- a/plat/arm/board/corstone1000/common/corstone1000_plat.c
-+++ b/plat/arm/board/corstone1000/common/corstone1000_plat.c
-@@ -33,36 +33,17 @@ const mmap_region_t plat_arm_mmap[] = {
- static void set_fip_image_source(void)
- {
- 	const struct plat_io_policy *policy;
--	/*
--	 * metadata for firmware update is written at 0x0000 offset of the flash.
--	 * PLAT_ARM_BOOT_BANK_FLAG contains the boot bank that TF-M is booted.
--	 * As per firmware update spec, at a given point of time, only one bank
--	 * is active. This means, TF-A should boot from the same bank as TF-M.
--	 */
--	volatile uint32_t *boot_bank_flag = (uint32_t *)(PLAT_ARM_BOOT_BANK_FLAG);
--
--	if (*boot_bank_flag > 1) {
--		VERBOSE("Boot_bank is set higher than possible values");
--	}
--
--	VERBOSE("Boot bank flag = %u.\n\r", *boot_bank_flag);
- 
- 	policy = FCONF_GET_PROPERTY(arm, io_policies, FIP_IMAGE_ID);
- 
- 	assert(policy != NULL);
- 	assert(policy->image_spec != 0UL);
- 
-+	/* FIP Partition contains Signature area at the begining which TF-A doesn't expect */
- 	io_block_spec_t *spec = (io_block_spec_t *)policy->image_spec;
-+	spec->offset += FIP_SIGNATURE_AREA_SIZE;
-+	spec->length -= FIP_SIGNATURE_AREA_SIZE;
- 
--	if ((*boot_bank_flag) == 0) {
--		VERBOSE("Booting from bank 0: fip offset = 0x%lx\n\r",
--						PLAT_ARM_FIP_BASE_BANK0);
--		spec->offset = PLAT_ARM_FIP_BASE_BANK0;
--	} else {
--		VERBOSE("Booting from bank 1: fip offset = 0x%lx\n\r",
--						PLAT_ARM_FIP_BASE_BANK1);
--		spec->offset = PLAT_ARM_FIP_BASE_BANK1;
--	}
- }
- 
- void bl2_platform_setup(void)
-@@ -75,6 +56,13 @@ void bl2_platform_setup(void)
- 	set_fip_image_source();
- }
- 
-+void bl2_early_platform_setup2(u_register_t arg0, u_register_t arg1,
-+			       u_register_t arg2, u_register_t arg3)
-+{
-+	arm_bl2_early_platform_setup((uintptr_t)arg0, (meminfo_t *)arg1);
-+	NOTICE("CS1k: early at bl2_platform_setup\n");
-+}
-+
- /* corstone1000 only has one always-on power domain and there
-  * is no power control present
-  */
-diff --git a/plat/arm/board/corstone1000/common/include/platform_def.h b/plat/arm/board/corstone1000/common/include/platform_def.h
-index 584d485f3ea7..0bfab05a482b 100644
---- a/plat/arm/board/corstone1000/common/include/platform_def.h
-+++ b/plat/arm/board/corstone1000/common/include/platform_def.h
-@@ -173,16 +173,16 @@
- 
- /* NOR Flash */
- 
--#define PLAT_ARM_BOOT_BANK_FLAG		UL(0x08002000)
--#define PLAT_ARM_FIP_BASE_BANK0		UL(0x081EF000)
--#define PLAT_ARM_FIP_BASE_BANK1		UL(0x0916F000)
--#define PLAT_ARM_FIP_MAX_SIZE		UL(0x1ff000)  /* 1.996 MB */
--
- #define PLAT_ARM_NVM_BASE		V2M_FLASH0_BASE
- #define PLAT_ARM_NVM_SIZE		(SZ_32M)  /* 32 MB */
-+#define PLAT_ARM_FIP_MAX_SIZE		UL(0x1ff000)  /* 1.996 MB */
- 
--#define PLAT_ARM_FLASH_IMAGE_BASE	PLAT_ARM_FIP_BASE_BANK0
-+#define PLAT_ARM_FLASH_IMAGE_BASE	UL(0x08000000)
- #define PLAT_ARM_FLASH_IMAGE_MAX_SIZE	PLAT_ARM_FIP_MAX_SIZE
-+#define PLAT_ARM_FIP_OFFSET_IN_GPT	(0x86000)
-+
-+/* FIP Information */
-+#define FIP_SIGNATURE_AREA_SIZE         (0x1000)      /* 4 KB */
- 
- /*
-  * Some data must be aligned on the biggest cache line size in the platform.
-diff --git a/tools/cert_create/Makefile b/tools/cert_create/Makefile
-index 042e844626bd..45b76a022f91 100644
---- a/tools/cert_create/Makefile
-+++ b/tools/cert_create/Makefile
-@@ -78,8 +78,8 @@ INC_DIR += -I ./include -I ${PLAT_INCLUDE} -I ${OPENSSL_DIR}/include
- # directory. However, for a local build of OpenSSL, the built binaries are
- # located under the main project directory (i.e.: ${OPENSSL_DIR}, not
- # ${OPENSSL_DIR}/lib/).
--LIB_DIR := -L ${OPENSSL_DIR}/lib -L ${OPENSSL_DIR}
--LIB := -lssl -lcrypto
-+LIB_DIR := -L ${OPENSSL_DIR}/lib -L ${OPENSSL_DIR} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS}
-+LIB := -lssl -lcrypto ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS}
- 
- HOSTCC ?= gcc
- 
-diff --git a/tools/fiptool/Makefile b/tools/fiptool/Makefile
-index 2ebee33931ba..dcfd314bee89 100644
---- a/tools/fiptool/Makefile
-+++ b/tools/fiptool/Makefile
-@@ -39,7 +39,7 @@ HOSTCCFLAGS += -DUSING_OPENSSL3=$(USING_OPENSSL3)
- # directory. However, for a local build of OpenSSL, the built binaries are
- # located under the main project directory (i.e.: ${OPENSSL_DIR}, not
- # ${OPENSSL_DIR}/lib/).
--LDLIBS := -L${OPENSSL_DIR}/lib -L${OPENSSL_DIR} -lcrypto
-+LDLIBS := -L${OPENSSL_DIR}/lib -L${OPENSSL_DIR} -lcrypto ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS} ${BUILD_LDFLAGS}
- 
- ifeq (${V},0)
-   Q := @
-@@ -47,7 +47,7 @@ else
-   Q :=
- endif
- 
--INCLUDE_PATHS := -I../../include/tools_share  -I${OPENSSL_DIR}/include
-+INCLUDE_PATHS := -I../../include/tools_share  -I${OPENSSL_DIR}/include ${BUILD_CFLAGS} ${BUILD_CFLAGS} ${BUILD_CFLAGS} ${BUILD_CFLAGS} ${BUILD_CFLAGS} ${BUILD_CFLAGS}
- 
- HOSTCC ?= gcc
- 
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0002-fix-corstone1000-pass-spsr-value-explicitly.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0002-fix-corstone1000-pass-spsr-value-explicitly.patch
new file mode 100644
index 0000000..4a08abb
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0002-fix-corstone1000-pass-spsr-value-explicitly.patch
@@ -0,0 +1,32 @@
+From d70a07562d3b0a7b4441922fd3ce136565927d04 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <Emekcan.Aras@arm.com>
+Date: Wed, 21 Feb 2024 07:57:36 +0000
+Subject: [PATCH] fix(corstone1000): pass spsr value explicitly
+
+Passes spsr value for BL32 (OPTEE) explicitly between different boot
+stages.
+
+Upstream-Status: Pending
+Signed-off-by: Emekcan Aras <Emekcan.Aras@arm.com>
+---
+ .../corstone1000/common/corstone1000_bl2_mem_params_desc.c     | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/plat/arm/board/corstone1000/common/corstone1000_bl2_mem_params_desc.c b/plat/arm/board/corstone1000/common/corstone1000_bl2_mem_params_desc.c
+index fe521a9fa..2cc096f38 100644
+--- a/plat/arm/board/corstone1000/common/corstone1000_bl2_mem_params_desc.c
++++ b/plat/arm/board/corstone1000/common/corstone1000_bl2_mem_params_desc.c
+@@ -72,7 +72,8 @@ static bl_mem_params_node_t bl2_mem_params_descs[] = {
+ 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
+ 			VERSION_2, entry_point_info_t, NON_SECURE | EXECUTABLE),
+ 		.ep_info.pc = BL33_BASE,
+-
++		.ep_info.spsr = SPSR_64(MODE_EL2, MODE_SP_ELX,
++				       DISABLE_ALL_EXCEPTIONS),
+ 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
+ 			VERSION_2, image_info_t, 0),
+ 		.image_info.image_base = BL33_BASE,
+-- 
+2.25.1
+
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-fix-spmd-remove-EL3-interrupt-registration.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-fix-spmd-remove-EL3-interrupt-registration.patch
new file mode 100644
index 0000000..ea7a291
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-fix-spmd-remove-EL3-interrupt-registration.patch
@@ -0,0 +1,54 @@
+From 684b8f88238f522b52eb102485762e02e6b1671a Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <Emekcan.Aras@arm.com>
+Date: Fri, 23 Feb 2024 13:17:59 +0000
+Subject: [PATCH] fix(spmd): remove EL3 interrupt registration
+
+This configuration should not be done for corstone1000 and similar
+platforms. GICv2 systems only support EL3 interrupts and can have SEL1 component
+as SPMC.
+
+Signed-off-by: Emekcan Aras <Emekcan.Aras@arm.com>
+Upstream-Status: Inappropriate [Discussions of fixing this in a better way is ongoing in upstream]
+---
+ services/std_svc/spmd/spmd_main.c | 24 ------------------------
+ 1 file changed, 24 deletions(-)
+
+diff --git a/services/std_svc/spmd/spmd_main.c b/services/std_svc/spmd/spmd_main.c
+index 066571e9b..313f05bf3 100644
+--- a/services/std_svc/spmd/spmd_main.c
++++ b/services/std_svc/spmd/spmd_main.c
+@@ -580,30 +580,6 @@ static int spmd_spmc_init(void *pm_addr)
+ 		panic();
+ 	}
+ 
+-	/*
+-	 * Permit configurations where the SPM resides at S-EL1/2 and upon a
+-	 * Group0 interrupt triggering while the normal world runs, the
+-	 * interrupt is routed either through the EHF or directly to the SPMD:
+-	 *
+-	 * EL3_EXCEPTION_HANDLING=0: the Group0 interrupt is routed to the SPMD
+-	 *                   for handling by spmd_group0_interrupt_handler_nwd.
+-	 *
+-	 * EL3_EXCEPTION_HANDLING=1: the Group0 interrupt is routed to the EHF.
+-	 *
+-	 */
+-#if (EL3_EXCEPTION_HANDLING == 0)
+-	/*
+-	 * Register an interrupt handler routing Group0 interrupts to SPMD
+-	 * while the NWd is running.
+-	 */
+-	rc = register_interrupt_type_handler(INTR_TYPE_EL3,
+-					     spmd_group0_interrupt_handler_nwd,
+-					     flags);
+-	if (rc != 0) {
+-		panic();
+-	}
+-#endif
+-
+ 	return 0;
+ }
+ 
+-- 
+2.25.1
+
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-psci-SMCCC_ARCH_FEATURES-discovery-through-PSCI_FEATURES.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-psci-SMCCC_ARCH_FEATURES-discovery-through-PSCI_FEATURES.patch
deleted file mode 100644
index 2a7cd47..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0003-psci-SMCCC_ARCH_FEATURES-discovery-through-PSCI_FEATURES.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 16937460429d6bcd502b21c20d16222541ed8d48 Mon Sep 17 00:00:00 2001
-From: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
-Date: Mon, 6 Mar 2023 15:57:59 +0000
-Subject: [PATCH] psci: SMCCC_ARCH_FEATURES discovery through PSCI_FEATURES
-
-allow normal world use PSCI_FEATURES to discover SMCCC_ARCH_FEATURES
-
-Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
-Upstream-Status: Inappropriate [A U-Boot patch will be released to fix an issue in the PSCI driver]
----
- lib/psci/psci_main.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/psci/psci_main.c b/lib/psci/psci_main.c
-index a631f3ffbf..cc8904b006 100644
---- a/lib/psci/psci_main.c
-+++ b/lib/psci/psci_main.c
-@@ -337,7 +337,7 @@ int psci_features(unsigned int psci_fid)
- {
- 	unsigned int local_caps = psci_caps;
- 
--	if (psci_fid == SMCCC_VERSION)
-+	if (psci_fid == SMCCC_VERSION || psci_fid == SMCCC_ARCH_FEATURES)
- 		return PSCI_E_SUCCESS;
- 
- 	/* Check if it is a 64 bit function */
--- 
-2.25.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0004-fix-corstone1000-add-cpuhelper-to-makefile.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0004-fix-corstone1000-add-cpuhelper-to-makefile.patch
deleted file mode 100644
index 6ddde10..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/corstone1000/0004-fix-corstone1000-add-cpuhelper-to-makefile.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 33078d8ef143e8c79f06399de46dd26e1d53a220 Mon Sep 17 00:00:00 2001
-From: Gauri Sahnan <Gauri.Sahnan@arm.com>
-Date: Tue, 8 Aug 2023 17:16:51 +0100
-Subject: fix(corstone1000): add cpuhelpers to makefile
-
-Adds cpu_helpers.S to the Makefile to align with the changes in new
-trusted-firmware-a version.
-
-Signed-off-by: Gauri Sahnan <Gauri.Sahnan@arm.com>
-Upstream-Status: Pending [Not submitted to upstream yet]
----
- plat/arm/board/corstone1000/platform.mk | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/plat/arm/board/corstone1000/platform.mk b/plat/arm/board/corstone1000/platform.mk
-index 3edffe087..079e9d6c1 100644
---- a/plat/arm/board/corstone1000/platform.mk
-+++ b/plat/arm/board/corstone1000/platform.mk
-@@ -43,6 +43,7 @@ BL2_SOURCES		+=	plat/arm/board/corstone1000/common/corstone1000_security.c		\
- 				plat/arm/board/corstone1000/common/corstone1000_err.c		\
- 				plat/arm/board/corstone1000/common/corstone1000_trusted_boot.c	\
- 				lib/utils/mem_region.c					\
-+				lib/cpus/aarch64/cpu_helpers.S \
- 				plat/arm/board/corstone1000/common/corstone1000_helpers.S		\
- 				plat/arm/board/corstone1000/common/corstone1000_plat.c		\
- 				plat/arm/board/corstone1000/common/corstone1000_bl2_mem_params_desc.c \
--- 
-2.25.1
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/0001-n1sdp-tftf-tests-to-skip.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/n1sdp/0001-n1sdp-tftf-tests-to-skip.patch
similarity index 100%
rename from meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/0001-n1sdp-tftf-tests-to-skip.patch
rename to meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/files/n1sdp/0001-n1sdp-tftf-tests-to-skip.patch
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/tf-a-tests_%.bbappend b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/tf-a-tests_%.bbappend
index 6421033..ec1158c 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/tf-a-tests_%.bbappend
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/tf-a-tests_%.bbappend
@@ -3,7 +3,6 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
 
 COMPATIBLE_MACHINE:corstone1000 = "corstone1000"
-SRCREV:corstone1000 = "5f591f67738a1bbe6b262c53d9dad46ed8bbcd67"
 EXTRA_OEMAKE:append:corstone1000 = " DEBUG=0"
 EXTRA_OEMAKE:append:corstone1000 = " LOG_LEVEL=30"
 TFTF_MODE:corstone1000 = "release"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc
index 8673199..e061b94 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a-corstone1000.inc
@@ -5,9 +5,8 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/files/corstone1000:"
 SRC_URI:append = " \
 	file://0001-Fix-FF-A-version-in-SPMC-manifest.patch \
-	file://0002-feat-corstone1000-bl2-loads-fip-based-on-metadata.patch \
-	file://0003-psci-SMCCC_ARCH_FEATURES-discovery-through-PSCI_FEATURES.patch \
-	file://0004-fix-corstone1000-add-cpuhelper-to-makefile.patch \
+	file://0002-fix-corstone1000-pass-spsr-value-explicitly.patch \
+	file://0003-fix-spmd-remove-EL3-interrupt-registration.patch \
        "
 
 TFA_DEBUG = "1"
@@ -51,4 +50,5 @@
                         ERRATA_A35_855472=1 \
                         ROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem \
                         BL32=${RECIPE_SYSROOT}/${nonarch_base_libdir}/firmware/tee-pager_v2.bin \
+                        FVP_USE_GIC_DRIVER=FVP_GICV2 \
                         "
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/0002-arm-trusted-firmware-m-disable-address-warnings-into.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/0002-arm-trusted-firmware-m-disable-address-warnings-into.patch
new file mode 100644
index 0000000..1f19f55
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/0002-arm-trusted-firmware-m-disable-address-warnings-into.patch
@@ -0,0 +1,26 @@
+From 961d2e3718e9e6d652cadf5b4d3597cfe822dd04 Mon Sep 17 00:00:00 2001
+From: Ali Can Ozaslan <ali.oezaslan@arm.com>
+Date: Wed, 24 Jan 2024 16:10:08 +0000
+Subject: [PATCH] arm/trusted-firmware-m: disable address warnings into an
+ error
+
+Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
+Signed-off-by: Ali Can Ozaslan <ali.oezaslan@arm.com>
+Upstream-Status: Inappropriate
+
+---
+ toolchain_GNUARM.cmake | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/toolchain_GNUARM.cmake b/toolchain_GNUARM.cmake
+index b6ae50ec3..4c2f5b3d7 100644
+--- a/toolchain_GNUARM.cmake
++++ b/toolchain_GNUARM.cmake
+@@ -111,6 +111,7 @@ add_compile_options(
+     -Wno-format
+     -Wno-return-type
+     -Wno-unused-but-set-variable
++    -Wno-error=address
+     -c
+     -fdata-sections
+     -ffunction-sections
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-Increase-BL2-size-in-flash-lay.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-Increase-BL2-size-in-flash-lay.patch
deleted file mode 100644
index 4f00ea2..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-Platform-corstone1000-Increase-BL2-size-in-flash-lay.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 60598f3b44237bd5038e33400e749ec1e7e8fbda Mon Sep 17 00:00:00 2001
-From: Emekcan Aras <emekcan.aras@arm.com>
-Date: Mon, 15 May 2023 10:42:23 +0100
-Subject: [PATCH] Platform: corstone1000: Increase BL2 size in flash layout
-
-Increases BL2 size to align with the flash page size in corstone1000.
-
-Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
-Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/24103]
-
----
- platform/ext/target/arm/corstone1000/partition/flash_layout.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-index 41b4c6323f..bfe8c4fb3c 100644
---- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-+++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
-@@ -89,7 +89,7 @@
- #endif
- 
- /* Static Configurations of the Flash */
--#define SE_BL2_PARTITION_SIZE           (0x18800)    /* 98 KB */
-+#define SE_BL2_PARTITION_SIZE           (0x19000)    /* 98 KB */
- #define SE_BL2_BANK_0_OFFSET            (0x9000)  /* 72nd LBA */
- #define SE_BL2_BANK_1_OFFSET            (0x1002000)  /* 32784th LBA */
- 
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-platform-corstone1000-Update-MPU-configuration.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-platform-corstone1000-Update-MPU-configuration.patch
new file mode 100644
index 0000000..25e53b5
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0001-platform-corstone1000-Update-MPU-configuration.patch
@@ -0,0 +1,274 @@
+From eb096e4c03b80f9f31e5d15ca06e5a38e4112664 Mon Sep 17 00:00:00 2001
+From: Bence Balogh <bence.balogh@arm.com>
+Date: Tue, 7 Nov 2023 20:25:49 +0100
+Subject: [PATCH 1/2] platform: corstone1000: Update MPU configuration
+
+In Armv6-M the MPU requires the regions to be aligned with
+region sizes.
+The commit aligns the different code/data sections using the
+alignment macros. The code/data sections can be covered by
+multiple MPU regions in order to save memory.
+
+Small adjustments had to be made in the memory layout in order to
+not overflow the flash:
+- Decreased TFM_PARTITION_SIZE
+- Increased S_UNPRIV_DATA_SIZE
+
+Added checks to the MPU configuration function for checking the
+MPU constraints:
+- Base address has to be aligned to the size
+- The minimum MPU region size is 0x100
+- The MPU can have 8 regions at most
+
+Change-Id: I059468e8aba0822bb354fd1cd4987ac2bb1f34d1
+Signed-off-by: Bence Balogh <bence.balogh@arm.com>
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/25393]
+
+---
+ .../target/arm/corstone1000/CMakeLists.txt    | 19 +++++
+ .../arm/corstone1000/create-flash-image.sh    |  8 +-
+ .../arm/corstone1000/partition/flash_layout.h |  2 +-
+ .../arm/corstone1000/partition/region_defs.h  |  6 +-
+ .../arm/corstone1000/tfm_hal_isolation.c      | 83 +++++++++++++++----
+ 5 files changed, 93 insertions(+), 25 deletions(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+index e6cf15b11..8817f514c 100644
+--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
++++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+@@ -22,6 +22,25 @@ target_compile_definitions(platform_region_defs
+     INTERFACE
+         $<$<BOOL:${TFM_S_REG_TEST}>:TFM_S_REG_TEST>
+ )
++
++# The Armv6-M MPU requires that the MPU regions be aligned to the region sizes.
++# The minimal region size is 0x100 bytes.
++#
++# The alignments have to be a power of two and ideally bigger than the section size (which
++# can be checked in the map file).
++# In some cases the alignment value is smaller than the actual section
++# size to save memory. In that case, multiple MPU region has to be configured to cover it.
++#
++# To save memory, the attributes are set to XN_EXEC_OK and AP_RO_PRIV_UNPRIV for
++# the SRAM so the PSA_ROT_LINKER_CODE, TFM_UNPRIV_CODE and APP_ROT_LINKER_CODE don't have to
++# be aligned. The higher-priority regions will overwrite these attributes if needed.
++# The RAM is also located in the SRAM so it has to be configured to overwrite these default
++# attributes.
++target_compile_definitions(platform_region_defs
++    INTERFACE
++        TFM_LINKER_APP_ROT_LINKER_DATA_ALIGNMENT=0x2000
++        TFM_LINKER_SP_META_PTR_ALIGNMENT=0x100
++)
+ #========================= Platform common defs ===============================#
+ 
+ # Specify the location of platform specific build dependencies.
+diff --git a/platform/ext/target/arm/corstone1000/create-flash-image.sh b/platform/ext/target/arm/corstone1000/create-flash-image.sh
+index 2522d3674..a6be61384 100755
+--- a/platform/ext/target/arm/corstone1000/create-flash-image.sh
++++ b/platform/ext/target/arm/corstone1000/create-flash-image.sh
+@@ -8,7 +8,7 @@
+ 
+ ######################################################################
+ # This script is to create a flash gpt image for corstone platform
+-# 
++#
+ #  Flash image layout:
+ #       |------------------------------|
+ #       |        Protective MBR        |
+@@ -82,15 +82,15 @@ sgdisk  --mbrtogpt \
+         --new=4:56:+4K --typecode=4:$PRIVATE_METADATA_TYPE_UUID --partition-guid=4:$(uuidgen) --change-name=4:'private_metadata_replica_1' \
+         --new=5:64:+4k --typecode=5:$PRIVATE_METADATA_TYPE_UUID --partition-guid=5:$(uuidgen) --change-name=5:'private_metadata_replica_2' \
+         --new=6:72:+100k --typecode=6:$SE_BL2_TYPE_UUID --partition-guid=6:$(uuidgen) --change-name=6:'bl2_primary' \
+-        --new=7:272:+376K --typecode=7:$TFM_TYPE_UUID --partition-guid=7:$(uuidgen) --change-name=7:'tfm_primary' \
++        --new=7:272:+368K --typecode=7:$TFM_TYPE_UUID --partition-guid=7:$(uuidgen) --change-name=7:'tfm_primary' \
+         --new=8:32784:+100k --typecode=8:$SE_BL2_TYPE_UUID --partition-guid=8:$(uuidgen) --change-name=8:'bl2_secondary' \
+-        --new=9:32984:+376K --typecode=9:$TFM_TYPE_UUID --partition-guid=9:$(uuidgen) --change-name=9:'tfm_secondary' \
++        --new=9:32984:+368K --typecode=9:$TFM_TYPE_UUID --partition-guid=9:$(uuidgen) --change-name=9:'tfm_secondary' \
+         --new=10:65496:65501  --partition-guid=10:$(uuidgen) --change-name=10:'reserved_2' \
+         $IMAGE
+ 
+ [ $? -ne 0 ] && echo "Error occurs while writing the GPT layout" && exit 1
+ 
+-# Write partitions 
++# Write partitions
+ # conv=notrunc avoids truncation to keep the geometry of the image.
+ dd if=$BIN_DIR/bl2_signed.bin of=${IMAGE}  seek=72 conv=notrunc
+ dd if=$BIN_DIR/tfm_s_signed.bin of=${IMAGE} seek=272 conv=notrunc
+diff --git a/platform/ext/target/arm/corstone1000/partition/flash_layout.h b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
+index 568c8de28..7fffd94c6 100644
+--- a/platform/ext/target/arm/corstone1000/partition/flash_layout.h
++++ b/platform/ext/target/arm/corstone1000/partition/flash_layout.h
+@@ -134,7 +134,7 @@
+ 
+ /* Bank configurations */
+ #define BANK_PARTITION_SIZE             (0xFE0000)   /* 15.875 MB */
+-#define TFM_PARTITION_SIZE              (0x5E000)    /* 376 KB */
++#define TFM_PARTITION_SIZE              (0x5C000)    /* 368 KB */
+ 
+ /************************************************************/
+ /* Bank : Images flash offsets are with respect to the bank */
+diff --git a/platform/ext/target/arm/corstone1000/partition/region_defs.h b/platform/ext/target/arm/corstone1000/partition/region_defs.h
+index 99e822f51..64ab786e5 100644
+--- a/platform/ext/target/arm/corstone1000/partition/region_defs.h
++++ b/platform/ext/target/arm/corstone1000/partition/region_defs.h
+@@ -1,8 +1,10 @@
+ /*
+- * Copyright (c) 2017-2022 Arm Limited. All rights reserved.
++ * Copyright (c) 2017-2023 Arm Limited. All rights reserved.
+  * Copyright (c) 2021-2023 Cypress Semiconductor Corporation (an Infineon company)
+  * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
+  *
++ * SPDX-License-Identifier: Apache-2.0
++ *
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+@@ -53,7 +55,7 @@
+ 
+ #define S_DATA_START            (SRAM_BASE + TFM_PARTITION_SIZE)
+ #define S_DATA_SIZE             (SRAM_SIZE - TFM_PARTITION_SIZE)
+-#define S_UNPRIV_DATA_SIZE      (0x2160)
++#define S_UNPRIV_DATA_SIZE      (0x4000)
+ #define S_DATA_LIMIT            (S_DATA_START + S_DATA_SIZE - 1)
+ #define S_DATA_PRIV_START       (S_DATA_START + S_UNPRIV_DATA_SIZE)
+ 
+diff --git a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
+index 01f7687bc..98e795dde 100644
+--- a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
++++ b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2020-2022, Arm Limited. All rights reserved.
++ * Copyright (c) 2020-2023, Arm Limited. All rights reserved.
+  * Copyright (c) 2022 Cypress Semiconductor Corporation (an Infineon
+  * company) or an affiliate of Cypress Semiconductor Corporation. All rights
+  * reserved.
+@@ -14,9 +14,11 @@
+ #include "tfm_hal_isolation.h"
+ #include "mpu_config.h"
+ #include "mmio_defs.h"
++#include "flash_layout.h"
+ 
+ #define PROT_BOUNDARY_VAL \
+     ((1U << HANDLE_ATTR_PRIV_POS) & HANDLE_ATTR_PRIV_MASK)
++#define MPU_REGION_MIN_SIZE (0x100)
+ 
+ #ifdef CONFIG_TFM_ENABLE_MEMORY_PROTECT
+ 
+@@ -31,20 +33,38 @@ REGION_DECLARE(Image$$, TFM_SP_META_PTR, $$ZI$$Base);
+ REGION_DECLARE(Image$$, TFM_SP_META_PTR, $$ZI$$Limit);
+ #endif /* CONFIG_TFM_PARTITION_META */
+ 
+-static void configure_mpu(uint32_t rnr, uint32_t base, uint32_t limit,
+-                          uint32_t is_xn_exec, uint32_t ap_permissions)
++static enum tfm_hal_status_t configure_mpu(uint32_t rnr, uint32_t base,
++                          uint32_t limit, uint32_t is_xn_exec, uint32_t ap_permissions)
+ {
+-    uint32_t size; /* region size */
++    uint32_t rbar_size_field; /* region size as it is used in the RBAR */
+     uint32_t rasr; /* region attribute and size register */
+     uint32_t rbar; /* region base address register */
+ 
+-    size = get_rbar_size_field(limit - base);
++    rbar_size_field = get_rbar_size_field(limit - base);
++
++    /* The MPU region's base address has to be aligned to the region
++     * size for a valid MPU configuration */
++    if ((base % (1 << (rbar_size_field + 1))) != 0) {
++        return TFM_HAL_ERROR_INVALID_INPUT;
++    }
++
++    /* The MPU supports only 8 memory regions */
++    if (rnr > 7) {
++        return TFM_HAL_ERROR_INVALID_INPUT;
++    }
++
++    /* The minimum size for a region is 0x100 bytes */
++    if((limit - base) < MPU_REGION_MIN_SIZE) {
++        return TFM_HAL_ERROR_INVALID_INPUT;
++    }
+ 
+     rasr = ARM_MPU_RASR(is_xn_exec, ap_permissions, TEX, NOT_SHAREABLE,
+-            NOT_CACHEABLE, NOT_BUFFERABLE, SUB_REGION_DISABLE, size);
++            NOT_CACHEABLE, NOT_BUFFERABLE, SUB_REGION_DISABLE, rbar_size_field);
+     rbar = base & MPU_RBAR_ADDR_Msk;
+ 
+     ARM_MPU_SetRegionEx(rnr, rbar, rasr);
++
++    return TFM_HAL_SUCCESS;
+ }
+ 
+ #endif /* CONFIG_TFM_ENABLE_MEMORY_PROTECT */
+@@ -56,33 +76,60 @@ enum tfm_hal_status_t tfm_hal_set_up_static_boundaries(
+     uint32_t rnr = TFM_ISOLATION_REGION_START_NUMBER; /* current region number */
+     uint32_t base; /* start address */
+     uint32_t limit; /* end address */
++    enum tfm_hal_status_t ret;
+ 
+     ARM_MPU_Disable();
+ 
+-    /* TFM Core unprivileged code region */
+-    base = (uint32_t)&REGION_NAME(Image$$, TFM_UNPRIV_CODE_START, $$RO$$Base);
+-    limit = (uint32_t)&REGION_NAME(Image$$, TFM_UNPRIV_CODE_END, $$RO$$Limit);
+-
+-    configure_mpu(rnr++, base, limit, XN_EXEC_OK, AP_RO_PRIV_UNPRIV);
+-
+-    /* RO region */
+-    base = (uint32_t)&REGION_NAME(Image$$, TFM_APP_CODE_START, $$Base);
+-    limit = (uint32_t)&REGION_NAME(Image$$, TFM_APP_CODE_END, $$Base);
++    /* Armv6-M MPU allows region overlapping. The region with the higher RNR
++     * will decide the attributes.
++     *
++     * The default attributes are set to XN_EXEC_OK and AP_RO_PRIV_UNPRIV for the
++     * whole SRAM so the PSA_ROT_LINKER_CODE, TFM_UNPRIV_CODE and APP_ROT_LINKER_CODE
++     * don't have to be aligned and memory space can be saved.
++     * This region has the lowest RNR so the next regions can overwrite these
++     * attributes if it's needed.
++     */
++    base = SRAM_BASE;
++    limit = SRAM_BASE + SRAM_SIZE;
++
++    ret = configure_mpu(rnr++, base, limit,
++                            XN_EXEC_OK, AP_RW_PRIV_UNPRIV);
++    if (ret != TFM_HAL_SUCCESS) {
++        return ret;
++    }
+ 
+-    configure_mpu(rnr++, base, limit, XN_EXEC_OK, AP_RO_PRIV_UNPRIV);
+ 
+     /* RW, ZI and stack as one region */
+     base = (uint32_t)&REGION_NAME(Image$$, TFM_APP_RW_STACK_START, $$Base);
+     limit = (uint32_t)&REGION_NAME(Image$$, TFM_APP_RW_STACK_END, $$Base);
+ 
+-    configure_mpu(rnr++, base, limit, XN_EXEC_NOT_OK, AP_RW_PRIV_UNPRIV);
++    /* The section size can be bigger than the alignment size, else the code would
++     * not fit into the memory. Because of this, the sections can use multiple MPU
++     * regions. */
++    do {
++        ret = configure_mpu(rnr++, base, base + TFM_LINKER_APP_ROT_LINKER_DATA_ALIGNMENT,
++                                XN_EXEC_NOT_OK, AP_RW_PRIV_UNPRIV);
++        if (ret != TFM_HAL_SUCCESS) {
++            return ret;
++        }
++        base += TFM_LINKER_APP_ROT_LINKER_DATA_ALIGNMENT;
++    } while (base < limit);
++
+ 
+ #ifdef CONFIG_TFM_PARTITION_META
+     /* TFM partition metadata pointer region */
+     base = (uint32_t)&REGION_NAME(Image$$, TFM_SP_META_PTR, $$ZI$$Base);
+     limit = (uint32_t)&REGION_NAME(Image$$, TFM_SP_META_PTR, $$ZI$$Limit);
+ 
+-    configure_mpu(rnr++, base, limit, XN_EXEC_NOT_OK, AP_RW_PRIV_UNPRIV);
++    do {
++        ret = configure_mpu(rnr++, base, base + TFM_LINKER_SP_META_PTR_ALIGNMENT,
++                                XN_EXEC_NOT_OK, AP_RW_PRIV_UNPRIV);
++        if (ret != TFM_HAL_SUCCESS) {
++            return ret;
++        }
++        base += TFM_LINKER_SP_META_PTR_ALIGNMENT;
++    } while (base < limit);
++
+ #endif
+ 
+     arm_mpu_enable();
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-Corstone1000-Increase-BL2_DATA_SIZE.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-Corstone1000-Increase-BL2_DATA_SIZE.patch
deleted file mode 100644
index 6bbd66f..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-Platform-Corstone1000-Increase-BL2_DATA_SIZE.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b05fb661b3afc3ed8e3d4817df2798e9d4877b39 Mon Sep 17 00:00:00 2001
-From: Emekcan Aras <emekcan.aras@arm.com>
-Date: Mon, 15 May 2023 10:46:18 +0100
-Subject: [PATCH] Platform: Corstone1000: Increase BL2_DATA_SIZE
-
-Increases BL2_DATA_SIZE to accommodate the changes in
-metadata_write/read.
-
-Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
-Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/24103]
-
----
- platform/ext/target/arm/corstone1000/partition/region_defs.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/partition/region_defs.h b/platform/ext/target/arm/corstone1000/partition/region_defs.h
-index abfac39b62..e7f0bad2ba 100644
---- a/platform/ext/target/arm/corstone1000/partition/region_defs.h
-+++ b/platform/ext/target/arm/corstone1000/partition/region_defs.h
-@@ -90,9 +90,10 @@
- #define BL2_CODE_SIZE     (IMAGE_BL2_CODE_SIZE)
- #define BL2_CODE_LIMIT    (BL2_CODE_START + BL2_CODE_SIZE - 1)
- 
-+#define BL2_DATA_ADDITIONAL 448 /* To increase the BL2_DATA_SIZE more than the default value */
- #define BL2_DATA_START    (BOOT_TFM_SHARED_DATA_BASE + \
-                            BOOT_TFM_SHARED_DATA_SIZE)
--#define BL2_DATA_SIZE     (BL2_CODE_START - BL2_HEADER_SIZE - BL2_DATA_START)
-+#define BL2_DATA_SIZE     (BL2_CODE_START - BL2_HEADER_SIZE - BL2_DATA_START + BL2_DATA_ADDITIONAL)
- #define BL2_DATA_LIMIT    (BL2_DATA_START + BL2_DATA_SIZE - 1)
- 
- /* SE BL1 regions */
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-platform-corstone1000-Cover-S_DATA-with-MPU.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-platform-corstone1000-Cover-S_DATA-with-MPU.patch
new file mode 100644
index 0000000..6676acf
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0002-platform-corstone1000-Cover-S_DATA-with-MPU.patch
@@ -0,0 +1,76 @@
+From ca7696bca357cfd71a34582c65a7c7c08828b6dc Mon Sep 17 00:00:00 2001
+From: Bence Balogh <bence.balogh@arm.com>
+Date: Mon, 18 Dec 2023 14:00:14 +0100
+Subject: [PATCH 2/2] platform: corstone1000: Cover S_DATA with MPU
+
+The S_DATA has to be covered with MPU regions to override the
+other MPU regions with smaller RNR values.
+
+Change-Id: I45fec65f51241939314941e25d287e6fdc82777c
+Signed-off-by: Bence Balogh <bence.balogh@arm.com>
+Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/25583]
+
+---
+ .../target/arm/corstone1000/CMakeLists.txt    |  8 +++++++
+ .../arm/corstone1000/tfm_hal_isolation.c      | 22 +++++++++++++++++++
+ 2 files changed, 30 insertions(+)
+
+diff --git a/platform/ext/target/arm/corstone1000/CMakeLists.txt b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+index 8817f514c..541504368 100644
+--- a/platform/ext/target/arm/corstone1000/CMakeLists.txt
++++ b/platform/ext/target/arm/corstone1000/CMakeLists.txt
+@@ -40,6 +40,14 @@ target_compile_definitions(platform_region_defs
+     INTERFACE
+         TFM_LINKER_APP_ROT_LINKER_DATA_ALIGNMENT=0x2000
+         TFM_LINKER_SP_META_PTR_ALIGNMENT=0x100
++
++        # The RAM MPU Region block sizes are calculated manually. The RAM has to be covered
++        # with the MPU regions. These regions also have to be the power of 2 and
++        # the start addresses have to be aligned to these sizes. The sizes can be calculated
++        # from the S_DATA_START and S_DATA_SIZE defines.
++        RAM_MPU_REGION_BLOCK_1_SIZE=0x4000
++        RAM_MPU_REGION_BLOCK_2_SIZE=0x20000
++
+ )
+ #========================= Platform common defs ===============================#
+ 
+diff --git a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
+index 98e795dde..39b19c535 100644
+--- a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
++++ b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
+@@ -15,6 +15,7 @@
+ #include "mpu_config.h"
+ #include "mmio_defs.h"
+ #include "flash_layout.h"
++#include "region_defs.h"
+ 
+ #define PROT_BOUNDARY_VAL \
+     ((1U << HANDLE_ATTR_PRIV_POS) & HANDLE_ATTR_PRIV_MASK)
+@@ -132,6 +133,27 @@ enum tfm_hal_status_t tfm_hal_set_up_static_boundaries(
+ 
+ #endif
+ 
++    /* Set the RAM attributes. It is needed because the first region overlaps the whole
++     * SRAM and it has to be overridden.
++     * The RAM_MPU_REGION_BLOCK_1_SIZE and RAM_MPU_REGION_BLOCK_2_SIZE are calculated manually
++     * and added to the platform_region_defs compile definitions.
++     */
++    base = S_DATA_START;
++    limit = S_DATA_START + RAM_MPU_REGION_BLOCK_1_SIZE;
++    ret = configure_mpu(rnr++, base, limit,
++                            XN_EXEC_NOT_OK, AP_RW_PRIV_UNPRIV);
++    if (ret != TFM_HAL_SUCCESS) {
++        return ret;
++    }
++
++    base = S_DATA_START + RAM_MPU_REGION_BLOCK_1_SIZE;
++    limit = S_DATA_START + RAM_MPU_REGION_BLOCK_1_SIZE + RAM_MPU_REGION_BLOCK_2_SIZE;
++    ret = configure_mpu(rnr++, base, limit,
++                            XN_EXEC_NOT_OK, AP_RW_PRIV_UNPRIV);
++    if (ret != TFM_HAL_SUCCESS) {
++        return ret;
++    }
++
+     arm_mpu_enable();
+ 
+ #endif /* CONFIG_TFM_ENABLE_MEMORY_PROTECT */
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-Corstone1000-Calculate-the-new-CRC32-value-.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-Corstone1000-Calculate-the-new-CRC32-value-.patch
deleted file mode 100644
index 7a07c0c..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-Corstone1000-Calculate-the-new-CRC32-value-.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 88cfce2e04913d48ec8636b6a3550d71ebdd49c4 Mon Sep 17 00:00:00 2001
-From: Emekcan Aras <emekcan.aras@arm.com>
-Date: Mon, 15 May 2023 10:47:27 +0100
-Subject: [PATCH] Platform: Corstone1000: Calculate the new CRC32 value after
- changing the metadata
-
-Calculates the new CRC32 value for the metadata struct after chaing a value
-during the capsule update. It also updates the CRC32 field in the metadata
-so it doesn't fail the CRC check after a succesfull capsule update.
-It also skips doing a sanity check the BL2 nv counter after the capsule
-update since the tfm bl1 does not sync metadata and nv counters in OTP during
-the boot anymore.
-
-Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
-Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/24104/7]
-
----
- .../arm/corstone1000/fw_update_agent/fwu_agent.c       | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-index afd8d66e42..f564f2902c 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-@@ -802,6 +802,8 @@ static enum fwu_agent_error_t flash_full_capsule(
-     }
-     metadata->active_index = previous_active_index;
-     metadata->previous_active_index = active_index;
-+    metadata->crc_32 = crc32((uint8_t *)&metadata->version,
-+                              sizeof(struct fwu_metadata) - sizeof(uint32_t));
- 
-     ret = metadata_write(metadata);
-     if (ret) {
-@@ -913,6 +915,8 @@ static enum fwu_agent_error_t accept_full_capsule(
-     if (ret) {
-         return ret;
-     }
-+    metadata->crc_32 = crc32((uint8_t *)&metadata->version,
-+                              sizeof(struct fwu_metadata) - sizeof(uint32_t));
- 
-     ret = metadata_write(metadata);
-     if (ret) {
-@@ -1007,6 +1011,8 @@ static enum fwu_agent_error_t fwu_select_previous(
-     if (ret) {
-         return ret;
-     }
-+    metadata->crc_32 = crc32((uint8_t *)&metadata->version,
-+                              sizeof(struct fwu_metadata) - sizeof(uint32_t));
- 
-     ret = metadata_write(metadata);
-     if (ret) {
-@@ -1119,8 +1125,7 @@ static enum fwu_agent_error_t update_nv_counters(
- 
-     FWU_LOG_MSG("%s: enter\n\r", __func__);
- 
--    for (int i = 0; i <= FWU_MAX_NV_COUNTER_INDEX; i++) {
--
-+    for (int i = 1; i <= FWU_MAX_NV_COUNTER_INDEX; i++) {
-         switch (i) {
-             case FWU_BL2_NV_COUNTER:
-                 tfm_nv_counter_i = PLAT_NV_COUNTER_BL1_0;
-@@ -1141,7 +1146,6 @@ static enum fwu_agent_error_t update_nv_counters(
-         if (err != TFM_PLAT_ERR_SUCCESS) {
-             return FWU_AGENT_ERROR;
-         }
--
-         if (priv_metadata->nv_counter[i] < security_cnt) {
-             return FWU_AGENT_ERROR;
-         } else if (priv_metadata->nv_counter[i] > security_cnt) {
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Fix-issues-due-to-adjustment-M.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Fix-issues-due-to-adjustment-M.patch
new file mode 100644
index 0000000..2360992
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0003-Platform-corstone1000-Fix-issues-due-to-adjustment-M.patch
@@ -0,0 +1,76 @@
+From f7b58b5ba5b48e071eb360c1bcfc4d31290a77c1 Mon Sep 17 00:00:00 2001
+From: Ali Can Ozaslan <ali.oezaslan@arm.com>
+Date: Tue, 5 Mar 2024 21:01:59 +0000
+Subject: [PATCH] Platform:corstone1000:Fix issues due to adjustment Mailbox
+ Agent params
+
+Adjust Mailbox Agent API parameters patch changed memory check and
+related parameters. As a result, platform-specific issues occurred.
+Secure side client IDs are converted to negative values. Control
+parameter is created.
+
+Signed-off-by: Bence Balogh <bence.balogh@arm.com>
+Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
+Signed-off-by: Ali Can Ozaslan <ali.oezaslan@arm.com>
+Upstream-Status: Pending
+
+---
+ .../tfm_spe_dual_core_psa_client_secure_lib.c | 23 +++++++++++++++----
+ 1 file changed, 18 insertions(+), 5 deletions(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/openamp/tfm_spe_dual_core_psa_client_secure_lib.c b/platform/ext/target/arm/corstone1000/openamp/tfm_spe_dual_core_psa_client_secure_lib.c
+index d2eabe144..39e11b8cd 100644
+--- a/platform/ext/target/arm/corstone1000/openamp/tfm_spe_dual_core_psa_client_secure_lib.c
++++ b/platform/ext/target/arm/corstone1000/openamp/tfm_spe_dual_core_psa_client_secure_lib.c
+@@ -18,6 +18,9 @@
+ #include "utilities.h"
+ #include "thread.h"
+ 
++#define SE_PROXY_SP_UID 0
++#define SMM_GW_SP_UID 0x8003
++
+ /**
+  * In linux environment and for psa_call type client api,
+  * the layout of the reply from tf-m to linux is as following.
+@@ -174,7 +177,14 @@ static psa_status_t prepare_params_for_psa_call(struct client_params_t *params,
+ {
+     psa_status_t ret = PSA_SUCCESS;
+ 
+-    params->ns_client_id_stateless = s_map_entry->msg.client_id;
++    if (s_map_entry->msg.client_id == SE_PROXY_SP_UID) {
++        params->ns_client_id_stateless = -1;
++    }
++    else if (s_map_entry->msg.client_id == SMM_GW_SP_UID) {
++        params->ns_client_id_stateless = -1 * s_map_entry->msg.client_id;
++    } else {
++        params->ns_client_id_stateless = s_map_entry->msg.client_id;
++    }
+ 
+     params->p_outvecs = NULL;
+     ret = alloc_and_prepare_out_vecs(&params->p_outvecs, s_map_entry);
+@@ -250,6 +260,9 @@ void deliver_msg_to_tfm_spe(void *private)
+     struct client_params_t params = {0};
+     psa_status_t psa_ret = PSA_ERROR_GENERIC_ERROR;
+     unordered_map_entry_t* s_map_entry = (unordered_map_entry_t*)private;
++    uint32_t control = PARAM_PACK(s_map_entry->msg.params.psa_call_params.type,
++                                  s_map_entry->msg.params.psa_call_params.in_len,
++                                  s_map_entry->msg.params.psa_call_params.out_len);
+ 
+     switch(s_map_entry->msg.call_type) {
+         case OPENAMP_PSA_FRAMEWORK_VERSION:
+@@ -266,11 +279,11 @@ void deliver_msg_to_tfm_spe(void *private)
+                 send_service_reply_to_non_secure(psa_ret, s_map_entry);
+                 break;
+             }
++            control = PARAM_SET_NS_INVEC(control);
++            control = PARAM_SET_NS_OUTVEC(control);
++            control = PARAM_SET_NS_VEC(control);           
+             psa_ret = tfm_rpc_psa_call(s_map_entry->msg.params.psa_call_params.handle,
+-                                       PARAM_PACK(s_map_entry->msg.params.psa_call_params.type,
+-                                                  s_map_entry->msg.params.psa_call_params.in_len,
+-                                                  s_map_entry->msg.params.psa_call_params.out_len),
+-                                       &params, NULL);
++                                       control, &params, NULL);
+             if (psa_ret != PSA_SUCCESS) {
+                 send_service_reply_to_non_secure(psa_ret, s_map_entry);
+                 break;
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-arm-trusted-firmware-m-disable-fatal-warnings.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-arm-trusted-firmware-m-disable-fatal-warnings.patch
deleted file mode 100644
index 07db4f6..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-arm-trusted-firmware-m-disable-fatal-warnings.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 04ce07d289e8cec75223349e9ebf7e69126fc04d Mon Sep 17 00:00:00 2001
-From: Jon Mason <jon.mason@arm.com>
-Date: Wed, 18 Jan 2023 15:13:37 -0500
-Subject: [PATCH] arm/trusted-firmware-m: disable fatal warnings
-
-Signed-off-by: Jon Mason <jon.mason@arm.com>
-Upstream-Status: Inappropriate
-
----
- toolchain_GNUARM.cmake | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/toolchain_GNUARM.cmake b/toolchain_GNUARM.cmake
-index 7989718515..a5939323d6 100644
---- a/toolchain_GNUARM.cmake
-+++ b/toolchain_GNUARM.cmake
-@@ -71,7 +71,6 @@ macro(tfm_toolchain_reset_linker_flags)
-         --entry=Reset_Handler
-         -specs=nano.specs
-         LINKER:-check-sections
--        LINKER:-fatal-warnings
-         LINKER:--gc-sections
-         LINKER:--no-wchar-size-warning
-         ${MEMORY_USAGE_FLAG}
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-platform-corstone1000-align-capsule-update-structs.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-platform-corstone1000-align-capsule-update-structs.patch
similarity index 100%
rename from meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0008-platform-corstone1000-align-capsule-update-structs.patch
rename to meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0004-platform-corstone1000-align-capsule-update-structs.patch
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-add-unique-firmware-GUID.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-add-unique-firmware-GUID.patch
deleted file mode 100644
index e4eba62..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-Platform-corstone1000-add-unique-firmware-GUID.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 3004fda909079ebebd62c495a4e49e64d6c8a85f Mon Sep 17 00:00:00 2001
-From: Anusmita Dutta Mazumder <anusmita.duttamazumder@arm.com>
-Date: Tue, 8 Aug 2023 10:58:01 +0000
-Subject: [PATCH] Platform corstone1000 add unique firmware GUID
-
-Add unique Corstone-1000 firmware GUID
-
-Signed-off-by: Anusmita Dutta Mazumder <anusmita.duttamazumder@arm.com>
-Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/24132/3]
----
- .../target/arm/corstone1000/fw_update_agent/fwu_agent.c   | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-index f564f2902c..9c31aeee9d 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
-@@ -113,10 +113,10 @@ enum fwu_agent_state_t {
- };
- 
- struct efi_guid full_capsule_image_guid = {
--    .time_low = 0xe2bb9c06,
--    .time_mid = 0x70e9,
--    .time_hi_and_version = 0x4b14,
--    .clock_seq_and_node = {0x97, 0xa3, 0x5a, 0x79, 0x13, 0x17, 0x6e, 0x3f}
-+    .time_low = 0x989f3a4e,
-+    .time_mid = 0x46e0,
-+    .time_hi_and_version = 0x4cd0,
-+    .clock_seq_and_node = {0x98, 0x77, 0xa2, 0x5c, 0x70, 0xc0, 0x13, 0x29}
- };
- 
- 
--- 
-2.38.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-platform-corstone1000-fix-synchronization-issue-on-o.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-platform-corstone1000-fix-synchronization-issue-on-o.patch
similarity index 100%
rename from meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0009-platform-corstone1000-fix-synchronization-issue-on-o.patch
rename to meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0005-platform-corstone1000-fix-synchronization-issue-on-o.patch
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-Corstone1000-Enable-Signed-Capsule.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-Corstone1000-Enable-Signed-Capsule.patch
deleted file mode 100644
index f805a44..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-Corstone1000-Enable-Signed-Capsule.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From fa0988fd876400dc1bb451fffc4b167265b40d25 Mon Sep 17 00:00:00 2001
-From: Emekcan Aras <emekcan.aras@arm.com>
-Date: Thu, 14 Sep 2023 12:14:28 +0100
-Subject: [PATCH] Platform: Corstone1000: Enable Signed Capsule
-
-Enables signed capsule update and adjusts the necessary structs (fmp_payload_header
-, image_auth, etc.) to comply with the new capsule generation tool (mkeficapsule).
-
-Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
-Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/24131/3]
----
- .../fw_update_agent/uefi_capsule_parser.c     | 25 +++++++++++--------
- .../fw_update_agent/uefi_capsule_parser.h     |  2 ++
- 2 files changed, 17 insertions(+), 10 deletions(-)
-
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.c b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.c
-index b72ff1eb91..c706c040ac 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.c
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.c
-@@ -102,11 +102,9 @@ enum uefi_capsule_error_t uefi_capsule_retrieve_images(void* capsule_ptr,
-     }
- 
-     capsule_header = (efi_capsule_header_t*)ptr;
--    ptr += sizeof(efi_capsule_header_t) + sizeof(uint32_t);
-+    ptr += sizeof(efi_capsule_header_t);
-     fmp_capsule_header = (efi_firmware_management_capsule_header_t*)ptr;
- 
--    fmp_payload_header = fmp_capsule_header + sizeof(*fmp_capsule_header);
--
-     total_size = capsule_header->capsule_image_size;
-     image_count = fmp_capsule_header->payload_item_count;
-     images_info->nr_image = image_count;
-@@ -119,22 +117,20 @@ enum uefi_capsule_error_t uefi_capsule_retrieve_images(void* capsule_ptr,
-     }
- 
-     for (int i = 0; i < image_count; i++) {
--
-         image_header = (efi_firmware_management_capsule_image_header_t*)(ptr +
-                                 fmp_capsule_header->item_offset_list[i]);
- 
-         images_info->size[i] = image_header->update_image_size;
--        images_info->version[i] = fmp_payload_header->fw_version;
--        FWU_LOG_MSG("%s: image %i version = %u\n\r", __func__, i,
--                                images_info->version[i]);
-+
- #ifdef AUTHENTICATED_CAPSULE
-         image_auth = (efi_firmware_image_authentication_t*)(
-                         (char*)image_header +
-                         sizeof (efi_firmware_management_capsule_image_header_t)
-                      );
-         auth_size = sizeof(uint64_t) /* monotonic_count */  +
--                    image_auth->auth_info.hdr.dwLength /* WIN_CERTIFICATE + cert_data */ +
--                    sizeof(struct efi_guid) /* cert_type */;
-+                    image_auth->auth_info.hdr.dwLength/* WIN_CERTIFICATE + cert_data + cert_type */;
-+
-+        fmp_payload_header = (fmp_payload_header_t*)((char*)image_auth + auth_size);
- 
-         FWU_LOG_MSG("%s: auth size = %u\n\r", __func__, auth_size);
- 
-@@ -143,16 +139,25 @@ enum uefi_capsule_error_t uefi_capsule_retrieve_images(void* capsule_ptr,
-         images_info->image[i] = (
-                 (char*)image_header +
-                 sizeof(efi_firmware_management_capsule_image_header_t) +
--                auth_size);
-+                auth_size +
-+                sizeof(*fmp_payload_header));
- #else
-         images_info->image[i] = (
-                 (char*)image_header +
-                 sizeof(efi_firmware_management_capsule_image_header_t) +
-                 sizeof(*fmp_payload_header));
-+
-+        fmp_payload_header = (fmp_payload_header_t*)((char*)image_header +
-+                sizeof(efi_firmware_management_capsule_image_header_t));
-+
- #endif
-         memcpy(&images_info->guid[i], &(image_header->update_image_type_id),
-                                                         sizeof(struct efi_guid));
- 
-+        images_info->version[i] = fmp_payload_header->fw_version;
-+        FWU_LOG_MSG("%s: image %i version = %d\n\r", __func__, i,
-+                                images_info->version[i]);
-+
-         FWU_LOG_MSG("%s: image %d at %p, size=%u\n\r", __func__, i,
-                         images_info->image[i], images_info->size[i]);
- 
-diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.h b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.h
-index a890a709e9..a31cd8a3a0 100644
---- a/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.h
-+++ b/platform/ext/target/arm/corstone1000/fw_update_agent/uefi_capsule_parser.h
-@@ -12,6 +12,8 @@
- #include "fip_parser/external/uuid.h"
- #include "flash_layout.h"
- 
-+#define AUTHENTICATED_CAPSULE 1
-+
- enum uefi_capsule_error_t {
-     UEFI_CAPSULE_PARSER_SUCCESS = 0,
-     UEFI_CAPSULE_PARSER_ERROR = (-1)
--- 
-2.17.1
-
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-Corstone1000-skip-the-first-nv-counter.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-Corstone1000-skip-the-first-nv-counter.patch
new file mode 100644
index 0000000..4c486e6
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0006-Platform-Corstone1000-skip-the-first-nv-counter.patch
@@ -0,0 +1,33 @@
+From 001e5bea183bc78352ac3ba6283d9d7912bb6ea5 Mon Sep 17 00:00:00 2001
+From: Emekcan Aras <Emekcan.Aras@arm.com>
+Date: Wed, 21 Feb 2024 07:44:25 +0000
+Subject: [PATCH] Platform: Corstone1000: skip the first nv counter
+
+It skips doing a sanity check the BL2 nv counter after the capsule
+update since the tfm bl1 does not sync metadata and nv counters in OTP during
+the boot anymore.
+
+Signed-off-by: Emekcan Aras <Emekcan.Aras@arm.com>
+Upstream-Status: Pending
+
+---
+ .../ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c     | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
+index 2e6de255b..2e6cf8047 100644
+--- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
++++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c
+@@ -1125,7 +1125,7 @@ static enum fwu_agent_error_t update_nv_counters(
+ 
+     FWU_LOG_MSG("%s: enter\n\r", __func__);
+ 
+-    for (int i = 0; i <= FWU_MAX_NV_COUNTER_INDEX; i++) {
++    for (int i = 1; i <= FWU_MAX_NV_COUNTER_INDEX; i++) {
+ 
+         switch (i) {
+             case FWU_BL2_NV_COUNTER:
+-- 
+2.25.1
+
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-platform-corstone1000-increase-ITS-max-asset-size.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-platform-corstone1000-increase-ITS-max-asset-size.patch
deleted file mode 100644
index 97cd14d..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0007-platform-corstone1000-increase-ITS-max-asset-size.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From ef97f7083279565dab45a550139935d741f159a9 Mon Sep 17 00:00:00 2001
-From: Emekcan Aras <emekcan.aras@arm.com>
-Date: Fri, 29 Sep 2023 09:57:19 +0100
-Subject: [PATCH] platform: corstone1000: Increase ITS max asset size
-​
-Increases the max asset size for ITS to enable parsec services & tests
-​
-Upstream-Status: Pending
-Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
-Signed-off-by: Vikas Katariya <vikas.katariya@arm.com>
----
- platform/ext/target/arm/corstone1000/config_tfm_target.h | 5 +++++
- 1 files changed, 5 insertions(+)
-​
-diff --git a/platform/ext/target/arm/corstone1000/config_tfm_target.h b/platform/ext/target/arm/corstone1000/config_tfm_target.h
-index e968366639..3f6e8477e5 100644
---- a/platform/ext/target/arm/corstone1000/config_tfm_target.h
-+++ b/platform/ext/target/arm/corstone1000/config_tfm_target.h
-@@ -24,4 +24,9 @@
- #undef PS_NUM_ASSETS
- #define PS_NUM_ASSETS        20
-
-+/* The maximum size of asset to be stored in the Internal Trusted Storage area. */
-+#undef ITS_MAX_ASSET_SIZE
-+#define ITS_MAX_ASSET_SIZE        2048
-+
-+
- #endif /* __CONFIG_TFM_TARGET_H__ */
--- 
\ No newline at end of file
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.8.1-src.inc b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.8.1-src.inc
deleted file mode 100644
index f7e202a..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-1.8.1-src.inc
+++ /dev/null
@@ -1,46 +0,0 @@
-# Common src definitions for trusted-firmware-m and trusted-firmware-m-scripts
-
-LICENSE = "BSD-2-Clause & BSD-3-Clause & Apache-2.0"
-
-LIC_FILES_CHKSUM = "file://license.rst;md5=07f368487da347f3c7bd0fc3085f3afa \
-                    file://../tf-m-tests/license.rst;md5=4481bae2221b0cfca76a69fb3411f390 \
-                    file://../mbedtls/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
-                    file://../mcuboot/LICENSE;md5=b6ee33f1d12a5e6ee3de1e82fb51eeb8"
-
-SRC_URI_TRUSTED_FIRMWARE_M ?= "git://git.trustedfirmware.org/TF-M/trusted-firmware-m.git;protocol=https"
-SRC_URI_TRUSTED_FIRMWARE_M_TESTS ?= "git://git.trustedfirmware.org/TF-M/tf-m-tests.git;protocol=https"
-SRC_URI_TRUSTED_FIRMWARE_M_MBEDTLS ?= "git://github.com/ARMmbed/mbedtls.git;protocol=https"
-SRC_URI_TRUSTED_FIRMWARE_M_MCUBOOT ?= "git://github.com/mcu-tools/mcuboot.git;protocol=https"
-SRC_URI_TRUSTED_FIRMWARE_M_QCBOR ?= "git://github.com/laurencelundblade/QCBOR.git;protocol=https"
-SRC_URI_TRUSTED_FIRMWARE_M_EXTRAS ?= "git://git.trustedfirmware.org/TF-M/tf-m-extras.git;protocol=https"
-SRC_URI  = "${SRC_URI_TRUSTED_FIRMWARE_M};branch=${SRCBRANCH_tfm};name=tfm;destsuffix=git/tfm \
-            ${SRC_URI_TRUSTED_FIRMWARE_M_TESTS};branch=${SRCBRANCH_tfm-tests};name=tfm-tests;destsuffix=git/tf-m-tests \
-            ${SRC_URI_TRUSTED_FIRMWARE_M_MBEDTLS};branch=${SRCBRANCH_mbedtls};name=mbedtls;destsuffix=git/mbedtls \
-            ${SRC_URI_TRUSTED_FIRMWARE_M_MCUBOOT};branch=${SRCBRANCH_mcuboot};name=mcuboot;destsuffix=git/mcuboot \
-            ${SRC_URI_TRUSTED_FIRMWARE_M_QCBOR};branch=${SRCBRANCH_qcbor};name=qcbor;destsuffix=git/qcbor \
-            ${SRC_URI_TRUSTED_FIRMWARE_M_EXTRAS};branch=${SRCBRANCH_tfm-extras};name=tfm-extras;destsuffix=git/tfm-extras \
-            "
-
-# The required dependencies are documented in tf-m/config/config_default.cmake
-# TF-Mv1.8.1
-SRCBRANCH_tfm ?= "master"
-SRCREV_tfm = "53aa78efef274b9e46e63b429078ae1863609728"
-# TF-Mv1.8.1
-SRCBRANCH_tfm-tests ?= "master"
-SRCREV_tfm-tests = "1273c5bcd3d8ade60d51524797e0b22b6fd7eea1"
-# mbedtls-3.4.1
-SRCBRANCH_mbedtls ?= "master"
-SRCREV_mbedtls = "72718dd87e087215ce9155a826ee5a66cfbe9631"
-# mcuboot v1.10.0
-SRCBRANCH_mcuboot ?= "main"
-SRCREV_mcuboot = "23d28832f02dcdc18687782c6cd8ba99e9b274d2"
-# QCBOR v1.2
-SRCBRANCH_qcbor ?= "master"
-SRCREV_qcbor = "b0e7033268e88c9f27146fa9a1415ef4c19ebaff"
-# TF-Mv1.8.1
-SRCBRANCH_tfm-extras ?= "master"
-SRCREV_tfm-extras = "504ae9a9a50981e9dd4d8accec8261a1dba9e965"
-
-SRCREV_FORMAT = "tfm"
-
-S = "${WORKDIR}/git/tfm"
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-corstone1000.inc b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-corstone1000.inc
index 19ad289..716d3f1 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-corstone1000.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-corstone1000.inc
@@ -9,13 +9,14 @@
 ## Default is the MPS3 board
 TFM_PLATFORM_IS_FVP ?= "FALSE"
 EXTRA_OECMAKE += "-DPLATFORM_IS_FVP=${TFM_PLATFORM_IS_FVP}"
-EXTRA_OECMAKE += "-DCC312_LEGACY_DRIVER_API_ENABLED=ON"
+EXTRA_OECMAKE += "-DCC312_LEGACY_DRIVER_API_ENABLED=OFF"
 
 # libmetal v2023.04.0
 LICENSE += "& BSD-3-Clause"
 LIC_FILES_CHKSUM += "file://../libmetal/LICENSE.md;md5=f4d5df0f12dcea1b1a0124219c0dbab4"
 SRC_URI += "git://github.com/OpenAMP/libmetal.git;protocol=https;branch=main;name=libmetal;destsuffix=git/libmetal \
             file://0001-cmake-modify-path-to-libmetal-version-file.patch;patchdir=../libmetal \
+            file://0002-arm-trusted-firmware-m-disable-address-warnings-into.patch \
            "
 SRCREV_libmetal = "28fa2351d6a8121ce6c1c2ac5ee43ce08d38dbae"
 EXTRA_OECMAKE += "-DLIBMETAL_SRC_PATH=${S}/../libmetal -DLIBMETAL_BIN_PATH=${B}/libmetal-build"
@@ -32,15 +33,12 @@
 
 FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
 SRC_URI:append:corstone1000 = " \
-    file://0001-Platform-corstone1000-Increase-BL2-size-in-flash-lay.patch \
-    file://0002-Platform-Corstone1000-Increase-BL2_DATA_SIZE.patch \
-    file://0003-Platform-Corstone1000-Calculate-the-new-CRC32-value-.patch \
-    file://0004-arm-trusted-firmware-m-disable-fatal-warnings.patch \
-    file://0005-Platform-corstone1000-add-unique-firmware-GUID.patch \
-    file://0006-Platform-Corstone1000-Enable-Signed-Capsule.patch \
-    file://0007-platform-corstone1000-increase-ITS-max-asset-size.patch \
-    file://0008-platform-corstone1000-align-capsule-update-structs.patch \
-    file://0009-platform-corstone1000-fix-synchronization-issue-on-o.patch \
+    file://0001-platform-corstone1000-Update-MPU-configuration.patch \
+    file://0002-platform-corstone1000-Cover-S_DATA-with-MPU.patch \
+    file://0003-Platform-corstone1000-Fix-issues-due-to-adjustment-M.patch \
+    file://0004-platform-corstone1000-align-capsule-update-structs.patch \
+    file://0005-platform-corstone1000-fix-synchronization-issue-on-o.patch \
+    file://0006-Platform-Corstone1000-skip-the-first-nv-counter.patch \
     "
 
 # TF-M ships patches for external dependencies that needs to be applied
@@ -54,10 +52,10 @@
 do_patch[postfuncs] += "apply_tfm_patches"
 
 do_install() {
-  install -D -p -m 0644 ${B}/install/outputs/tfm_s_signed.bin ${D}/firmware/tfm_s_signed.bin
-  install -D -p -m 0644 ${B}/install/outputs/bl2_signed.bin ${D}/firmware/bl2_signed.bin
-  install -D -p -m 0644 ${B}/install/outputs/bl1_1.bin ${D}/firmware/bl1_1.bin
-  install -D -p -m 0644 ${B}/install/outputs/bl1_provisioning_bundle.bin ${D}/firmware/bl1_provisioning_bundle.bin
+  install -D -p -m 0644 ${B}/bin/tfm_s_signed.bin ${D}/firmware/tfm_s_signed.bin
+  install -D -p -m 0644 ${B}/bin/bl2_signed.bin ${D}/firmware/bl2_signed.bin
+  install -D -p -m 0644 ${B}/bin/bl1_1.bin ${D}/firmware/bl1_1.bin
+  install -D -p -m 0644 ${B}/bin/bl1_provisioning_bundle.bin ${D}/firmware/bl1_provisioning_bundle.bin
 }
 
 create_bl1_image(){
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native_1.8.1.bb b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native_1.8.1.bb
deleted file mode 100644
index d50d886..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native_1.8.1.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-bsp/trusted-firmware-m/trusted-firmware-m-${PV}-src.inc
-require recipes-bsp/trusted-firmware-m/trusted-firmware-m-scripts-native.inc
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.8.1.bb b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.8.1.bb
deleted file mode 100644
index 3464f49..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.8.1.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require recipes-bsp/trusted-firmware-m/trusted-firmware-m-${PV}-src.inc
-require recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc
index 2585ff2..c7172d6 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot-corstone1000.inc
@@ -58,6 +58,7 @@
     file://0040-fix-runtime-capsule-update-flags-checks.patch		  \
     file://0041-scatter-gather-flag-workaround.patch			  \
     file://0042-corstone1000-enable-virtio-net-support.patch		  \
+    file://0043-firmware-psci-Fix-bind_smccc_features-psci-check.patch		  \
     "
 
 do_configure:append() {
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0043-firmware-psci-Fix-bind_smccc_features-psci-check.patch b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0043-firmware-psci-Fix-bind_smccc_features-psci-check.patch
new file mode 100644
index 0000000..70d684b
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0043-firmware-psci-Fix-bind_smccc_features-psci-check.patch
@@ -0,0 +1,60 @@
+Subject: [PATCH v4 1/3] firmware: psci: Fix bind_smccc_features psci check
+Date: Mon,  4 Mar 2024 14:42:40 +0000	[thread overview]
+Message-ID: <20240304144242.11666-2-o451686892@gmail.com> (raw)
+In-Reply-To: <20240304144242.11666-1-o451686892@gmail.com>
+
+According to PSCI specification DEN0022F, PSCI_FEATURES is used to check
+whether the SMCCC is implemented by discovering SMCCC_VERSION.
+
+Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
+Signed-off-by: Bence Balogh <bence.balogh@arm.com>
+Upstream-Status: Submitted [https://lore.kernel.org/all/20240304144242.11666-2-o451686892@gmail.com/]
+---
+v3: remove fallback smc call
+v2: check SMCCC_ARCH_FEATURES
+---
+ drivers/firmware/psci.c   | 5 ++++-
+ include/linux/arm-smccc.h | 6 ++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
+index c6b9efab41..03544d76ed 100644
+--- a/drivers/firmware/psci.c
++++ b/drivers/firmware/psci.c
+@@ -135,10 +135,13 @@ static int bind_smccc_features(struct udevice *dev, int psci_method)
+ 	    PSCI_VERSION_MAJOR(psci_0_2_get_version()) == 0)
+ 		return 0;
+ 
+-	if (request_psci_features(ARM_SMCCC_ARCH_FEATURES) ==
++	if (request_psci_features(ARM_SMCCC_VERSION) ==
+ 	    PSCI_RET_NOT_SUPPORTED)
+ 		return 0;
+ 
++	if (invoke_psci_fn(ARM_SMCCC_VERSION, 0, 0, 0) < ARM_SMCCC_VERSION_1_1)
++		return 0;
++
+ 	if (psci_method == PSCI_METHOD_HVC)
+ 		pdata->invoke_fn = smccc_invoke_hvc;
+ 	else
+diff --git a/include/linux/arm-smccc.h b/include/linux/arm-smccc.h
+index f44e9e8f93..da3d29aabe 100644
+--- a/include/linux/arm-smccc.h
++++ b/include/linux/arm-smccc.h
+@@ -55,8 +55,14 @@
+ #define ARM_SMCCC_QUIRK_NONE		0
+ #define ARM_SMCCC_QUIRK_QCOM_A6		1 /* Save/restore register a6 */
+ 
++#define ARM_SMCCC_VERSION		0x80000000
+ #define ARM_SMCCC_ARCH_FEATURES		0x80000001
+ 
++#define ARM_SMCCC_VERSION_1_0		0x10000
++#define ARM_SMCCC_VERSION_1_1		0x10001
++#define ARM_SMCCC_VERSION_1_2		0x10002
++#define ARM_SMCCC_VERSION_1_3		0x10003
++
+ #define ARM_SMCCC_RET_NOT_SUPPORTED	((unsigned long)-1)
+ 
+ #ifndef __ASSEMBLY__
+-- 
+2.40.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_202305.bb b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_202305.bb
deleted file mode 100644
index 2332550..0000000
--- a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_202305.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-SRCREV_edk2           ?= "ba91d0292e593df8528b66f99c1b0b14fadc8e16"
-SRCREV_edk2-platforms ?= "be2af02a3fb202756ed9855173e0d0ed878ab6be"
-
-# FIXME - clang is having issues with antlr
-TOOLCHAIN:aarch64 = "gcc"
-
-require recipes-bsp/uefi/edk2-firmware.inc
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202311.bb b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_202311.bb
similarity index 100%
rename from meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202311.bb
rename to meta-arm/meta-arm-bsp/recipes-bsp/uefi/edk2-firmware_202311.bb
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/n1sdp/0009-Platform-ARM-N1Sdp-Reserve-OP-TEE-Region-from-UEFI.patch b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/n1sdp/0009-Platform-ARM-N1Sdp-Reserve-OP-TEE-Region-from-UEFI.patch
index 0fdf9ee..6105e9a 100644
--- a/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/n1sdp/0009-Platform-ARM-N1Sdp-Reserve-OP-TEE-Region-from-UEFI.patch
+++ b/meta-arm/meta-arm-bsp/recipes-bsp/uefi/files/n1sdp/0009-Platform-ARM-N1Sdp-Reserve-OP-TEE-Region-from-UEFI.patch
@@ -1,15 +1,14 @@
-From f2a76d6595b31b0bc1be7029277676af1b1cc3d3 Mon Sep 17 00:00:00 2001
+From 60dfd5bb8f25fa5f0b6c07c3098836bec1668c19 Mon Sep 17 00:00:00 2001
 From: Mariam Elshakfy <mariam.elshakfy@arm.com>
-Date: Wed, 11 Oct 2023 16:18:22 +0000
+Date: Thu, 14 Mar 2024 14:47:27 +0000
 Subject: [PATCH] Platform/ARM/N1Sdp: Reserve OP-TEE Region from UEFI
 
 To enable cache on N1SDP, OP-TEE has to be moved
 to run from DDR4 memory. Since this memory is
 known to application side, it must be reserved
 
-Upstream-Status: Pending (not yet submitted to upstream)
+Upstream-Status: Inappropriate [will not be submitted as it's a workaround to address hardware issue]
 Signed-off-by: Mariam Elshakfy <mariam.elshakfy@arm.com>
-
 ---
  .../Library/PlatformLib/PlatformLib.inf             |  3 +++
  .../Library/PlatformLib/PlatformLibMem.c            | 13 +++++++++++++
@@ -68,3 +67,6 @@
 +

  [Ppis]

    gNtFwConfigDtInfoPpiGuid =  { 0xb50dee0e, 0x577f, 0x47fb, { 0x83, 0xd0, 0x41, 0x78, 0x61, 0x8b, 0x33, 0x8a } }

+-- 
+2.38.1
+
diff --git a/meta-arm/meta-arm-bsp/recipes-security/trusted-services/corstone1000/0009-plat-corstone1000-fmp-client-id.patch b/meta-arm/meta-arm-bsp/recipes-security/trusted-services/corstone1000/0009-plat-corstone1000-fmp-client-id.patch
new file mode 100644
index 0000000..2fb91f6
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-security/trusted-services/corstone1000/0009-plat-corstone1000-fmp-client-id.patch
@@ -0,0 +1,45 @@
+From 52d962239207bd06827c18d0ed21abdc2002337f Mon Sep 17 00:00:00 2001
+From: emeara01 <emekcan.aras@arm.com>
+Date: Thu, 7 Mar 2024 10:24:42 +0000
+Subject: [PATCH] plat: corstone1000: add client_id for FMP service
+
+Corstone1000 uses trusted-firmware-m as secure enclave software component. Due
+to the changes in TF-M 2.0, psa services requires a seperate client_id now.
+This commit adds smm-gateway-sp client id to the FMP services since FMP structure
+accessed by u-boot via smm-gateway-sp.
+
+Signed-off-by: emeara01 <emekcan.aras@arm.com>
+Upstream-Status: Inappropriate [Design is to revisted]
+---
+ .../capsule_update/provider/corstone1000_fmp_service.c     | 5 ++++---
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/components/service/capsule_update/provider/corstone1000_fmp_service.c b/components/service/capsule_update/provider/corstone1000_fmp_service.c
+index d811af9f..354d025f 100644
+--- a/components/service/capsule_update/provider/corstone1000_fmp_service.c
++++ b/components/service/capsule_update/provider/corstone1000_fmp_service.c
+@@ -33,6 +33,7 @@
+ 	 EFI_VARIABLE_APPEND_WRITE)
+ 
+ #define FMP_VARIABLES_COUNT	6
++#define SMM_GW_SP_ID		0x8003
+ 
+ static struct variable_metadata fmp_variables_metadata[FMP_VARIABLES_COUNT] = {
+     {
+@@ -91,7 +92,7 @@ static psa_status_t protected_storage_set(struct rpc_caller *caller,
+ 		{ .base = psa_ptr_to_u32(&create_flags), .len = sizeof(create_flags) },
+ 	};
+ 
+-	psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE, TFM_PS_ITS_SET,
++	psa_status = psa_call_client_id(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE, SMM_GW_SP_ID,TFM_PS_ITS_SET,
+ 			      in_vec, IOVEC_LEN(in_vec), NULL, 0);
+ 	if (psa_status < 0)
+ 		EMSG("ipc_set: psa_call failed: %d", psa_status);
+@@ -114,7 +115,7 @@ static psa_status_t protected_storage_get(struct rpc_caller *caller,
+ 		{ .base = psa_ptr_to_u32(p_data), .len = data_size },
+ 	};
+ 
+-	psa_status = psa_call(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE,
++	psa_status = psa_call_client_id(caller, TFM_PROTECTED_STORAGE_SERVICE_HANDLE, SMM_GW_SP_ID,
+ 			      TFM_PS_ITS_GET, in_vec, IOVEC_LEN(in_vec),
+ 			      out_vec, IOVEC_LEN(out_vec));
diff --git a/meta-arm/meta-arm-bsp/recipes-security/trusted-services/ts-arm-platforms.inc b/meta-arm/meta-arm-bsp/recipes-security/trusted-services/ts-arm-platforms.inc
index 3c7e94e..80a5805 100644
--- a/meta-arm/meta-arm-bsp/recipes-security/trusted-services/ts-arm-platforms.inc
+++ b/meta-arm/meta-arm-bsp/recipes-security/trusted-services/ts-arm-platforms.inc
@@ -10,6 +10,7 @@
     file://0006-plat-corstone1000-Use-the-stateless-platform-service.patch \
     file://0007-plat-corstone1000-Initialize-capsule-update-provider.patch \
     file://0008-platform-corstone1000-fix-synchronization-issue.patch \
+    file://0009-plat-corstone1000-fmp-client-id.patch \
     "
 
 
diff --git a/meta-arm/meta-arm-bsp/recipes-security/trusted-services/ts-sp-block-storage_%.bbappend b/meta-arm/meta-arm-bsp/recipes-security/trusted-services/ts-sp-block-storage_%.bbappend
new file mode 100644
index 0000000..5c9ef21
--- /dev/null
+++ b/meta-arm/meta-arm-bsp/recipes-security/trusted-services/ts-sp-block-storage_%.bbappend
@@ -0,0 +1 @@
+require ts-arm-platforms.inc
diff --git a/meta-arm/meta-arm-bsp/wic/corstone1000-flash-firmware.wks.in b/meta-arm/meta-arm-bsp/wic/corstone1000-flash-firmware.wks.in
index 88559de..6919afd 100644
--- a/meta-arm/meta-arm-bsp/wic/corstone1000-flash-firmware.wks.in
+++ b/meta-arm/meta-arm-bsp/wic/corstone1000-flash-firmware.wks.in
@@ -17,7 +17,7 @@
 
 part --source rawcopy --size 100k --sourceparams="file=bl2_signed.bin" --offset 36k --align 4 --part-name="bl2_primary" --uuid 9A3A8FBF-55EF-439C-80C9-A3F728033929 --part-type 64BD8ADB-02C0-4819-8688-03AB4CAB0ED9
 
-part --source rawcopy --size 376k --sourceparams="file=tfm_s_signed.bin" --align 4 --part-name="tfm_primary" --uuid 07F9616C-1233-439C-ACBA-72D75421BF70 --part-type D763C27F-07F6-4FF0-B2F3-060CB465CD4E
+part --source rawcopy --size 368k --sourceparams="file=tfm_s_signed.bin" --align 4 --part-name="tfm_primary" --uuid 07F9616C-1233-439C-ACBA-72D75421BF70 --part-type D763C27F-07F6-4FF0-B2F3-060CB465CD4E
 
 # Rawcopy of the FIP binary
 part --source rawcopy --size 2 --sourceparams="file=signed_fip-corstone1000.bin" --align 4 --part-name="FIP_A" --uuid B9C7AC9D-40FF-4675-956B-EEF4DE9DF1C5 --part-type B5EB19BD-CF56-45E8-ABA7-7ADB228FFEA7
@@ -26,8 +26,8 @@
 part --source rawcopy --size 12 --sourceparams="file=Image.gz-initramfs-${MACHINE}.bin" --align 4 --part-name="kernel_primary" --uuid BF7A6142-0662-47FD-9434-6A8811980816 --part-type 8197561D-6124-46FC-921E-141CC5745B05
 
 
-part --source empty --size 100k --offset 16492k --align 4 --part-name="bl2_secondary" --uuid 3F0C49A4-48B7-4D1E-AF59-3E4A3CE1BA9F --part-type 64BD8ADB-02C0-4819-8688-03AB4CAB0ED9
-part --source empty --size 376k --align 4 --part-name="tfm_secondary" --uuid 009A6A12-64A6-4F0F-9882-57CD79A34A3D --part-type D763C27F-07F6-4FF0-B2F3-060CB465CD4E
+part --source empty --size 100k --offset 16488k --align 4 --part-name="bl2_secondary" --uuid 3F0C49A4-48B7-4D1E-AF59-3E4A3CE1BA9F --part-type 64BD8ADB-02C0-4819-8688-03AB4CAB0ED9
+part --source empty --size 368k --align 4 --part-name="tfm_secondary" --uuid 009A6A12-64A6-4F0F-9882-57CD79A34A3D --part-type D763C27F-07F6-4FF0-B2F3-060CB465CD4E
 part --source empty --size 2 --align 4 --part-name="FIP_B" --uuid 9424E370-7BC9-43BB-8C23-71EE645E1273 --part-type B5EB19BD-CF56-45E8-ABA7-7ADB228FFEA7
 part --source empty --size 12 --align 4 --part-name="kernel_secondary" --uuid A2698A91-F9B1-4629-9188-94E4520808F8 --part-type 8197561D-6124-46FC-921E-141CC5745B05
 
diff --git a/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-aarch64-none-elf_13.2.Rel1.bb b/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-aarch64-none-elf_13.2.Rel1.bb
index 890efa7..6262e76 100644
--- a/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-aarch64-none-elf_13.2.Rel1.bb
+++ b/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-aarch64-none-elf_13.2.Rel1.bb
@@ -17,5 +17,5 @@
 
 S = "${WORKDIR}/arm-gnu-toolchain-${PV}-${HOST_ARCH}-${BINNAME}"
 
-UPSTREAM_CHECK_URI = "https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads"
-UPSTREAM_CHECK_REGEX = "gcc-arm-(?P<pver>.+)-${HOST_ARCH}-${BINNAME}\.tar\.\w+"
+UPSTREAM_CHECK_URI = "https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads"
+UPSTREAM_CHECK_REGEX = "arm-gnu-toolchain-(?P<pver>\d+\.\d*\.[A-z]*\d*).*-${HOST_ARCH}-${BINNAME}\.tar\.\w+"
diff --git a/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-arm-none-eabi-11.2_11.2-2022.02.bb b/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-arm-none-eabi-11.2_11.2-2022.02.bb
deleted file mode 100644
index 7fab1e1..0000000
--- a/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-arm-none-eabi-11.2_11.2-2022.02.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2019 Garmin Ltd. or its subsidiaries
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require arm-binary-toolchain.inc
-
-COMPATIBLE_HOST = "(x86_64|aarch64).*-linux"
-
-SUMMARY = "Arm GNU Toolchain - AArch32 bare-metal target (arm-none-eabi)"
-LICENSE = "GPL-3.0-with-GCC-exception & GPL-3.0-only"
-
-LIC_FILES_CHKSUM:aarch64 = "file://share/doc/gcc/Copying.html;md5=be4f8b5ff7319cd54f6c52db5d6f36b0"
-LIC_FILES_CHKSUM:x86-64 = "file://share/doc/gcc/Copying.html;md5=1f07179249795891179bb3798bac7887"
-
-BINNAME = "arm-none-eabi"
-
-SRC_URI = "https://developer.arm.com/-/media/Files/downloads/gnu/${PV}/binrel/gcc-arm-${PV}-${HOST_ARCH}-${BINNAME}.tar.xz;name=gcc-${HOST_ARCH}"
-SRC_URI[gcc-aarch64.sha256sum] = "ef1d82e5894e3908cb7ed49c5485b5b95deefa32872f79c2b5f6f5447cabf55f"
-SRC_URI[gcc-x86_64.sha256sum] = "8c5acd5ae567c0100245b0556941c237369f210bceb196edfe5a2e7532c60326"
-
-S = "${WORKDIR}/gcc-arm-${PV}-${HOST_ARCH}-${BINNAME}"
-
-UPSTREAM_CHECK_URI = "https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads"
-UPSTREAM_CHECK_REGEX = "${BPN}-(?P<pver>.+)-${HOST_ARCH}-linux\.tar\.\w+"
diff --git a/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-arm-none-eabi_13.2.Rel1.bb b/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-arm-none-eabi_13.2.Rel1.bb
index 00390b5..6569911 100644
--- a/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-arm-none-eabi_13.2.Rel1.bb
+++ b/meta-arm/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/gcc-arm-none-eabi_13.2.Rel1.bb
@@ -17,5 +17,5 @@
 
 S = "${WORKDIR}/arm-gnu-toolchain-${PV}-${HOST_ARCH}-${BINNAME}"
 
-UPSTREAM_CHECK_URI = "https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/downloads"
-UPSTREAM_CHECK_REGEX = "${BPN}-(?P<pver>.+)-${HOST_ARCH}-linux\.tar\.\w+"
+UPSTREAM_CHECK_URI = "https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads"
+UPSTREAM_CHECK_REGEX = "arm-gnu-toolchain-(?P<pver>\d+\.\d*\.[A-z]*\d*).*-${HOST_ARCH}-${BINNAME}\.tar\.\w+"
diff --git a/meta-arm/meta-arm/conf/layer.conf b/meta-arm/meta-arm/conf/layer.conf
index af8275a..9e9c9db 100644
--- a/meta-arm/meta-arm/conf/layer.conf
+++ b/meta-arm/meta-arm/conf/layer.conf
@@ -19,3 +19,5 @@
 HOSTTOOLS_NONFATAL += "telnet"
 
 addpylib ${LAYERDIR}/lib oeqa
+
+WARN_QA:append:layer-meta-arm = " patch-status"
diff --git a/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.13.0.bb b/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.13.0.bb
deleted file mode 100644
index 18867b0..0000000
--- a/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.13.0.bb
+++ /dev/null
@@ -1,118 +0,0 @@
-SUMMARY = "SCP and MCP Firmware"
-DESCRIPTION = "Firmware for SCP and MCP software reference implementation"
-HOMEPAGE = "https://gitlab.arm.com/firmware/SCP-firmware"
-
-LICENSE = "BSD-3-Clause & Apache-2.0"
-LIC_FILES_CHKSUM = "file://license.md;beginline=5;md5=9db9e3d2fb8d9300a6c3d15101b19731 \
-                    file://contrib/cmsis/git/LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e"
-
-SRC_URI_SCP_FIRMWARE ?= "gitsm://git.gitlab.arm.com/firmware/SCP-firmware.git;protocol=https"
-SRC_URI = "${SRC_URI_SCP_FIRMWARE};branch=${SRCBRANCH} \
-           file://0001-OPTEE-Private-Includes.patch \
-          "
-
-SRCBRANCH = "main"
-SRCREV  = "cc4c9e017348d92054f74026ee1beb081403c168"
-
-PROVIDES += "virtual/control-processor-firmware"
-
-CMAKE_BUILD_TYPE    ?= "RelWithDebInfo"
-SCP_PLATFORM        ?= "${MACHINE}"
-SCP_LOG_LEVEL       ?= "WARN"
-SCP_PLATFORM_FEATURE_SET ?= "0"
-
-INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS = "gcc-arm-none-eabi-native \
-           cmake-native \
-           ninja-native \
-          "
-
-# For now we only build with GCC, so stop meta-clang trying to get involved
-TOOLCHAIN = "gcc"
-
-# remove once arm-none-eabi-gcc updates to 13 or newer like poky
-DEBUG_PREFIX_MAP:remove = "-fcanon-prefix-map"
-
-inherit deploy
-
-B = "${WORKDIR}/build"
-S = "${WORKDIR}/git"
-
-# Allow platform specific copying of only scp or both scp & mcp, default to both
-FW_TARGETS ?= "scp mcp"
-FW_INSTALL ?= "ramfw romfw"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-COMPATIBLE_MACHINE ?= "invalid"
-
-export CFLAGS = "${DEBUG_PREFIX_MAP}"
-export ASMFLAGS = "${DEBUG_PREFIX_MAP}"
-
-LDFLAGS[unexport] = "1"
-
-EXTRA_OECMAKE = "-D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
-                 -D SCP_LOG_LEVEL=${SCP_LOG_LEVEL} \
-                 -D SCP_PLATFORM_FEATURE_SET=${SCP_PLATFORM_FEATURE_SET} \
-                 -D DISABLE_CPPCHECK=1 \
-                 -D SCP_TOOLCHAIN=GNU \
-                "
-
-do_configure() {
-    for FW in ${FW_TARGETS}; do
-        for TYPE in ${FW_INSTALL}; do
-            bbnote Configuring ${SCP_PLATFORM}/${FW}_${TYPE}...
-            cmake -GNinja ${EXTRA_OECMAKE} -S ${S} -B "${B}/${TYPE}/${FW}" -D SCP_FIRMWARE_SOURCE_DIR:PATH="${SCP_PLATFORM}/${FW}_${TYPE}"
-        done
-    done
-}
-
-do_configure[cleandirs] += "${B}"
-
-do_compile() {
-    for FW in ${FW_TARGETS}; do
-        for TYPE in ${FW_INSTALL}; do
-            bbnote Building ${SCP_PLATFORM}/${FW}_${TYPE}...
-            VERBOSE=1 cmake --build ${B}/${TYPE}/${FW} --target all
-        done
-    done
-}
-
-do_install() {
-    install -d ${D}/firmware
-    for TYPE in ${FW_INSTALL}; do
-        for FW in ${FW_TARGETS}; do
-           if [ "$TYPE" = "romfw" ]; then
-               if [ "$FW" = "scp" ]; then
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
-               else
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
-               fi
-           elif [ "$TYPE" = "ramfw" ]; then
-               if [ "$FW" = "scp" ]; then
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
-               else
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
-                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
-               fi
-           fi
-       done
-    done
-}
-
-FILES:${PN} = "/firmware"
-SYSROOT_DIRS += "/firmware"
-
-FILES:${PN}-dbg += "/firmware/*.elf"
-# These binaries are specifically for 32-bit arm
-INSANE_SKIP:${PN}-dbg += "arch"
-INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
-INHIBIT_PACKAGE_STRIP = "1"
-
-do_deploy() {
-    # Copy the images to deploy directory
-    cp -rf ${D}/firmware/* ${DEPLOYDIR}/
-}
-addtask deploy after do_install
diff --git a/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.14.0.bb b/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.14.0.bb
new file mode 100644
index 0000000..c0e40d9
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/scp-firmware/scp-firmware_2.14.0.bb
@@ -0,0 +1,116 @@
+SUMMARY = "SCP and MCP Firmware"
+DESCRIPTION = "Firmware for SCP and MCP software reference implementation"
+HOMEPAGE = "https://gitlab.arm.com/firmware/SCP-firmware"
+
+LICENSE = "BSD-3-Clause & Apache-2.0"
+LIC_FILES_CHKSUM = "file://license.md;beginline=5;md5=9db9e3d2fb8d9300a6c3d15101b19731 \
+                    file://contrib/cmsis/git/LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+SRC_URI_SCP_FIRMWARE ?= "gitsm://git.gitlab.arm.com/firmware/SCP-firmware.git;protocol=https"
+SRC_URI = "${SRC_URI_SCP_FIRMWARE};branch=${SRCBRANCH} \
+           file://0001-OPTEE-Private-Includes.patch \
+          "
+
+SRCBRANCH = "main"
+SRCREV  = "3267f2964114a56faaf46a40704be6ca78240725"
+
+PROVIDES += "virtual/control-processor-firmware"
+
+CMAKE_BUILD_TYPE    ?= "RelWithDebInfo"
+SCP_PLATFORM        ?= "${MACHINE}"
+SCP_PRODUCT_GROUP   ?= "."
+SCP_LOG_LEVEL       ?= "WARN"
+SCP_PLATFORM_FEATURE_SET ?= "0"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEPENDS = "gcc-arm-none-eabi-native \
+           cmake-native \
+           ninja-native \
+          "
+
+# For now we only build with GCC, so stop meta-clang trying to get involved
+TOOLCHAIN = "gcc"
+
+inherit deploy
+
+B = "${WORKDIR}/build"
+S = "${WORKDIR}/git"
+
+# Allow platform specific copying of only scp or both scp & mcp, default to both
+FW_TARGETS ?= "scp mcp"
+FW_INSTALL ?= "ramfw romfw"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+COMPATIBLE_MACHINE ?= "invalid"
+
+export CFLAGS = "${DEBUG_PREFIX_MAP}"
+export ASMFLAGS = "${DEBUG_PREFIX_MAP}"
+
+LDFLAGS[unexport] = "1"
+
+EXTRA_OECMAKE = "-D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
+                 -D SCP_LOG_LEVEL=${SCP_LOG_LEVEL} \
+                 -D SCP_PLATFORM_FEATURE_SET=${SCP_PLATFORM_FEATURE_SET} \
+                 -D DISABLE_CPPCHECK=1 \
+                 -D SCP_TOOLCHAIN=GNU \
+                "
+
+do_configure() {
+    for FW in ${FW_TARGETS}; do
+        for TYPE in ${FW_INSTALL}; do
+            bbnote Configuring ${SCP_PLATFORM}/${FW}_${TYPE}...
+            cmake -GNinja ${EXTRA_OECMAKE} -S ${S} -B "${B}/${TYPE}/${FW}" -D SCP_FIRMWARE_SOURCE_DIR:PATH="${SCP_PRODUCT_GROUP}/${SCP_PLATFORM}/${FW}_${TYPE}"
+        done
+    done
+}
+
+do_configure[cleandirs] += "${B}"
+
+do_compile() {
+    for FW in ${FW_TARGETS}; do
+        for TYPE in ${FW_INSTALL}; do
+            bbnote Building ${SCP_PLATFORM}/${FW}_${TYPE}...
+            VERBOSE=1 cmake --build ${B}/${TYPE}/${FW} --target all
+        done
+    done
+}
+
+do_install() {
+    install -d ${D}/firmware
+    for TYPE in ${FW_INSTALL}; do
+        for FW in ${FW_TARGETS}; do
+           if [ "$TYPE" = "romfw" ]; then
+               if [ "$FW" = "scp" ]; then
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
+               else
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.bin" "${D}/firmware/${FW}_${TYPE}.bin"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl1.elf" "${D}/firmware/${FW}_${TYPE}.elf"
+               fi
+           elif [ "$TYPE" = "ramfw" ]; then
+               if [ "$FW" = "scp" ]; then
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
+               else
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.bin" "${D}/firmware/${FW}_${TYPE}.bin"
+                   install -D "${B}/${TYPE}/${FW}/bin/${SCP_PLATFORM}-${FW}-bl2.elf" "${D}/firmware/${FW}_${TYPE}.elf"
+               fi
+           fi
+       done
+    done
+}
+
+FILES:${PN} = "/firmware"
+SYSROOT_DIRS += "/firmware"
+
+FILES:${PN}-dbg += "/firmware/*.elf"
+# These binaries are specifically for 32-bit arm
+INSANE_SKIP:${PN}-dbg += "arch"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
+INHIBIT_PACKAGE_STRIP = "1"
+
+do_deploy() {
+    # Copy the images to deploy directory
+    cp -rf ${D}/firmware/* ${DEPLOYDIR}/
+}
+addtask deploy after do_install
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/fiptool-native_2.10.0.bb b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/fiptool-native_2.10.0.bb
deleted file mode 100644
index e45ea9c..0000000
--- a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/fiptool-native_2.10.0.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-# Firmware Image Package (FIP)
-# It is a packaging format used by TF-A to package the
-# firmware images in a single binary.
-
-DESCRIPTION = "fiptool - Trusted Firmware tool for packaging"
-LICENSE = "BSD-3-Clause"
-
-SRC_URI_TRUSTED_FIRMWARE_A ?= "git://git.trustedfirmware.org/TF-A/trusted-firmware-a.git;protocol=https"
-SRC_URI = "${SRC_URI_TRUSTED_FIRMWARE_A};destsuffix=fiptool-${PV};branch=${SRCBRANCH}"
-LIC_FILES_CHKSUM = "file://docs/license.rst;md5=b2c740efedc159745b9b31f88ff03dde"
-
-# Use fiptool from TF-A v2.10.0
-SRCREV = "b6c0948400594e3cc4dbb5a4ef04b815d2675808"
-SRCBRANCH = "master"
-
-DEPENDS += "openssl-native"
-
-inherit native
-
-EXTRA_OEMAKE = "V=1 HOSTCC='${BUILD_CC}' OPENSSL_DIR=${STAGING_DIR_NATIVE}/${prefix_native}"
-
-do_compile () {
-    # This is still needed to have the native fiptool executing properly by
-    # setting the RPATH
-    sed -i '/^LDOPTS/ s,$, \$\{BUILD_LDFLAGS},' ${S}/tools/fiptool/Makefile
-    sed -i '/^INCLUDE_PATHS/ s,$, \$\{BUILD_CFLAGS},' ${S}/tools/fiptool/Makefile
-
-    oe_runmake fiptool
-}
-
-do_install () {
-    install -D -p -m 0755 tools/fiptool/fiptool ${D}${bindir}/fiptool
-}
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/fiptool-native_2.10.2.bb b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/fiptool-native_2.10.2.bb
new file mode 100644
index 0000000..d0c057a
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/fiptool-native_2.10.2.bb
@@ -0,0 +1,33 @@
+# Firmware Image Package (FIP)
+# It is a packaging format used by TF-A to package the
+# firmware images in a single binary.
+
+DESCRIPTION = "fiptool - Trusted Firmware tool for packaging"
+LICENSE = "BSD-3-Clause"
+
+SRC_URI_TRUSTED_FIRMWARE_A ?= "git://git.trustedfirmware.org/TF-A/trusted-firmware-a.git;protocol=https"
+SRC_URI = "${SRC_URI_TRUSTED_FIRMWARE_A};destsuffix=fiptool-${PV};branch=${SRCBRANCH}"
+LIC_FILES_CHKSUM = "file://docs/license.rst;md5=b2c740efedc159745b9b31f88ff03dde"
+
+# Use fiptool from TF-A v2.10.2
+SRCREV = "a1be69e6c5db450f841f0edd9d734bf3cffb6621"
+SRCBRANCH = "lts-v2.10"
+
+DEPENDS += "openssl-native"
+
+inherit native
+
+EXTRA_OEMAKE = "V=1 HOSTCC='${BUILD_CC}' OPENSSL_DIR=${STAGING_DIR_NATIVE}/${prefix_native}"
+
+do_compile () {
+    # This is still needed to have the native fiptool executing properly by
+    # setting the RPATH
+    sed -i '/^LDOPTS/ s,$, \$\{BUILD_LDFLAGS},' ${S}/tools/fiptool/Makefile
+    sed -i '/^INCLUDE_PATHS/ s,$, \$\{BUILD_CFLAGS},' ${S}/tools/fiptool/Makefile
+
+    oe_runmake fiptool
+}
+
+do_install () {
+    install -D -p -m 0755 tools/fiptool/fiptool ${D}${bindir}/fiptool
+}
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.10.0.bb b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.10.0.bb
deleted file mode 100644
index 4f01984..0000000
--- a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.10.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-require recipes-bsp/trusted-firmware-a/trusted-firmware-a.inc
-
-# TF-A v2.10.0
-SRCREV_tfa = "b6c0948400594e3cc4dbb5a4ef04b815d2675808"
-
-LIC_FILES_CHKSUM += "file://docs/license.rst;md5=b2c740efedc159745b9b31f88ff03dde"
-
-# mbedtls-3.5.1
-SRC_URI_MBEDTLS = "git://github.com/ARMmbed/mbedtls.git;name=mbedtls;protocol=https;destsuffix=git/mbedtls;branch=master"
-SRCREV_mbedtls = "edb8fec9882084344a314368ac7fd957a187519c"
-
-LIC_FILES_CHKSUM_MBEDTLS = "file://mbedtls/LICENSE;md5=379d5819937a6c2f1ef1630d341e026d"
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.10.2.bb b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.10.2.bb
new file mode 100644
index 0000000..bf2a8c1
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.10.2.bb
@@ -0,0 +1,13 @@
+require recipes-bsp/trusted-firmware-a/trusted-firmware-a.inc
+
+# TF-A v2.10.2
+SRCREV_tfa = "a1be69e6c5db450f841f0edd9d734bf3cffb6621"
+SRCBRANCH = "lts-v2.10"
+
+LIC_FILES_CHKSUM += "file://docs/license.rst;md5=b2c740efedc159745b9b31f88ff03dde"
+
+# mbedtls-3.4.1
+SRC_URI_MBEDTLS = "git://github.com/ARMmbed/mbedtls.git;name=mbedtls;protocol=https;destsuffix=git/mbedtls;branch=master"
+SRCREV_mbedtls = "72718dd87e087215ce9155a826ee5a66cfbe9631"
+
+LIC_FILES_CHKSUM_MBEDTLS = "file://mbedtls/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
diff --git a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc
index 1747c65..772366d 100644
--- a/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc
+++ b/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m.inc
@@ -22,13 +22,13 @@
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
-# At present, TF-M needs GCC >10 but <11.3 so use 11.2:
-# https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/tree/docs/getting_started/tfm_getting_started.rst?h=TF-Mv1.8.0#n214
+# At present, TF-M Select other GNU Arm compiler versions instead of 11.2:
+# https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/tree/docs/getting_started/tfm_getting_started.rst#n214
 #
 # See tools/requirements.txt for Python dependencies
 DEPENDS += "cmake-native \
             ninja-native \
-            gcc-arm-none-eabi-11.2-native \
+            gcc-arm-none-eabi-native \
             python3-cbor2-native \
             python3-click-native \
             python3-cryptography-native \
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/edk2-basetools-native_202311.bb b/meta-arm/meta-arm/recipes-bsp/uefi/edk2-basetools-native_202311.bb
deleted file mode 100644
index 6bd880b..0000000
--- a/meta-arm/meta-arm/recipes-bsp/uefi/edk2-basetools-native_202311.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-# Install EDK2 Base Tools in native sysroot. Currently the BaseTools are not
-# built, they are just copied to native sysroot. This is sufficient for
-# generating UEFI capsules as it only depends on some python scripts. Other
-# tools need to be built first before adding to sysroot.
-
-SUMMARY = "EDK2 Base Tools"
-LICENSE = "BSD-2-Clause-Patent"
-
-# EDK2
-SRC_URI = "git://github.com/tianocore/edk2.git;branch=master;protocol=https"
-LIC_FILES_CHKSUM = "file://License.txt;md5=2b415520383f7964e96700ae12b4570a"
-
-SRCREV = "8736b8fdca85e02933cdb0a13309de14c9799ece"
-
-S = "${WORKDIR}/git"
-
-inherit native
-
-RDEPENDS:${PN} += "python3-core"
-
-do_install () {
-    mkdir -p ${D}${bindir}/edk2-BaseTools
-    cp -r ${WORKDIR}/git/BaseTools/* ${D}${bindir}/edk2-BaseTools/
-}
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/edk2-basetools-native_202402.bb b/meta-arm/meta-arm/recipes-bsp/uefi/edk2-basetools-native_202402.bb
new file mode 100644
index 0000000..bd84096
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/uefi/edk2-basetools-native_202402.bb
@@ -0,0 +1,24 @@
+# Install EDK2 Base Tools in native sysroot. Currently the BaseTools are not
+# built, they are just copied to native sysroot. This is sufficient for
+# generating UEFI capsules as it only depends on some python scripts. Other
+# tools need to be built first before adding to sysroot.
+
+SUMMARY = "EDK2 Base Tools"
+LICENSE = "BSD-2-Clause-Patent"
+
+# EDK2
+SRC_URI = "git://github.com/tianocore/edk2.git;branch=master;protocol=https"
+LIC_FILES_CHKSUM = "file://License.txt;md5=2b415520383f7964e96700ae12b4570a"
+
+SRCREV = "edc6681206c1a8791981a2f911d2fb8b3d2f5768"
+
+S = "${WORKDIR}/git"
+
+inherit native
+
+RDEPENDS:${PN} += "python3-core"
+
+do_install () {
+    mkdir -p ${D}${bindir}/edk2-BaseTools
+    cp -r ${WORKDIR}/git/BaseTools/* ${D}${bindir}/edk2-BaseTools/
+}
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202402.bb b/meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202402.bb
new file mode 100644
index 0000000..0588531
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/uefi/edk2-firmware_202402.bb
@@ -0,0 +1,7 @@
+SRCREV_edk2           ?= "edc6681206c1a8791981a2f911d2fb8b3d2f5768"
+SRCREV_edk2-platforms ?= "07842635c80b64c4a979a652104ea1141ba5007a"
+
+# FIXME - clang is having issues with antlr
+TOOLCHAIN:aarch64 = "gcc"
+
+require recipes-bsp/uefi/edk2-firmware.inc
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs/0001-Fix-for-mismatch-in-function-prototype.patch b/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs/0001-Fix-for-mismatch-in-function-prototype.patch
deleted file mode 100644
index 0babf2f..0000000
--- a/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs/0001-Fix-for-mismatch-in-function-prototype.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 42cc39fdea21177e82b6cec138c06726242673f7 Mon Sep 17 00:00:00 2001
-From: Srikar Josyula <srikar.josyula@arm.com>
-Date: Tue, 25 Jul 2023 12:55:04 +0530
-Subject: [PATCH] Fix for mismatch in function prototype
-
- - Mismatch between function prototype and definition
-   causing build failure with GCC 13.1.1
- - Fixed the function prototype for val_get_exerciser_err_info
-
-Signed-off-by: Srikar Josyula <srikar.josyula@arm.com>
-
-Upstream-Status: Backport
-Signed-off-by: Jon Mason <jon.mason@arm.com>
-
----
- val/include/sbsa_avs_exerciser.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/val/include/sbsa_avs_exerciser.h b/val/include/sbsa_avs_exerciser.h
-index 4b2c62b089f5..7c0e3d0fb58f 100644
---- a/val/include/sbsa_avs_exerciser.h
-+++ b/val/include/sbsa_avs_exerciser.h
-@@ -118,7 +118,7 @@ uint32_t val_exerciser_ops(EXERCISER_OPS ops, uint64_t param, uint32_t instance)
- uint32_t val_exerciser_get_data(EXERCISER_DATA_TYPE type, exerciser_data_t *data, uint32_t instance);
- uint32_t val_exerciser_execute_tests(uint32_t level);
- uint32_t val_exerciser_get_bdf(uint32_t instance);
--uint32_t val_get_exerciser_err_info(uint32_t type);
-+uint32_t val_get_exerciser_err_info(EXERCISER_ERROR_CODE type);
- 
- uint32_t e001_entry(void);
- uint32_t e002_entry(void);
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs_7.1.2.bb b/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs_7.1.2.bb
deleted file mode 100644
index a564e2a..0000000
--- a/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs_7.1.2.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-require recipes-bsp/uefi/edk2-firmware_202311.bb
-PROVIDES:remove = "virtual/bootloader"
-
-LICENSE += "& Apache-2.0"
-LIC_FILES_CHKSUM += "file://ShellPkg/Application/sbsa-acs/LICENSE.md;md5=2a944942e1496af1886903d274dedb13"
-
-SRC_URI += "git://github.com/ARM-software/sbsa-acs;destsuffix=edk2/ShellPkg/Application/sbsa-acs;protocol=https;branch=master;name=acs \
-            git://github.com/tianocore/edk2-libc;destsuffix=edk2/edk2-libc;protocol=https;branch=master;name=libc \
-            file://0001-Patch-in-the-paths-to-the-SBSA-test-suite.patch \
-            file://0002-Enforce-using-good-old-BFD-linker.patch \
-            file://0001-Fix-for-mismatch-in-function-prototype.patch;patchdir=ShellPkg/Application/sbsa-acs \
-            "
-
-
-SRCREV_acs = "23253befbed2aee7304470fd83b78672488a7fc2"
-SRCREV_libc = "d3dea661da9ae4a3421a80905e75a8dc77aa980e"
-
-# GCC12 trips on it
-#see https://src.fedoraproject.org/rpms/edk2/blob/rawhide/f/0032-Basetools-turn-off-gcc12-warning.patch
-BUILD_CFLAGS += "-Wno-error=stringop-overflow"
-
-COMPATIBLE_HOST = "aarch64.*-linux"
-COMPATIBLE_MACHINE = ""
-PACKAGE_ARCH = "${TUNE_PKGARCH}"
-
-EDK2_PLATFORM = "Shell"
-EDK2_PLATFORM_DSC = "ShellPkg/ShellPkg.dsc"
-EDK2_EXTRA_BUILD = "--module ShellPkg/Application/sbsa-acs/uefi_app/SbsaAvs.inf"
-
-PACKAGES_PATH .= ":${S}/edk2-libc"
-
-do_install() {
-    install -d ${D}/firmware
-    install ${B}/Build/${EDK2_PLATFORM}/${EDK2_BUILD_MODE}_${EDK_COMPILER}/*/Sbsa.efi ${D}/firmware/
-}
diff --git a/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs_7.1.4.bb b/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs_7.1.4.bb
new file mode 100644
index 0000000..a29c16e
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-bsp/uefi/sbsa-acs_7.1.4.bb
@@ -0,0 +1,31 @@
+require recipes-bsp/uefi/edk2-firmware_202402.bb
+PROVIDES:remove = "virtual/bootloader"
+
+LICENSE += "& Apache-2.0"
+LIC_FILES_CHKSUM += "file://ShellPkg/Application/sbsa-acs/LICENSE.md;md5=2a944942e1496af1886903d274dedb13"
+
+SRC_URI += "git://github.com/ARM-software/sbsa-acs;destsuffix=edk2/ShellPkg/Application/sbsa-acs;protocol=https;branch=master;name=acs \
+            git://github.com/tianocore/edk2-libc;destsuffix=edk2/edk2-libc;protocol=https;branch=master;name=libc \
+            file://0001-Patch-in-the-paths-to-the-SBSA-test-suite.patch \
+            file://0002-Enforce-using-good-old-BFD-linker.patch \
+            "
+
+SRCREV_acs = "be169f0008d86341e1e48cb70d524bd1518c3acc"
+SRCREV_libc = "4667a82f0d873221f8b25ea701ce57a29270e4cb"
+
+UPSTREAM_CHECK_URI = "https://github.com/ARM-software/sbsa-acs/releases"
+
+COMPATIBLE_HOST = "aarch64.*-linux"
+COMPATIBLE_MACHINE = ""
+PACKAGE_ARCH = "${TUNE_PKGARCH}"
+
+EDK2_PLATFORM = "Shell"
+EDK2_PLATFORM_DSC = "ShellPkg/ShellPkg.dsc"
+EDK2_EXTRA_BUILD = "--module ShellPkg/Application/sbsa-acs/uefi_app/SbsaAvs.inf"
+
+PACKAGES_PATH .= ":${S}/edk2-libc"
+
+do_install() {
+    install -d ${D}/firmware
+    install ${B}/Build/${EDK2_PLATFORM}/${EDK2_BUILD_MODE}_${EDK_COMPILER}/*/Sbsa.efi ${D}/firmware/
+}
diff --git a/meta-arm/meta-arm/recipes-devtools/gn/gn_git.bb b/meta-arm/meta-arm/recipes-devtools/gn/gn_git.bb
index 5a6f19d..7ec340c 100644
--- a/meta-arm/meta-arm/recipes-devtools/gn/gn_git.bb
+++ b/meta-arm/meta-arm/recipes-devtools/gn/gn_git.bb
@@ -4,6 +4,8 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d"
 
+UPSTREAM_CHECK_COMMITS = "1"
+
 SRC_URI = "git://gn.googlesource.com/gn;protocol=https;branch=main \
            file://0001-Replace-lstat64-stat64-functions-on-linux.patch"
 SRCREV = "4bd1a77e67958fb7f6739bd4542641646f264e5d"
diff --git a/meta-arm/meta-arm/recipes-kernel/linux/files/aarch64/0001-Revert-arm64-defconfig-Enable-Tegra-MGBE-driver.patch b/meta-arm/meta-arm/recipes-kernel/linux/files/aarch64/0001-Revert-arm64-defconfig-Enable-Tegra-MGBE-driver.patch
deleted file mode 100644
index 995bc2c..0000000
--- a/meta-arm/meta-arm/recipes-kernel/linux/files/aarch64/0001-Revert-arm64-defconfig-Enable-Tegra-MGBE-driver.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 7bc0bae10b0f21cfc8df23848844b66bf1b4d751 Mon Sep 17 00:00:00 2001
-From: Jon Mason <jdmason@kudzu.us>
-Date: Fri, 3 Feb 2023 05:16:43 -0500
-Subject: [PATCH 1/2] Revert "arm64: defconfig: Enable Tegra MGBE driver"
-
-This reverts commit 4cac4de4b05f0a1d5920d12278bf8787011661d3.
-
-Signed-off-by: Jon Mason <jon.mason@arm.com>
-Upstream-Status: Inappropriate
----
- arch/arm64/configs/defconfig | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
-index 0b6af3348e79..70919b241469 100644
---- a/arch/arm64/configs/defconfig
-+++ b/arch/arm64/configs/defconfig
-@@ -362,7 +362,6 @@ CONFIG_SMSC911X=y
- CONFIG_SNI_AVE=y
- CONFIG_SNI_NETSEC=y
- CONFIG_STMMAC_ETH=m
--CONFIG_DWMAC_TEGRA=m
- CONFIG_TI_K3_AM65_CPSW_NUSS=y
- CONFIG_QCOM_IPA=m
- CONFIG_MESON_GXL_PHY=m
--- 
-2.30.2
-
diff --git a/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-ftpm_git.bb b/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-ftpm_git.bb
index df1f3bd..7996e9b 100644
--- a/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-ftpm_git.bb
+++ b/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-ftpm_git.bb
@@ -22,9 +22,10 @@
 
 SRC_URI = "gitsm://github.com/Microsoft/ms-tpm-20-ref;branch=main;protocol=https \
            file://0001-add-enum-to-ta-flags.patch"
-
 SRCREV = "d638536d0fe01acd5e39ffa1bd100b3da82d92c7"
 
+UPSTREAM_CHECK_COMMITS = "1"
+
 S = "${WORKDIR}/git"
 
 OPTEE_CLIENT_EXPORT = "${STAGING_DIR_HOST}${prefix}"
diff --git a/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-os_%.bbappend b/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-os_%.bbappend
index f1165da..4829bc1 100644
--- a/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-os_%.bbappend
+++ b/meta-arm/meta-arm/recipes-security/optee-ftpm/optee-os_%.bbappend
@@ -10,6 +10,6 @@
 EXTRA_OEMAKE:append = "\
                        ${@bb.utils.contains('MACHINE_FEATURES', \
                       'optee-ftpm', \
-                      'CFG_EARLY_TA=y EARLY_TA_PATHS="${STAGING_DIR_TARGET}/${nonarch_base_libdir}/optee_armtz/${FTPM_UUID}.stripped.elf"', \
+                      'CFG_EARLY_TA=y EARLY_TA_PATHS="${STAGING_DIR_TARGET}/${base_libdir}/optee_armtz/${FTPM_UUID}.stripped.elf"', \
                       '', \
                       d)} "
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee-os-ts.inc b/meta-arm/meta-arm/recipes-security/optee/optee-os-ts.inc
index 057dde2..ce5b8b8 100644
--- a/meta-arm/meta-arm/recipes-security/optee/optee-os-ts.inc
+++ b/meta-arm/meta-arm/recipes-security/optee/optee-os-ts.inc
@@ -59,4 +59,11 @@
 EXTRA_OEMAKE:append = "${@bb.utils.contains('MACHINE_FEATURES', 'optee-spmc-test', \
                                         ' CFG_SPMC_TESTS=y', '' , d)}"
 
+# Block Storage SP
+DEPENDS:append  = "${@bb.utils.contains('MACHINE_FEATURES', 'ts-block-storage', \
+                                        ' ts-sp-block-storage', '' , d)}"
+
+SP_PATHS:append = "${@bb.utils.contains('MACHINE_FEATURES', 'ts-block-storage', \
+                                        ' ${TS_BIN}/${BLOCK_STORAGE_UUID}.stripped.elf', '', d)}"
+
 EXTRA_OEMAKE:append = "${@oe.utils.conditional('SP_PATHS', '', '', ' CFG_MAP_EXT_DT_SECURE=y CFG_SECURE_PARTITION=y SP_PATHS="${SP_PATHS}" ', d)}"
diff --git a/meta-arm/meta-arm/recipes-security/optee/optee.inc b/meta-arm/meta-arm/recipes-security/optee/optee.inc
index af391f3..1569a9d 100644
--- a/meta-arm/meta-arm/recipes-security/optee/optee.inc
+++ b/meta-arm/meta-arm/recipes-security/optee/optee.inc
@@ -15,6 +15,9 @@
 OPTEE_ARCH:aarch64 = "arm64"
 OPTEE_CORE = "${@d.getVar('OPTEE_ARCH').upper()}"
 
+# FIXME - breaks with Clang 18.  See https://github.com/OP-TEE/optee_os/issues/6754
+TOOLCHAIN = "gcc"
+
 OPTEE_TOOLCHAIN = "${@d.getVar('TOOLCHAIN') or 'gcc'}"
 OPTEE_COMPILER = "${@bb.utils.contains("BBFILE_COLLECTIONS", "clang-layer", "${OPTEE_TOOLCHAIN}", "gcc", d)}"
 
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-block-storage_git.bb b/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-block-storage_git.bb
new file mode 100644
index 0000000..efbaad1
--- /dev/null
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-sp-block-storage_git.bb
@@ -0,0 +1,13 @@
+# SPDX-FileCopyrightText: <text>Copyright 2023 Arm Limited and/or its
+# affiliates <open-source-office@arm.com></text>
+#
+# SPDX-License-Identifier: MIT
+
+DESCRIPTION = "Trusted Services block storage service provider"
+
+require ts-sp-common.inc
+
+SP_UUID = "${BLOCK_STORAGE_UUID}"
+TS_SP_BLOCK_STORAGE_CONFIG ?= "default"
+
+OECMAKE_SOURCEPATH="${S}/deployments/block-storage/config/${TS_SP_BLOCK_STORAGE_CONFIG}-${TS_ENV}"
diff --git a/meta-arm/meta-arm/recipes-security/trusted-services/ts-uuid.inc b/meta-arm/meta-arm/recipes-security/trusted-services/ts-uuid.inc
index c18ec5d..1eb05d8 100644
--- a/meta-arm/meta-arm/recipes-security/trusted-services/ts-uuid.inc
+++ b/meta-arm/meta-arm/recipes-security/trusted-services/ts-uuid.inc
@@ -9,4 +9,5 @@
 STORAGE_UUID     = "751bf801-3dde-4768-a514-0f10aeed1790"
 SPM_TEST1_UUID   = "5c9edbc3-7b3a-4367-9f83-7c191ae86a37"
 SPM_TEST2_UUID   = "7817164c-c40c-4d1a-867a-9bb2278cf41a"
-SPM_TEST3_UUID   = "23eb0100-e32a-4497-9052-2f11e584afa6"
\ No newline at end of file
+SPM_TEST3_UUID   = "23eb0100-e32a-4497-9052-2f11e584afa6"
+BLOCK_STORAGE_UUID = "63646e80-eb52-462f-ac4f-8cdf3987519c"
diff --git a/meta-arm/scripts/machine-summary.py b/meta-arm/scripts/machine-summary.py
index 477bdfc..455a517 100755
--- a/meta-arm/scripts/machine-summary.py
+++ b/meta-arm/scripts/machine-summary.py
@@ -146,9 +146,11 @@
            "edk2-firmware",
            "u-boot",
            "optee-os",
+           "optee-ftpm",
            "hafnium",
            "boot-wrapper-aarch64",
            "gator-daemon",
+           "gn",
            "opencsd",
            "gcc-aarch64-none-elf-native",
            "gcc-arm-none-eabi-native")
diff --git a/meta-openembedded/meta-filesystems/conf/layer.conf b/meta-openembedded/meta-filesystems/conf/layer.conf
index 4f13bd9..c2263c8 100644
--- a/meta-openembedded/meta-filesystems/conf/layer.conf
+++ b/meta-openembedded/meta-filesystems/conf/layer.conf
@@ -15,4 +15,4 @@
 
 LAYERDEPENDS_filesystems-layer = "core openembedded-layer networking-layer"
 
-LAYERSERIES_COMPAT_filesystems-layer = "nanbield"
+LAYERSERIES_COMPAT_filesystems-layer = "scarthgap"
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/unionfs-fuse/files/0001-support-cross-compiling.patch b/meta-openembedded/meta-filesystems/recipes-filesystems/unionfs-fuse/files/0001-support-cross-compiling.patch
index 13e782f..9b4d0f6 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/unionfs-fuse/files/0001-support-cross-compiling.patch
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/unionfs-fuse/files/0001-support-cross-compiling.patch
@@ -7,6 +7,8 @@
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 Signed-off-by: Alper Ak <alperyasinak1@gmail.com>
+
+Upstream-Status: Pending
 ---
  src/CMakeLists.txt | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils/0001-yaffs_guts.h-define-YTIME_T-if-not-already-defined.patch b/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils/0001-yaffs_guts.h-define-YTIME_T-if-not-already-defined.patch
new file mode 100644
index 0000000..98c27d2
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils/0001-yaffs_guts.h-define-YTIME_T-if-not-already-defined.patch
@@ -0,0 +1,34 @@
+From 05cc2b958090f96d6fa128da43aa69669625e529 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Tue, 5 Mar 2024 12:03:23 +0000
+Subject: [PATCH] yaffs_guts.h: define YTIME_T if not already defined
+
+Fixed:
+yaffs_guts.h:501:9: error: unknown type name 'YTIME_T'
+  501 |         YTIME_T yst_uid;
+
+Upstream-Status: Pending
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ yaffs_guts.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/yaffs_guts.h b/yaffs_guts.h
+index 74ded0b..598271b 100644
+--- a/yaffs_guts.h
++++ b/yaffs_guts.h
+@@ -487,6 +487,10 @@ struct yaffs_obj {
+ 
+ 	YCHAR short_name[YAFFS_SHORT_NAME_LENGTH + 1];
+ 
++#ifndef YTIME_T
++#define YTIME_T     time_t
++#endif
++
+ #ifdef CONFIG_YAFFS_WINCE
+ 	//these are always 64 bits
+ 	u32 win_ctime[2];
+-- 
+2.35.5
+
diff --git a/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb b/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
index 7228172..ca5e330 100644
--- a/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
+++ b/meta-openembedded/meta-filesystems/recipes-filesystems/yaffs2/yaffs2-utils_git.bb
@@ -9,7 +9,8 @@
                     file://utils/mkyaffsimage.c;beginline=10;endline=12;md5=5f5464f9b3e981ca574e65b00e438561 \
                     "
 
-PV = "0.0+git"
+# The commit date of SRCREV
+PV = "20221209"
 
 DEPENDS = "mtd-utils"
 
@@ -17,9 +18,10 @@
 SRC_URI = "git://www.aleph1.co.uk/yaffs2;protocol=git;branch=master \
            file://makefile-add-ldflags.patch \
            file://0001-define-loff_t-if-not-already-defined.patch \
+           file://0001-yaffs_guts.h-define-YTIME_T-if-not-already-defined.patch \
            "
 
-SRCREV = "9a6f486e56f927eeb8dc7e4e0d84f6bb95eeaa0f"
+SRCREV = "613a901a229e8a701c18f003dd0aee18453e0670"
 
 UPSTREAM_CHECK_COMMITS = "1"
 
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/files/0001-include-libgen.h-for-basename-API-prototype.patch b/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/files/0001-include-libgen.h-for-basename-API-prototype.patch
new file mode 100644
index 0000000..a44d3b7
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/files/0001-include-libgen.h-for-basename-API-prototype.patch
@@ -0,0 +1,45 @@
+From 45a532ad73b1ba27fc951657a33f39e8fa915765 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 10:02:20 -0700
+Subject: [PATCH] include libgen.h for basename API prototype
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://lore.kernel.org/linux-xfs/20240325170941.3279129-1-raj.khem@gmail.com/T/#u]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ common/main.c    | 1 +
+ invutil/invidx.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/common/main.c b/common/main.c
+index 1db07d4..ca3b7d4 100644
+--- a/common/main.c
++++ b/common/main.c
+@@ -16,6 +16,7 @@
+  * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+  */
+ 
++#include <libgen.h>
+ #include <stdio.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+diff --git a/invutil/invidx.c b/invutil/invidx.c
+index 5874e8d..c4e2e21 100644
+--- a/invutil/invidx.c
++++ b/invutil/invidx.c
+@@ -19,6 +19,7 @@
+ #include <xfs/xfs.h>
+ #include <xfs/jdm.h>
+ 
++#include <libgen.h>
+ #include <stdio.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.12.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.12.bb
index 9e595b9..9c03949 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.12.bb
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsdump/xfsdump_3.1.12.bb
@@ -12,6 +12,7 @@
 
 SRC_URI = "https://www.kernel.org/pub/linux/utils/fs/xfs/xfsdump/${BP}.tar.xz \
            file://remove-install-as-user.patch \
+           file://0001-include-libgen.h-for-basename-API-prototype.patch \
            ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','file://0001-xfsdump-support-usrmerge.patch','',d)} \
            "
 SRC_URI[sha256sum] = "f39c4c1b306b2dd7ec979c0e94d60fe69083d2ecf9af051cac5ef3bed772c74a"
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0005-Replace-off64_t-stat64-with-off_t-stat.patch b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0005-Replace-off64_t-stat64-with-off_t-stat.patch
index 731c001..940d63c 100644
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0005-Replace-off64_t-stat64-with-off_t-stat.patch
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/files/0005-Replace-off64_t-stat64-with-off_t-stat.patch
@@ -42,18 +42,18 @@
  26 files changed, 74 insertions(+), 74 deletions(-)
 
 diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c
-index 79f6594..854fd7f 100644
+index 0420649..98a578a 100644
 --- a/copy/xfs_copy.c
 +++ b/copy/xfs_copy.c
-@@ -888,7 +888,7 @@ main(int argc, char **argv)
+@@ -881,7 +881,7 @@ main(int argc, char **argv)
  			}
  		} else  {
- 			char	*lb[XFS_MAX_SECTORSIZE] = { NULL };
+ 			char	*lb = memalign(wbuf_align, XFS_MAX_SECTORSIZE);
 -			off64_t	off;
 +			off_t	off;
+ 			ssize_t	len;
  
  			/* ensure device files are sufficiently large */
- 
 diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c
 index ba02506..12fffbd 100644
 --- a/fsr/xfs_fsr.c
@@ -68,7 +68,7 @@
  	int 		ct, wc, wc_b4;
  	char		ffname[SMBUFSZ];
 diff --git a/io/bmap.c b/io/bmap.c
-index 27383ca..0b14bb7 100644
+index 722a389..6182e1c 100644
 --- a/io/bmap.c
 +++ b/io/bmap.c
 @@ -257,7 +257,7 @@ bmap_f(
@@ -186,7 +186,7 @@
  	swidth = (fsgeo->swidth * fsgeo->blocksize);
  
 diff --git a/io/io.h b/io/io.h
-index 64b7a66..5f42301 100644
+index fe474fa..68e5e48 100644
 --- a/io/io.h
 +++ b/io/io.h
 @@ -53,7 +53,7 @@ extern int stat_f(int argc, char **argv);
@@ -603,7 +603,7 @@
  
  	init_cvtnum(&blocksize, &sectsize);
 diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c
-index d5aad3e..0faa05b 100644
+index 0e33211..153007d 100644
 --- a/libxfs/rdwr.c
 +++ b/libxfs/rdwr.c
 @@ -576,7 +576,7 @@ libxfs_balloc(
@@ -615,8 +615,8 @@
  {
  	int	sts;
  
-@@ -639,7 +639,7 @@ libxfs_readbufr_map(struct xfs_buftarg *btp, struct xfs_buf *bp, int flags)
- 	fd = libxfs_device_to_fd(btp->bt_bdev);
+@@ -638,7 +638,7 @@ libxfs_readbufr_map(struct xfs_buftarg *btp, struct xfs_buf *bp, int flags)
+ 
  	buf = bp->b_addr;
  	for (i = 0; i < bp->b_nmaps; i++) {
 -		off64_t	offset = LIBXFS_BBTOOFF64(bp->b_maps[i].bm_bn);
@@ -624,7 +624,7 @@
  		int len = BBTOB(bp->b_maps[i].bm_len);
  
  		error = __read_buf(fd, buf, len, offset, flags);
-@@ -798,7 +798,7 @@ err:
+@@ -797,7 +797,7 @@ err:
  }
  
  static int
@@ -633,7 +633,7 @@
  {
  	int	sts;
  
-@@ -864,7 +864,7 @@ libxfs_bwrite(
+@@ -863,7 +863,7 @@ libxfs_bwrite(
  		void	*buf = bp->b_addr;
  
  		for (i = 0; i < bp->b_nmaps; i++) {
@@ -643,20 +643,20 @@
  
  			bp->b_error = __write_buf(fd, buf, len, offset,
 diff --git a/mdrestore/xfs_mdrestore.c b/mdrestore/xfs_mdrestore.c
-index 7c1a66c..bb54e38 100644
+index 8e3998d..334bdd2 100644
 --- a/mdrestore/xfs_mdrestore.c
 +++ b/mdrestore/xfs_mdrestore.c
-@@ -116,7 +116,7 @@ perform_restore(
+@@ -160,7 +160,7 @@ verify_device_size(
+ 	} else {
  		/* ensure device is sufficiently large enough */
- 
- 		char		*lb[XFS_MAX_SECTORSIZE] = { NULL };
+ 		char		lb[XFS_MAX_SECTORSIZE] = { 0 };
 -		off64_t		off;
 +		off_t		off;
  
- 		off = sb.sb_dblocks * sb.sb_blocksize - sizeof(lb);
- 		if (pwrite(dst_fd, lb, sizeof(lb), off) < 0)
+ 		off = nr_blocks * blocksize - sizeof(lb);
+ 		if (pwrite(dev_fd, lb, sizeof(lb), off) < 0)
 diff --git a/repair/prefetch.c b/repair/prefetch.c
-index 017750e..35b5013 100644
+index 78c1e39..b0dd197 100644
 --- a/repair/prefetch.c
 +++ b/repair/prefetch.c
 @@ -475,7 +475,7 @@ pf_batch_read(
@@ -669,7 +669,7 @@
  	int			i;
  	int			inode_bufs;
 diff --git a/scrub/spacemap.c b/scrub/spacemap.c
-index 03440d3..00bee17 100644
+index b6fd411..9cefe07 100644
 --- a/scrub/spacemap.c
 +++ b/scrub/spacemap.c
 @@ -97,11 +97,11 @@ scan_ag_rmaps(
@@ -688,7 +688,7 @@
  	memset(keys, 0, sizeof(struct fsmap) * 2);
  	keys->fmr_device = ctx->fsinfo.fs_datadev;
 diff --git a/spaceman/freesp.c b/spaceman/freesp.c
-index 423568a..df878ce 100644
+index 70dcdb5..f5177cb 100644
 --- a/spaceman/freesp.c
 +++ b/spaceman/freesp.c
 @@ -62,7 +62,7 @@ static void
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_6.5.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_6.5.0.bb
deleted file mode 100644
index fd27979..0000000
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_6.5.0.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "XFS Filesystem Utilities"
-HOMEPAGE = "http://oss.sgi.com/projects/xfs"
-SECTION = "base"
-LICENSE = "GPL-2.0-only & LGPL-2.1-only"
-LICENSE:libhandle = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://LICENSES/GPL-2.0;md5=e6a75371ba4d16749254a51215d13f97 \
-                    file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd"
-DEPENDS = "util-linux util-linux-native"
-SRC_URI = "https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/${BP}.tar.xz \
-           file://remove_flags_from_build_flags.patch \
-           file://0002-include-include-xfs-linux.h-after-sys-mman.h.patch \
-           file://0001-support-usrmerge.patch \
-           file://0004-configure-Use-AC_SYS_LARGERFILE-autoconf-macro.patch \
-           file://0005-Replace-off64_t-stat64-with-off_t-stat.patch \
-           "
-SRC_URI[sha256sum] = "8db81712b32756b97d89dd9a681ac5e325bbb75e585382cd4863fab7f9d021c6"
-inherit autotools-brokensep pkgconfig
-
-PACKAGES =+ "${PN}-fsck ${PN}-mkfs ${PN}-repair libhandle"
-
-DEPENDS += "util-linux libinih liburcu"
-
-RDEPENDS:${PN} = "${PN}-fsck ${PN}-mkfs ${PN}-repair"
-
-FILES:${PN}-fsck = "${base_sbindir}/fsck.xfs"
-FILES:${PN}-mkfs = "${base_sbindir}/mkfs.xfs"
-FILES:${PN}-repair = "${base_sbindir}/xfs_repair"
-
-FILES:libhandle = "${base_libdir}/libhandle${SOLIBS}"
-
-EXTRA_OECONF = "--enable-gettext=no \
-                --enable-scrub=no \
-                INSTALL_USER=root \
-                INSTALL_GROUP=root \
-                ac_cv_header_aio_h=yes \
-                ac_cv_lib_rt_lio_listio=yes \
-                OPTIMIZER='${SELECTED_OPTIMIZATION}' \
-"
-
-DISABLE_STATIC = ""
-EXTRA_AUTORECONF += "-I ${S}/m4 --exclude=autoheader"
-
-PACKAGECONFIG ??= "blkid"
-
-PACKAGECONFIG[blkid] = "--enable-blkid=yes,--enable-blkid=no,util-linux"
-
-export DEBUG="-DNDEBUG"
-export BUILD_VERBOSE="1"
-export tagname="CC"
-
-EXTRA_OEMAKE = "DIST_ROOT='${D}'"
-
-do_configure () {
-    export BUILD_CC="${BUILD_CC} ${BUILD_CFLAGS}"
-    # Prevent Makefile from calling configure without arguments,
-    # when do_configure gets called for a second time.
-    rm -f ${B}/include/builddefs ${B}/include/platform_defs.h ${B}/configure
-    # Recreate configure script.
-    oe_runmake configure
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
-    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
-    oe_runconf
-}
-
-do_install:append() {
-        oe_runmake 'DESTDIR=${D}' install-dev
-        rm ${D}${libdir}/*.la
-        rmdir --ignore-fail-on-non-empty ${D}${libdir}
-
-        if [ ${libdir} != ${base_libdir} ];then
-            ln -sf -r ${D}${libdir}/libhandle.a ${D}${base_libdir}/libhandle.a
-            ln -sf -r ${D}${base_libdir}/libhandle.so ${D}${libdir}/libhandle.so
-        fi
-}
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_6.6.0.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_6.6.0.bb
new file mode 100644
index 0000000..07c5e97
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfsprogs/xfsprogs_6.6.0.bb
@@ -0,0 +1,74 @@
+SUMMARY = "XFS Filesystem Utilities"
+HOMEPAGE = "http://oss.sgi.com/projects/xfs"
+SECTION = "base"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LICENSE:libhandle = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://LICENSES/GPL-2.0;md5=e6a75371ba4d16749254a51215d13f97 \
+                    file://LICENSES/LGPL-2.1;md5=b370887980db5dd40659b50909238dbd"
+DEPENDS = "util-linux util-linux-native"
+SRC_URI = "https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/${BP}.tar.xz \
+           file://remove_flags_from_build_flags.patch \
+           file://0002-include-include-xfs-linux.h-after-sys-mman.h.patch \
+           file://0001-support-usrmerge.patch \
+           file://0004-configure-Use-AC_SYS_LARGERFILE-autoconf-macro.patch \
+           file://0005-Replace-off64_t-stat64-with-off_t-stat.patch \
+           "
+SRC_URI[sha256sum] = "50ca2f4676df8fab4cb4c3ef3dd512d5551e6844d40a65a31d5b8e03593d22df"
+inherit autotools-brokensep pkgconfig
+
+PACKAGES =+ "${PN}-fsck ${PN}-mkfs ${PN}-repair libhandle"
+
+DEPENDS += "util-linux libinih liburcu"
+
+RDEPENDS:${PN} = "${PN}-fsck ${PN}-mkfs ${PN}-repair"
+
+FILES:${PN}-fsck = "${base_sbindir}/fsck.xfs"
+FILES:${PN}-mkfs = "${base_sbindir}/mkfs.xfs"
+FILES:${PN}-repair = "${base_sbindir}/xfs_repair"
+
+FILES:libhandle = "${base_libdir}/libhandle${SOLIBS}"
+
+EXTRA_OECONF = "--enable-gettext=no \
+                --enable-scrub=no \
+                INSTALL_USER=root \
+                INSTALL_GROUP=root \
+                ac_cv_header_aio_h=yes \
+                ac_cv_lib_rt_lio_listio=yes \
+                OPTIMIZER='${SELECTED_OPTIMIZATION}' \
+"
+
+DISABLE_STATIC = ""
+EXTRA_AUTORECONF += "-I ${S}/m4 --exclude=autoheader"
+
+PACKAGECONFIG ??= "blkid"
+
+PACKAGECONFIG[blkid] = "--enable-blkid=yes,--enable-blkid=no,util-linux"
+
+export DEBUG="-DNDEBUG"
+export BUILD_VERBOSE="1"
+export tagname="CC"
+
+EXTRA_OEMAKE = "DIST_ROOT='${D}'"
+
+do_configure () {
+    export BUILD_CC="${BUILD_CC} ${BUILD_CFLAGS}"
+    # Prevent Makefile from calling configure without arguments,
+    # when do_configure gets called for a second time.
+    rm -f ${B}/include/builddefs ${B}/include/platform_defs.h ${B}/configure
+    # Recreate configure script.
+    oe_runmake configure
+    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
+    install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
+    oe_runconf
+}
+
+do_install:append() {
+        oe_runmake 'DESTDIR=${D}' install-dev
+        rm ${D}${libdir}/*.la
+        rmdir --ignore-fail-on-non-empty ${D}${libdir}
+
+        if [ ${libdir} != ${base_libdir} ];then
+            ln -sf -r ${D}${libdir}/libhandle.a ${D}${base_libdir}/libhandle.a
+            ln -sf -r ${D}${base_libdir}/libhandle.so ${D}${libdir}/libhandle.so
+        fi
+}
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0001-include-libgen.h-for-basename-API-prototype.patch b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0001-include-libgen.h-for-basename-API-prototype.patch
new file mode 100644
index 0000000..1570f31
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0001-include-libgen.h-for-basename-API-prototype.patch
@@ -0,0 +1,84 @@
+From 37caab7a43da5ede0ff1eb700f0257a213ac4b18 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 10:46:50 -0700
+Subject: [PATCH 1/2] include libgen.h for basename API prototype
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://lore.kernel.org/fstests/20240325175323.3450750-1-raj.khem@gmail.com/T/#t]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/splice-test.c                   | 1 +
+ src/stat_test.c                     | 1 +
+ src/t_ext4_dax_inline_corruption.c  | 1 +
+ src/t_ext4_dax_journal_corruption.c | 1 +
+ src/t_mmap_collision.c              | 1 +
+ 5 files changed, 5 insertions(+)
+
+diff --git a/src/splice-test.c b/src/splice-test.c
+index eb863673..7b7094f5 100644
+--- a/src/splice-test.c
++++ b/src/splice-test.c
+@@ -11,6 +11,7 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <err.h>
++#include <libgen.h>
+ 
+ #include <stdlib.h>
+ #include <stdio.h>
+diff --git a/src/stat_test.c b/src/stat_test.c
+index 95cfdc4f..77e1acdd 100644
+--- a/src/stat_test.c
++++ b/src/stat_test.c
+@@ -4,6 +4,7 @@
+  * Written by David Howells (dhowells@redhat.com)
+  */
+ 
++#include <libgen.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+diff --git a/src/t_ext4_dax_inline_corruption.c b/src/t_ext4_dax_inline_corruption.c
+index e1a39a6c..a40c5df5 100644
+--- a/src/t_ext4_dax_inline_corruption.c
++++ b/src/t_ext4_dax_inline_corruption.c
+@@ -2,6 +2,7 @@
+ /* Copyright (c) 2018 Intel Corporation. */
+ #include <errno.h>
+ #include <fcntl.h>
++#include <libgen.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+diff --git a/src/t_ext4_dax_journal_corruption.c b/src/t_ext4_dax_journal_corruption.c
+index ba7a96e4..53be10c2 100644
+--- a/src/t_ext4_dax_journal_corruption.c
++++ b/src/t_ext4_dax_journal_corruption.c
+@@ -2,6 +2,7 @@
+ /* Copyright (c) 2018 Intel Corporation. */
+ #include <errno.h>
+ #include <fcntl.h>
++#include <libgen.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+diff --git a/src/t_mmap_collision.c b/src/t_mmap_collision.c
+index c872f4e2..d9315fcf 100644
+--- a/src/t_mmap_collision.c
++++ b/src/t_mmap_collision.c
+@@ -15,6 +15,7 @@
+  */
+ #include <errno.h>
+ #include <fcntl.h>
++#include <libgen.h>
+ #include <pthread.h>
+ #include <stdbool.h>
+ #include <stdio.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0002-Add-missing-STATX_ATTR_-defines-from-musl-sys-stat.h.patch b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0002-Add-missing-STATX_ATTR_-defines-from-musl-sys-stat.h.patch
new file mode 100644
index 0000000..20095c8
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0002-Add-missing-STATX_ATTR_-defines-from-musl-sys-stat.h.patch
@@ -0,0 +1,42 @@
+From 052818e91314b797d96d87672c60f6784160f935 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 10:50:59 -0700
+Subject: [PATCH 2/2] Add missing STATX_ATTR_* defines from musl sys/stat.h
+
+These defines are not provided by sys/stat.h on musl but are
+in glibc's sys/stat.h, therefore to compile the tests on musl
+based systems add the missing defines from linux/stat.h
+if they are not provided
+
+Upstream-Status: Submitted [https://lore.kernel.org/fstests/20240325175323.3450750-2-raj.khem@gmail.com/T/#u]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/statx.h | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/src/statx.h b/src/statx.h
+index 3f239d79..12599f5b 100644
+--- a/src/statx.h
++++ b/src/statx.h
+@@ -12,6 +12,18 @@
+ #define AT_STATX_DONT_SYNC      0x4000  /* - Don't sync attributes with the server */
+ #endif
+ 
++#ifndef STATX_ATTR_COMPRESSED
++#define STATX_ATTR_COMPRESSED		0x00000004 /* [I] File is compressed by the fs */
++#define STATX_ATTR_IMMUTABLE		0x00000010 /* [I] File is marked immutable */
++#define STATX_ATTR_APPEND		0x00000020 /* [I] File is append-only */
++#define STATX_ATTR_NODUMP		0x00000040 /* [I] File is not to be dumped */
++#define STATX_ATTR_ENCRYPTED		0x00000800 /* [I] File requires key to decrypt in fs */
++#define STATX_ATTR_AUTOMOUNT		0x00001000 /* Dir: Automount trigger */
++#define STATX_ATTR_MOUNT_ROOT		0x00002000 /* Root of a mount */
++#define STATX_ATTR_VERITY		0x00100000 /* [I] Verity protected file */
++#define STATX_ATTR_DAX			0x00200000 /* File is currently in DAX state */
++#endif
++
+ #ifndef AT_NO_AUTOMOUNT
+ #define AT_NO_AUTOMOUNT		0x800	/* Suppress terminal automount traversal */
+ #endif
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0003-tests-Makefile-make-sure-group.list-DIRT-exists-befo.patch b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0003-tests-Makefile-make-sure-group.list-DIRT-exists-befo.patch
deleted file mode 100644
index 5e8bf0c..0000000
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests/0003-tests-Makefile-make-sure-group.list-DIRT-exists-befo.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-From b30d5690d7245aa8bd5ca2896e629e62ec97afda Mon Sep 17 00:00:00 2001
-From: Martin Jansa <martin.jansa@gmail.com>
-Date: Thu, 8 Feb 2024 23:01:36 +0100
-Subject: [PATCH] tests/*/Makefile: make sure group.list DIRT exists before
- install
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-* sometimes make install was failing with:
-  cp: cannot stat 'group.list': No such file or directory
-  and bunch of non-fatal messages:
-  mv: failed to preserve ownership for 'group.list': Invalid argument
-
-* this was when tools/mkgroupfile did
-  mv -f "$new_groups" "$groupfile"
-  overwritting the group.list file while install-sh was already
-  copying it to output
-
-* in the end easily reproducible by
-  1) removing tests/*/group.list before each make install
-  2) adding some sleep in mkgroupfile before the mv call
-
-Upstream-Status: Submitted [https://lore.kernel.org/fstests/20240208225241.644701-1-martin.jansa@gmail.com/]
-
-Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
----
- tests/btrfs/Makefile    | 2 +-
- tests/ceph/Makefile     | 2 +-
- tests/cifs/Makefile     | 2 +-
- tests/ext4/Makefile     | 2 +-
- tests/f2fs/Makefile     | 2 +-
- tests/generic/Makefile  | 2 +-
- tests/nfs/Makefile      | 2 +-
- tests/ocfs2/Makefile    | 2 +-
- tests/overlay/Makefile  | 2 +-
- tests/perf/Makefile     | 2 +-
- tests/selftest/Makefile | 2 +-
- tests/shared/Makefile   | 2 +-
- tests/tmpfs/Makefile    | 2 +-
- tests/udf/Makefile      | 2 +-
- tests/xfs/Makefile      | 2 +-
- 15 files changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/tests/btrfs/Makefile b/tests/btrfs/Makefile
-index 1b72a1a1..6d9995b4 100644
---- a/tests/btrfs/Makefile
-+++ b/tests/btrfs/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/ceph/Makefile b/tests/ceph/Makefile
-index 2761e1e9..5f24d518 100644
---- a/tests/ceph/Makefile
-+++ b/tests/ceph/Makefile
-@@ -12,7 +12,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/cifs/Makefile b/tests/cifs/Makefile
-index 62c48935..0b89a01d 100644
---- a/tests/cifs/Makefile
-+++ b/tests/cifs/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/ext4/Makefile b/tests/ext4/Makefile
-index a2a0d561..296e3850 100644
---- a/tests/ext4/Makefile
-+++ b/tests/ext4/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/f2fs/Makefile b/tests/f2fs/Makefile
-index 9d1ed3c6..0a90b465 100644
---- a/tests/f2fs/Makefile
-+++ b/tests/f2fs/Makefile
-@@ -15,7 +15,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/generic/Makefile b/tests/generic/Makefile
-index b464b22b..d6ed3e55 100644
---- a/tests/generic/Makefile
-+++ b/tests/generic/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/nfs/Makefile b/tests/nfs/Makefile
-index 128d2a3a..51590b5c 100644
---- a/tests/nfs/Makefile
-+++ b/tests/nfs/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/ocfs2/Makefile b/tests/ocfs2/Makefile
-index 260ad31b..17e01bf3 100644
---- a/tests/ocfs2/Makefile
-+++ b/tests/ocfs2/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/overlay/Makefile b/tests/overlay/Makefile
-index 2785b94d..c71e78d6 100644
---- a/tests/overlay/Makefile
-+++ b/tests/overlay/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/perf/Makefile b/tests/perf/Makefile
-index 0c74ba39..d72c04d9 100644
---- a/tests/perf/Makefile
-+++ b/tests/perf/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/selftest/Makefile b/tests/selftest/Makefile
-index 3ddfca37..cabc35a9 100644
---- a/tests/selftest/Makefile
-+++ b/tests/selftest/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/shared/Makefile b/tests/shared/Makefile
-index f3128714..2e6aa718 100644
---- a/tests/shared/Makefile
-+++ b/tests/shared/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/tmpfs/Makefile b/tests/tmpfs/Makefile
-index 46544313..46b62dad 100644
---- a/tests/tmpfs/Makefile
-+++ b/tests/tmpfs/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/udf/Makefile b/tests/udf/Makefile
-index ed4434f0..feda69a6 100644
---- a/tests/udf/Makefile
-+++ b/tests/udf/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
-diff --git a/tests/xfs/Makefile b/tests/xfs/Makefile
-index 5f413e67..6bfafdb1 100644
---- a/tests/xfs/Makefile
-+++ b/tests/xfs/Makefile
-@@ -14,7 +14,7 @@ default: $(DIRT)
- 
- include $(BUILDRULES)
- 
--install:
-+install: default
- 	$(INSTALL) -m 755 -d $(TARGET_DIR)
- 	$(INSTALL) -m 755 $(TESTS) $(TARGET_DIR)
- 	$(INSTALL) -m 644 group.list $(TARGET_DIR)
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests_2024.01.14.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests_2024.01.14.bb
deleted file mode 100644
index 2800a4c..0000000
--- a/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests_2024.01.14.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "File system QA test suite"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://LICENSES/GPL-2.0;md5=74274e8a218423e49eefdea80bc55038"
-
-SRCREV = "c46ca4d1f6c0c45f9a3ea18bc31ba5ae89e02c70"
-SRCREV_unionmount = "e3825b16b46f4c4574a1a69909944c059835f914"
-SRCREV_FORMAT = "default_unionmount"
-
-SRC_URI = "git://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git;branch=master \
-           git://github.com/amir73il/unionmount-testsuite.git;branch=master;protocol=https;name=unionmount;destsuffix=unionmount-testsuite \
-           file://0001-add-missing-FTW_-macros-when-not-available-in-libc.patch \
-           file://0002-Drop-detached_mounts_propagation-and-remove-sys-moun.patch \
-           file://0003-tests-Makefile-make-sure-group.list-DIRT-exists-befo.patch \
-           "
-
-S = "${WORKDIR}/git"
-
-# brokensep because m4/package_globals.m4 calls ". ./VERSION" (and that's not the only issue)
-inherit autotools-brokensep useradd
-
-DEPENDS += "xfsprogs acl"
-RDEPENDS:${PN} += "\
-    bash \
-    bc \
-    coreutils \
-    e2fsprogs \
-    e2fsprogs-tune2fs \
-    e2fsprogs-resize2fs \
-    libaio \
-    libcap-bin \
-    overlayfs-tools \
-    perl \
-    python3 \
-    python3-core \
-    xfsprogs \
-    acl \
-    gawk \
-"
-
-USERADD_PACKAGES = "${PN}"
-# these users are necessary to run the tests
-USERADD_PARAM:${PN} = "-U -m fsgqa; -N 123456-fsgqa; -N fsgqa2"
-
-EXTRA_OECONF = "INSTALL_USER=root INSTALL_GROUP=root"
-
-TARGET_CC_ARCH:append:libc-musl = " -D_LARGEFILE64_SOURCE"
-
-do_configure:prepend() {
-    # this is done by Makefile configure target, but we don't call it in do_configure
-    cp -a ${S}/include/install-sh .
-}
-
-do_install() {
-    # otherwise install-sh duplicates DESTDIR prefix
-    export DIST_ROOT="/" DIST_MANIFEST="" DESTDIR="${D}"
-    oe_runmake install
-
-    unionmount_target_dir=${D}${prefix}/xfstests/unionmount-testsuite
-    install -d $unionmount_target_dir/tests
-    install ${WORKDIR}/unionmount-testsuite/tests/* -t $unionmount_target_dir/tests
-    install ${WORKDIR}/unionmount-testsuite/*.py -t $unionmount_target_dir
-    install ${WORKDIR}/unionmount-testsuite/run -t $unionmount_target_dir
-    install ${WORKDIR}/unionmount-testsuite/README -t $unionmount_target_dir
-}
-
-FILES:${PN} += "${prefix}/xfstests"
diff --git a/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests_2024.03.03.bb b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests_2024.03.03.bb
new file mode 100644
index 0000000..c8a8052
--- /dev/null
+++ b/meta-openembedded/meta-filesystems/recipes-utils/xfstests/xfstests_2024.03.03.bb
@@ -0,0 +1,67 @@
+SUMMARY = "File system QA test suite"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSES/GPL-2.0;md5=74274e8a218423e49eefdea80bc55038"
+
+SRCREV = "088e5bd4cb6d7295612430a56ae84ff5c8f54730"
+SRCREV_unionmount = "e3825b16b46f4c4574a1a69909944c059835f914"
+SRCREV_FORMAT = "default_unionmount"
+
+SRC_URI = "git://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git;branch=master \
+           git://github.com/amir73il/unionmount-testsuite.git;branch=master;protocol=https;name=unionmount;destsuffix=unionmount-testsuite \
+           file://0001-add-missing-FTW_-macros-when-not-available-in-libc.patch \
+           file://0002-Drop-detached_mounts_propagation-and-remove-sys-moun.patch \
+           file://0001-include-libgen.h-for-basename-API-prototype.patch \
+           file://0002-Add-missing-STATX_ATTR_-defines-from-musl-sys-stat.h.patch \
+           "
+
+S = "${WORKDIR}/git"
+
+# brokensep because m4/package_globals.m4 calls ". ./VERSION" (and that's not the only issue)
+inherit autotools-brokensep useradd
+
+DEPENDS += "xfsprogs acl"
+RDEPENDS:${PN} += "\
+    bash \
+    bc \
+    coreutils \
+    e2fsprogs \
+    e2fsprogs-tune2fs \
+    e2fsprogs-resize2fs \
+    libaio \
+    libcap-bin \
+    overlayfs-tools \
+    perl \
+    python3 \
+    python3-core \
+    xfsprogs \
+    acl \
+    gawk \
+"
+
+USERADD_PACKAGES = "${PN}"
+# these users are necessary to run the tests
+USERADD_PARAM:${PN} = "-U -m fsgqa; -N 123456-fsgqa; -N fsgqa2"
+
+EXTRA_OECONF = "INSTALL_USER=root INSTALL_GROUP=root"
+
+TARGET_CC_ARCH:append:libc-musl = " -D_LARGEFILE64_SOURCE"
+
+do_configure:prepend() {
+    # this is done by Makefile configure target, but we don't call it in do_configure
+    cp -a ${S}/include/install-sh .
+}
+
+do_install() {
+    # otherwise install-sh duplicates DESTDIR prefix
+    export DIST_ROOT="/" DIST_MANIFEST="" DESTDIR="${D}"
+    oe_runmake install
+
+    unionmount_target_dir=${D}${prefix}/xfstests/unionmount-testsuite
+    install -d $unionmount_target_dir/tests
+    install ${WORKDIR}/unionmount-testsuite/tests/* -t $unionmount_target_dir/tests
+    install ${WORKDIR}/unionmount-testsuite/*.py -t $unionmount_target_dir
+    install ${WORKDIR}/unionmount-testsuite/run -t $unionmount_target_dir
+    install ${WORKDIR}/unionmount-testsuite/README -t $unionmount_target_dir
+}
+
+FILES:${PN} += "${prefix}/xfstests"
diff --git a/meta-openembedded/meta-gnome/conf/layer.conf b/meta-openembedded/meta-gnome/conf/layer.conf
index 1674283..75764e6 100644
--- a/meta-openembedded/meta-gnome/conf/layer.conf
+++ b/meta-openembedded/meta-gnome/conf/layer.conf
@@ -17,7 +17,7 @@
 
 LAYERDEPENDS_gnome-layer = "core openembedded-layer networking-layer meta-python"
 
-LAYERSERIES_COMPAT_gnome-layer = "nanbield"
+LAYERSERIES_COMPAT_gnome-layer = "scarthgap"
 
 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "\
   faenza-icon-theme->gdk-pixbuf \
diff --git a/meta-openembedded/meta-gnome/dynamic-layers/meta-security/recipes-gnome/gnome-remote-desktop/gnome-remote-desktop_45.1.bb b/meta-openembedded/meta-gnome/dynamic-layers/meta-security/recipes-gnome/gnome-remote-desktop/gnome-remote-desktop_45.1.bb
deleted file mode 100644
index 9e88705..0000000
--- a/meta-openembedded/meta-gnome/dynamic-layers/meta-security/recipes-gnome/gnome-remote-desktop/gnome-remote-desktop_45.1.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Remote desktop daemon for GNOME using pipewire."
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-inherit gnomebase gettext gsettings features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI[archive.sha256sum] = "dcd9c18ac2306695631fcf00a88645c38e370eba05c69df39f540204d4eafd8d"
-
-DEPENDS = " \
-    asciidoc-native \
-    libdrm \
-    libei \
-    libepoxy \
-    cairo \
-    glib-2.0 \
-    pipewire \
-    libnotify \
-    libsecret \
-    nv-codec-headers \
-    tpm2-tss \
-"
-
-PACKAGECONFIG ??= " \
-    vnc \
-    rdp \
-    ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'fdk_aac', '', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-"
-
-PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,pipewire-native wireplumber-native dbus-native"
-PACKAGECONFIG[vnc] = "-Dvnc=true,-Dvnc=false,libvncserver"
-PACKAGECONFIG[rdp] = "-Drdp=true,-Drdp=false,freerdp fuse3 libxkbcommon"
-PACKAGECONFIG[fdk_aac] = "-Dfdk_aac=true,-Dfdk_aac=false,fdk-aac"
-PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
-
-FILES:${PN} += "${systemd_user_unitdir}"
diff --git a/meta-openembedded/meta-gnome/dynamic-layers/meta-security/recipes-gnome/gnome-remote-desktop/gnome-remote-desktop_46.0.bb b/meta-openembedded/meta-gnome/dynamic-layers/meta-security/recipes-gnome/gnome-remote-desktop/gnome-remote-desktop_46.0.bb
new file mode 100644
index 0000000..b9ee0e6
--- /dev/null
+++ b/meta-openembedded/meta-gnome/dynamic-layers/meta-security/recipes-gnome/gnome-remote-desktop/gnome-remote-desktop_46.0.bb
@@ -0,0 +1,40 @@
+SUMMARY = "Remote desktop daemon for GNOME using pipewire."
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+inherit gnomebase gettext gsettings features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI[archive.sha256sum] = "e75ce17c12a6d39254dc309c31514e5ef15763f136612d641c5f6f4445e00ac4"
+
+DEPENDS = " \
+    asciidoc-native \
+    libdrm \
+    libei \
+    libepoxy \
+    cairo \
+    glib-2.0 \
+    pipewire \
+    polkit \
+    libnotify \
+    libopus \
+    libsecret \
+    nv-codec-headers \
+    tpm2-tss \
+"
+
+PACKAGECONFIG ??= " \
+    rdp \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+
+PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,pipewire-native wireplumber-native dbus-native"
+PACKAGECONFIG[vnc] = "-Dvnc=true,-Dvnc=false,libvncserver"
+PACKAGECONFIG[rdp] = "-Drdp=true,-Drdp=false,freerdp3 fuse3 libxkbcommon"
+PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
+
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
+FILES:${PN} += "${systemd_user_unitdir} ${systemd_system_unitdir} ${datadir} ${libdir}/sysusers.d ${libdir}/tmpfiles.d"
diff --git a/meta-openembedded/meta-gnome/dynamic-layers/meta-virtualization/recipes-gnome/gnome-boxes/gnome-boxes_45.0.bb b/meta-openembedded/meta-gnome/dynamic-layers/meta-virtualization/recipes-gnome/gnome-boxes/gnome-boxes_45.0.bb
deleted file mode 100644
index fc12351..0000000
--- a/meta-openembedded/meta-gnome/dynamic-layers/meta-virtualization/recipes-gnome/gnome-boxes/gnome-boxes_45.0.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "A simple GNOME application to access virtual machines."
-SECTION = "network"
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://copyright;md5=a65e9b0c9f78617732f09f68fc4ef79a"
-
-GNOMEBASEBUILDCLASS = "meson"
-
-REQUIRED_DISTRO_FEATURES += "gobject-introspection-data"
-
-DEPENDS = " \
-  glib-2.0 \
-  desktop-file-utils-native \
-  libarchive \
-  libgudev \
-  libhandy \
-  libosinfo \
-  libsecret \
-  libsoup \
-  libvirt-glib \
-  mtools \
-  spice-gtk \
-  tracker \
-  webkitgtk3 \
-  appstream-glib-native \
-  spice-protocol \
-  yelp-tools \
-"
-
-RDEPENDS:${PN} = "glib-2.0-dev libvirt-virsh qemu-common qemu-system-x86-64 genisoimage"
-
-inherit gnomebase gsettings pkgconfig mime-xdg gtk-icon-cache gobject-introspection vala features_check
-
-SRC_URI[archive.sha256sum] = "cc63080eefa147a8472ab1a5ff087b97a27ab723a4ee005ed41e8c9dd7798e41"
-
-GIR_MESON_OPTION = ""
-VALA_MESON_OPTION = ""
-
-FILES:${PN} += "${datadir}"
-
-INSANE_SKIP:${PN} = "dev-deps"
diff --git a/meta-openembedded/meta-gnome/dynamic-layers/meta-virtualization/recipes-gnome/gnome-boxes/gnome-boxes_46.0.bb b/meta-openembedded/meta-gnome/dynamic-layers/meta-virtualization/recipes-gnome/gnome-boxes/gnome-boxes_46.0.bb
new file mode 100644
index 0000000..44fdd2d
--- /dev/null
+++ b/meta-openembedded/meta-gnome/dynamic-layers/meta-virtualization/recipes-gnome/gnome-boxes/gnome-boxes_46.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "A simple GNOME application to access virtual machines."
+SECTION = "network"
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://copyright;md5=a65e9b0c9f78617732f09f68fc4ef79a"
+
+GNOMEBASEBUILDCLASS = "meson"
+
+REQUIRED_DISTRO_FEATURES += "gobject-introspection-data"
+
+DEPENDS = " \
+  glib-2.0 \
+  desktop-file-utils-native \
+  libarchive \
+  libgudev \
+  libhandy \
+  libosinfo \
+  libportal \
+  libsecret \
+  libsoup \
+  libvirt-glib \
+  mtools \
+  spice-gtk \
+  tracker \
+  webkitgtk3 \
+  appstream-glib-native \
+  spice-protocol \
+  yelp-tools \
+"
+
+RDEPENDS:${PN} = "glib-2.0-dev libvirt-virsh qemu-common qemu-system-x86-64 genisoimage"
+
+inherit gnomebase gsettings pkgconfig mime-xdg gtk-icon-cache gobject-introspection vala features_check
+
+SRC_URI[archive.sha256sum] = "67eeb5e989294958b25c397cfc5615ff65f44315c700010f0b9e336e6f3407cb"
+
+GIR_MESON_OPTION = ""
+VALA_MESON_OPTION = ""
+
+FILES:${PN} += "${datadir}"
+
+INSANE_SKIP:${PN} = "dev-deps"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.7.bb b/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.7.bb
deleted file mode 100644
index a229071..0000000
--- a/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.7.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Folks is a contact aggregation library."
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
-
-DEPENDS = " \
-    glib-2.0 \
-    libgee \
-"
-
-EXTRA_OEMESON += "-Dtests=false -Db_lto=false "
-
-CFLAGS:append:toolchain-clang = " -Wno-error=implicit-function-declaration"
-# gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
-GIR_MESON_OPTION = ""
-
-PACKAGECONFIG[eds] = "-Deds_backend=true,-Deds_backend=false,evolution-data-server"
-PACKAGECONFIG[bluez] = "-Dbluez_backend=true,-Dbluez_backend=false,evolution-data-server"
-PACKAGECONFIG[ofono] = "-Deds_backend=true -Dofono_backend=true,-Dofono_backend=false,evolution-data-server"
-PACKAGECONFIG[telepathy] = "-Dtelepathy_backend=true,-Dtelepathy_backend=false,telepathy-glib dbus-glib"
-PACKAGECONFIG[import_tool] = "-Dimport_tool=true,-Dimport_tool=false,libxml2"
-PACKAGECONFIG[inspect_tool] = "-Dinspect_tool=true,-Dinspect_tool=false"
-
-PACKAGECONFIG ??= ""
-
-inherit pkgconfig gnomebase gettext gobject-introspection vala features_check
-
-SRC_URI[archive.sha256sum] = "120f219ef63212caa95ae7f6aeb64e29928b0b1a8b9452054304a00d0f347871"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.8.bb b/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.8.bb
new file mode 100644
index 0000000..4d26817
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/folks/folks_0.15.8.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Folks is a contact aggregation library."
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2d5025d4aa3495befef8f17206a5b0a1"
+
+DEPENDS = " \
+    glib-2.0 \
+    libgee \
+"
+
+EXTRA_OEMESON += "-Dtests=false -Db_lto=false "
+
+CFLAGS:append:toolchain-clang = " -Wno-error=implicit-function-declaration"
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+GIR_MESON_OPTION = ""
+
+PACKAGECONFIG[eds] = "-Deds_backend=true,-Deds_backend=false,evolution-data-server"
+PACKAGECONFIG[bluez] = "-Dbluez_backend=true,-Dbluez_backend=false,evolution-data-server"
+PACKAGECONFIG[ofono] = "-Deds_backend=true -Dofono_backend=true,-Dofono_backend=false,evolution-data-server"
+PACKAGECONFIG[telepathy] = "-Dtelepathy_backend=true,-Dtelepathy_backend=false,telepathy-glib dbus-glib"
+PACKAGECONFIG[import_tool] = "-Dimport_tool=true,-Dimport_tool=false,libxml2"
+PACKAGECONFIG[inspect_tool] = "-Dinspect_tool=true,-Dinspect_tool=false"
+
+PACKAGECONFIG ??= ""
+
+inherit pkgconfig gnomebase gettext gobject-introspection vala features_check
+
+SRC_URI[archive.sha256sum] = "954a6afb3e378f01d310fd443790f235cb0eb71e2139cff4f05f09ab725e49c2"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/gtk-vnc/gtk-vnc_1.3.1.bb b/meta-openembedded/meta-gnome/recipes-connectivity/gtk-vnc/gtk-vnc_1.3.1.bb
index 3bfe38f..8bd37f7 100644
--- a/meta-openembedded/meta-gnome/recipes-connectivity/gtk-vnc/gtk-vnc_1.3.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/gtk-vnc/gtk-vnc_1.3.1.bb
@@ -25,4 +25,6 @@
 
 inherit pkgconfig gnomebase gettext gobject-introspection vala features_check
 
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
+
 SRC_URI[archive.sha256sum] = "512763ac4e0559d0158b6682ca5dd1a3bd633f082f5e4349d7158e6b5f80f1ce"
diff --git a/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.36.0.bb b/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.36.0.bb
index 5f1f05c..10e5147 100644
--- a/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.36.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-connectivity/network-manager-applet/network-manager-applet_1.36.0.bb
@@ -7,6 +7,7 @@
 inherit features_check gnomebase gsettings gtk-icon-cache gettext pkgconfig
 
 ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "opengl"
 
 SRC_URI:append:libc-musl = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' file://0001-linker-scripts-Do-not-export-_IO_stdin_used.patch', '', d)}"
 
diff --git a/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.5.0.bb b/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.5.0.bb
deleted file mode 100644
index fdfb1ef..0000000
--- a/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.5.0.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "A partition editor to graphically manage disk partitions "
-HOMEPAGE = "http://gparted.org/index.php"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-inherit autotools pkgconfig python3native gettext gnome-help gtk-icon-cache features_check
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-SRC_URI = " \
-    ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${BPN}-${PV}/${BPN}-${PV}.tar.gz \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'file://0001-Install-polkit-action-unconditionally-executable-pke.patch', '', d)} \
-"
-SRC_URI[sha256sum] = "3c95ea26a944083ff1d9b17639b1e2ad9758df225dc751ff407b2a6aa092a8de"
-
-UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/gparted/files/gparted/"
-UPSTREAM_CHECK_REGEX = "gparted-(?P<pver>\d+\.(\d+)+(\.\d+)+)"
-
-DEPENDS += " \
-    glib-2.0-native \
-    yelp-tools-native \
-    intltool-native \
-    glib-2.0 \
-    gtkmm3 \
-    parted \
-"
-
-PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'polkit', d)}"
-PACKAGECONFIG[polkit] = ",,polkit"
-
-FILES:${PN} += " \
-    ${datadir}/appdata \
-    ${datadir}/icons \
-"
-
-PACKAGES += "${PN}-polkit"
-FILES:${PN}-polkit = "${datadir}/polkit-1"
-
-RDEPENDS:${PN} = " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', '${PN}-polkit', '', d)} \
-    dosfstools \
-    mtools \
-    e2fsprogs \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.6.0.bb b/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.6.0.bb
new file mode 100644
index 0000000..ab28906
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_1.6.0.bb
@@ -0,0 +1,45 @@
+SUMMARY = "A partition editor to graphically manage disk partitions "
+HOMEPAGE = "http://gparted.org/index.php"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+inherit autotools pkgconfig python3native gettext gnome-help gtk-icon-cache features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+SRC_URI = " \
+    ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}/${BPN}-${PV}/${BPN}-${PV}.tar.gz \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'file://0001-Install-polkit-action-unconditionally-executable-pke.patch', '', d)} \
+"
+SRC_URI[sha256sum] = "9b9f51b3ce494ddcb59a55e1ae6679c09436604e331dbf5a536d60ded6c6ea5b"
+
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/gparted/files/gparted/"
+UPSTREAM_CHECK_REGEX = "gparted-(?P<pver>\d+\.(\d+)+(\.\d+)+)"
+
+DEPENDS += " \
+    glib-2.0-native \
+    yelp-tools-native \
+    intltool-native \
+    glib-2.0 \
+    gtkmm3 \
+    parted \
+"
+
+PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'polkit', d)}"
+PACKAGECONFIG[polkit] = ",,polkit"
+
+FILES:${PN} += " \
+    ${datadir}/appdata \
+    ${datadir}/icons \
+    ${datadir}/metainfo \
+"
+
+PACKAGES += "${PN}-polkit"
+FILES:${PN}-polkit = "${datadir}/polkit-1"
+
+RDEPENDS:${PN} = " \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', '${PN}-polkit', '', d)} \
+    dosfstools \
+    mtools \
+    e2fsprogs \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_45.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_45.2.bb
deleted file mode 100644
index f2295fd..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_45.2.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "This is the Eye of GNOME, an image viewer program."
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = " \
-    librsvg \
-    gnome-desktop \
-    gsettings-desktop-schemas \
-    gdk-pixbuf \
-    gtk+3 \
-    libhandy \
-    libpeas \
-    libportal \
-    libexif \
-    lcms \
-"
-
-
-inherit gnomebase pkgconfig gsettings gobject-introspection gettext mime-xdg features_check gtk-icon-cache
-
-# FIXME: whilst eog uses libpeas <2, g-i is needed. This can be removed when libpeas2 is used.
-REQUIRED_DISTRO_FEATURES = "opengl gobject-introspection-data"
-
-SRC_URI[archive.sha256sum] = "d94cc39d82c80cee7281b82ace42c8225976ad5d0c3ef995c7e030f6bab2219c"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-EXTRA_OEMESON = "-Dxmp=false"
-
-FILES:${PN} += "${datadir}"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_45.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_45.3.bb
new file mode 100644
index 0000000..00fe266
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/eog/eog_45.3.bb
@@ -0,0 +1,30 @@
+SUMMARY = "This is the Eye of GNOME, an image viewer program."
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = " \
+    librsvg \
+    gnome-desktop \
+    gsettings-desktop-schemas \
+    gdk-pixbuf \
+    gtk+3 \
+    libhandy \
+    libpeas \
+    libportal \
+    libexif \
+    lcms \
+"
+
+
+inherit gnomebase pkgconfig gsettings gobject-introspection gettext mime-xdg features_check gtk-icon-cache
+
+# FIXME: whilst eog uses libpeas <2, g-i is needed. This can be removed when libpeas2 is used.
+REQUIRED_DISTRO_FEATURES = "opengl gobject-introspection-data"
+
+SRC_URI[archive.sha256sum] = "8650f662d4921d83a7904f6bb9ca245baf735f717b47fac5b37f0d90e5e891a8"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+EXTRA_OEMESON = "-Dxmp=false"
+
+FILES:${PN} += "${datadir}"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_45.0.bb
deleted file mode 100644
index 8b40241..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_45.0.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "Evince is a document viewer for document formats like pdf, ps, djvu"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=96f2f8d5ee576a2163977938ea36fa7b"
-SECTION = "x11/office"
-DEPENDS = " \
-    adwaita-icon-theme \
-    appstream-glib \
-    cairo \
-    desktop-file-utils-native \
-    dbus \
-    gdk-pixbuf \
-    glib-2.0 \
-    gnome-common-native \
-    gnome-desktop \
-    gsettings-desktop-schemas \
-    gspell \
-    gstreamer1.0-plugins-base \
-    gtk+3 \
-    libarchive \
-    libhandy \
-    libsecret \
-    libxml2 \
-    poppler \
-    yelp-tools-native \
-    zlib \
-"
-
-
-inherit gnomebase itstool gnome-help pkgconfig gsettings gobject-introspection gettext mime-xdg gi-docgen features_check gtk-icon-cache
-
-REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'opengl', '', d)}"
-
-def gnome_verdir(v):
-    return oe.utils.trim_version(v, 1)
-
-SRC_URI[archive.sha256sum] = "d18647d4275cbddf0d32817b1d04e307342a85be914ec4dad2d8082aaf8aa4a8"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[nautilus] = "-Dnautilus=true,-Dnautilus=false,nautilus"
-
-RDEPENDS:${PN} += "glib-2.0-utils"
-RRECOMMENDS:${PN} = "adwaita-icon-theme"
-
-PACKAGES =+ "${PN}-nautilus-extension"
-
-do_install:prepend() {
-    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/libview/ev-view-type-builtins.c
-    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/libdocument/ev-document-type-builtins.c
-}
-
-FILES:${PN} += "${datadir}/dbus-1 \
-                ${datadir}/metainfo \
-                ${datadir}/thumbnailers \
-                ${systemd_user_unitdir} \
-"
-FILES:${PN}-nautilus-extension = "${libdir}/nautilus/*/*so"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_46.0.bb
new file mode 100644
index 0000000..57eb994
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evince/evince_46.0.bb
@@ -0,0 +1,58 @@
+SUMMARY = "Evince is a document viewer for document formats like pdf, ps, djvu"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=96f2f8d5ee576a2163977938ea36fa7b"
+SECTION = "x11/office"
+DEPENDS = " \
+    adwaita-icon-theme \
+    appstream-glib \
+    cairo \
+    desktop-file-utils-native \
+    dbus \
+    gdk-pixbuf \
+    glib-2.0 \
+    gnome-common-native \
+    gnome-desktop \
+    gsettings-desktop-schemas \
+    gspell \
+    gstreamer1.0-plugins-base \
+    gtk+3 \
+    libarchive \
+    libhandy \
+    libsecret \
+    libxml2 \
+    poppler \
+    yelp-tools-native \
+    zlib \
+"
+
+
+inherit gnomebase itstool gnome-help pkgconfig gsettings gobject-introspection gettext mime-xdg gi-docgen features_check gtk-icon-cache
+
+REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'opengl', '', d)}"
+
+def gnome_verdir(v):
+    return oe.utils.trim_version(v, 1)
+
+SRC_URI[archive.sha256sum] = "aff6af69392c04956bfad976dec5d1583b41d5a334e937995f7c3ca0740de221"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[nautilus] = "-Dnautilus=true,-Dnautilus=false,nautilus"
+
+RDEPENDS:${PN} += "glib-2.0-utils"
+RRECOMMENDS:${PN} = "adwaita-icon-theme"
+
+PACKAGES =+ "${PN}-nautilus-extension"
+
+do_install:prepend() {
+    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/libview/ev-view-type-builtins.c
+    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/libdocument/ev-document-type-builtins.c
+}
+
+FILES:${PN} += "${datadir}/dbus-1 \
+                ${datadir}/metainfo \
+                ${datadir}/thumbnailers \
+                ${systemd_user_unitdir} \
+"
+FILES:${PN}-nautilus-extension = "${libdir}/nautilus/*/*so"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb
index 28d4c21..f2f4127 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server-native.bb
@@ -23,3 +23,4 @@
     install -d ${D}${bindir}
     install -m 755 ${B}/* ${D}${bindir}
 }
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
index 0c3cc53..103bad1 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/evolution-data-server/evolution-data-server.bb
@@ -2,7 +2,7 @@
 
 DEPENDS = " \
     ${BPN}-native gperf-native \
-    glib-2.0 gtk+3 gtk4 libxml2 icu \
+    glib-2.0 json-glib gtk4 libxml2 icu \
     dbus db virtual/libiconv zlib libsoup-3.0 libical nss libsecret \
 "
 
@@ -29,15 +29,20 @@
     ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON -DENABLE_VALA_BINDINGS=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
     -D${LKSTRFTIME} \
     -DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \
+    -DENABLE_GTK=OFF \
+    -DENABLE_GTK4=ON \
+    -DENABLE_INSTALLED_TESTS=OFF \
+    -DENABLE_EXAMPLES=OFF \
+    -DENABLE_MAINTAINER_MODE=OFF \
 "
 
 EXTRA_OECMAKE:append:class-target = " -DG_IR_COMPILER=${STAGING_BINDIR}/g-ir-compiler-wrapper"
 EXTRA_OECMAKE:append:class-target = " -DG_IR_SCANNER=${STAGING_BINDIR}/g-ir-scanner-wrapper"
 
-PACKAGECONFIG ?= "oauth"
+PACKAGECONFIG ?= "goa oauth"
 
 PACKAGECONFIG[canberra] = "-DENABLE_CANBERRA=ON,-DENABLE_CANBERRA=OFF,libcanberra"
-PACKAGECONFIG[oauth]    = "-DENABLE_OAUTH2_WEBKITGTK=ON -DENABLE_OAUTH2_WEBKITGTK4=OFF,-DENABLE_OAUTH2_WEBKITGTK4=OFF -DENABLE_OAUTH2_WEBKITGTK=OFF,webkitgtk3 json-glib"
+PACKAGECONFIG[oauth]    = "-DENABLE_OAUTH2_WEBKITGTK4=ON -DENABLE_OAUTH2_WEBKITGTK=OFF,-DENABLE_OAUTH2_WEBKITGTK4=OFF -DENABLE_OAUTH2_WEBKITGTK=OFF,webkitgtk json-glib"
 PACKAGECONFIG[goa]    = "-DENABLE_GOA=ON,-DENABLE_GOA=OFF,gnome-online-accounts"
 PACKAGECONFIG[kerberos]    = "-DWITH_KRB5=ON,-DWITH_KRB5=OFF,krb5"
 # BROKEN: due missing pkg-config in openldap eds' cmake finds host-libs when
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_43.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_43.1.bb
deleted file mode 100644
index 0b9dd74..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_43.1.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "An archive manager utility for the  GNOME Environment"
-LICENSE="GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-
-DEPENDS = " \
-    desktop-file-utils-native \
-    glib-2.0-native \
-    glib-2.0 \
-    json-glib \
-    gtk+3 \
-    libarchive \
-    libhandy \
-    libportal \
-"
-
-inherit gnomebase gsettings itstool gobject-introspection gnome-help gettext upstream-version-is-even mime-xdg gtk-icon-cache features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-EXTRA_OEMESON += "-Dintrospection=enabled"
-
-SRC_URI[archive.sha256sum] = "84994023997293beb345d9793db8f5f0bbb41faa155c6ffb48328f203957ad08"
-
-PACKAGECONFIG ??= ""
-
-PACKAGECONFIG[nautilus] = "-Dnautilus-actions=enabled,-Dnautilus-actions=disabled,nautilus"
-PACKAGECONFIG[packagekit] = "-Dpackagekit=true,-Dpackagekit=false,,packagekit"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/metainfo \
-    ${libdir}/nautilus \
-"
-
-EXTRA_OEMESON += "--cross-file=${WORKDIR}/meson-${PN}.cross"
-
-do_write_config:append() {
-    cat >${WORKDIR}/meson-${PN}.cross <<EOF
-[binaries]
-cpio = '${bindir}/cpio'
-EOF
-}
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_44.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_44.0.bb
new file mode 100644
index 0000000..3daa1b5
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/file-roller/file-roller_44.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "An archive manager utility for the  GNOME Environment"
+LICENSE="GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+
+DEPENDS = " \
+    desktop-file-utils-native \
+    glib-2.0-native \
+    glib-2.0 \
+    json-glib \
+    gtk4 \
+    libadwaita \
+    libarchive \
+    libhandy \
+    libportal \
+"
+
+inherit gnomebase gsettings itstool gobject-introspection gnome-help gettext upstream-version-is-even mime-xdg gtk-icon-cache features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+EXTRA_OEMESON += "-Dintrospection=enabled"
+
+SRC_URI = "git://gitlab.gnome.org/GNOME/file-roller.git;protocol=https;branch=master"
+SRCREV = "f1c7714cf4c8989b9f3fa4c611887c29cf6df343"
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[nautilus] = "-Dnautilus-actions=enabled,-Dnautilus-actions=disabled,nautilus"
+PACKAGECONFIG[packagekit] = "-Dpackagekit=true,-Dpackagekit=false,,packagekit"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+    ${libdir}/nautilus \
+"
+
+EXTRA_OEMESON += "--cross-file=${WORKDIR}/meson-${PN}.cross"
+
+do_write_config:append() {
+    cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+cpio = '${bindir}/cpio'
+EOF
+}
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_45.0.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_45.0.1.bb
deleted file mode 100644
index d95ea90..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_45.0.1.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-SUMMARY = "GNOME Display Manager"
-LICENSE="GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = " \
-    accountsservice \
-    audit \
-    dconf-native \
-    gtk+3 \
-    keyutils \
-    libcanberra \
-    libgudev \
-    libpam \
-    xserver-xorg \
-"
-
-REQUIRED_DISTRO_FEATURES = "x11 systemd pam polkit gobject-introspection-data"
-GIR_MESON_OPTION = ""
-
-
-inherit gnomebase gsettings pkgconfig gobject-introspection gettext systemd useradd itstool gnome-help features_check
-SRC_URI = "https://download.gnome.org/sources/gdm/${@oe.utils.trim_version("${PV}", 1)}/gdm-${PV}.tar.xz"
-SRC_URI[sha256sum] = "6572578c05e3c6569d6ed269f7de2aaf3a035657654586d8243907bb7a6ffa85"
-
-EXTRA_OEMESON = " \
-    -Dplymouth=disabled \
-    -Ddefault-pam-config=openembedded \
-    -Dpam-mod-dir=${base_libdir}/security \
-"
-
-do_install:prepend() {
-    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-worker-enum-types.c
-    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-worker-enum-types.h
-    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-enum-types.c
-    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-enum-types.h
-}
-
-do_install:append() {
-    rm -rf ${D}/run ${D}${localstatedir}/run
-}
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system --no-create-home --home ${localstatedir}/lib/gdm --user-group gdm"
-
-SYSTEMD_SERVICE:${PN} = "${BPN}.service"
-
-# Some gnome components - as gnome-panel and gnome-shell (!!) - require gdm
-# components. To allow gnome-images using different display-manager, split them
-# out into a seperate package.
-PACKAGE_BEFORE_PN = "${PN}-base"
-FILES:${PN}-base = " \
-    ${datadir}/glib-2.0 \
-    ${datadir}/gnome-session \
-    ${libdir}/lib*${SOLIBS} \
-    ${libdir}/girepository-1.0 \
-"
-
-CONFFILES:${PN} += "${sysconfdir}/gdm/custom.conf"
-FILES:${PN} += " \
-    ${datadir}/dconf \
-    ${base_libdir}/security/pam_gdm.so \
-    ${localstatedir} \
-    ${systemd_unitdir} ${systemd_user_unitdir} \
-"
-
-RDEPENDS:${PN} += "${PN}-base"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_46.0.bb
new file mode 100644
index 0000000..4692816
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gdm/gdm_46.0.bb
@@ -0,0 +1,66 @@
+SUMMARY = "GNOME Display Manager"
+LICENSE="GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = " \
+    accountsservice \
+    audit \
+    dconf-native \
+    gtk+3 \
+    keyutils \
+    libcanberra \
+    libgudev \
+    libpam \
+    xserver-xorg \
+"
+
+REQUIRED_DISTRO_FEATURES = "x11 systemd pam polkit gobject-introspection-data"
+GIR_MESON_OPTION = ""
+
+
+inherit gnomebase gsettings pkgconfig gobject-introspection gettext systemd useradd itstool gnome-help features_check
+
+SRC_URI[archive.sha256sum] = "8d6cb52176eca48b6bbf1cfe2fdae08d9677b5a0f2bca600dee4604de0dd1efc"
+
+EXTRA_OEMESON = " \
+    -Dplymouth=disabled \
+    -Ddefault-pam-config=openembedded \
+    -Dpam-mod-dir=${base_libdir}/security \
+"
+
+do_install:prepend() {
+    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-worker-enum-types.c
+    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-worker-enum-types.h
+    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-enum-types.c
+    sed -i -e 's|${B}/||g' ${B}/daemon/gdm-session-enum-types.h
+}
+
+do_install:append() {
+    rm -rf ${D}/run ${D}${localstatedir}/run
+}
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --home ${localstatedir}/lib/gdm --user-group gdm"
+
+SYSTEMD_SERVICE:${PN} = "${BPN}.service"
+
+# Some gnome components - as gnome-panel and gnome-shell (!!) - require gdm
+# components. To allow gnome-images using different display-manager, split them
+# out into a seperate package.
+PACKAGE_BEFORE_PN = "${PN}-base"
+FILES:${PN}-base = " \
+    ${datadir}/glib-2.0 \
+    ${datadir}/gnome-session \
+    ${libdir}/lib*${SOLIBS} \
+    ${libdir}/girepository-1.0 \
+"
+
+CONFFILES:${PN} += "${sysconfdir}/gdm/custom.conf"
+FILES:${PN} += " \
+    ${datadir}/dconf \
+    ${base_libdir}/security/pam_gdm.so \
+    ${localstatedir} \
+    ${systemd_unitdir} ${systemd_user_unitdir} \
+"
+
+RDEPENDS:${PN} += "${PN}-base"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.5.bb b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.5.bb
index e9ee434..9b1a02b 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.5.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gfbgraph/gfbgraph_0.2.5.bb
@@ -14,7 +14,7 @@
 inherit gnomebase gtk-doc gobject-introspection pkgconfig features_check
 
 # for gnome-online-accounts
-REQUIRED_DISTRO_FEATURES = "x11"
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
 
 #SRC_URI += " file://0001-Update-rest-requirement-to-rest-1.0.patch"
 SRC_URI[archive.sha256sum] = "9cb381b3f78ba1136df97af3f06e3b11dcc2ab339ac08f74eda0f8057d6603e3"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_45.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_45.1.bb
deleted file mode 100644
index 2b6adaf..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_45.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "GHex - a hex editor for GNOME"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-
-DEPENDS = " \
-    desktop-file-utils-native  \
-    glib-2.0-native \
-    gtk4 \
-    libadwaita \
-"
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-
-inherit gnomebase gsettings gtk-icon-cache gnome-help gettext gobject-introspection vala gi-docgen
-
-SRC_URI[archive.sha256sum] = "fb2b0823cd16249edbeaee8302f9bd5005e0150368b35f1e47c26680cacac2fa"
-
-FILES:${PN} += "${libdir} ${datadir}/metainfo"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_46.0.bb
new file mode 100644
index 0000000..41d8391
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/ghex/ghex_46.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "GHex - a hex editor for GNOME"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+
+DEPENDS = " \
+    desktop-file-utils-native  \
+    glib-2.0-native \
+    gtk4 \
+    libadwaita \
+"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+inherit gnomebase gsettings gtk-icon-cache gnome-help gettext gobject-introspection vala gi-docgen
+
+SRC_URI[archive.sha256sum] = "a1c46f3020cb358b8323025db3a539c97d994a4c46f701f48edc6357f7fbcbd1"
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+FILES:${PN} += "${libdir} ${datadir}/metainfo"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch
index 8ebc8ba..12b4b08 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0001-Support-cross-builds-a-bit-better.patch
@@ -1,4 +1,4 @@
-From 95cacf345eaec898a47486fc0d33382f303275aa Mon Sep 17 00:00:00 2001
+From 8a78a7996b01aba21377ceb7547da673fd30a391 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Wed, 27 Oct 2021 20:18:47 +0200
 Subject: [PATCH] Support cross builds a bit better
@@ -12,16 +12,15 @@
 Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/690]
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
 ---
  meson.build | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/meson.build b/meson.build
-index 961660f..86239a4 100644
+index c9b26d6..3058e8c 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -255,6 +255,7 @@ release builds of SpiderMonkey. Try configuring SpiderMonkey with
+@@ -262,6 +262,7 @@ release builds of SpiderMonkey. Try configuring SpiderMonkey with
  --disable-debug.''')
  endif
  
@@ -29,7 +28,7 @@
  # Check if a minimal SpiderMonkey program compiles, links, and runs. If not,
  # it's most likely the case that SpiderMonkey was configured incorrectly, for
  # example by building mozglue as a shared library.
-@@ -285,6 +286,7 @@ elif minimal_program.returncode() != 0
+@@ -292,6 +293,7 @@ elif minimal_program.returncode() != 0
  failed to execute. Most likely you should build it with a different
  configuration.''' + recommended_configuration)
  endif
@@ -37,7 +36,7 @@
  
  have_printf_alternative_int = cc.compiles('''
  #include <stdio.h>
-@@ -683,7 +685,7 @@ subdir('installed-tests')
+@@ -690,7 +692,7 @@ subdir('installed-tests')
  
  # Note: The test program in test/ needs to be ported
  #       to Windows before we can build it on Windows.
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch
index f05e52c..e932f06 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs/0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch
@@ -1,13 +1,12 @@
-From e6889d60891383ce6aa66aa3db30255af58bcf3c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+From 29221ae42e424c6100b8c313d2b61801430c872d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andreas=20M=C3=BCller=20installed=5Ftests=20is=20false?=
+ <schnitzeltony@gmail.com>
 Date: Wed, 27 Oct 2021 20:04:02 +0200
 Subject: [PATCH] meson.build: Do not add dir installed-tests when
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
- installed_tests is false
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -15,16 +14,15 @@
 Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/690]
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
 ---
  meson.build | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/meson.build b/meson.build
-index 86239a4..11c04e2 100644
+index 3058e8c..06cf8da 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -681,7 +681,9 @@ endif
+@@ -688,7 +688,9 @@ endif
  
  ### Tests and test setups ######################################################
  
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.78.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.78.4.bb
deleted file mode 100644
index c1d1948..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.78.4.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Javascript bindings for GNOME"
-LICENSE = "MIT & LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8dcea832f6acf45d856abfeb2d51ec48"
-
-
-DEPENDS = "mozjs-115 cairo"
-
-inherit gnomebase gsettings gobject-introspection gettext features_check upstream-version-is-even pkgconfig
-
-SRC_URI[archive.sha256sum] = "9aec7ab872c2050404907ae94f0ae7abec8a54bd9c894ddb5c2d0f51e932b9a1"
-SRC_URI += " \
-    file://0001-Support-cross-builds-a-bit-better.patch \
-    file://0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch \
-"
-
-# gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
-GIR_MESON_OPTION = ""
-
-EXTRA_OEMESON = " \
-    -Dinstalled_tests=false \
-    -Dskip_dbus_tests=true \
-    -Dskip_gtk_tests=true \
-"
-
-LDFLAGS:append:mipsarch = " -latomic"
-LDFLAGS:append:powerpc = " -latomic"
-LDFLAGS:append:powerpc64 = " -latomic"
-LDFLAGS:append:riscv32 = " -latomic"
-
-FILES:${PN} += "${datadir}/gjs-1.0/lsan"
-
-PACKAGES =+ "${PN}-valgrind"
-FILES:${PN}-valgrind = "${datadir}/gjs-1.0/valgrind"
-RDEPENDS:${PN}-valgrind += "valgrind"
-
-# Valgrind not yet available on rv32/rv64
-RDEPENDS:${PN}-valgrind:remove:riscv32 = "valgrind"
-RDEPENDS:${PN}-valgrind:remove:riscv64 = "valgrind"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.80.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.80.2.bb
new file mode 100644
index 0000000..1d781d0
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gjs/gjs_1.80.2.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Javascript bindings for GNOME"
+LICENSE = "MIT & LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8dcea832f6acf45d856abfeb2d51ec48"
+
+
+DEPENDS = "mozjs-115 cairo"
+
+inherit gnomebase gsettings gobject-introspection gettext features_check upstream-version-is-even pkgconfig
+
+SRC_URI[archive.sha256sum] = "135e39c5ac591096233e557cfe577d64093f5054411d47cb2e214bad7d4199bd"
+SRC_URI += " \
+    file://0001-Support-cross-builds-a-bit-better.patch \
+    file://0002-meson.build-Do-not-add-dir-installed-tests-when-inst.patch \
+"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+GIR_MESON_OPTION = ""
+
+EXTRA_OEMESON = " \
+    -Dinstalled_tests=false \
+    -Dskip_dbus_tests=true \
+    -Dskip_gtk_tests=true \
+"
+
+LDFLAGS:append:mipsarch = " -latomic"
+LDFLAGS:append:powerpc = " -latomic"
+LDFLAGS:append:powerpc64 = " -latomic"
+LDFLAGS:append:riscv32 = " -latomic"
+
+FILES:${PN} += "${datadir}/gjs-1.0/lsan"
+
+PACKAGES =+ "${PN}-valgrind"
+FILES:${PN}-valgrind = "${datadir}/gjs-1.0/valgrind"
+RDEPENDS:${PN}-valgrind += "valgrind"
+
+# Valgrind not yet available on rv32/rv64
+RDEPENDS:${PN}-valgrind:remove:riscv32 = "valgrind"
+RDEPENDS:${PN}-valgrind:remove:riscv64 = "valgrind"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_45.0.bb
deleted file mode 100644
index 704a0b6..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_45.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "GNOME wallpapers"
-LICENSE = "CC-BY-SA-3.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b52fb0a6df395efb7047cb6fc56bfd7e"
-
-SECTION = "x11/gnome"
-
-
-inherit gnomebase gettext allarch
-
-SRC_URI[archive.sha256sum] = "cee0e688fbae5ef7a75f335ada2d10779e08ebca9445f1586de32c5a9b6dee2d"
-
-FILES:${PN} += " \
-    ${datadir}/backgrounds \
-    ${datadir}/gnome-background-properties \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_46.0.bb
new file mode 100644
index 0000000..d938ae9
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-backgrounds/gnome-backgrounds_46.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "GNOME wallpapers"
+LICENSE = "CC-BY-SA-3.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b52fb0a6df395efb7047cb6fc56bfd7e"
+
+SECTION = "x11/gnome"
+
+inherit gnomebase gettext allarch
+
+SRC_URI[archive.sha256sum] = "4ddd3ac439a4a067876805921bb75f4d3c8b85a218d47c276dddde8928443c2e"
+
+FILES:${PN} += " \
+    ${datadir}/backgrounds \
+    ${datadir}/gnome-background-properties \
+"
+
+RDEPENDS:${PN} += "libjxl"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_42.8.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_42.8.bb
deleted file mode 100644
index 6d4d84e..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_42.8.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "GNOME bluetooth manager"
-LICENSE = "GPL-2.0-only & LGPL-2.1-only"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
-    file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-"
-
-SECTION = "x11/gnome"
-
-DEPENDS = " \
-    udev \
-    libnotify \
-    libcanberra \
-    bluez5 \
-    upower \
-    gtk4 \
-    gsound \
-    libadwaita \
-"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-GTKIC_VERSION = "4"
-
-inherit features_check gnomebase gtk-icon-cache gtk-doc gobject-introspection
-
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-SRC_URI[archive.sha256sum] = "76c241e8ca2c9b1035364535ca26084f89fc5c0e1829510f8909583115fcc2db"
-
-BT_PULSE_PACKS = " \
-    pulseaudio-lib-bluez5-util \
-    pulseaudio-module-bluetooth-discover \
-    pulseaudio-module-bluetooth-policy \
-    pulseaudio-module-bluez5-device \
-    pulseaudio-module-bluez5-discover \
-"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)}"
-PACKAGECONFIG[pulseaudio] = ",,,${BT_PULSE_PACKS}"
-
-FILES:${PN} += "${datadir}/gnome-bluetooth-3.0"
-
-RDEPENDS:${PN} += "bluez5"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_46.0.bb
new file mode 100644
index 0000000..1b29e52
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-bluetooth/gnome-bluetooth_46.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "GNOME bluetooth manager"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=eb723b61539feef013de476e68b5c50a \
+    file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    udev \
+    libnotify \
+    libcanberra \
+    bluez5 \
+    upower \
+    gtk4 \
+    gsound \
+    libadwaita \
+"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+GTKIC_VERSION = "4"
+
+inherit features_check gnomebase gtk-icon-cache gtk-doc gobject-introspection
+
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+SRC_URI[archive.sha256sum] = "13fe1e75f317acdbdf5e80c9029d2e0632d60a9ccf72a43ae36eb7545021fbef"
+
+BT_PULSE_PACKS = " \
+    pulseaudio-lib-bluez5-util \
+    pulseaudio-module-bluetooth-discover \
+    pulseaudio-module-bluetooth-policy \
+    pulseaudio-module-bluez5-device \
+    pulseaudio-module-bluez5-discover \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio', d)}"
+PACKAGECONFIG[pulseaudio] = ",,,${BT_PULSE_PACKS}"
+
+FILES:${PN} += "${datadir}/gnome-bluetooth-3.0"
+
+RDEPENDS:${PN} += "bluez5"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_45.0.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_45.0.2.bb
deleted file mode 100644
index 30f532c..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_45.0.2.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "GNOME calculator"
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-SECTION = "x11/gnome"
-
-DEPENDS = " \
-    yelp-tools-native \
-    gtk4 \
-    libsoup-3.0 \
-    libgee \
-    libxml2 \
-    libmpc \
-    gtksourceview5 \
-    libadwaita \
-"
-
-GIR_MESON_OPTION = 'disable-introspection'
-GIR_MESON_ENABLE_FLAG = 'false'
-GIR_MESON_DISABLE_FLAG = 'true'
-VALA_MESON_OPTION = ''
-
-GTKIC_VERSION = '4'
-
-inherit gnomebase gobject-introspection gnome-help vala gtk-icon-cache gettext features_check
-
-def gnome_verdir(v):
-    return oe.utils.trim_version(v, 1)
-
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-SRC_URI[archive.sha256sum] = "7dcbf32384897171cbe5483ec664d994e5e755e912ae1df911624f03c90867c2"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/metainfo \
-    ${datadir}/gnome-shell \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_46.0.bb
new file mode 100644
index 0000000..5c7e273
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calculator/gnome-calculator_46.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "GNOME calculator"
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    yelp-tools-native \
+    gtk4 \
+    libsoup-3.0 \
+    libgee \
+    libxml2 \
+    libmpc \
+    gtksourceview5 \
+    libadwaita \
+"
+
+GIR_MESON_OPTION = 'disable-introspection'
+GIR_MESON_ENABLE_FLAG = 'false'
+GIR_MESON_DISABLE_FLAG = 'true'
+VALA_MESON_OPTION = ''
+
+GTKIC_VERSION = '4'
+
+inherit gnomebase gobject-introspection gnome-help vala gtk-icon-cache gettext features_check
+
+def gnome_verdir(v):
+    return oe.utils.trim_version(v, 1)
+
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+SRC_URI[archive.sha256sum] = "44694fda6b6233923f5c10a48d02d2cf5724e011a8a85789074c953101f33bf1"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+    ${datadir}/gnome-shell \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_45.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_45.1.bb
deleted file mode 100644
index 99cb9f6..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_45.1.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "GNOME calendar"
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
-
-SECTION = "x11/gnome"
-
-DEPENDS = " \
-    gtk4 \
-    libical \
-    gsettings-desktop-schemas \
-    evolution-data-server \
-    libsoup \
-    libdazzle \
-    libadwaita \
-    libgweather4 \
-    geoclue \
-    geocode-glib \
-"
-
-GTKIC_VERSION = '4'
-inherit gnomebase gsettings gtk-icon-cache gettext features_check upstream-version-is-even mime-xdg
-
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-SRC_URI[archive.sha256sum] = "7fa8507543865aa7432bb5319830c87158b5447ca09cca45b607dc6796c71008"
-
-do_install:prepend() {
-    sed -i -e 's|${S}/src|${TARGET_DBGSRC_DIR}/src|g' ${B}/src/gcal-enum-types.h
-    sed -i -e 's|${S}/src|${TARGET_DBGSRC_DIR}/src|g' ${B}/src/gcal-enum-types.c
-}
-
-FILES:${PN} += " \
-    ${datadir}/gnome-shell \
-    ${datadir}/metainfo \
-    ${datadir}/dbus-1 \
-"
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_46.0.bb
new file mode 100644
index 0000000..707c4b5
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-calendar/gnome-calendar_46.0.bb
@@ -0,0 +1,37 @@
+SUMMARY = "GNOME calendar"
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    gtk4 \
+    libical \
+    gsettings-desktop-schemas \
+    evolution-data-server \
+    libsoup \
+    libdazzle \
+    libadwaita \
+    libgweather4 \
+    geoclue \
+    geocode-glib \
+"
+
+GTKIC_VERSION = '4'
+inherit gnomebase gsettings gtk-icon-cache gettext features_check upstream-version-is-even mime-xdg
+
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+SRC_URI[archive.sha256sum] = "5e21960c174bd8606d9089bf79c70f31070ab4837919878b00db2f14af9fe718"
+
+do_install:prepend() {
+    sed -i -e 's|${S}/src|${TARGET_DBGSRC_DIR}/src|g' ${B}/src/gcal-enum-types.h
+    sed -i -e 's|${S}/src|${TARGET_DBGSRC_DIR}/src|g' ${B}/src/gcal-enum-types.c
+}
+
+FILES:${PN} += " \
+    ${datadir}/gnome-shell \
+    ${datadir}/metainfo \
+    ${datadir}/dbus-1 \
+"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-chess/gnome-chess_43.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-chess/gnome-chess_43.2.bb
deleted file mode 100644
index 58e72ef..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-chess/gnome-chess_43.2.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "GNOME Chess is a 2D chess game, where games can be played between a combination of human and computer players."
-HOMEPAGE = "https://wiki.gnome.org/Apps/Chess"
-LICENSE = "GPL-3.0-only"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data opengl"
-
-GTKIC_VERSION = "4"
-
-DEPENDS = " \
-    appstream-glib-native \
-    cairo \
-    desktop-file-utils-native \
-    glib-2.0 \
-    glib-2.0 \
-    gtk4 \
-    libadwaita \
-    librsvg \
-    pango \
-"
-
-RRECOMMENDS:${PN}  = "gnuchess"
-
-SRC_URI = "git://github.com/GNOME/gnome-chess.git;protocol=https;branch=master"
-
-inherit meson pkgconfig gobject-introspection gtk-icon-cache vala features_check mime-xdg gsettings
-
-GIR_MESON_OPTION = ""
-
-S = "${WORKDIR}/git"
-SRCREV = "de47d07ec6fc828b2668ca6ee59fe9bdfa9dc1d6"
-
-FILES:${PN} += "${datadir}"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-chess/gnome-chess_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-chess/gnome-chess_46.0.bb
new file mode 100644
index 0000000..bb53b58
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-chess/gnome-chess_46.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "GNOME Chess is a 2D chess game, where games can be played between a combination of human and computer players."
+HOMEPAGE = "https://wiki.gnome.org/Apps/Chess"
+LICENSE = "GPL-3.0-only"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data opengl"
+
+GTKIC_VERSION = "4"
+
+DEPENDS = " \
+    appstream-glib-native \
+    cairo \
+    desktop-file-utils-native \
+    glib-2.0 \
+    glib-2.0 \
+    gtk4 \
+    libadwaita \
+    librsvg \
+    pango \
+"
+
+RRECOMMENDS:${PN}  = "gnuchess"
+
+SRC_URI = "git://github.com/GNOME/gnome-chess.git;protocol=https;branch=master"
+
+inherit meson pkgconfig gobject-introspection gtk-icon-cache vala features_check mime-xdg gsettings
+
+GIR_MESON_OPTION = ""
+
+S = "${WORKDIR}/git"
+SRCREV = "c3625ee59ab3acfd7566ef04300b15ddbadaaac3"
+
+FILES:${PN} += "${datadir}"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-commander/gnome-commander/0001-Build-fix-needed-with-taglib-2.0.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-commander/gnome-commander/0001-Build-fix-needed-with-taglib-2.0.patch
new file mode 100644
index 0000000..8f6920c
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-commander/gnome-commander/0001-Build-fix-needed-with-taglib-2.0.patch
@@ -0,0 +1,37 @@
+From dc3aa0ff5a41114b17816f1f36f6bb5631c6ab5c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 7 Mar 2024 17:17:29 -0800
+Subject: [PATCH] Build fix needed with taglib 2.0
+
+Fixes
+| ../gnome-commander-1.16.1/src/tags/gnome-cmd-tags-taglib.cc:153:29: error: no member named 'sampleWidth' in 'TagLib::FLAC::Properties'
+|   153 |         if (flacProperties->sampleWidth())
+|       |             ~~~~~~~~~~~~~~  ^
+| ../gnome-commander-1.16.1/src/tags/gnome-cmd-tags-taglib.cc:154:67: error: no member named 'sampleWidth' in 'TagLib::FLAC::Properties'
+|   154 |             cout << "Audio.FLAC.SampleWidth  " << flacProperties->sampleWidth()<< endl;
+|       |                                                   ~~~~~~~~~~~~~~  ^
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/tags/gnome-cmd-tags-taglib.cc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/tags/gnome-cmd-tags-taglib.cc b/src/tags/gnome-cmd-tags-taglib.cc
+index 9e65836..573f5eb 100644
+--- a/src/tags/gnome-cmd-tags-taglib.cc
++++ b/src/tags/gnome-cmd-tags-taglib.cc
+@@ -150,8 +150,8 @@ bool getAudioProperties(GnomeCmdFileMetadata &metadata, const TagLib::AudioPrope
+     if (flacProperties)
+     {
+         metadata.add(TAG_AUDIO_CODEC,"FLAC");
+-        if (flacProperties->sampleWidth())
+-            cout << "Audio.FLAC.SampleWidth  " << flacProperties->sampleWidth()<< endl;
++        if (flacProperties->bitsPerSample())
++            cout << "Audio.FLAC.BitsPerSample  " << flacProperties->bitsPerSample()<< endl;
+ 
+         return true;
+     }
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-commander/gnome-commander_1.16.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-commander/gnome-commander_1.16.1.bb
index 474512d..bb36d59 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-commander/gnome-commander_1.16.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-commander/gnome-commander_1.16.1.bb
@@ -16,6 +16,7 @@
 GIR_MESON_ENABLE_FLAG = 'enabled'
 GIR_MESON_DISABLE_FLAG = 'disabled'
 
+SRC_URI += "file://0001-Build-fix-needed-with-taglib-2.0.patch"
 SRC_URI[archive.sha256sum] = "3f1d00c4a650fe7902167648286b32c9ca4ef86e31a5d8ccca0139f12d10d0b3"
 
 PACKAGECONFIG ??= "exiv2 taglib libgsf poppler"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-console/gnome-console_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-console/gnome-console_45.0.bb
index 9669e33..d03b5fe 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-console/gnome-console_45.0.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-console/gnome-console_45.0.bb
@@ -4,6 +4,7 @@
 
 GTKIC_VERSION = "4"
 inherit gnomebase gsettings pkgconfig gtk-icon-cache
+REQUIRED_DISTRO_FEATURES = "opengl"
 
 DEPENDS = " \
     desktop-file-utils-native \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch
index 7cd7c04..4ae923f 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center/0001-Add-meson-option-to-pass-sysroot.patch
@@ -1,57 +1,52 @@
-From ba8aebe1259ae3f7f5a4827e5a47bb95c568b218 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
-Date: Tue, 21 May 2019 16:07:46 +0200
+From 1a48df2a8da44410bbd767c2420d363f6180c79a Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@t-online.de>
+Date: Mon, 18 Mar 2024 05:50:21 +0100
 Subject: [PATCH] Add meson option to pass sysroot
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
 
-We need to pass this to meson to help it finding gdesktop-enums.h:
-
-| panels/background/meson.build:38:0: ERROR: File /usr/include/gsettings-desktop-schemas/gdesktop-enums.h does not exist.
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
 
 Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
 ---
  meson_options.txt             | 1 +
  panels/background/meson.build | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
+ panels/system/meson.build     | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/meson_options.txt b/meson_options.txt
-index 8ee7b6e0e..7e6adc668 100644
+index e53d6e3f3..8fae4c824 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
 @@ -1,3 +1,4 @@
 +option('oe_sysroot', type: 'string', value: '', description: 'Directory for OE-sysroot')
+ option('deprecated-declarations', type: 'feature', value: 'disabled', description: 'build with deprecated declaration warnings')
  option('documentation', type: 'boolean', value: false, description: 'build documentation')
  option('ibus', type: 'boolean', value: true, description: 'build with IBus support')
- option('privileged_group', type: 'string', value: 'wheel', description: 'name of group that has elevated permissions')
 diff --git a/panels/background/meson.build b/panels/background/meson.build
-index 9bf543538..97f1e0117 100644
+index 6ced050f9..df1f80896 100644
 --- a/panels/background/meson.build
 +++ b/panels/background/meson.build
-@@ -19,7 +19,7 @@ common_sources = []
+@@ -24,7 +24,7 @@ common_sources += gnome.mkenums_simple(
  
  enums = 'gdesktop-enums-types'
  enums_header = files(
--  gsettings_desktop_dep.get_variable(pkgconfig: 'prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h',
-+  get_option('oe_sysroot') + gsettings_desktop_dep.get_variable(pkgconfig: 'prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h',
-   'cc-background-item.h'
+-  gsettings_desktop_dep.get_variable(pkgconfig: 'prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h'
++  get_option('oe_sysroot') + gsettings_desktop_dep.get_variable(pkgconfig: 'prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h'
  )
  
-diff --git a/panels/datetime/meson.build b/panels/datetime/meson.build
-index 8cb3b63f0..8c5a45e7c 100644
---- a/panels/datetime/meson.build
-+++ b/panels/datetime/meson.build
-@@ -37,7 +37,7 @@ sources = files(
+ common_sources += gnome.mkenums(
+diff --git a/panels/system/meson.build b/panels/system/meson.build
+index 4fee82210..979332a0e 100644
+--- a/panels/system/meson.build
++++ b/panels/system/meson.build
+@@ -73,7 +73,7 @@ sources += gnome.compile_resources(
+ )
  
- enums = 'gdesktop-enums-types'
  enums_header = files(
 -  gsettings_desktop_dep.get_variable(pkgconfig: 'prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h',
 +  get_option('oe_sysroot') + gsettings_desktop_dep.get_variable(pkgconfig: 'prefix') + '/include/gsettings-desktop-schemas/gdesktop-enums.h',
-   'cc-datetime-panel.h'
+   'datetime/cc-datetime-page.h'
  )
  
 -- 
-2.34.1
+2.44.0
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_45.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_45.3.bb
deleted file mode 100644
index cb9a577..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_45.3.bb
+++ /dev/null
@@ -1,70 +0,0 @@
-SUMMARY = "GNOME Settings"
-DESCRIPTION = "GNOME Settings is GNOME's main interface for configuration of various aspects of your desktop"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
-
-GTKIC_VERSION = "4"
-
-DEPENDS = " \
-    accountsservice \
-    colord-gtk \
-    gcr3 \
-    gdk-pixbuf \
-    glib-2.0 \
-    gnome-bluetooth \
-    gnome-desktop \
-    gnome-online-accounts \
-    gnome-settings-daemon \
-    gsettings-desktop-schemas \
-    gtk4 \
-    libadwaita \
-    libepoxy \
-    libgtop \
-    libgudev \
-    libnma \
-    libpwquality \
-    libxml2 \
-    polkit \
-    pulseaudio \
-    samba \
-    setxkbmap-native \
-    tecla \
-    udisks2 \
-    upower \
-"
-
-inherit gtk-icon-cache pkgconfig gnomebase gsettings gettext upstream-version-is-even bash-completion features_check useradd
-
-REQUIRED_DISTRO_FEATURES += "opengl polkit pulseaudio systemd x11"
-
-SRC_URI += "file://0001-Add-meson-option-to-pass-sysroot.patch"
-SRC_URI[archive.sha256sum] = "b1e949c4e86c0624ec6a6ed0df09c9fae2b22983c1dca60ed86aec8ef0b24004"
-
-PACKAGECONFIG ??= "ibus ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}"
-PACKAGECONFIG[cups] = ",,cups,cups"
-PACKAGECONFIG[ibus] = "-Dibus=true, -Dibus=false, ibus"
-PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false, wayland"
-
-EXTRA_OEMESON += "-Doe_sysroot=${STAGING_DIR_HOST}"
-
-export XDG_DATA_DIRS = "${STAGING_DATADIR}"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd"
-
-do_install:append() {
-    if [ -d ${D}${datadir}/polkit-1/rules.d ]; then
-        chmod 700 ${D}${datadir}/polkit-1/rules.d
-        chown polkitd:root ${D}${datadir}/polkit-1/rules.d
-    fi
-}
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/gnome-shell \
-    ${datadir}/metainfo \
-"
-
-FILES:${PN}-dev += "${datadir}/gettext"
-
-RDEPENDS:${PN} += "gsettings-desktop-schemas tecla system-config-printer cups-pk-helper"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_46.0.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_46.0.1.bb
new file mode 100644
index 0000000..de11239
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-control-center/gnome-control-center_46.0.1.bb
@@ -0,0 +1,75 @@
+SUMMARY = "GNOME Settings"
+DESCRIPTION = "GNOME Settings is GNOME's main interface for configuration of various aspects of your desktop"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=75859989545e37968a99b631ef42722e"
+
+GTKIC_VERSION = "4"
+
+DEPENDS = " \
+    accountsservice \
+    colord-gtk \
+    gcr \
+    gdk-pixbuf \
+    glib-2.0 \
+    gnome-bluetooth \
+    gnome-desktop \
+    gnome-online-accounts \
+    gnome-settings-daemon \
+    gsettings-desktop-schemas \
+    gtk4 \
+    libadwaita \
+    libepoxy \
+    libgtop \
+    libgudev \
+    libnma \
+    libpwquality \
+    libxml2 \
+    polkit \
+    pulseaudio \
+    samba \
+    setxkbmap-native \
+    tecla \
+    udisks2 \
+    upower \
+"
+
+inherit gtk-icon-cache pkgconfig gnomebase gsettings gettext upstream-version-is-even bash-completion features_check useradd
+
+REQUIRED_DISTRO_FEATURES += "opengl polkit pulseaudio systemd x11"
+
+SRC_URI = "gitsm://gitlab.gnome.org/GNOME/gnome-control-center.git;protocol=https;nobranch=1"
+SRC_URI += "file://0001-Add-meson-option-to-pass-sysroot.patch"
+
+S = "${WORKDIR}/git"
+SRCREV = "005f40dcfa464f113a1c95f97673bc5505fc15ad"
+
+PACKAGECONFIG ??= "ibus ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}"
+PACKAGECONFIG[cups] = ",,cups,cups"
+PACKAGECONFIG[ibus] = "-Dibus=true, -Dibus=false, ibus"
+PACKAGECONFIG[wayland] = "-Dwayland=true, -Dwayland=false, wayland"
+
+EXTRA_OEMESON += "-Doe_sysroot=${STAGING_DIR_HOST}"
+
+export XDG_DATA_DIRS = "${STAGING_DATADIR}"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd"
+
+do_install:append() {
+    if [ -d ${D}${datadir}/polkit-1/rules.d ]; then
+        chmod 700 ${D}${datadir}/polkit-1/rules.d
+        chown polkitd:root ${D}${datadir}/polkit-1/rules.d
+    fi
+}
+
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/gnome-shell \
+    ${datadir}/metainfo \
+"
+
+FILES:${PN}-dev += "${datadir}/gettext"
+
+RDEPENDS:${PN} += "gsettings-desktop-schemas tecla system-config-printer cups-pk-helper ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'gnome-user-share', '' , d)}"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_45.0.bb
deleted file mode 100644
index 4f3738c..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_45.0.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "GNOME disk utility"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SECTION = "x11/gnome"
-
-DEPENDS = " \
-    desktop-file-utils-native \
-    gtk+3 \
-    libdvdread \
-    libnotify \
-    libsecret \
-    libpwquality \
-    udisks2 \
-    libhandy \
-    xz \
-"
-
-
-inherit gnomebase gsettings gtk-icon-cache gettext features_check mime-xdg
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "polkit"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)}"
-
-# As soon as elogind is of interest this needs rework: meson option is combo
-PACKAGECONFIG[systemd] = "-Dlogind=libsystemd,-Dlogind=none,systemd"
-PACKAGECONFIG[x11] = ",,libcanberra"
-
-SRC_URI:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'file://0001-gnome-disk-utility-remove-libcanberra-dependency.patch', '', d)}"
-SRC_URI[archive.sha256sum] = "3d8625faa99047bc4aefd29921ad728ab4d700cff86e0f2ec67e8dba877d0dd3"
-
-EXTRA_OEMESON = "-Dman=false"
-
-FILES:${PN} += " \
-    ${datadir}/metainfo \
-    ${datadir}/dbus-1 \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_46.0.bb
new file mode 100644
index 0000000..e4998f6
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-disk-utility/gnome-disk-utility_46.0.bb
@@ -0,0 +1,41 @@
+SUMMARY = "GNOME disk utility"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    desktop-file-utils-native \
+    gtk+3 \
+    libdvdread \
+    libnotify \
+    libsecret \
+    libpwquality \
+    udisks2 \
+    libhandy \
+    xz \
+"
+
+
+inherit gnomebase gsettings gtk-icon-cache gettext features_check mime-xdg
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "polkit"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd x11', d)}"
+
+# As soon as elogind is of interest this needs rework: meson option is combo
+PACKAGECONFIG[systemd] = "-Dlogind=libsystemd,-Dlogind=none,systemd"
+PACKAGECONFIG[x11] = ",,libcanberra"
+
+SRC_URI:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'file://0001-gnome-disk-utility-remove-libcanberra-dependency.patch', '', d)}"
+SRC_URI[archive.sha256sum] = "464649148c6d6771f1ac2ebfe43a4e519205b11c2d914a09f2a001821d06957d"
+
+EXTRA_OEMESON = "-Dman=false"
+
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
+
+FILES:${PN} += " \
+    ${datadir}/metainfo \
+    ${datadir}/dbus-1 \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_45.0.bb
deleted file mode 100644
index 629bc71..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_45.0.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-SUMMARY = "GNOME font viewer"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SECTION = "x11/gnome"
-
-DEPENDS = " \
-    gtk4 \
-    gnome-desktop \
-    libadwaita \
-"
-
-
-inherit gnomebase gtk-icon-cache gettext features_check mime-xdg
-
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-SRC_URI[archive.sha256sum] = "97cb6b68dda60de0ab3038383586f1e4bc1da5a48f44025bd6bbe74ea05c2b08"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/metainfo \
-    ${datadir}/thumbnailers \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_46.0.bb
new file mode 100644
index 0000000..dbce71d
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-font-viewer/gnome-font-viewer_46.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "GNOME font viewer"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SECTION = "x11/gnome"
+
+DEPENDS = " \
+    gtk4 \
+    gnome-desktop \
+    libadwaita \
+"
+
+
+inherit gnomebase gtk-icon-cache gettext features_check mime-xdg
+
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+SRC_URI[archive.sha256sum] = "592f401e485d02cc044d487bb5c8e04c961da6856216768a59f1ff98bd2d537c"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+    ${datadir}/thumbnailers \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts/0001-Replace-filename-with-basename.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts/0001-Replace-filename-with-basename.patch
deleted file mode 100644
index 9bb1d6b..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts/0001-Replace-filename-with-basename.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From c4a2951f8a75c4151f009e42b26639e4f456d5a2 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 27 May 2023 14:41:28 -0700
-Subject: [PATCH] Replace filename with basename
-
-This avoids emitting absolute paths into generated sourcecode, it
-improves reproducibility. See [1]
-
-[1] https://developer-old.gnome.org/gobject/stable/glib-mkenums.html
-
-Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/gnome-online-accounts/-/merge_requests/125]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/goa/goaenumtypes.c.template               | 2 +-
- src/goa/goaenumtypes.h.template               | 2 +-
- src/goabackend/goabackendenumtypes.c.template | 2 +-
- src/goabackend/goabackendenumtypes.h.template | 2 +-
- src/goaidentity/goaidentityenumtypes.c.in     | 4 ++--
- src/goaidentity/goaidentityenumtypes.h.in     | 2 +-
- 6 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/goa/goaenumtypes.c.template b/src/goa/goaenumtypes.c.template
-index 3150fa71..c2bc4b0a 100644
---- a/src/goa/goaenumtypes.c.template
-+++ b/src/goa/goaenumtypes.c.template
-@@ -5,7 +5,7 @@
- /*** END file-header ***/
- 
- /*** BEGIN file-production ***/
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
-diff --git a/src/goa/goaenumtypes.h.template b/src/goa/goaenumtypes.h.template
-index 040428c3..14548cb4 100644
---- a/src/goa/goaenumtypes.h.template
-+++ b/src/goa/goaenumtypes.h.template
-@@ -9,7 +9,7 @@ G_BEGIN_DECLS
- 
- /*** BEGIN file-production ***/
- 
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
-diff --git a/src/goabackend/goabackendenumtypes.c.template b/src/goabackend/goabackendenumtypes.c.template
-index 6d2651da..05156bdd 100644
---- a/src/goabackend/goabackendenumtypes.c.template
-+++ b/src/goabackend/goabackendenumtypes.c.template
-@@ -5,7 +5,7 @@
- /*** END file-header ***/
- 
- /*** BEGIN file-production ***/
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
-diff --git a/src/goabackend/goabackendenumtypes.h.template b/src/goabackend/goabackendenumtypes.h.template
-index 7321076e..51ce84bd 100644
---- a/src/goabackend/goabackendenumtypes.h.template
-+++ b/src/goabackend/goabackendenumtypes.h.template
-@@ -9,7 +9,7 @@ G_BEGIN_DECLS
- 
- /*** BEGIN file-production ***/
- 
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
-diff --git a/src/goaidentity/goaidentityenumtypes.c.in b/src/goaidentity/goaidentityenumtypes.c.in
-index c0286907..8aad7ae4 100644
---- a/src/goaidentity/goaidentityenumtypes.c.in
-+++ b/src/goaidentity/goaidentityenumtypes.c.in
-@@ -5,8 +5,8 @@
- /*** END file-header ***/
- 
- /*** BEGIN file-production ***/
--#include "@filename@"
--/* enumerations from "@filename@" */
-+#include "@basename@"
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
-diff --git a/src/goaidentity/goaidentityenumtypes.h.in b/src/goaidentity/goaidentityenumtypes.h.in
-index 35d4d5c5..8719282a 100644
---- a/src/goaidentity/goaidentityenumtypes.h.in
-+++ b/src/goaidentity/goaidentityenumtypes.h.in
-@@ -9,7 +9,7 @@ G_BEGIN_DECLS
- 
- /*** BEGIN file-production ***/
- 
--/* enumerations from "@filename@" */
-+/* enumerations from "@basename@" */
- /*** END file-production ***/
- 
- /*** BEGIN value-header ***/
--- 
-2.40.1
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
deleted file mode 100644
index 47b234e..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.48.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "GNOME Online Accounts - Single sign-on framework for GNOME"
-LICENSE = "LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=34c88b124db5fb2762c1676be7dadd36"
-
-
-inherit gnomebase gsettings gobject-introspection gtk-icon-cache vala features_check
-
-DEPENDS = "gdk-pixbuf dbus glib-2.0"
-
-SRC_URI += "file://0001-Replace-filename-with-basename.patch"
-SRC_URI[archive.sha256sum] = "418bb9fcffdbd72a98205ad365137617fc1e3551a54de74f6a98d45d266175bf"
-
-PACKAGECONFIG ?= "goabackend kerberos owncloud lastfm google windows_live"
-
-# goabackend requires webkitgtk to be built with gtk+3 and gcr3
-PACKAGECONFIG[goabackend] = "-Dgoabackend=true,-Dgoabackend=false,gtk+3 gtk+3-native json-glib libxml2 libsoup rest libsecret webkitgtk3"
-PACKAGECONFIG[kerberos] = "-Dkerberos=true, -Dkerberos=false,krb5 gcr3"
-PACKAGECONFIG[exchange] = "-Dexchange=true, -Dexchange=false"
-PACKAGECONFIG[google] = "-Dgoogle=true, -Dgoogle=false"
-PACKAGECONFIG[owncloud] = "-Downcloud=true, -Downcloud=false"
-PACKAGECONFIG[windows_live] = "-Dwindows_live=true, -Dwindows_live=false"
-PACKAGECONFIG[lastfm] = "-Dlastfm=true, -Dlastfm=false"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${libdir}/goa-1.0/web-extensions/*.so \
-"
-
-# looked into pkg-config file: it is not a bug - they mean it
-FILES:${PN}-dev += "${libdir}/goa-1.0/include"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.50.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.50.0.bb
new file mode 100644
index 0000000..d28cc87
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-online-accounts/gnome-online-accounts_3.50.0.bb
@@ -0,0 +1,28 @@
+SUMMARY = "GNOME Online Accounts - Single sign-on framework for GNOME"
+LICENSE = "LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=34c88b124db5fb2762c1676be7dadd36"
+
+GTKIC_VERSION = "4"
+inherit gnomebase gsettings gobject-introspection gtk-icon-cache mime-xdg vala features_check
+REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG', 'goabackend', 'opengl', '', d)}"
+
+DEPENDS += "gdk-pixbuf dbus glib-2.0 gcr"
+
+SRC_URI[archive.sha256sum] = "b0f64f0dcfbb8885a3a759e1c9de7fb204adb3ce6bd32c30bcf52d5533c06d4e"
+
+PACKAGECONFIG ?= "goabackend kerberos owncloud google windows_live"
+
+PACKAGECONFIG[goabackend] = "-Dgoabackend=true,-Dgoabackend=false,gtk4 libadwaita json-glib libxml2 libsoup rest libsecret webkitgtk"
+PACKAGECONFIG[kerberos] = "-Dkerberos=true, -Dkerberos=false,krb5"
+PACKAGECONFIG[exchange] = "-Dexchange=true, -Dexchange=false"
+PACKAGECONFIG[google] = "-Dgoogle=true, -Dgoogle=false"
+PACKAGECONFIG[owncloud] = "-Downcloud=true, -Downcloud=false"
+PACKAGECONFIG[windows_live] = "-Dwindows_live=true, -Dwindows_live=false"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${libdir}/goa-1.0/web-extensions/*.so \
+"
+
+# looked into pkg-config file: it is not a bug - they mean it
+FILES:${PN}-dev += "${libdir}/goa-1.0/include"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_45.0.bb
deleted file mode 100644
index c5e27af..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_45.0.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "GNOME session"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = " \
-    glib-2.0-native \
-    libxslt-native \
-    xmlto-native \
-    xtrans \
-    libice \
-    libsm \
-    virtual/libx11 \
-    gtk+3 \
-    gnome-desktop \
-    gsettings-desktop-schemas \
-    json-glib \
-"
-
-
-inherit gnomebase gettext gsettings upstream-version-is-even features_check
-
-REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
-
-SRC_URI[archive.sha256sum] = "706d2ffcacac38553a3c0185793f5a2b4aac940bb5e789d953c9808163bef2f1"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', 'consolekit',d)}"
-
-PACKAGECONFIG[consolekit] = "-Dconsolekit=true, -Dconsolekit=false, dbus-glib"
-PACKAGECONFIG[systemd] = "-Dsystemd=true -Dsystemd_journal=true, -Dsystemd=false -Dsystemd_journal=false, systemd"
-
-FILES:${PN} += " \
-   ${datadir}/xdg-desktop-portal \
-    ${datadir}/xsessions \
-    ${datadir}/wayland-sessions \
-    ${systemd_user_unitdir} \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_46.0.bb
new file mode 100644
index 0000000..94e6394
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-session/gnome-session_46.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "GNOME session"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = " \
+    glib-2.0-native \
+    xtrans \
+    libice \
+    libsm \
+    virtual/libx11 \
+    gtk+3 \
+    gnome-desktop \
+    json-glib \
+    systemd \
+"
+
+
+inherit gnomebase gettext gsettings upstream-version-is-even features_check
+
+REQUIRED_DISTRO_FEATURES = "polkit systemd pam gobject-introspection-data"
+
+SRC_URI[archive.sha256sum] = "c6e1624af6090bc4e1a191fe2268abfa7a8de07831ca7a57f217e679bf7b9a54"
+
+PACKAGECONFIG ??= ""
+
+PACKAGECONFIG[docbook] = "-Ddocbook=true, -Ddocbook=false"
+PACKAGECONFIG[man] = "-Dman=true, -Dman=false,xmlto-native libxslt-native"
+
+FILES:${PN} += " \
+   ${datadir}/xdg-desktop-portal \
+    ${datadir}/xsessions \
+    ${datadir}/wayland-sessions \
+    ${systemd_user_unitdir} \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_45.0.bb
deleted file mode 100644
index 90df8bb..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_45.0.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "Window navigation construction toolkit"
-LICENSE = "LGPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-
-inherit gnomebase gsettings gobject-introspection gettext features_check upstream-version-is-even
-
-DEPENDS = " \
-    colord \
-    geocode-glib \
-    gcr \
-    gnome-desktop \
-    libgweather4 \
-    lcms \
-    libcanberra \
-    geoclue \
-    libnotify \
-    upower \
-    libwacom \
-    virtual/libx11 \
-"
-
-# all these are mandatory
-REQUIRED_DISTRO_FEATURES = "x11 polkit pulseaudio systemd gobject-introspection-data"
-GIR_MESON_OPTION = ""
-
-SRC_URI[archive.sha256sum] = "bb4dc46950e2a90f38f23225848856d2a7b1b718c89d0285ce197b7016bb1dc8"
-
-PACKAGECONFIG ??= " \
-    cups nm \
-    alsa gudev \
-    smartcard \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \
-"
-PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib"
-PACKAGECONFIG[cups] = "-Dcups=true,-Dcups=false,cups"
-PACKAGECONFIG[gudev] = "-Dgudev=true,-Dgudev=false,libgudev"
-PACKAGECONFIG[nm] = "-Dnetwork_manager=true,-Dnetwork_manager=false,networkmanager"
-PACKAGECONFIG[smartcard] = "-Dsmartcard=true,-Dsmartcard=false,nss"
-PACKAGECONFIG[wayland] = "-Dwayland=true,-Dwayland=false,wayland"
-
-def gnome_verdir(v):
-   return oe.utils.trim_version(v, 1)
-
-FILES:${PN} += " \
-    ${systemd_user_unitdir} \
-    ${libdir}/gnome-settings-daemon-${@gnome_verdir("${PV}")}/libgsd.so \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_46.0.bb
new file mode 100644
index 0000000..d409e77
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-settings-daemon/gnome-settings-daemon_46.0.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Window navigation construction toolkit"
+LICENSE = "LGPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+
+inherit gnomebase gsettings gobject-introspection gettext features_check upstream-version-is-even
+
+DEPENDS = " \
+    colord \
+    geocode-glib \
+    gcr \
+    gnome-desktop \
+    libgweather4 \
+    lcms \
+    libcanberra \
+    geoclue \
+    libnotify \
+    upower \
+    libwacom \
+    virtual/libx11 \
+"
+
+# all these are mandatory
+REQUIRED_DISTRO_FEATURES = "x11 polkit pulseaudio systemd gobject-introspection-data"
+GIR_MESON_OPTION = ""
+
+SRC_URI[archive.sha256sum] = "0b9a0f64fa18a8e7e09b4c95a3f754fa033c2cdbd2dc35701f0618572c1cb3d7"
+
+PACKAGECONFIG ??= " \
+    cups nm \
+    alsa gudev \
+    smartcard \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)} \
+"
+PACKAGECONFIG[alsa] = "-Dalsa=true,-Dalsa=false,alsa-lib"
+PACKAGECONFIG[cups] = "-Dcups=true,-Dcups=false,cups"
+PACKAGECONFIG[gudev] = "-Dgudev=true,-Dgudev=false,libgudev"
+PACKAGECONFIG[nm] = "-Dnetwork_manager=true,-Dnetwork_manager=false,networkmanager"
+PACKAGECONFIG[smartcard] = "-Dsmartcard=true,-Dsmartcard=false,nss"
+PACKAGECONFIG[wayland] = "-Dwayland=true,-Dwayland=false,wayland"
+
+def gnome_verdir(v):
+   return oe.utils.trim_version(v, 1)
+
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
+
+FILES:${PN} += " \
+    ${systemd_user_unitdir} \
+    ${libdir}/gnome-settings-daemon-${@gnome_verdir("${PV}")}/libgsd.so \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_45.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_45.2.bb
deleted file mode 100644
index 49cd6b8..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_45.2.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "GNOME Shell Extensions"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4cb3a392cbf81a9e685ec13b88c4c101"
-
-inherit gnomebase gettext gsettings features_check
-
-REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
-
-SRC_URI[archive.sha256sum] = "ee32f6387a2d18adbff7a956689bc747866b4a8712d73790c002abeae4ccaaaf"
-
-EXTRA_OEMESON += " \
-    -Dextension_set=all \
-    -Dclassic_mode=true \
-"
-
-RDEPENDS:${PN} += "gnome-shell"
-
-FILES:${PN} += " \
-    ${datadir}/gnome-shell \
-    ${datadir}/gnome-session \
-    ${datadir}/wayland-sessions \
-    ${datadir}/xsessions \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_46.0.bb
new file mode 100644
index 0000000..eff5fec
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell-extensions_46.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "GNOME Shell Extensions"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4cb3a392cbf81a9e685ec13b88c4c101"
+
+inherit gnomebase gettext gsettings features_check
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam gobject-introspection-data"
+
+SRC_URI[archive.sha256sum] = "d8138f88cd92df9f932309149c236fbdd77c1bc095445036ab7eb0ecda53c01a"
+
+EXTRA_OEMESON += " \
+    -Dextension_set=all \
+    -Dclassic_mode=true \
+"
+
+RDEPENDS:${PN} += "gnome-shell"
+
+FILES:${PN} += " \
+    ${datadir}/gnome-shell \
+    ${datadir}/gnome-session \
+    ${datadir}/wayland-sessions \
+    ${datadir}/xsessions \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell/0001-Introduce-options-gjs_path-to-optionally-set-path-to.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell/0001-Introduce-options-gjs_path-to-optionally-set-path-to.patch
index e8c7e79..8ef0da1 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell/0001-Introduce-options-gjs_path-to-optionally-set-path-to.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell/0001-Introduce-options-gjs_path-to-optionally-set-path-to.patch
@@ -1,4 +1,4 @@
-From b2710a880b366201f07752e87d35bb52ea69cbbe Mon Sep 17 00:00:00 2001
+From e9835f650d70bf22ad0e5d8c2179aa01b2d18955 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
 Date: Thu, 28 Oct 2021 18:57:24 +0200
 Subject: [PATCH] Introduce options 'gjs_path' to optionally set path to gjs
@@ -16,10 +16,14 @@
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
+From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
 Upstream-Status: Pending
 
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
-
 ---
  js/dbusServices/meson.build                  | 2 +-
  meson.build                                  | 6 +++++-
@@ -43,10 +47,10 @@
  
    configure_file(
 diff --git a/meson.build b/meson.build
-index 70ba711..f0ab158 100644
+index a6d83b1..2c612a8 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -135,7 +135,11 @@ endif
+@@ -134,7 +134,11 @@ endif
  
  mutter_typelibdir = mutter_dep.get_variable('typelibdir')
  python = find_program('python3')
@@ -87,11 +91,11 @@
  configure_file(
    input: prgname + '.in',
 diff --git a/subprojects/extensions-app/meson.build b/subprojects/extensions-app/meson.build
-index 6c9639e..3fe1ce0 100644
+index 45f391b..d581408 100644
 --- a/subprojects/extensions-app/meson.build
 +++ b/subprojects/extensions-app/meson.build
-@@ -46,7 +46,12 @@ localedir = join_paths(datadir, 'locale')
- metainfodir = join_paths(datadir, 'metainfo')
+@@ -47,7 +47,12 @@ metainfodir = join_paths(datadir, 'metainfo')
+ schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
  servicedir = join_paths(datadir, 'dbus-1', 'services')
  
 -gjs = find_program('gjs')
@@ -102,8 +106,8 @@
 +endif
 +
  appstream_util = find_program('appstream-util', required: false)
+ appstreamcli = find_program('appstreamcli', required: false)
  desktop_file_validate = find_program('desktop-file-validate', required: false)
- 
 diff --git a/subprojects/extensions-app/meson_options.txt b/subprojects/extensions-app/meson_options.txt
 index ca2eb41..2787785 100644
 --- a/subprojects/extensions-app/meson_options.txt
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_45.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_45.4.bb
deleted file mode 100644
index 9512f0b..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_45.4.bb
+++ /dev/null
@@ -1,86 +0,0 @@
-SUMMARY = "GNOME Shell is the graphical shell of the GNOME desktop environment"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-
-DEPENDS = " \
-    libxml2-native \
-    gtk4 \
-    mutter \
-    evolution-data-server \
-    gcr \
-    geocode-glib \
-    gjs \
-    gnome-autoar \
-    gnome-desktop \
-    polkit \
-    pipewire \
-    libsoup-3.0 \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', 'startup-notification', d)} \
-    ibus \
-    gsettings-desktop-schemas \
-"
-
-inherit gnomebase gsettings gettext gobject-introspection gtk-icon-cache features_check bash-completion
-
-REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
-
-GTKIC_VERSION = "4"
-GTKDOC_MESON_OPTION = "gtk_doc"
-GIR_MESON_OPTION = ""
-
-# gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES += "gobject-introspection-data"
-
-SRC_URI[archive.sha256sum] = "5bfea379e120b1c7f237f3ec369ad27ef5c2f5930c7df163b392782d8582090d"
-SRC_URI += "file://0001-Introduce-options-gjs_path-to-optionally-set-path-to.patch"
-
-PACKAGECONFIG ??= "bluetooth nm ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[bluetooth] = ",,gnome-bluetooth"
-PACKAGECONFIG[nm] = "-Dnetworkmanager=true, -Dnetworkmanager=false,networkmanager libsecret,networkmanager"
-PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
-
-EXTRA_OEMESON = " \
-    -Dgjs_path=${bindir}/gjs \
-    -Dextensions-app:gjs_path=${bindir}/gjs \
-    -Dtests=false \
-    -Dman=false \
-"
-
-do_install:append() {
-    # fix shebangs
-    for tool in `find ${D}${bindir} -name '*-tool'`; do
-        sed -i 's:#!${PYTHON}:#!${bindir}/python3:' $tool
-    done
-}
-
-GSETTINGS_PACKAGE = "${PN}-gsettings"
-
-FILES:${PN} += " \
-    ${datadir}/metainfo \
-    ${datadir}/dbus-1 \
-    ${datadir}/gnome-control-center \
-    ${datadir}/xdg-desktop-portal \
-    ${systemd_user_unitdir} \
-"
-
-RDEPENDS:${PN} += " \
-	accountsservice \
-	adwaita-icon-theme \
-	adwaita-icon-theme-cursors \
-	gdm-base \
-	gnome-control-center \
-	gnome-backgrounds \
-	gnome-bluetooth \
-	gnome-desktop \
-	gnome-session \
-	gnome-settings-daemon \
-	gnome-shell-gsettings \
-	gsettings-desktop-schemas \
-	librsvg-gtk \
-"
-
-PACKAGES =+ "${PN}-tools ${PN}-gsettings"
-FILES:${PN}-tools = "${bindir}/*-tool"
-RDEPENDS:${PN}-tools = "python3-core"
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_46.0.bb
new file mode 100644
index 0000000..907cfdf
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-shell/gnome-shell_46.0.bb
@@ -0,0 +1,86 @@
+SUMMARY = "GNOME Shell is the graphical shell of the GNOME desktop environment"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+
+DEPENDS = " \
+    libxml2-native \
+    gtk4 \
+    mutter \
+    evolution-data-server \
+    gcr \
+    geocode-glib \
+    gjs \
+    gnome-autoar \
+    gnome-desktop \
+    polkit \
+    pipewire \
+    libsoup-3.0 \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', 'startup-notification', d)} \
+    ibus \
+    gsettings-desktop-schemas \
+"
+
+inherit gnomebase gsettings gettext gobject-introspection gtk-icon-cache features_check bash-completion
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
+
+GTKIC_VERSION = "4"
+GTKDOC_MESON_OPTION = "gtk_doc"
+GIR_MESON_OPTION = ""
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES += "gobject-introspection-data"
+
+SRC_URI[archive.sha256sum] = "6bc41340b6de05774e97cfe20feba86e2b3cc9c8139118f24bd84ac63e82b53e"
+SRC_URI += "file://0001-Introduce-options-gjs_path-to-optionally-set-path-to.patch"
+
+PACKAGECONFIG ??= "bluetooth nm ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[bluetooth] = ",,gnome-bluetooth"
+PACKAGECONFIG[nm] = "-Dnetworkmanager=true, -Dnetworkmanager=false,networkmanager libsecret,networkmanager"
+PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
+
+EXTRA_OEMESON = " \
+    -Dgjs_path=${bindir}/gjs \
+    -Dextensions-app:gjs_path=${bindir}/gjs \
+    -Dtests=false \
+    -Dman=false \
+"
+
+do_install:append() {
+    # fix shebangs
+    for tool in `find ${D}${bindir} -name '*-tool'`; do
+        sed -i 's:#!${PYTHON}:#!${bindir}/python3:' $tool
+    done
+}
+
+GSETTINGS_PACKAGE = "${PN}-gsettings"
+
+FILES:${PN} += " \
+    ${datadir}/metainfo \
+    ${datadir}/dbus-1 \
+    ${datadir}/gnome-control-center \
+    ${datadir}/xdg-desktop-portal \
+    ${systemd_user_unitdir} \
+"
+
+RDEPENDS:${PN} += " \
+	accountsservice \
+	adwaita-icon-theme \
+	adwaita-icon-theme-cursors \
+	gdm-base \
+	gnome-control-center \
+	gnome-backgrounds \
+	gnome-bluetooth \
+	gnome-desktop \
+	gnome-session \
+	gnome-settings-daemon \
+	gnome-shell-gsettings \
+	gsettings-desktop-schemas \
+	librsvg-gtk \
+"
+
+PACKAGES =+ "${PN}-tools ${PN}-gsettings"
+FILES:${PN}-tools = "${bindir}/*-tool"
+RDEPENDS:${PN}-tools = "python3-core"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software/0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software/0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch
deleted file mode 100644
index 5e051be..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software/0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch
+++ /dev/null
@@ -1,504 +0,0 @@
-From 0655f358ed0e8455e12d9634f60bc4dbaee434e3 Mon Sep 17 00:00:00 2001
-From: Matthias Klumpp <matthias@tenstral.net>
-Date: Sun, 8 Oct 2023 20:22:44 +0200
-Subject: [PATCH] Adjust to build with AppStream 1.0 as well as 0.16.x
-
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gnome-software/-/commit/0655f358ed0e8455e12d9634f60bc4dbaee434e3]
----
- lib/gs-app.c                             |  4 ++
- lib/gs-appstream.c                       | 61 +++++++++++++++++++-----
- lib/gs-utils.c                           |  8 ++--
- meson.build                              | 22 +--------
- plugins/core/gs-plugin-appstream.c       |  8 ----
- plugins/fwupd/gs-fwupd-app.c             |  8 ++++
- plugins/fwupd/gs-plugin-fwupd.c          |  4 ++
- src/gs-hardware-support-context-dialog.c |  6 +++
- src/gs-repos-dialog.c                    |  4 ++
- src/gs-screenshot-carousel.c             |  4 +-
- src/gs-screenshot-image.c                | 41 ++++++++++++----
- src/gs-screenshot-image.h                |  7 +++
- subprojects/appstream.wrap               |  2 +-
- 13 files changed, 122 insertions(+), 57 deletions(-)
-
-diff --git a/lib/gs-app.c b/lib/gs-app.c
-index 2308de504d..ea348f8c01 100644
---- a/lib/gs-app.c
-+++ b/lib/gs-app.c
-@@ -609,7 +609,11 @@ gs_app_to_string_append (GsApp *app, GString *str)
- 		AsScreenshot *ss = g_ptr_array_index (priv->screenshots, i);
- 		g_autofree gchar *key = NULL;
- 		tmp = as_screenshot_get_caption (ss);
-+#if AS_CHECK_VERSION(1, 0, 0)
-+		im = as_screenshot_get_image (ss, 0, 0, 1);
-+#else
- 		im = as_screenshot_get_image (ss, 0, 0);
-+#endif
- 		if (im == NULL)
- 			continue;
- 		key = g_strdup_printf ("screenshot-%02u", i);
-diff --git a/lib/gs-appstream.c b/lib/gs-appstream.c
-index deca176dcf..6504d6f25e 100644
---- a/lib/gs-appstream.c
-+++ b/lib/gs-appstream.c
-@@ -1011,8 +1011,11 @@ gs_appstream_refine_app_relation (GsApp           *app,
- 			as_relation_set_item_kind (relation, AS_RELATION_ITEM_KIND_CONTROL);
- 			as_relation_set_value_control_kind (relation, as_control_kind_from_string (xb_node_get_text (child)));
- 		} else if (g_str_equal (item_kind, "display_length")) {
--			AsDisplayLengthKind display_length_kind;
- 			const gchar *compare;
-+			const gchar *side;
-+#if !AS_CHECK_VERSION(1, 0, 0)
-+			AsDisplayLengthKind display_length_kind;
-+#endif
- 
- 			/* https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-relations-display_length */
- 			as_relation_set_item_kind (relation, AS_RELATION_ITEM_KIND_DISPLAY_LENGTH);
-@@ -1020,15 +1023,21 @@ gs_appstream_refine_app_relation (GsApp           *app,
- 			compare = xb_node_get_attr (child, "compare");
- 			as_relation_set_compare (relation, (compare != NULL) ? as_relation_compare_from_string (compare) : AS_RELATION_COMPARE_GE);
- 
-+#if AS_CHECK_VERSION(1, 0, 0)
-+			side = xb_node_get_attr (child, "side");
-+			as_relation_set_display_side_kind (relation, (side != NULL) ? as_display_side_kind_from_string (side) : AS_DISPLAY_SIDE_KIND_SHORTEST);
-+			as_relation_set_value_px (relation, xb_node_get_text_as_uint (child));
-+#else
- 			display_length_kind = as_display_length_kind_from_string (xb_node_get_text (child));
- 			if (display_length_kind != AS_DISPLAY_LENGTH_KIND_UNKNOWN) {
- 				/* Ignore the `side` attribute */
- 				as_relation_set_value_display_length_kind (relation, display_length_kind);
- 			} else {
--				const gchar *side = xb_node_get_attr (child, "side");
-+				side = xb_node_get_attr (child, "side");
- 				as_relation_set_display_side_kind (relation, (side != NULL) ? as_display_side_kind_from_string (side) : AS_DISPLAY_SIDE_KIND_SHORTEST);
- 				as_relation_set_value_px (relation, xb_node_get_text_as_uint (child));
- 			}
-+#endif
- 		} else {
- 			g_debug ("Relation type ‘%s’ not currently supported for %s; ignoring",
- 				 item_kind, gs_app_get_id (app));
-@@ -1472,7 +1481,7 @@ gs_appstream_refine_app (GsPlugin *plugin,
- }
- 
- typedef struct {
--	AsSearchTokenMatch	 match_value;
-+	guint16			 match_value;
- 	XbQuery			*query;
- } GsAppstreamSearchHelper;
- 
-@@ -1522,7 +1531,7 @@ gs_appstream_silo_search_component (GPtrArray *array, XbNode *component, const g
- }
- 
- typedef struct {
--	AsSearchTokenMatch	match_value;
-+	guint16			match_value;
- 	const gchar		*xpath;
- } Query;
- 
-@@ -1539,6 +1548,11 @@ gs_appstream_do_search (GsPlugin *plugin,
- 	g_autoptr(GPtrArray) array = g_ptr_array_new_with_free_func ((GDestroyNotify) gs_appstream_search_helper_free);
- 	g_autoptr(GPtrArray) components = NULL;
- 	g_autoptr(GTimer) timer = g_timer_new ();
-+#if AS_CHECK_VERSION(1, 0, 0)
-+	const guint16 component_id_weight = as_utils_get_tag_search_weight ("id");
-+#else
-+	const guint16 component_id_weight = AS_SEARCH_TOKEN_MATCH_ID;
-+#endif
- 
- 	g_return_val_if_fail (GS_IS_PLUGIN (plugin), FALSE);
- 	g_return_val_if_fail (XB_IS_SILO (silo), FALSE);
-@@ -1585,7 +1599,7 @@ gs_appstream_do_search (GsPlugin *plugin,
- 			 * Drop the ID token from it as it’s the highest
- 			 * numeric value but isn’t visible to the user in the
- 			 * UI, which leads to confusing results ordering. */
--			gs_app_set_match_value (app, match_value & (~AS_SEARCH_TOKEN_MATCH_ID));
-+			gs_app_set_match_value (app, match_value & (~component_id_weight));
- 			gs_app_list_add (list, app);
- 
- 			if (gs_app_get_kind (app) == AS_COMPONENT_KIND_ADDON) {
-@@ -1624,18 +1638,32 @@ gs_appstream_search (GsPlugin *plugin,
- 		     GCancellable *cancellable,
- 		     GError **error)
- {
-+#if AS_CHECK_VERSION(1, 0, 0)
-+	guint16 pkgname_weight = as_utils_get_tag_search_weight ("pkgname");
-+	guint16 name_weight = as_utils_get_tag_search_weight ("name");
-+	guint16 id_weight = as_utils_get_tag_search_weight ("id");
- 	const Query queries[] = {
--		#ifdef HAVE_AS_SEARCH_TOKEN_MATCH_MEDIATYPE
--		{ AS_SEARCH_TOKEN_MATCH_MEDIATYPE,	"mimetypes/mimetype[text()~=stem(?)]" },
--		#else
--		{ AS_SEARCH_TOKEN_MATCH_MIMETYPE,	"mimetypes/mimetype[text()~=stem(?)]" },
--		#endif
-+		{ as_utils_get_tag_search_weight ("mediatype"),	"provides/mediatype[text()~=stem(?)]" },
- 		/* Search once with a tokenize-and-casefold operator (`~=`) to support casefolded
- 		 * full-text search, then again using substring matching (`contains()`), to
- 		 * support prefix matching. Only do the prefix matches on a few fields, and at a
- 		 * lower priority, otherwise things will get confusing.
--		 * 
-+		 *
- 		 * See https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2277 */
-+		{ pkgname_weight,				"pkgname[text()~=stem(?)]" },
-+		{ pkgname_weight / 2,				"pkgname[contains(text(),stem(?))]" },
-+		{ as_utils_get_tag_search_weight ("summary"),	"summary[text()~=stem(?)]" },
-+		{ name_weight,					"name[text()~=stem(?)]" },
-+		{ name_weight / 2,				"name[contains(text(),stem(?))]" },
-+		{ as_utils_get_tag_search_weight ("keyword"),	"keywords/keyword[text()~=stem(?)]" },
-+		{ id_weight,					"id[text()~=stem(?)]" },
-+		{ id_weight,					"launchable[text()~=stem(?)]" },
-+		{ as_utils_get_tag_search_weight ("origin"),	"../components[@origin~=stem(?)]" },
-+		{ 0,						NULL }
-+	};
-+#else
-+	const Query queries[] = {
-+		{ AS_SEARCH_TOKEN_MATCH_MEDIATYPE,	"mimetypes/mimetype[text()~=stem(?)]" },
- 		{ AS_SEARCH_TOKEN_MATCH_PKGNAME,	"pkgname[text()~=stem(?)]" },
- 		{ AS_SEARCH_TOKEN_MATCH_PKGNAME / 2,	"pkgname[contains(text(),stem(?))]" },
- 		{ AS_SEARCH_TOKEN_MATCH_SUMMARY,	"summary[text()~=stem(?)]" },
-@@ -1647,6 +1675,7 @@ gs_appstream_search (GsPlugin *plugin,
- 		{ AS_SEARCH_TOKEN_MATCH_ORIGIN,		"../components[@origin~=stem(?)]" },
- 		{ AS_SEARCH_TOKEN_MATCH_NONE,		NULL }
- 	};
-+#endif
- 
- 	return gs_appstream_do_search (plugin, silo, values, queries, list, cancellable, error);
- }
-@@ -1659,11 +1688,21 @@ gs_appstream_search_developer_apps (GsPlugin *plugin,
- 				    GCancellable *cancellable,
- 				    GError **error)
- {
-+#if AS_CHECK_VERSION(1, 0, 0)
-+	const Query queries[] = {
-+		{ as_utils_get_tag_search_weight ("pkgname"), "developer/name[text()~=stem(?)]" },
-+		{ as_utils_get_tag_search_weight ("summary"), "project_group[text()~=stem(?)]" },
-+		/* for legacy support */
-+		{ as_utils_get_tag_search_weight ("pkgname"), "developer_name[text()~=stem(?)]" },
-+		{ 0,					      NULL }
-+	};
-+#else
- 	const Query queries[] = {
- 		{ AS_SEARCH_TOKEN_MATCH_PKGNAME,	"developer_name[text()~=stem(?)]" },
- 		{ AS_SEARCH_TOKEN_MATCH_SUMMARY,	"project_group[text()~=stem(?)]" },
- 		{ AS_SEARCH_TOKEN_MATCH_NONE,		NULL }
- 	};
-+#endif
- 
- 	return gs_appstream_do_search (plugin, silo, values, queries, list, cancellable, error);
- }
-diff --git a/lib/gs-utils.c b/lib/gs-utils.c
-index cf9073025f..19e6ebd046 100644
---- a/lib/gs-utils.c
-+++ b/lib/gs-utils.c
-@@ -1694,9 +1694,9 @@ gs_utils_gstring_replace (GString *str,
- 			  const gchar *find,
- 			  const gchar *replace)
- {
--	#ifdef HAVE_AS_GSTRING_REPLACE_WITH_FOUR_ARGS
-+#if AS_CHECK_VERSION(1, 0, 0)
- 	as_gstring_replace (str, find, replace, 0);
--	#else
--	as_gstring_replace (str, find, replace);
--	#endif
-+#else
-+	as_gstring_replace2 (str, find, replace, 0);
-+#endif
- }
-diff --git a/meson.build b/meson.build
-index bc19669dd5..8c82464cdb 100644
---- a/meson.build
-+++ b/meson.build
-@@ -113,7 +113,7 @@ add_project_arguments('-D_GNU_SOURCE', language : 'c')
- conf.set('HAVE_LINUX_UNISTD_H', cc.has_header('linux/unistd.h'))
- 
- appstream = dependency('appstream',
--  version : '>= 0.14.0',
-+  version : '>= 0.16.4',
-   fallback : ['appstream', 'appstream_dep'],
-   default_options : [
-     'docs=false',
-@@ -121,26 +121,6 @@ appstream = dependency('appstream',
-     'install-docs=false'
-   ]
- )
--if appstream.type_name() == 'internal'
--else
--  if meson.get_compiler('c').has_header_symbol('appstream.h', 'AS_SEARCH_TOKEN_MATCH_MEDIATYPE', dependencies: appstream)
--    conf.set('HAVE_AS_SEARCH_TOKEN_MATCH_MEDIATYPE', '1')
--  endif
--  if meson.get_compiler('c').has_header_symbol('appstream.h', 'AS_FORMAT_STYLE_CATALOG', dependencies: appstream)
--    conf.set('HAVE_AS_FORMAT_STYLE_CATALOG', '1')
--  endif
--  if meson.get_compiler('c').has_function('as_metadata_components_to_catalog', prefix: '#include <appstream.h>', dependencies: appstream)
--    conf.set('HAVE_AS_METADATA_COMPONENTS_TO_CATALOG', '1')
--  endif
--  if meson.get_compiler('c').links('''#include <appstream.h>
--      int main (void)
--      {
--         as_gstring_replace (NULL, "a", "b", 0);
--         return 0;
--      }''', name: 'as_gstring_replace() has four arguments', dependencies: appstream)
--    conf.set('HAVE_AS_GSTRING_REPLACE_WITH_FOUR_ARGS', '1')
--  endif
--endif
- 
- gdk_pixbuf = dependency('gdk-pixbuf-2.0', version : '>= 2.32.0')
- libxmlb = dependency('xmlb', version : '>= 0.1.7', fallback : ['libxmlb', 'libxmlb_dep'])
-diff --git a/plugins/core/gs-plugin-appstream.c b/plugins/core/gs-plugin-appstream.c
-index cf9f3022b1..ef3226a591 100644
---- a/plugins/core/gs-plugin-appstream.c
-+++ b/plugins/core/gs-plugin-appstream.c
-@@ -414,11 +414,7 @@ gs_plugin_appstream_load_dep11_cb (XbBuilderSource *self,
- 	if (bytes == NULL)
- 		return NULL;
- 
--	#ifdef HAVE_AS_FORMAT_STYLE_CATALOG
- 	as_metadata_set_format_style (mdata, AS_FORMAT_STYLE_CATALOG);
--	#else
--	as_metadata_set_format_style (mdata, AS_FORMAT_STYLE_COLLECTION);
--	#endif
- 	as_metadata_parse_bytes (mdata,
- 				 bytes,
- 				 AS_FORMAT_KIND_YAML,
-@@ -428,11 +424,7 @@ gs_plugin_appstream_load_dep11_cb (XbBuilderSource *self,
- 		return NULL;
- 	}
- 
--	#ifdef HAVE_AS_METADATA_COMPONENTS_TO_CATALOG
- 	xml = as_metadata_components_to_catalog (mdata, AS_FORMAT_KIND_XML, &tmp_error);
--	#else
--	xml = as_metadata_components_to_collection (mdata, AS_FORMAT_KIND_XML, &tmp_error);
--	#endif
- 	if (xml == NULL) {
- 		// This API currently returns NULL if there is nothing to serialize, so we
- 		// have to test if this is an error or not.
-diff --git a/plugins/fwupd/gs-fwupd-app.c b/plugins/fwupd/gs-fwupd-app.c
-index 6dcda6ee92..5d3254da59 100644
---- a/plugins/fwupd/gs-fwupd-app.c
-+++ b/plugins/fwupd/gs-fwupd-app.c
-@@ -164,7 +164,11 @@ gs_fwupd_app_set_from_device (GsApp *app,
- 		gs_app_set_install_date (app, fwupd_device_get_created (dev));
- 	if (fwupd_device_get_description (dev) != NULL) {
- 		g_autofree gchar *tmp = NULL;
-+#if AS_CHECK_VERSION(1, 0, 0)
-+		tmp = as_markup_convert (fwupd_device_get_description (dev), AS_MARKUP_KIND_TEXT, NULL);
-+#else
- 		tmp = as_markup_convert_simple (fwupd_device_get_description (dev), NULL);
-+#endif
- 		if (tmp != NULL)
- 			gs_app_set_description (app, GS_APP_QUALITY_NORMAL, tmp);
- 	}
-@@ -402,7 +406,11 @@ gs_fwupd_app_set_from_release (GsApp *app, FwupdRelease *rel)
- 	}
- 	if (fwupd_release_get_description (rel) != NULL) {
- 		g_autofree gchar *tmp = NULL;
-+#if AS_CHECK_VERSION(1, 0, 0)
-+		tmp = as_markup_convert (fwupd_release_get_description (rel), AS_MARKUP_KIND_TEXT, NULL);
-+#else
- 		tmp = as_markup_convert_simple (fwupd_release_get_description (rel), NULL);
-+#endif
- 		if (tmp != NULL)
- 			gs_app_set_update_details_text (app, tmp);
- 	}
-diff --git a/plugins/fwupd/gs-plugin-fwupd.c b/plugins/fwupd/gs-plugin-fwupd.c
-index d8c0cd2dd4..a9b05028a0 100644
---- a/plugins/fwupd/gs-plugin-fwupd.c
-+++ b/plugins/fwupd/gs-plugin-fwupd.c
-@@ -727,7 +727,11 @@ gs_plugin_add_updates (GsPlugin *plugin,
- 				g_autofree gchar *desc = NULL;
- 				if (fwupd_release_get_description (rel) == NULL)
- 					continue;
-+#if AS_CHECK_VERSION(1, 0, 0)
-+				desc = as_markup_convert (fwupd_release_get_description (rel), AS_MARKUP_KIND_TEXT, NULL);
-+#else
- 				desc = as_markup_convert_simple (fwupd_release_get_description (rel), NULL);
-+#endif
- 				if (desc == NULL)
- 					continue;
- 				g_string_append_printf (update_desc,
-diff --git a/src/gs-hardware-support-context-dialog.c b/src/gs-hardware-support-context-dialog.c
-index 0e48c8c266..14653401de 100644
---- a/src/gs-hardware-support-context-dialog.c
-+++ b/src/gs-hardware-support-context-dialog.c
-@@ -461,6 +461,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor     *monitor,
- 			AsRelationCompare comparator = as_relation_get_compare (relation);
- 			Range current_display_comparand, relation_comparand;
- 
-+#if !AS_CHECK_VERSION(1, 0, 0)
- 			/* From https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-requires-recommends-display_length */
- 			Range display_lengths[] = {
- 				[AS_DISPLAY_LENGTH_KIND_XSMALL] = { 0, 360 },
-@@ -469,6 +470,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor     *monitor,
- 				[AS_DISPLAY_LENGTH_KIND_LARGE] = { 1024, 3840 },
- 				[AS_DISPLAY_LENGTH_KIND_XLARGE] = { 3840, G_MAXUINT },
- 			};
-+#endif
- 
- 			any_display_relations_set = TRUE;
- 
-@@ -485,11 +487,14 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor     *monitor,
- 			case AS_DISPLAY_SIDE_KIND_LAST:
- 			default:
- 				current_display_comparand.min = current_display_comparand.max = MAX (current_screen_size.width, current_screen_size.height);
-+#if !AS_CHECK_VERSION(1, 0, 0)
- 				relation_comparand.min = display_lengths[as_relation_get_value_display_length_kind (relation)].min;
- 				relation_comparand.max = display_lengths[as_relation_get_value_display_length_kind (relation)].max;
-+#endif
- 				break;
- 			}
- 
-+#if !AS_CHECK_VERSION(1, 0, 0)
- 			if (evaluate_display_comparison (display_lengths[AS_DISPLAY_LENGTH_KIND_SMALL], comparator, relation_comparand)) {
- 				*mobile_relation_kind_out = max_relation_kind (*mobile_relation_kind_out, as_relation_get_kind (relation));
- 				*mobile_match_out = TRUE;
-@@ -499,6 +504,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor     *monitor,
- 				*desktop_relation_kind_out = max_relation_kind (*desktop_relation_kind_out, as_relation_get_kind (relation));
- 				*desktop_match_out = TRUE;
- 			}
-+#endif
- 
- 			if (evaluate_display_comparison (current_display_comparand, comparator, relation_comparand)) {
- 				*current_relation_kind_out = max_relation_kind (*current_relation_kind_out, as_relation_get_kind (relation));
-diff --git a/src/gs-repos-dialog.c b/src/gs-repos-dialog.c
-index c41c4944a1..7dac0416d9 100644
---- a/src/gs-repos-dialog.c
-+++ b/src/gs-repos-dialog.c
-@@ -154,7 +154,11 @@ enable_repo (GsReposDialog *dialog,
- 		g_autoptr(GError) error = NULL;
- 
- 		/* convert from AppStream markup */
-+#if AS_CHECK_VERSION(1, 0, 0)
-+		message = as_markup_convert (gs_app_get_agreement (repo), AS_MARKUP_KIND_TEXT, &error);
-+#else
- 		message = as_markup_convert_simple (gs_app_get_agreement (repo), &error);
-+#endif
- 		if (message == NULL) {
- 			/* failed, so just try and show the original markup */
- 			message = g_strdup (gs_app_get_agreement (repo));
-diff --git a/src/gs-screenshot-carousel.c b/src/gs-screenshot-carousel.c
-index 04bbf86a1e..d269af6605 100644
---- a/src/gs-screenshot-carousel.c
-+++ b/src/gs-screenshot-carousel.c
-@@ -141,8 +141,8 @@ gs_screenshot_carousel_load_screenshots (GsScreenshotCarousel *self, GsApp *app,
- 		gtk_widget_set_can_focus (gtk_widget_get_first_child (ssimg), FALSE);
- 		gs_screenshot_image_set_screenshot (GS_SCREENSHOT_IMAGE (ssimg), ss);
- 		gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
--					      AS_IMAGE_NORMAL_WIDTH,
--					      AS_IMAGE_NORMAL_HEIGHT);
-+					      GS_IMAGE_NORMAL_WIDTH,
-+					      GS_IMAGE_NORMAL_HEIGHT);
- 		gtk_widget_add_css_class (ssimg, "screenshot-image-main");
- 		gs_screenshot_image_load_async (GS_SCREENSHOT_IMAGE (ssimg), cancellable);
- 
-diff --git a/src/gs-screenshot-image.c b/src/gs-screenshot-image.c
-index 93dba68f96..6b4db03d06 100644
---- a/src/gs-screenshot-image.c
-+++ b/src/gs-screenshot-image.c
-@@ -293,13 +293,13 @@ gs_screenshot_image_save_downloaded_img (GsScreenshotImage *ssimg,
- 	if (images->len > 1)
- 		return TRUE;
- 
--	if (width == AS_IMAGE_THUMBNAIL_WIDTH &&
--	    height == AS_IMAGE_THUMBNAIL_HEIGHT) {
--		width = AS_IMAGE_NORMAL_WIDTH;
--		height = AS_IMAGE_NORMAL_HEIGHT;
-+	if (width == GS_IMAGE_THUMBNAIL_WIDTH &&
-+	    height == GS_IMAGE_THUMBNAIL_HEIGHT) {
-+		width = GS_IMAGE_NORMAL_WIDTH;
-+		height = GS_IMAGE_NORMAL_HEIGHT;
- 	} else {
--		width = AS_IMAGE_THUMBNAIL_WIDTH;
--		height = AS_IMAGE_THUMBNAIL_HEIGHT;
-+		width = GS_IMAGE_THUMBNAIL_WIDTH;
-+		height = GS_IMAGE_THUMBNAIL_HEIGHT;
- 	}
- 
- 	width *= ssimg->scale;
-@@ -591,16 +591,30 @@ gs_screenshot_image_get_url (GsScreenshotImage *ssimg)
- 	} else if (as_screenshot_get_media_kind (ssimg->screenshot) == AS_SCREENSHOT_MEDIA_KIND_IMAGE) {
- 		AsImage *im;
- 
-+#if AS_CHECK_VERSION(1, 0, 0)
-+		im = as_screenshot_get_image (ssimg->screenshot,
-+					      ssimg->width,
-+					      ssimg->height,
-+					      ssimg->scale);
-+#else
- 		im = as_screenshot_get_image (ssimg->screenshot,
- 					      ssimg->width * ssimg->scale,
- 					      ssimg->height * ssimg->scale);
-+#endif
- 
- 		/* if we've failed to load a HiDPI image, fallback to LoDPI */
- 		if (im == NULL && ssimg->scale > 1) {
- 			ssimg->scale = 1;
-+#if AS_CHECK_VERSION(1, 0, 0)
-+			im = as_screenshot_get_image (ssimg->screenshot,
-+						      ssimg->width,
-+						      ssimg->height,
-+						      1);
-+#else
- 			im = as_screenshot_get_image (ssimg->screenshot,
- 						      ssimg->width,
- 						      ssimg->height);
-+#endif
- 		}
- 
- 		if (im)
-@@ -707,15 +721,22 @@ gs_screenshot_image_load_async (GsScreenshotImage *ssimg,
- 	 * smaller version of it straight away */
- 	if (!ssimg->showing_image &&
- 	    as_screenshot_get_media_kind (ssimg->screenshot) == AS_SCREENSHOT_MEDIA_KIND_IMAGE &&
--	    ssimg->width > AS_IMAGE_THUMBNAIL_WIDTH &&
--	    ssimg->height > AS_IMAGE_THUMBNAIL_HEIGHT) {
-+	    ssimg->width > GS_IMAGE_THUMBNAIL_WIDTH &&
-+	    ssimg->height > GS_IMAGE_THUMBNAIL_HEIGHT) {
- 		const gchar *url_thumb;
- 		g_autofree gchar *basename_thumb = NULL;
- 		g_autofree gchar *cache_kind_thumb = NULL;
- 		AsImage *im;
-+#if AS_CHECK_VERSION(1, 0, 0)
- 		im = as_screenshot_get_image (ssimg->screenshot,
--					      AS_IMAGE_THUMBNAIL_WIDTH * ssimg->scale,
--					      AS_IMAGE_THUMBNAIL_HEIGHT * ssimg->scale);
-+					      GS_IMAGE_THUMBNAIL_WIDTH,
-+					      GS_IMAGE_THUMBNAIL_HEIGHT,
-+					      ssimg->scale);
-+#else
-+		im = as_screenshot_get_image (ssimg->screenshot,
-+					      GS_IMAGE_THUMBNAIL_WIDTH * ssimg->scale,
-+					      GS_IMAGE_THUMBNAIL_HEIGHT * ssimg->scale);
-+#endif
- 		url_thumb = as_image_get_url (im);
- 		basename_thumb = gs_screenshot_get_cachefn_for_url (url_thumb);
- 		cache_kind_thumb = g_build_filename ("screenshots", "112x63", NULL);
-diff --git a/src/gs-screenshot-image.h b/src/gs-screenshot-image.h
-index 1f6cf81ce6..6e45f5d20a 100644
---- a/src/gs-screenshot-image.h
-+++ b/src/gs-screenshot-image.h
-@@ -21,6 +21,13 @@ G_BEGIN_DECLS
- 
- G_DECLARE_FINAL_TYPE (GsScreenshotImage, gs_screenshot_image, GS, SCREENSHOT_IMAGE, GtkWidget)
- 
-+#define GS_IMAGE_LARGE_HEIGHT		423
-+#define GS_IMAGE_LARGE_WIDTH		752
-+#define GS_IMAGE_NORMAL_HEIGHT		351
-+#define GS_IMAGE_NORMAL_WIDTH		624
-+#define GS_IMAGE_THUMBNAIL_HEIGHT	63
-+#define GS_IMAGE_THUMBNAIL_WIDTH 	112
-+
- GtkWidget	*gs_screenshot_image_new		(SoupSession		*session);
- 
- AsScreenshot	*gs_screenshot_image_get_screenshot	(GsScreenshotImage	*ssimg);
-diff --git a/subprojects/appstream.wrap b/subprojects/appstream.wrap
-index 6f0beb0cbc..b9a9c7dbe5 100644
---- a/subprojects/appstream.wrap
-+++ b/subprojects/appstream.wrap
-@@ -1,5 +1,5 @@
- [wrap-git]
- directory = appstream
- url = https://github.com/ximion/appstream.git
--revision = v0.14.1
-+revision = v0.16.4
- depth = 1
--- 
-GitLab
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software/e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch b/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software/e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch
deleted file mode 100644
index b7bddc3..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software/e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From e431ab003f3fabf616b6eb7dc93f8967bc9473e5 Mon Sep 17 00:00:00 2001
-From: Milan Crha <mcrha@redhat.com>
-Date: Wed, 22 Nov 2023 09:44:40 +0100
-Subject: [PATCH] gs-appstream: Remove use of AS_PROVIDED_KIND_PYTHON_2
-
-It's dropped in appstream 1.0.0 and it's not used anywhere in the gnome-software
-code, thus just remove it, rather than have it only for pre-1.0.0 appstream version.
-
-Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2388
-
-Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/gnome-software/-/commit/e431ab003f3fabf616b6eb7dc93f8967bc9473e5]
----
- lib/gs-appstream.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/lib/gs-appstream.c b/lib/gs-appstream.c
-index 6504d6f25..4fd7f5334 100644
---- a/lib/gs-appstream.c
-+++ b/lib/gs-appstream.c
-@@ -587,8 +587,6 @@ gs_appstream_refine_add_provides (GsApp *app, XbNode *component, GError **error)
- 					kind = AS_PROVIDED_KIND_FIRMWARE_RUNTIME;
- 				else if (g_strcmp0 (fw_type, "flashed") == 0)
- 					kind = AS_PROVIDED_KIND_FIRMWARE_FLASHED;
--			} else if (g_strcmp0 (element_name, "python2") == 0) {
--				kind = AS_PROVIDED_KIND_PYTHON_2;
- 			} else if (g_strcmp0 (element_name, "python3") == 0) {
- 				kind = AS_PROVIDED_KIND_PYTHON;
- 			} else if (g_strcmp0 (element_name, "dbus") == 0) {
--- 
-GitLab
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_45.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_45.3.bb
deleted file mode 100644
index 4beb79f..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_45.3.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "GNOME Software allows users to easily find, discover and install apps."
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-GTKDOC_MESON_OPTION ?= "gtk_doc"
-
-inherit gnomebase gsettings itstool gnome-help gtk-icon-cache gtk-doc mime mime-xdg gettext upstream-version-is-even features_check
-
-REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
-
-DEPENDS += " \
-	appstream \
-	gdk-pixbuf \
-	glib-2.0 \
-	glib-2.0-native \
-	gsettings-desktop-schemas \
-	gtk4 \
-	iso-codes \
-	json-glib \
-	libadwaita \
-	libgudev \
-	libsoup-3.0 \
-	libxmlb-native \
-	polkit \
-"
-
-RDEPENDS:${PN} = "iso-codes"
-
-EXTRA_OEMESON += "-Dtests=false -Dsoup2=false"
-
-SRC_URI += " \
-	file://0655f358ed0e8455e12d9634f60bc4dbaee434e3.patch \
-	file://e431ab003f3fabf616b6eb7dc93f8967bc9473e5.patch \
-"
-SRC_URI[archive.sha256sum] = "d6b9245b22237da7bd1739dd28c23cc8f3835f99fa10c1037d9dd7635335251c"
-
-PACKAGECONFIG ?= "flatpak"
-PACKAGECONFIG[flatpak] = "-Dflatpak=true,-Dflatpak=false,flatpak ostree"
-PACKAGECONFIG[snap] = "-Dsnap=true,-Dsnap=false,snapd-glib"
-PACKAGECONFIG[gtk_doc] = "-Dgtk_doc=true,-Dgtk_doc=false,libxslt-native docbook-xsl-stylesheets"
-PACKAGECONFIG[man] = "-Dman=true,-Dman=false,libxslt-native docbook-xsl-stylesheets"
-PACKAGECONFIG[packagekit] = "-Dpackagekit=true,-Dpackagekit=false,gnome-packagekit,gnome-packagekit"
-PACKAGECONFIG[fwupd] = "-Dfwupd=true,-Dfwupd=false,fwupd,fwupd"
-PACKAGECONFIG[malcontent] = "-Dmalcontent=true,-Dmalcontent=false,malcontent"
-
-FILES:${PN} += "${datadir}"
-FILES:${PN}-dev += "${libdir}/gnome-software/libgnomesoftware.so"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_46.0.bb
new file mode 100644
index 0000000..40a7141
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-software/gnome-software_46.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "GNOME Software allows users to easily find, discover and install apps."
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+GTKDOC_MESON_OPTION ?= "gtk_doc"
+
+inherit gnomebase gsettings itstool gnome-help gtk-icon-cache gtk-doc mime mime-xdg gettext upstream-version-is-even features_check
+
+REQUIRED_DISTRO_FEATURES = "x11 polkit systemd pam"
+
+DEPENDS += " \
+	appstream \
+	gdk-pixbuf \
+	glib-2.0 \
+	glib-2.0-native \
+	gsettings-desktop-schemas \
+	gtk4 \
+	iso-codes \
+	json-glib \
+	libadwaita \
+	libgudev \
+	libsoup-3.0 \
+	libxmlb-native \
+	polkit \
+"
+
+RDEPENDS:${PN} = "iso-codes"
+
+EXTRA_OEMESON += "-Dtests=false -Dsoup2=false"
+
+SRC_URI[archive.sha256sum] = "11893002bbb54082896683707bc3991ae55a2f3040811a760e3a92c96544f86e"
+
+PACKAGECONFIG ?= "flatpak"
+PACKAGECONFIG[flatpak] = "-Dflatpak=true,-Dflatpak=false,flatpak ostree"
+PACKAGECONFIG[snap] = "-Dsnap=true,-Dsnap=false,snapd-glib"
+PACKAGECONFIG[gtk_doc] = "-Dgtk_doc=true,-Dgtk_doc=false,libxslt-native docbook-xsl-stylesheets"
+PACKAGECONFIG[man] = "-Dman=true,-Dman=false,libxslt-native docbook-xsl-stylesheets"
+PACKAGECONFIG[packagekit] = "-Dpackagekit=true,-Dpackagekit=false,gnome-packagekit,gnome-packagekit"
+PACKAGECONFIG[fwupd] = "-Dfwupd=true,-Dfwupd=false,fwupd,fwupd"
+PACKAGECONFIG[malcontent] = "-Dmalcontent=true,-Dmalcontent=false,malcontent"
+
+FILES:${PN} += "${datadir}"
+FILES:${PN}-dev += "${libdir}/gnome-software/libgnomesoftware.so"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_45.0.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_45.0.1.bb
deleted file mode 100644
index b90bbb8..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_45.0.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SUMMARY = "Gnome system monitor"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-DEPENDS = " \
-    gnome-common-native \
-    libxml2-native \
-    glib-2.0-native \
-    gtkmm3 \
-    libgtop \
-    librsvg \
-    polkit \
-    libhandy \
-"
-
-
-inherit gnomebase gsettings gnome-help itstool gtk-icon-cache features_check gettext
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "polkit"
-
-def gnome_verdir(v):
-    return oe.utils.trim_version(v, 1)
-
-SRC_URI[archive.sha256sum] = "43f6b7805c74532490edb8822ebdf8b3cf2c5ef842a51252a14c34715f5d49b4"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
-
-RRECOMMENDS:${PN} = "adwaita-icon-theme"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/metainfo \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_46.0.bb
new file mode 100644
index 0000000..eaeaa2c
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-system-monitor/gnome-system-monitor_46.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Gnome system monitor"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = " \
+    gnome-common-native \
+    libxml2-native \
+    glib-2.0-native \
+    glibmm-2.68 \
+    gtkmm4 \
+    gtk4 \
+    libadwaita \
+    libgtop \
+    librsvg \
+    polkit \
+    libhandy \
+"
+
+
+inherit gnomebase gsettings gnome-help itstool gtk-icon-cache features_check gettext
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "polkit"
+
+def gnome_verdir(v):
+    return oe.utils.trim_version(v, 1)
+
+SRC_URI[archive.sha256sum] = "5376248158c686c308255472e8c2a9e4c17255642c149fc7198c6d034e547599"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
+PACKAGECONFIG[systemd] = "-Dsystemd=true, -Dsystemd=false, systemd"
+
+RRECOMMENDS:${PN} = "adwaita-icon-theme"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/metainfo \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.50.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.50.1.bb
index 53f11e9..3bbfe9e 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.50.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-terminal/gnome-terminal_3.50.1.bb
@@ -31,6 +31,8 @@
 PACKAGECONFIG[nautilus] = "-Dnautilus_extension=true,-Dnautilus_extension=false,nautilus,nautilus"
 PACKAGECONFIG[search_provider] = "-Dsearch_provider=true -Ddbus_interface_dir=${STAGING_DATADIR}/dbus-1/interfaces,-Dsearch_provider=false,gnome-shell"
 
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
+
 FILES:${PN} += " \
     ${datadir} \
     ${libdir}/nautilus/extensions-4 \
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_45.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_45.1.bb
deleted file mode 100644
index 2d310bd..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_45.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "A simple text editor"
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
-
-
-DEPENDS = " \
-    desktop-file-utils-native \
-    libadwaita \
-    gtk4 \
-    gtksourceview5 \
-    editorconfig-core-c \
-    enchant2 \
-"
-
-GTKIC_VERSION = "4"
-
-inherit gnomebase gtk-icon-cache itstool gnome-help mime-xdg features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI[archive.sha256sum] = "6a86ec9920f466b6ed92695524d3b507b1e84272dafa5341d06a157de868af71"
-
-FILES:${PN} += " \
-    ${datadir}/metainfo \
-    ${datadir}/dbus-1 \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_46.0.bb
new file mode 100644
index 0000000..967182a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-text-editor/gnome-text-editor_46.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A simple text editor"
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
+
+
+DEPENDS = " \
+    desktop-file-utils-native \
+    libadwaita \
+    gtk4 \
+    gtksourceview5 \
+    editorconfig-core-c \
+    enchant2 \
+"
+
+GTKIC_VERSION = "4"
+
+inherit gnomebase gtk-icon-cache itstool gnome-help mime-xdg features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI[archive.sha256sum] = "c018d0b3792c044c1558d1d0dd92b09fb0a96c9e2d25e1ae1f4cf91f7eab4614"
+
+FILES:${PN} += " \
+    ${datadir}/metainfo \
+    ${datadir}/dbus-1 \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gnome-user-share/gnome-user-share_43.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gnome-user-share/gnome-user-share_43.0.bb
new file mode 100644
index 0000000..6fc78dd
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gnome-user-share/gnome-user-share_43.0.bb
@@ -0,0 +1,24 @@
+SUMMARY = "This is gnome-user-share 43.0, a system for easy sharing of user files."
+LICENSE="GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+
+DEPENDS = " \
+    glib-2.0-native \
+    glib-2.0 \
+    systemd \
+"
+
+inherit gnomebase gsettings features_check
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SRC_URI = "git://gitlab.gnome.org/GNOME/gnome-user-share.git;protocol=https;branch=master"
+SRCREV = "a0e790aa9494db9d1b1f48b4fc0d2f78e112044d"
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "modules"
+PACKAGECONFIG[httpd] = "-Dhttpd=${sbindir}/httpd,,,apache2 mod-dnssd"
+PACKAGECONFIG[modules] = "-Dmodules_path=${libexecdir}/apache2/modules"
+
+FILES:${PN} += "${systemd_user_unitdir}"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.10.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.10.0.bb
deleted file mode 100644
index a336b19..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.10.0.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Portable C library for multiline text editing"
-HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
-
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
-
-DEPENDS = " \
-    fribidi \
-    glib-2.0-native \
-    fontconfig \
-    gtk4 \
-    libxml2 \
-    libpcre2 \
-    pango \
-"
-
-PNAME = "gtksourceview"
-
-S = "${WORKDIR}/${PNAME}-${PV}"
-
-
-inherit gnomebase lib_package gettext features_check gi-docgen gtk-icon-cache gobject-introspection vala
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI = "https://download.gnome.org/sources/gtksourceview/5.10/${PNAME}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "b38a3010c34f59e13b05175e9d20ca02a3110443fec2b1e5747413801bc9c23f"
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GTKDOC_MESON_OPTION = "gtk_doc"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'vulkan', d)}"
-PACKAGECONFIG[vulkan] = ",,vulkan-loader vulkan-headers"
-
-FILES:${PN} += "${datadir}/gtksourceview-5"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.12.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.12.0.bb
new file mode 100644
index 0000000..f3267ac
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gtksourceview/gtksourceview5_5.12.0.bb
@@ -0,0 +1,36 @@
+SUMMARY = "Portable C library for multiline text editing"
+HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
+
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+DEPENDS = " \
+    fribidi \
+    glib-2.0-native \
+    fontconfig \
+    gtk4 \
+    libxml2 \
+    libpcre2 \
+    pango \
+"
+
+PNAME = "gtksourceview"
+
+S = "${WORKDIR}/${PNAME}-${PV}"
+
+
+inherit gnomebase lib_package gettext features_check gi-docgen gtk-icon-cache gobject-introspection vala
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI = "https://download.gnome.org/sources/gtksourceview/5.12/${PNAME}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "daf32ff5d3150d6385917d3503a85b9e047ba158b2b03079314c9c00813fa01f"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GIDOCGEN_MESON_OPTION = "documentation"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'vulkan', d)}"
+PACKAGECONFIG[vulkan] = ",,vulkan-loader vulkan-headers"
+
+FILES:${PN} += "${datadir}/gtksourceview-5"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.52.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.52.2.bb
deleted file mode 100644
index 519cc09..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.52.2.bb
+++ /dev/null
@@ -1,96 +0,0 @@
-DESCRIPTION = "gvfs is a userspace virtual filesystem"
-LICENSE = "LGPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=05df38dd77c35ec8431f212410a3329e"
-
-inherit gnomebase gsettings bash-completion gettext upstream-version-is-even features_check useradd
-
-DEPENDS += "\
-    dbus \
-    glib-2.0 \
-    glib-2.0-native \
-    gsettings-desktop-schemas \
-    libgudev \
-    libsecret \
-    libxml2 \
-    shadow-native \
-"
-
-RDEPENDS:${PN} += "gsettings-desktop-schemas"
-
-SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive"
-
-SRC_URI[archive.sha256sum] = "a643aceaa053caac0d8eff9a015f636e4bd1bb09cfe27864e347db67460e7b91"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-EXTRA_OEMESON = " \
-    -Dbluray=false \
-"
-
-PACKAGES =+ "gvfsd-ftp gvfsd-sftp gvfsd-trash"
-
-FILES:${PN} += " \
-    ${datadir}/glib-2.0 \
-    ${datadir}/GConf \
-    ${datadir}/dbus-1/services \
-    ${libdir}/gio/modules/*.so \
-    ${libdir}/tmpfiles.d \
-    ${systemd_user_unitdir} \
-"
-
-FILES:${PN}-dbg += "${libdir}/gio/modules/.debug/*"
-FILES:${PN}-dev += "${libdir}/gio/modules/*.la"
-
-FILES:gvfsd-ftp = "${libexecdir}/gvfsd-ftp ${datadir}/gvfs/mounts/ftp.mount"
-FILES:gvfsd-sftp = "${libexecdir}/gvfsd-sftp ${datadir}/gvfs/mounts/sftp.mount"
-FILES:gvfsd-trash = "${libexecdir}/gvfsd-trash ${datadir}/gvfs/mounts/trash.mount"
-
-RRECOMMENDS:gvfsd-ftp += "openssh-sftp openssh-ssh"
-
-PACKAGECONFIG ?= "libgphoto2 \
-                  ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-                  ${@bb.utils.contains('DISTRO_FEATURES','polkit','udisks2','',d)} \
-                  ${@bb.utils.contains('DISTRO_FEATURES','polkit','admin','',d)} \
-                 "
-
-PACKAGECONFIG[udisks2] = "-Dudisks2=true, -Dudisks2=false, udisks2, udisks2"
-PACKAGECONFIG[admin] = "-Dadmin=true, -Dadmin=false, libcap polkit"
-PACKAGECONFIG[afc] = "-Dafc=true, -Dafc=false, libimobiledevice libplist"
-PACKAGECONFIG[archive] = "-Darchive=true, -Darchive=false, libarchive"
-PACKAGECONFIG[dnssd] = "-Ddnssd=true, -Ddnssd=false, avahi"
-PACKAGECONFIG[gcr] = "-Dgcr=true, -Dgcr=false, gcr3"
-PACKAGECONFIG[gcrypt] = "-Dgcrypt=true, -Dgcrypt=false, libgcrypt"
-PACKAGECONFIG[goa] = "-Dgoa=true, -Dgoa=false, gnome-online-accounts"
-PACKAGECONFIG[google] = "-Dgoogle=true, -Dgoogle=false, libgdata"
-PACKAGECONFIG[http] = "-Dhttp=true, -Dhttp=false, libsoup-3.0"
-PACKAGECONFIG[libmtp] = "-Dmtp=true, -Dmtp=false, libmtp"
-PACKAGECONFIG[logind] = "-Dlogind=true, -Dlogind=false, systemd"
-PACKAGECONFIG[libgphoto2] = "-Dgphoto2=true, -Dgphoto2=false, libgphoto2"
-PACKAGECONFIG[nfs] = "-Dnfs=true, -Dnfs=false,libnfs"
-PACKAGECONFIG[samba] = "-Dsmb=true, -Dsmb=false, samba"
-PACKAGECONFIG[systemd] = "-Dsystemduserunitdir=${systemd_user_unitdir} -Dtmpfilesdir=${libdir}/tmpfiles.d, -Dsystemduserunitdir=no -Dtmpfilesdir=no, systemd"
-
-# needs meta-filesystems
-PACKAGECONFIG[fuse] = "-Dfuse=true, -Dfuse=false, fuse3"
-
-# libcdio-paranoia recipe doesn't exist yet
-PACKAGECONFIG[cdda] = "-Dcdda=true, -Dcdda=false, libcdio-paranoia"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd"
-
-do_install:append() {
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'true', 'false', d)}; then
-        # Fix up permissions on polkit rules.d to work with rpm4 constraints
-        chmod 700 ${D}${datadir}/polkit-1/rules.d
-        chown polkitd:root ${D}${datadir}/polkit-1/rules.d
-    fi
-
-    # After rebuilds (not from scracth) it can happen that the executables in
-    # libexec ar missing executable permission flag. Not sure but it came up
-    # during transition to meson. Looked into build files and logs but could
-    # not find suspicious
-    for exe in `find ${D}/${libexecdir}`; do
-       chmod +x $exe
-    done
-}
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.54.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.54.0.bb
new file mode 100644
index 0000000..01cdb4e
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/gvfs/gvfs_1.54.0.bb
@@ -0,0 +1,97 @@
+DESCRIPTION = "gvfs is a userspace virtual filesystem"
+LICENSE = "LGPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=05df38dd77c35ec8431f212410a3329e"
+
+inherit gnomebase gsettings bash-completion gettext upstream-version-is-even features_check useradd
+
+DEPENDS += "\
+    dbus \
+    glib-2.0 \
+    glib-2.0-native \
+    gsettings-desktop-schemas \
+    libgudev \
+    libsecret \
+    libxml2 \
+    shadow-native \
+"
+
+RDEPENDS:${PN} += "gsettings-desktop-schemas"
+
+SRC_URI = "https://download.gnome.org/sources/${BPN}/${@gnome_verdir("${PV}")}/${BPN}-${PV}.tar.xz;name=archive"
+
+SRC_URI[archive.sha256sum] = "f53d81df86c2e86cdd25182c2d8a669a22371e83623ded1b9d5416dcfc6de366"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+EXTRA_OEMESON = " \
+    -Dbluray=false \
+"
+
+PACKAGES =+ "gvfsd-ftp gvfsd-sftp gvfsd-trash"
+
+FILES:${PN} += " \
+    ${datadir}/glib-2.0 \
+    ${datadir}/GConf \
+    ${datadir}/dbus-1/services \
+    ${libdir}/gio/modules/*.so \
+    ${libdir}/tmpfiles.d \
+    ${systemd_user_unitdir} \
+"
+
+FILES:${PN}-dbg += "${libdir}/gio/modules/.debug/*"
+FILES:${PN}-dev += "${libdir}/gio/modules/*.la"
+
+FILES:gvfsd-ftp = "${libexecdir}/gvfsd-ftp ${datadir}/gvfs/mounts/ftp.mount"
+FILES:gvfsd-sftp = "${libexecdir}/gvfsd-sftp ${datadir}/gvfs/mounts/sftp.mount"
+FILES:gvfsd-trash = "${libexecdir}/gvfsd-trash ${datadir}/gvfs/mounts/trash.mount"
+
+RRECOMMENDS:gvfsd-ftp += "openssh-sftp openssh-ssh"
+
+PACKAGECONFIG ?= "libgphoto2 \
+                  ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+                  ${@bb.utils.contains('DISTRO_FEATURES','polkit','udisks2','',d)} \
+                  ${@bb.utils.contains('DISTRO_FEATURES','polkit','admin','',d)} \
+                 "
+
+PACKAGECONFIG[udisks2] = "-Dudisks2=true, -Dudisks2=false, udisks2, udisks2"
+PACKAGECONFIG[admin] = "-Dadmin=true, -Dadmin=false, libcap polkit"
+PACKAGECONFIG[afc] = "-Dafc=true, -Dafc=false, libimobiledevice libplist"
+PACKAGECONFIG[archive] = "-Darchive=true, -Darchive=false, libarchive"
+PACKAGECONFIG[dnssd] = "-Ddnssd=true, -Ddnssd=false, avahi"
+PACKAGECONFIG[gcr] = "-Dgcr=true, -Dgcr=false, gcr"
+PACKAGECONFIG[gcrypt] = "-Dgcrypt=true, -Dgcrypt=false, libgcrypt"
+PACKAGECONFIG[goa] = "-Dgoa=true, -Dgoa=false, gnome-online-accounts"
+PACKAGECONFIG[google] = "-Dgoogle=true, -Dgoogle=false, libgdata"
+PACKAGECONFIG[http] = "-Dhttp=true, -Dhttp=false, libsoup-3.0"
+PACKAGECONFIG[libmtp] = "-Dmtp=true, -Dmtp=false, libmtp"
+PACKAGECONFIG[logind] = "-Dlogind=true, -Dlogind=false, systemd"
+PACKAGECONFIG[libgphoto2] = "-Dgphoto2=true, -Dgphoto2=false, libgphoto2"
+PACKAGECONFIG[nfs] = "-Dnfs=true, -Dnfs=false,libnfs"
+PACKAGECONFIG[onedrive] = "-Donedrive=true, -Donedrive=false, msgraph"
+PACKAGECONFIG[samba] = "-Dsmb=true, -Dsmb=false, samba"
+PACKAGECONFIG[systemd] = "-Dsystemduserunitdir=${systemd_user_unitdir} -Dtmpfilesdir=${libdir}/tmpfiles.d, -Dsystemduserunitdir=no -Dtmpfilesdir=no, systemd"
+
+# needs meta-filesystems
+PACKAGECONFIG[fuse] = "-Dfuse=true, -Dfuse=false, fuse3"
+
+# libcdio-paranoia recipe doesn't exist yet
+PACKAGECONFIG[cdda] = "-Dcdda=true, -Dcdda=false, libcdio-paranoia"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --user-group --home-dir ${sysconfdir}/polkit-1 polkitd"
+
+do_install:append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'true', 'false', d)}; then
+        # Fix up permissions on polkit rules.d to work with rpm4 constraints
+        chmod 700 ${D}${datadir}/polkit-1/rules.d
+        chown polkitd:root ${D}${datadir}/polkit-1/rules.d
+    fi
+
+    # After rebuilds (not from scracth) it can happen that the executables in
+    # libexec ar missing executable permission flag. Not sure but it came up
+    # during transition to meson. Looked into build files and logs but could
+    # not find suspicious
+    for exe in `find ${D}/${libexecdir}`; do
+       chmod +x $exe
+    done
+}
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
index 15e3d88..a65fc61 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgdata/libgdata_0.18.1.bb
@@ -14,6 +14,7 @@
 inherit gnomebase pkgconfig gettext gtk-doc vala gobject-introspection manpages features_check
 
 ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('PACKAGECONFIG', 'goa', 'opengl', '', d)}"
 
 do_compile:prepend() {
     export GIR_EXTRA_LIBS_PATH="${B}/gdata/.libs"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.41.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.41.1.bb
deleted file mode 100644
index a8483de..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.41.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "A library for collecting system monitoring data"
-LICENSE = "GPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-GNOMEBASEBUILDCLASS = "autotools"
-inherit gnomebase lib_package gtk-doc gobject-introspection gettext upstream-version-is-even features_check
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-SRC_URI[archive.sha256sum] = "43ea9ad13f7caf98303e64172b191be9b96bab340b019deeec72251ee140fe3b"
-
-DEPENDS = "glib-2.0 libxau"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.41.3.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.41.3.bb
new file mode 100644
index 0000000..5587baa
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgtop/libgtop_2.41.3.bb
@@ -0,0 +1,12 @@
+SUMMARY = "A library for collecting system monitoring data"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+GNOMEBASEBUILDCLASS = "autotools"
+inherit gnomebase lib_package gtk-doc gobject-introspection gettext upstream-version-is-even features_check
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+SRC_URI[archive.sha256sum] = "775676df958e2ea2452f7568f28b2ea581063d312773dd5c0b7624c1b9b2da8c"
+
+DEPENDS = "glib-2.0 libxau"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather4_4.4.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather4_4.4.0.bb
deleted file mode 100644
index c30edd1..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather4_4.4.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "A library to access weather information from online services"
-
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-GNOMEBN = "libgweather"
-S = "${WORKDIR}/${GNOMEBN}-${PV}"
-
-inherit gnomebase gsettings gobject-introspection gettext gi-docgen vala features_check
-
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-SRC_URI += "file://0001-Allow-building-gir-in-cross-environments.patch"
-SRC_URI[archive.sha256sum] = "366e866ff2a708b894cfea9475b8e8ff54cb3e2b477ea72a8ade0dabee5f48a4"
-
-GTKDOC_MESON_OPTION = "gtk_doc"
-VALA_MESON_OPTION = "enable_vala"
-
-DEPENDS = " \
-    geocode-glib \
-    gtk4 \
-    json-glib \
-    libsoup-3.0 \
-    python3-pygobject-native \
-"
-
-FILES:${PN} += " \
-    ${datadir}/libgweather-4 \
-    ${libdir}/libgweather-4 \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather4_4.4.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather4_4.4.2.bb
new file mode 100644
index 0000000..acf2885
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/libgweather/libgweather4_4.4.2.bb
@@ -0,0 +1,30 @@
+SUMMARY = "A library to access weather information from online services"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+GNOMEBN = "libgweather"
+S = "${WORKDIR}/${GNOMEBN}-${PV}"
+
+inherit gnomebase gsettings gobject-introspection gettext gi-docgen vala features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+SRC_URI += "file://0001-Allow-building-gir-in-cross-environments.patch"
+SRC_URI[archive.sha256sum] = "a6e427b4770ada48945f3aa906af710fc833cff0d42df91f1828302740d794ec"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+VALA_MESON_OPTION = "enable_vala"
+
+DEPENDS = " \
+    geocode-glib \
+    gtk4 \
+    json-glib \
+    libsoup-3.0 \
+    python3-pygobject-native \
+"
+
+FILES:${PN} += " \
+    ${datadir}/libgweather-4 \
+    ${libdir}/libgweather-4 \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity/0001-drop-zenity-detection.patch b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity/0001-drop-zenity-detection.patch
index 6bebaab..cd46824 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity/0001-drop-zenity-detection.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity/0001-drop-zenity-detection.patch
@@ -1,4 +1,4 @@
-From ec0e52b49c9b6869413c9544c2ed44710ab91141 Mon Sep 17 00:00:00 2001
+From d36e65f3e31c882f62d5cfeb7b0e1441d5fdc821 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Sat, 14 Apr 2018 16:15:59 +0800
 Subject: [PATCH] drop zenity detection
@@ -13,10 +13,10 @@
  1 file changed, 5 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 528b7d2..8932ae6 100644
+index bbb4db8..2010d78 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -337,11 +337,6 @@ fi
+@@ -336,11 +336,6 @@ fi
  
  AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "yes") 
  
@@ -28,6 +28,3 @@
  AC_SEARCH_LIBS([dlsym], [dl], [], [
    AC_MSG_ERROR([unable to find the dlsym() function])
  ])
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.50.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.50.0.bb
deleted file mode 100644
index e6921e6..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.50.0.bb
+++ /dev/null
@@ -1,40 +0,0 @@
-SECTION = "x11/wm"
-SUMMARY = "Metacity is the boring window manager for the adult in you"
-LICENSE = "GPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b4cce53560b8e619ffa7c830fb8761aa \
-                    file://src/include/main.h;endline=24;md5=72148ede07a6dadd01de6a882d20a9ad"
-
-PE = "1"
-
-DEPENDS = " \
-    gdk-pixbuf-native \
-    gtk+3 \
-    gsettings-desktop-schemas \
-    startup-notification \
-    libcanberra \
-    libgtop \
-    libxres \
-    libxpresent \
-"
-
-
-# depends on startup-notification which depends on virtual/libx11
-REQUIRED_DISTRO_FEATURES = "x11"
-
-GNOMEBASEBUILDCLASS = "autotools"
-inherit gnomebase gsettings gettext upstream-version-is-even features_check
-
-SRC_URI[archive.sha256sum] = "18e9b106438d46394e4148bcb83acc6367312be54559cdb564e270c1ccaeb60f"
-SRC_URI += "file://0001-drop-zenity-detection.patch"
-
-PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama"
-# enable as neccessary until new warnings are dealt with
-PACKAGECONFIG[werror] = "--enable-Werror,--disable-Werror,,"
-
-FILES:${PN} += " \
-    ${datadir}/themes \
-    ${datadir}/gnome-control-center \
-    ${datadir}/gnome\
-"
-
-RDEPENDS:${PN} += "gsettings-desktop-schemas"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.52.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.52.0.bb
new file mode 100644
index 0000000..32f0801
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/metacity/metacity_3.52.0.bb
@@ -0,0 +1,40 @@
+SECTION = "x11/wm"
+SUMMARY = "Metacity is the boring window manager for the adult in you"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b4cce53560b8e619ffa7c830fb8761aa \
+                    file://src/include/main.h;endline=24;md5=72148ede07a6dadd01de6a882d20a9ad"
+
+PE = "1"
+
+DEPENDS = " \
+    gdk-pixbuf-native \
+    gtk+3 \
+    gsettings-desktop-schemas \
+    startup-notification \
+    libcanberra \
+    libgtop \
+    libxres \
+    libxpresent \
+"
+
+
+# depends on startup-notification which depends on virtual/libx11
+REQUIRED_DISTRO_FEATURES = "x11"
+
+GNOMEBASEBUILDCLASS = "autotools"
+inherit gnomebase gsettings gettext upstream-version-is-even features_check
+
+SRC_URI[archive.sha256sum] = "a72438ace6d5903ae79338c6098b1b35ab91c8a97c4323701d3bef1f3eeb191c"
+SRC_URI += "file://0001-drop-zenity-detection.patch"
+
+PACKAGECONFIG[xinerama] = "--enable-xinerama,--disable-xinerama,libxinerama"
+# enable as neccessary until new warnings are dealt with
+PACKAGECONFIG[werror] = "--enable-Werror,--disable-Werror,,"
+
+FILES:${PN} += " \
+    ${datadir}/themes \
+    ${datadir}/gnome-control-center \
+    ${datadir}/gnome\
+"
+
+RDEPENDS:${PN} += "gsettings-desktop-schemas"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/msgraph/msgraph_0.2.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/msgraph/msgraph_0.2.1.bb
new file mode 100644
index 0000000..4c11a8d
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/msgraph/msgraph_0.2.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "libmsgraph is a GLib-based library for accessing online serive APIs using MS Graph protocol."
+LICENSE = "LGPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3000208d539ec061b899bce1d9ce9404"
+
+inherit gnomebase gobject-introspection gi-docgen
+
+SRC_URI[archive.sha256sum] = "e0e59eaa8ae3e0a48ec0a6c2fed0470856a709248e9212b6a1d037de5792ecbb"
+
+GTKDOC_MESON_OPTION = "gtk_doc"
+
+EXTRA_OEMESON = "-Dtests=false"
+
+DEPENDS = " \
+    glib-2.0\
+    json-glib \
+    rest \
+    gnome-online-accounts \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_45.4.bb b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_45.4.bb
deleted file mode 100644
index eccc635..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_45.4.bb
+++ /dev/null
@@ -1,108 +0,0 @@
-SUMMARY = "Window and compositing manager based on Clutter"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = " \
-    xserver-xorg-cvt-native \
-    wayland-native \
-    virtual/libx11 \
-    colord \
-    graphene \
-    gtk4 \
-    gdk-pixbuf \
-    cairo \
-    pango \
-    gsettings-desktop-schemas \
-    json-glib \
-    libei \
-    libxtst \
-    libxkbfile \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xinerama', '', d)} \
-    xwayland \
-"
-
-
-inherit gnomebase gsettings gobject-introspection gettext features_check
-
-SRC_URI[archive.sha256sum] = "91140837be15582f2c753be661ab8e42dad55d4a1b0f0650bd0b2c93f02bd7ab"
-
-# x11 is still manadatory - see meson.build
-REQUIRED_DISTRO_FEATURES = "wayland x11 polkit"
-
-# systemd can be replaced by libelogind (not available atow - make systemd
-# mandatory distro feature)
-LOGIND ?= "systemd"
-REQUIRED_DISTRO_FEATURES += "systemd"
-
-# profiler requires sysprof 3.34 which is not willing to build atow
-PACKAGECONFIG ??= " \
-    native-backend \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'opengl glx', '', d)} \
-    sm \
-    startup-notification \
-    gnome-desktop \
-"
-
-EXTRA_OEMESON += " \
-    -Dtests=false \
-    -Dnative_tests=false \
-    -Dxwayland_path=${bindir}/Xwayland \
-"
-
-# combi-config - see meson_options.txt for more details
-PACKAGECONFIG[native-backend] = "-Dnative_backend=true -Dudev=true, -Dnative_backend=false -Dudev=false, libdrm virtual/libgbm libinput ${LOGIND} virtual/egl virtual/libgles2 udev"
-PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=true, virtual/libgl"
-PACKAGECONFIG[glx] = "-Dglx=true, -Dglx=false"
-PACKAGECONFIG[libdisplay-info] = "-Dlibdisplay_info=true, -Dlibdisplay_info=false, libdisplay-info"
-PACKAGECONFIG[libwacom] = "-Dlibwacom=true, -Dlibwacom=false, libwacom"
-# Remove depending on pipewire-0.2 when mutter is upgraded to 3.36+
-PACKAGECONFIG[remote-desktop] = "-Dremote_desktop=true, -Dremote_desktop=false, pipewire"
-PACKAGECONFIG[gnome-desktop] = "-Dlibgnome_desktop=true, -Dlibgnome_desktop=false, gnome-desktop gnome-settings-daemon"
-PACKAGECONFIG[sm] = "-Dsm=true, -Dsm=false, libsm"
-PACKAGECONFIG[sound-player] = "-Dsound_player=true, -Dsound_player=false, libcanberra"
-PACKAGECONFIG[profiler] = "-Dprofiler=true,-Dprofiler=false,sysprof"
-PACKAGECONFIG[startup-notification] = "-Dstartup_notification=true, -Dstartup_notification=false, startup-notification, startup-notification"
-
-MUTTER_API_NAME = "mutter-13"
-
-do_install:prepend() {
-    sed -i -e 's|${B}/||g' ${B}/clutter/clutter/clutter-enum-types.c
-    sed -i -e 's|${B}/||g' ${B}/src/meta-private-enum-types.c
-    sed -i -e 's|${B}/||g' ${B}/src/meta/meta-enum-types.c
-}
-
-do_install:append() {
-    # Add gir links in standard paths. That makes dependents life much easier
-    # to find them
-    install -d ${D}${datadir}/gir-1.0
-    for gir_full in `find ${D}${libdir}/${MUTTER_API_NAME} -name '*.gir'`; do
-        gir=`basename "$gir_full"`
-        ln -sr "${D}${libdir}/${MUTTER_API_NAME}/$gir" "${D}${datadir}/gir-1.0/$gir"
-    done
-}
-
-GSETTINGS_PACKAGE = "${PN}-gsettings"
-
-PACKAGES =+ "${PN}-tests ${PN}-gsettings"
-
-FILES:${PN} += " \
-    ${datadir}/gnome-control-center \
-    ${datadir}/gir-1.0 \
-    ${libdir}/${MUTTER_API_NAME}/lib*${SOLIBS} \
-    ${libdir}/${MUTTER_API_NAME}/*.typelib \
-    ${libdir}/${MUTTER_API_NAME}/plugins \
-"
-
-FILES:${PN}-tests += " \
-    ${datadir}/installed-tests \
-    ${datadir}/${MUTTER_API_NAME}/tests \
-    ${libexecdir}/installed-tests/${MUTTER_API_NAME} \
-"
-
-FILES:${PN}-dev += " \
-    ${libdir}/${MUTTER_API_NAME}/*.gir \
-    ${libdir}/${MUTTER_API_NAME}/lib*.so \
-"
-
-RDEPENDS:${PN} += "zenity ${PN}-gsettings gsettings-desktop-schemas"
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_46.0.bb
new file mode 100644
index 0000000..d14f161
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/mutter/mutter_46.0.bb
@@ -0,0 +1,109 @@
+SUMMARY = "Window and compositing manager based on Clutter"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = " \
+    xserver-xorg-cvt-native \
+    wayland-native \
+    virtual/libx11 \
+    colord \
+    graphene \
+    gtk4 \
+    gdk-pixbuf \
+    cairo \
+    pango \
+    gsettings-desktop-schemas \
+    json-glib \
+    libei \
+    libxtst \
+    libxkbfile \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'xinerama', '', d)} \
+    xwayland \
+"
+
+
+inherit gnomebase gsettings gobject-introspection gettext features_check
+
+SRC_URI[archive.sha256sum] = "bb3f7d77aebdea9d317d3f5ef03868e4e7969da423ac495e33a16d61db2c9373"
+
+# x11 is still manadatory - see meson.build
+REQUIRED_DISTRO_FEATURES = "wayland x11 polkit"
+
+# systemd can be replaced by libelogind (not available atow - make systemd
+# mandatory distro feature)
+LOGIND ?= "systemd"
+REQUIRED_DISTRO_FEATURES += "systemd"
+
+# profiler requires sysprof 3.34 which is not willing to build atow
+PACKAGECONFIG ??= " \
+    native-backend \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl x11', 'opengl glx', '', d)} \
+    sm \
+    startup-notification \
+    gnome-desktop \
+"
+
+EXTRA_OEMESON += " \
+    -Dtests=false \
+    -Dnative_tests=false \
+    -Dxwayland_path=${bindir}/Xwayland \
+"
+
+# combi-config - see meson_options.txt for more details
+PACKAGECONFIG[native-backend] = "-Dnative_backend=true -Dudev=true, -Dnative_backend=false -Dudev=false, libdrm virtual/libgbm libinput ${LOGIND} virtual/egl virtual/libgles2 udev"
+PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=true, virtual/libgl"
+PACKAGECONFIG[glx] = "-Dglx=true, -Dglx=false"
+PACKAGECONFIG[libdisplay-info] = "-Dlibdisplay_info=true, -Dlibdisplay_info=false, libdisplay-info"
+PACKAGECONFIG[libwacom] = "-Dlibwacom=true, -Dlibwacom=false, libwacom"
+# Remove depending on pipewire-0.2 when mutter is upgraded to 3.36+
+PACKAGECONFIG[remote-desktop] = "-Dremote_desktop=true, -Dremote_desktop=false, pipewire"
+PACKAGECONFIG[gnome-desktop] = "-Dlibgnome_desktop=true, -Dlibgnome_desktop=false, gnome-desktop gnome-settings-daemon"
+PACKAGECONFIG[sm] = "-Dsm=true, -Dsm=false, libsm"
+PACKAGECONFIG[sound-player] = "-Dsound_player=true, -Dsound_player=false, libcanberra"
+PACKAGECONFIG[profiler] = "-Dprofiler=true,-Dprofiler=false,sysprof"
+PACKAGECONFIG[startup-notification] = "-Dstartup_notification=true, -Dstartup_notification=false, startup-notification, startup-notification"
+
+MUTTER_API_NAME = "mutter-14"
+
+do_install:prepend() {
+    sed -i -e 's|${B}/||g' ${B}/cogl/cogl/cogl-enum-types.c
+    sed -i -e 's|${B}/||g' ${B}/clutter/clutter/clutter-enum-types.c
+    sed -i -e 's|${B}/||g' ${B}/src/meta-private-enum-types.c
+    sed -i -e 's|${B}/||g' ${B}/src/meta/meta-enum-types.c
+}
+
+do_install:append() {
+    # Add gir links in standard paths. That makes dependents life much easier
+    # to find them
+    install -d ${D}${datadir}/gir-1.0
+    for gir_full in `find ${D}${libdir}/${MUTTER_API_NAME} -name '*.gir'`; do
+        gir=`basename "$gir_full"`
+        ln -sr "${D}${libdir}/${MUTTER_API_NAME}/$gir" "${D}${datadir}/gir-1.0/$gir"
+    done
+}
+
+GSETTINGS_PACKAGE = "${PN}-gsettings"
+
+PACKAGES =+ "${PN}-tests ${PN}-gsettings"
+
+FILES:${PN} += " \
+    ${datadir}/gnome-control-center \
+    ${datadir}/gir-1.0 \
+    ${libdir}/${MUTTER_API_NAME}/lib*${SOLIBS} \
+    ${libdir}/${MUTTER_API_NAME}/*.typelib \
+    ${libdir}/${MUTTER_API_NAME}/plugins \
+"
+
+FILES:${PN}-tests += " \
+    ${datadir}/installed-tests \
+    ${datadir}/${MUTTER_API_NAME}/tests \
+    ${libexecdir}/installed-tests/${MUTTER_API_NAME} \
+"
+
+FILES:${PN}-dev += " \
+    ${libdir}/${MUTTER_API_NAME}/*.gir \
+    ${libdir}/${MUTTER_API_NAME}/lib*.so \
+"
+
+RDEPENDS:${PN} += "${PN}-gsettings gsettings-desktop-schemas"
+
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.9.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.9.1.bb
index 738b07e..3b22fdf 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.9.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/rest/rest_0.9.1.bb
@@ -14,7 +14,8 @@
     libxml2-native \
 "
 
-inherit gnomebase gobject-introspection vala pkgconfig gi-docgen
+inherit gnomebase gobject-introspection vala pkgconfig gi-docgen features_check
+REQUIRED_DISTRO_FEATURES = "opengl"
 
 PACKAGECONFIG ?= ""
 PACKAGECONFIG[examples] = "-Dexamples=true,-Dexamples=false"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tecla/tecla_45.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/tecla/tecla_45.0.bb
deleted file mode 100644
index 197db17..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/tecla/tecla_45.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Tecla is a keyboard layout viewer that uses GTK/Libadwaita for UI, and libxkbcommon to deal with keyboard maps."
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=75859989545e37968a99b631ef42722e"
-
-DEPENDS = " \
-    libxkbcommon \
-    libadwaita \
-    wayland \
-    gtk4 \
-"
-
-REQUIRED_DISTRO_FEATURES = "wayland"
-
-inherit gnomebase pkgconfig  features_check
-
-SRC_URI[archive.sha256sum] = "5c02bb4019b1cffb5663da6107503eff853836a8783dd4705dd04a49f7adc25b"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tecla/tecla_46.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/tecla/tecla_46.0.bb
new file mode 100644
index 0000000..62b3aa3
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tecla/tecla_46.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Tecla is a keyboard layout viewer that uses GTK/Libadwaita for UI, and libxkbcommon to deal with keyboard maps."
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=75859989545e37968a99b631ef42722e"
+
+DEPENDS = " \
+    libxkbcommon \
+    libadwaita \
+    wayland \
+    gtk4 \
+"
+
+REQUIRED_DISTRO_FEATURES = "wayland"
+
+inherit gnomebase pkgconfig  features_check
+
+SRC_URI[archive.sha256sum] = "4a081eab867a5a8b09758991cad7645920f323aabca954408290fb6f44591b0f"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-fix-reproducibility.patch b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-fix-reproducibility.patch
index dd55256..98618e5 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-fix-reproducibility.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners/0001-fix-reproducibility.patch
@@ -39,21 +39,6 @@
  
  # We use tracker-miners-3.0 rather than tracker3-miners inside the lib64
  # directory, following the existing convention in that directory.
-@@ -421,10 +421,10 @@ tracker_writeback_modules_dir = join_paths(get_option('prefix'), get_option('lib
- tracker_extract_rules_dir = join_paths(get_option('prefix'), get_option('datadir'), tracker_versioned_name, 'extract-rules')
- tracker_miner_services_dir = join_paths(get_option('prefix'), get_option('datadir'), tracker_versioned_name, 'miners')
- 
--tracker_uninstalled_cli_subcommands_dir = meson.current_build_dir() / 'src' / 'tracker' / 'subcommands'
--tracker_uninstalled_extract_rules_dir = join_paths(meson.current_build_dir(), 'src', 'tracker-extract', 'uninstalled-rules')
--tracker_uninstalled_writeback_modules_dir = join_paths(meson.current_build_dir(), 'src', 'tracker-writeback')
--uninstalled_tracker_extract_path = join_paths(meson.current_build_dir(), 'src', 'tracker-extract', 'tracker-extract-3')
-+tracker_uninstalled_cli_subcommands_dir = '/usr/src/debug/tracker/src/tracker/subcommands'
-+tracker_uninstalled_extract_rules_dir = join_paths('usr', 'src', 'debug', 'tracker', 'src', 'tracker-extract', 'uninstalled-rules')
-+tracker_uninstalled_writeback_modules_dir = join_paths('usr', 'src', 'debug', 'tracker', 'src', 'tracker-writeback')
-+uninstalled_tracker_extract_path = join_paths('usr', 'src', 'debug', 'tracker', 'src', 'tracker-extract', 'tracker-extract-3')
- 
- gsettings_schema_dir = join_paths(get_option('prefix'), get_option('datadir'), 'glib-2.0', 'schemas')
- po_dir = join_paths(meson.current_source_dir(), 'po')
 @@ -438,8 +438,8 @@ subdir('data')
  subdir('docs')
  
@@ -65,18 +50,6 @@
  ]
  
  if get_option('tests_tap_protocol')
-@@ -454,9 +454,9 @@ run_uninstalled_conf = configuration_data()
- run_uninstalled_conf.set('tracker_sparql_uninstalled_dir', tracker_sparql_uninstalled_dir)
- run_uninstalled_conf.set('tracker_uninstalled_cli_dir', tracker_uninstalled_cli_dir)
- run_uninstalled_conf.set('tracker_uninstalled_cli_subcommands_dir', tracker_uninstalled_cli_subcommands_dir)
--run_uninstalled_conf.set('tracker_uninstalled_domain_rule', meson.current_build_dir() / 'tests' / 'functional-tests' / 'config' / 'test-domain.rule')
-+run_uninstalled_conf.set('tracker_uninstalled_domain_rule', '/usr/src/debug/tracker/tests/functional-tests/config/test-domain.rule')
- run_uninstalled_conf.set('tracker_uninstalled_extract_rules_dir', tracker_uninstalled_extract_rules_dir)
--run_uninstalled_conf.set('tracker_uninstalled_extractors_dir', meson.current_build_dir() / 'src' / 'tracker-extract')
-+run_uninstalled_conf.set('tracker_uninstalled_extractors_dir', '/usr/src/debug/tracker/src/tracker-extract')
- run_uninstalled_conf.set('tracker_uninstalled_miner_services_dir', tracker_uninstalled_miner_services_dir)
- run_uninstalled_conf.set('tracker_uninstalled_testutils_dir', tracker_uninstalled_testutils_dir)
- run_uninstalled_conf.set('tracker_uninstalled_writeback_modules_dir', tracker_uninstalled_writeback_modules_dir)
 diff --git a/src/tracker-extract/meson.build b/src/tracker-extract/meson.build
 index 4aaad5c41..d17cce221 100644
 --- a/src/tracker-extract/meson.build
@@ -103,6 +76,43 @@
  
  libtracker_miner_test_deps = [tracker_miners_common_dep, tracker_miner_dep, tracker_sparql]
  
+ 
+diff --git a/src/miners/fs/meson.build b/src/miners/fs/meson.build
+index 6e5883288..04750f82b 100644
+--- a/src/miners/fs/meson.build
++++ b/src/miners/fs/meson.build
+@@ -67,8 +67,8 @@ executable('tracker-miner-fs-@0@'.format(tracker_api_major),
+     dependencies: tracker_miner_fs_deps,
+     c_args: [
+         tracker_c_args,
+-        '-DBUILDROOT="@0@"'.format(meson.global_build_root()),
+-        '-DBUILD_EXTRACTDIR="@0@"'.format(meson.build_root() / 'src' / 'tracker-extract'),
++        '-DBUILDROOT="@0@"'.format(get_option('prefix') / 'src'),
++        '-DBUILD_EXTRACTDIR="@0@"'.format(get_option('prefix') / 'src' / 'tracker-extract'),
+         '-DLIBEXECDIR="@0@"'.format(get_option('prefix') / get_option('libexecdir')),
+     ],
+     install: true,
+diff --git a/src/libtracker-miners-common/tracker-landlock.c b/src/libtracker-miners-common/tracker-landlock.c
+index 27e7db65b..3021343eb 100644
+--- a/src/libtracker-miners-common/tracker-landlock.c
++++ b/src/libtracker-miners-common/tracker-landlock.c
+@@ -276,7 +276,7 @@
+ 			          LANDLOCK_ACCESS_FS_READ_DIR);
+ 		}
+ 	}
+-
++#if 0
+ 	current_dir = g_get_current_dir ();
+ 
+ 	/* Detect running in-tree */
+@@ -296,7 +296,7 @@
+ 			          in_tree_rules[i].flags);
+ 		}
+ 	}
+-
++#endif
+ 	/* Add user cache for readonly databases */
+ #ifdef MINER_FS_CACHE_LOCATION
+ 	add_rule (landlock_fd, MINER_FS_CACHE_LOCATION,
 -- 
 2.41.0
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.6.2.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.6.2.bb
deleted file mode 100644
index 2be6bea..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.6.2.bb
+++ /dev/null
@@ -1,83 +0,0 @@
-SUMMARY = "Tracker miners and metadata extractors"
-LICENSE = "GPL-2.0-only & LGPL-2.1-only"
-LIC_FILES_CHKSUM = " \
-    file://COPYING.GPL;md5=ee31012bf90e7b8c108c69f197f3e3a4 \
-    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-"
-
-DEPENDS = " \
-    intltool-native \
-    libseccomp \
-    tracker \
-    zlib \
-"
-
-
-inherit gnomebase gsettings gobject-introspection vala bash-completion features_check
-
-SRC_URI:append = " \
-	file://0001-fix-reproducibility.patch \
-	file://0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch \
-"
-SRC_URI[archive.sha256sum] = "0ad722f3d532c21d757cf488f942960679ea8f457925efa97656ed4c9e9ba4ff"
-
-# gobject-introspection is mandatory and cannot be configured
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
-GIR_MESON_OPTION = ""
-VALA_MESON_OPTION = ""
-
-PACKAGECONFIG ??= " \
-    ${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "ffmpeg", "", d)} \
-    gexiv2 \
-    gstreamer \
-    icu \
-    libexif \
-    libgsf \
-    jpeg \
-    pdf \
-    png \
-    tiff \
-    raw \
-    xml \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \
-    battery \
-    networkmanager \
-"
-
-PACKAGECONFIG[battery]     = "-Dbattery_detection=upower,-Dbattery_detection=none,upower"
-PACKAGECONFIG[cue]     = "-Dcue=enabled,-Dcue=disabled,libcue"
-PACKAGECONFIG[ffmpeg]     = "-Dgeneric_media_extractor=libav,,ffmpeg"
-PACKAGECONFIG[gexiv2]     = ",,gexiv2"
-PACKAGECONFIG[gstreamer]  = "-Dgeneric_media_extractor=gstreamer,,gstreamer1.0 gstreamer1.0-plugins-base"
-PACKAGECONFIG[gupnp]      = "-Dgstreamer_backend=gupnp,,gupnp-dlna"
-PACKAGECONFIG[gif]        = "-Dgif=enabled,-Dgif=disabled,giflib"
-PACKAGECONFIG[icu]        = "-Dcharset_detection=icu,,icu"
-PACKAGECONFIG[iso]        = "-Diso=enabled,-Diso=disabled,libosinfo"
-PACKAGECONFIG[jpeg]       = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
-PACKAGECONFIG[libexif]    = "-Dexif=enabled,-Dexif=disabled,libexif"
-PACKAGECONFIG[libgsf]     = "-Dgsf=enabled,-Dgsf=disabled,libgsf"
-PACKAGECONFIG[pdf]        = "-Dpdf=enabled,-Dpdf=disabled,poppler"
-PACKAGECONFIG[png]        = "-Dpng=enabled,-Dpng=disabled,libpng"
-PACKAGECONFIG[tiff]       = "-Dtiff=enabled,-Dtiff=disabled,tiff"
-PACKAGECONFIG[raw]       = "-Draw=enabled,-Draw=disabled,libraw"
-PACKAGECONFIG[xml]        = "-Dxml=enabled,-Dxml=disabled,libxml2"
-PACKAGECONFIG[networkmanager] = "-Dnetwork_manager=enabled,-Dnetwork_manager=disabled,networkmanager"
-
-# For security reasons it is strongly recommended to set add meta-security in
-# your layers and 'libseccomp' to PACKAGECONFIG".
-PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
-# not yet in meta-gnome
-PACKAGECONFIG[rss]        = "-Dminer_rss=true,-Dminer_rss=false,libgrss"
-
-EXTRA_OEMESON += " \
-    -Dman=false \
-    -Dsystemd_user_services=${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)} \
-    -Dsystemd_user_services_dir=${systemd_user_unitdir} \
-"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/tracker3-miners \
-    ${libdir}/tracker-miners-3.0 \
-    ${systemd_user_unitdir} \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.7.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.7.1.bb
new file mode 100644
index 0000000..7bbee2a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker-miners_3.7.1.bb
@@ -0,0 +1,86 @@
+SUMMARY = "Tracker miners and metadata extractors"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LIC_FILES_CHKSUM = " \
+    file://COPYING.GPL;md5=ee31012bf90e7b8c108c69f197f3e3a4 \
+    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+"
+
+DEPENDS = " \
+    intltool-native \
+    tracker \
+    zlib \
+"
+
+
+inherit gnomebase gsettings gobject-introspection vala bash-completion features_check
+
+SRC_URI:append = " \
+	file://0001-fix-reproducibility.patch \
+	file://0001-Set-header-file-to-a-fixed-path-instead-of-a-host-pa.patch \
+"
+SRC_URI[archive.sha256sum] = "50a3abe40cfb0b35ced43ec716dbf1368992e444ef7a0babf202c7ac6ab2f6f4"
+
+# gobject-introspection is mandatory and cannot be configured
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
+GIR_MESON_OPTION = ""
+VALA_MESON_OPTION = ""
+
+PACKAGECONFIG ??= " \
+    ${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "ffmpeg", "", d)} \
+    gexiv2 \
+    gstreamer \
+    icu \
+    libexif \
+    libgsf \
+    jpeg \
+    pdf \
+    png \
+    tiff \
+    raw \
+    xml \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)} \
+    battery \
+    networkmanager \
+"
+# Needs tgkill API which musl does not support
+# see https://www.openwall.com/lists/musl/2019/08/02/1
+PACKAGECONFIG:remove:libc-musl = "seccomp"
+
+PACKAGECONFIG[battery]     = "-Dbattery_detection=upower,-Dbattery_detection=none,upower"
+PACKAGECONFIG[cue]     = "-Dcue=enabled,-Dcue=disabled,libcue"
+PACKAGECONFIG[ffmpeg]     = "-Dgeneric_media_extractor=libav,,ffmpeg"
+PACKAGECONFIG[gexiv2]     = ",,gexiv2"
+PACKAGECONFIG[gstreamer]  = "-Dgeneric_media_extractor=gstreamer,,gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[gupnp]      = "-Dgstreamer_backend=gupnp,,gupnp-dlna"
+PACKAGECONFIG[gif]        = "-Dgif=enabled,-Dgif=disabled,giflib"
+PACKAGECONFIG[icu]        = "-Dcharset_detection=icu,,icu"
+PACKAGECONFIG[iso]        = "-Diso=enabled,-Diso=disabled,libosinfo"
+PACKAGECONFIG[jpeg]       = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
+PACKAGECONFIG[libexif]    = "-Dexif=enabled,-Dexif=disabled,libexif"
+PACKAGECONFIG[libgsf]     = "-Dgsf=enabled,-Dgsf=disabled,libgsf"
+PACKAGECONFIG[pdf]        = "-Dpdf=enabled,-Dpdf=disabled,poppler"
+PACKAGECONFIG[png]        = "-Dpng=enabled,-Dpng=disabled,libpng"
+PACKAGECONFIG[tiff]       = "-Dtiff=enabled,-Dtiff=disabled,tiff"
+PACKAGECONFIG[raw]       = "-Draw=enabled,-Draw=disabled,libraw"
+PACKAGECONFIG[xml]        = "-Dxml=enabled,-Dxml=disabled,libxml2"
+PACKAGECONFIG[networkmanager] = "-Dnetwork_manager=enabled,-Dnetwork_manager=disabled,networkmanager"
+PACKAGECONFIG[landlock]        = "-Dlandlock=enabled,-Dlandlock=disabled"
+
+# For security reasons it is strongly recommended to set add meta-security in
+# your layers and 'libseccomp' to PACKAGECONFIG".
+PACKAGECONFIG[seccomp] = "-Dseccomp=true,-Dseccomp=false,libseccomp"
+# not yet in meta-gnome
+PACKAGECONFIG[rss]        = "-Dminer_rss=true,-Dminer_rss=false,libgrss"
+
+EXTRA_OEMESON += " \
+    -Dman=false \
+    -Dsystemd_user_services=${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)} \
+    -Dsystemd_user_services_dir=${systemd_user_unitdir} \
+"
+
+
+FILES:${PN} += " \
+    ${datadir} \
+    ${libdir}/tracker-miners-3.0 \
+    ${systemd_user_unitdir} \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker/0001-fix-reproducibility.patch b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker/0001-fix-reproducibility.patch
index 4a11f83..4527f9e 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker/0001-fix-reproducibility.patch
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker/0001-fix-reproducibility.patch
@@ -1,4 +1,4 @@
-From e5acd475f796420b4887969f2b0057dbf67979b3 Mon Sep 17 00:00:00 2001
+From ae34fb111e1f2498f37b21c0c32ace6c9928ad66 Mon Sep 17 00:00:00 2001
 From: Markus Volk <f_l_k@t-online.de>
 Date: Mon, 18 Sep 2023 02:47:55 +0200
 Subject: [PATCH] tracker: fix reproducibility issue
@@ -18,10 +18,10 @@
  3 files changed, 7 insertions(+), 7 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index 8442a216f..82844d7fd 100644
+index bc9f93a..6c86e5a 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -348,7 +348,7 @@ have_rtld_noload = cc.has_header_symbol('dlfcn.h', 'RTLD_NOLOAD')
+@@ -357,7 +357,7 @@ have_rtld_noload = cc.has_header_symbol('dlfcn.h', 'RTLD_NOLOAD')
  conf.set('HAVE_RTLD_NOLOAD', have_rtld_noload)
  
  # Config that goes in some other generated files (.desktop, .service, etc)
@@ -30,7 +30,7 @@
  conf.set('libexecdir', join_paths(get_option('prefix'), get_option('libexecdir')))
  
  configure_file(input: 'config.h.meson.in',
-@@ -388,8 +388,8 @@ subdir('docs')
+@@ -396,8 +396,8 @@ subdir('docs')
  subdir('utils')
  
  test_c_args = tracker_c_args + [
@@ -42,7 +42,7 @@
  
  tracker_uninstalled_cli_dir = join_paths(meson.current_build_dir(), 'src', 'tracker')
 diff --git a/src/libtracker-common/meson.build b/src/libtracker-common/meson.build
-index 9355d1c0d..cdbc05f28 100644
+index 9355d1c..cdbc05f 100644
 --- a/src/libtracker-common/meson.build
 +++ b/src/libtracker-common/meson.build
 @@ -51,10 +51,10 @@ libtracker_common = static_library('tracker-common',
@@ -59,10 +59,10 @@
    include_directories: [configinc, srcinc],
    gnu_symbol_visibility: 'hidden',
 diff --git a/src/libtracker-sparql/meson.build b/src/libtracker-sparql/meson.build
-index 36288f5c3..61086a697 100644
+index 4143eac..b73f1c9 100644
 --- a/src/libtracker-sparql/meson.build
 +++ b/src/libtracker-sparql/meson.build
-@@ -96,10 +96,10 @@ libtracker_sparql_private = static_library('tracker-sparql-private',
+@@ -98,10 +98,10 @@ libtracker_sparql_private = static_library('tracker-sparql-private',
      c_args: [
  	'-include', 'libtracker-sparql/tracker-private.h',
          '-DPRIVATE_LIBDIR="@0@"'.format(tracker_internal_libs_dir),
@@ -75,6 +75,3 @@
      ] + tracker_c_args,
  
      dependencies: [libtracker_sparql_dependencies, gvdb_dep],
--- 
-2.41.0
-
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker/0001-meson-Do-not-define-TOP_SRCDIR.patch b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker/0001-meson-Do-not-define-TOP_SRCDIR.patch
deleted file mode 100644
index 5c6ab71..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker/0001-meson-Do-not-define-TOP_SRCDIR.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 3e262192ffebf5d6fec92d5b7ba08348a94df1ae Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 25 May 2023 20:54:47 -0700
-Subject: [PATCH] meson: Do not define TOP_SRCDIR
-
-This is passed from build env
-
-Upstream-Status: Inappropriate [Cross compile specific]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- meson.build | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/meson.build
-+++ b/meson.build
-@@ -353,7 +353,7 @@ subdir('utils')
- 
- test_c_args = tracker_c_args + [
-     '-DTOP_BUILDDIR="@0@"'.format(build_root),
--    '-DTOP_SRCDIR="@0@"'.format(source_root),
-+    '-DTOP_SRCDIR="@0@"'.format('/usr/src/debug/tracker'),
- ]
- 
- tracker_uninstalled_cli_dir = join_paths(meson.current_build_dir(), 'src', 'tracker')
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.6.0.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.6.0.bb
deleted file mode 100644
index 603efbb..0000000
--- a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.6.0.bb
+++ /dev/null
@@ -1,59 +0,0 @@
-SUMMARY = "Tracker is a file search engine"
-LICENSE = "GPL-2.0-only & LGPL-2.1-only"
-LIC_FILES_CHKSUM = " \
-    file://COPYING.GPL;md5=ee31012bf90e7b8c108c69f197f3e3a4 \
-    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
-"
-
-DEPENDS = " \
-    dbus-native \
-    python3-pygobject-native \
-    glib-2.0 \
-    sqlite3 \
-    libarchive \
-    dbus \
-    icu \
-    json-glib \
-    libsoup-3.0 \
-    libstemmer \
-"
-
-
-inherit gettext gnomebase gobject-introspection vala gtk-doc bash-completion python3native
-
-SRC_URI += "file://0001-fix-reproducibility.patch"
-SRC_URI[archive.sha256sum] = "52592cfe19baffd16dbe47475be7da750dbd0b6333fd7acb60faa9da5bc40df2"
-
-# text search is not an option anymore and requires sqlite3 build with
-# PACKAGECONFIG[fts5] set (default)
-
-# set required cross property sqlite3_has_fts5
-do_write_config[vardeps] += "PACKAGECONFIG"
-do_write_config:append() {
-    echo "[properties]" > ${WORKDIR}/meson-tracker.cross
-    echo "sqlite3_has_fts5 = 'true'" >> ${WORKDIR}/meson-tracker.cross
-}
-
-EXTRA_OEMESON = " \
-    --cross-file ${WORKDIR}/meson-tracker.cross \
-    -Dman=false \
-    -Dsystemd_user_services=${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)} \
-    -Dsystemd_user_services_dir=${systemd_user_unitdir} \
-    -Dsoup=soup3 \
-    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dvapi=enabled', '-Dvapi=disabled', d)} \
-"
-
-do_install:prepend() {
-    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/src/libtracker-sparql/tracker-sparql-enum-types.c
-    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/src/libtracker-sparql/core/tracker-data-enum-types.c
-}
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${datadir}/tracker3 \
-    ${libdir}/tracker-3.0 \
-    ${systemd_user_unitdir} \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.7.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.7.1.bb
new file mode 100644
index 0000000..1d5c79a
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-gnome/tracker/tracker_3.7.1.bb
@@ -0,0 +1,59 @@
+SUMMARY = "Tracker is a file search engine"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LIC_FILES_CHKSUM = " \
+    file://COPYING.GPL;md5=ee31012bf90e7b8c108c69f197f3e3a4 \
+    file://COPYING.LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+"
+
+DEPENDS = " \
+    dbus-native \
+    python3-pygobject-native \
+    glib-2.0 \
+    sqlite3 \
+    libarchive \
+    dbus \
+    icu \
+    json-glib \
+    libsoup-3.0 \
+    libstemmer \
+"
+
+
+inherit gettext gnomebase gobject-introspection vala gtk-doc bash-completion python3native
+
+SRC_URI += "file://0001-fix-reproducibility.patch"
+SRC_URI[archive.sha256sum] = "cd91b885ee9839cde5387f8e05ed24a7108d1627629cb6b1b2aa51a9603e130a"
+
+# text search is not an option anymore and requires sqlite3 build with
+# PACKAGECONFIG[fts5] set (default)
+
+# set required cross property sqlite3_has_fts5
+do_write_config[vardeps] += "PACKAGECONFIG"
+do_write_config:append() {
+    echo "[properties]" > ${WORKDIR}/meson-tracker.cross
+    echo "sqlite3_has_fts5 = 'true'" >> ${WORKDIR}/meson-tracker.cross
+}
+
+EXTRA_OEMESON = " \
+    --cross-file ${WORKDIR}/meson-tracker.cross \
+    -Dman=false \
+    -Dsystemd_user_services=${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)} \
+    -Dsystemd_user_services_dir=${systemd_user_unitdir} \
+    -Dsoup=soup3 \
+    ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dvapi=enabled', '-Dvapi=disabled', d)} \
+"
+
+do_install:prepend() {
+    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/src/libtracker-sparql/tracker-sparql-enum-types.c
+    sed -i -e 's|${B}/../${PN}-${PV}|${TARGET_DBGSRC_DIR}|g' ${B}/src/libtracker-sparql/core/tracker-data-enum-types.c
+}
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${datadir}/tracker3 \
+    ${libdir}/tracker-3.0 \
+    ${systemd_user_unitdir} \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_4.0.1.bb b/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_4.0.1.bb
index 50e5eaa..88b4b5c 100644
--- a/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_4.0.1.bb
+++ b/meta-openembedded/meta-gnome/recipes-gnome/zenity/zenity_4.0.1.bb
@@ -15,6 +15,7 @@
 "
 
 ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "opengl"
 GTKIC_VERSION = "4"
 
 SRC_URI[archive.sha256sum] = "0c2f537813b10f728470d9d05d6c95713db2512f9c95096e1e85b1a6739605e6"
diff --git a/meta-openembedded/meta-gnome/recipes-graphics/packagegroups/packagegroup-core-clutter.bb b/meta-openembedded/meta-gnome/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
index d4df611..a3c2742 100644
--- a/meta-openembedded/meta-gnome/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
+++ b/meta-openembedded/meta-gnome/recipes-graphics/packagegroups/packagegroup-core-clutter.bb
@@ -4,7 +4,6 @@
 
 SUMMARY = "Clutter package groups"
 
-PR = "r6"
 
 # clutter-1.0 gets debian renamed to libclutter-1.0-0
 # clutter-gtk-1.0 gets debian renamed to libclutter-gtk-1.0-0
diff --git a/meta-openembedded/meta-gnome/recipes-support/libcloudproviders/libcloudproviders_0.3.5.bb b/meta-openembedded/meta-gnome/recipes-support/libcloudproviders/libcloudproviders_0.3.5.bb
deleted file mode 100644
index 7f9bb26..0000000
--- a/meta-openembedded/meta-gnome/recipes-support/libcloudproviders/libcloudproviders_0.3.5.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "libcloudproviders is a DBus API that allows cloud storage sync clients to expose their services."
-LICENSE="LGPL-3.0-or-later"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-VALA_MESON_OPTION ?= 'vapigen'
-
-DEPENDS = "glib-2.0"
-
-inherit gnomebase gobject-introspection vala
-
-SRC_URI[archive.sha256sum] = "b987456eddaf715ba9d623aa2bc501ab1b697dffeb11aaa783a637275df186da"
diff --git a/meta-openembedded/meta-gnome/recipes-support/libcloudproviders/libcloudproviders_0.3.6.bb b/meta-openembedded/meta-gnome/recipes-support/libcloudproviders/libcloudproviders_0.3.6.bb
new file mode 100644
index 0000000..f5660b5
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/libcloudproviders/libcloudproviders_0.3.6.bb
@@ -0,0 +1,11 @@
+SUMMARY = "libcloudproviders is a DBus API that allows cloud storage sync clients to expose their services."
+LICENSE="LGPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e6a600fd5e1d9cbde2d983680233ad02"
+
+VALA_MESON_OPTION ?= 'vapigen'
+
+DEPENDS = "glib-2.0"
+
+inherit gnomebase gobject-introspection vala
+
+SRC_URI[archive.sha256sum] = "3b75110b3a4fdef4c5c5a440e48701fe054d2ae061d156c89136bb5ba05e74b7"
diff --git a/meta-openembedded/meta-gnome/recipes-support/webp-pixbuf-loader/webp-pixbuf-loader_0.2.5.bb b/meta-openembedded/meta-gnome/recipes-support/webp-pixbuf-loader/webp-pixbuf-loader_0.2.5.bb
deleted file mode 100644
index e7cad39..0000000
--- a/meta-openembedded/meta-gnome/recipes-support/webp-pixbuf-loader/webp-pixbuf-loader_0.2.5.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "WebP GDK Pixbuf Loader library"
-HOMEPAGE = "https://github.com/aruiz/webp-pixbuf-loader"
-LICENSE = "LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://LICENSE.LGPL-2;md5=0d90e6d44bcf69014bfae649c75aa6ca"
-
-DEPENDS = " \
-    gdk-pixbuf \
-    libwebp \
-"
-
-inherit meson pkgconfig
-
-EXTRA_OEMESON = "-Dupdate_cache=true"
-
-SRC_URI = "git://github.com/aruiz/webp-pixbuf-loader.git;protocol=https;branch=mainline"
-
-S = "${WORKDIR}/git"
-SRCREV = "481533dd0e2c014975d9dc786887a5475c3af073"
-
-FILES:${PN} = " \
-    ${datadir}/thumbnailers/webp-pixbuf.thumbnailer \
-    ${libdir}/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-webp.so \
-"
diff --git a/meta-openembedded/meta-gnome/recipes-support/webp-pixbuf-loader/webp-pixbuf-loader_0.2.7.bb b/meta-openembedded/meta-gnome/recipes-support/webp-pixbuf-loader/webp-pixbuf-loader_0.2.7.bb
new file mode 100644
index 0000000..73f22a3
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/webp-pixbuf-loader/webp-pixbuf-loader_0.2.7.bb
@@ -0,0 +1,23 @@
+SUMMARY = "WebP GDK Pixbuf Loader library"
+HOMEPAGE = "https://github.com/aruiz/webp-pixbuf-loader"
+LICENSE = "LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL-2;md5=0d90e6d44bcf69014bfae649c75aa6ca"
+
+DEPENDS = " \
+    gdk-pixbuf \
+    libwebp \
+"
+
+inherit meson pkgconfig
+
+EXTRA_OEMESON = "-Dupdate_cache=true"
+
+SRC_URI = "git://github.com/aruiz/webp-pixbuf-loader.git;protocol=https;branch=mainline"
+
+S = "${WORKDIR}/git"
+SRCREV = "52232e4ba282b2fed68e8fcb4b5d45ed0eaa4ed3"
+
+FILES:${PN} = " \
+    ${datadir}/thumbnailers/webp-pixbuf.thumbnailer \
+    ${libdir}/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-webp.so \
+"
diff --git a/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_45.1.bb b/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_45.1.bb
deleted file mode 100644
index a547730..0000000
--- a/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_45.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "A xdg-desktop-portal backend for gnome."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = " \
-    glib-2.0-native \
-    gtk4\
-    xdg-desktop-portal \
-    xdg-desktop-portal-gtk \
-    libadwaita \
-    fontconfig \
-    gsettings-desktop-schemas \
-    gnome-desktop \
-    dconf \
-"
-
-RDEPENDS:${PN} = "xdg-desktop-portal xdg-desktop-portal-gtk"
-
-inherit gnomebase pkgconfig gsettings features_check
-
-REQUIRED_DISTRO_FEATURES = "polkit"
-
-SRC_URI[archive.sha256sum] = "3e9ca821044005fb37bd68ebe4ad196fc3d072835581467a22a4879dac7b5fdd"
-
-PACKAGECONFIG ?= "screenshot screencast ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}"
-PACKAGECONFIG[wayland] = ",,wayland-native"
-PACKAGECONFIG[screenshot] = ",,,gnome-shell"
-PACKAGECONFIG[screencast] = ",,,mutter"
-
-FILES:${PN} += "${systemd_user_unitdir} ${datadir}"
diff --git a/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_46.0.bb b/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_46.0.bb
new file mode 100644
index 0000000..c504057
--- /dev/null
+++ b/meta-openembedded/meta-gnome/recipes-support/xdg-desktop-portal/xdg-desktop-portal-gnome_46.0.bb
@@ -0,0 +1,31 @@
+SUMMARY = "A xdg-desktop-portal backend for gnome."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = " \
+    glib-2.0-native \
+    gtk4\
+    xdg-desktop-portal \
+    xdg-desktop-portal-gtk \
+    libadwaita \
+    fontconfig \
+    gsettings-desktop-schemas \
+    gnome-desktop \
+    dconf \
+"
+
+RDEPENDS:${PN} = "xdg-desktop-portal xdg-desktop-portal-gtk"
+
+inherit gnomebase pkgconfig gsettings features_check
+
+REQUIRED_DISTRO_FEATURES = "polkit"
+
+SRC_URI[archive.sha256sum] = "5d2d533597d280b7370b8f74faa40097b292b0036dbd59166e1312230500bb8b"
+
+PACKAGECONFIG ?= "screenshot screencast ${@bb.utils.filter('DISTRO_FEATURES', 'wayland', d)}"
+PACKAGECONFIG[wayland] = ",,wayland-native"
+PACKAGECONFIG[screenshot] = ",,,gnome-shell"
+PACKAGECONFIG[screencast] = ",,,mutter"
+
+FILES:${PN} += "${systemd_user_unitdir} ${datadir}"
diff --git a/meta-openembedded/meta-initramfs/conf/layer.conf b/meta-openembedded/meta-initramfs/conf/layer.conf
index ef12daf..25023cf 100644
--- a/meta-openembedded/meta-initramfs/conf/layer.conf
+++ b/meta-openembedded/meta-initramfs/conf/layer.conf
@@ -16,7 +16,7 @@
 BBFILE_PRIORITY_meta-initramfs = "5"
 LAYERDEPENDS_meta-initramfs = "core"
 
-LAYERSERIES_COMPAT_meta-initramfs = "nanbield"
+LAYERSERIES_COMPAT_meta-initramfs = "scarthgap"
 
 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += " \
   dracut->virtual/kernel \
diff --git a/meta-openembedded/meta-multimedia/conf/layer.conf b/meta-openembedded/meta-multimedia/conf/layer.conf
index 99f4987..82e6f36 100644
--- a/meta-openembedded/meta-multimedia/conf/layer.conf
+++ b/meta-openembedded/meta-multimedia/conf/layer.conf
@@ -31,4 +31,4 @@
 
 LAYERDEPENDS_multimedia-layer = "core openembedded-layer meta-python"
 
-LAYERSERIES_COMPAT_multimedia-layer = "nanbield"
+LAYERSERIES_COMPAT_multimedia-layer = "scarthgap"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-ipu3-Use-posix-basename.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-ipu3-Use-posix-basename.patch
new file mode 100644
index 0000000..9e4adf3
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-ipu3-Use-posix-basename.patch
@@ -0,0 +1,71 @@
+From 35d2acc61b1b27c0810a80cd21de65f29dc79df7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 24 Mar 2024 11:27:21 -0700
+Subject: [PATCH] ipu3: Use posix basename
+
+musl does not implement GNU basename extention and with latest musl
+the prototype from string.h is also removed [1] which now results in
+compile errors e.g.
+
+../git/utils/ipu3/ipu3-pack.c:21:47: error: call to undeclared function 'basename'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
+
+These utilities are using this function in usage() which is used just
+before program exit. Always use the basename APIs from libgen.h which is
+posix implementation
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://lists.libcamera.org/pipermail/libcamera-devel/2024-March/041180.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ utils/ipu3/ipu3-pack.c   | 4 ++--
+ utils/ipu3/ipu3-unpack.c | 3 ++-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/utils/ipu3/ipu3-pack.c b/utils/ipu3/ipu3-pack.c
+index decbfc6c..23d2db8b 100644
+--- a/utils/ipu3/ipu3-pack.c
++++ b/utils/ipu3/ipu3-pack.c
+@@ -8,6 +8,7 @@
+ 
+ #include <errno.h>
+ #include <fcntl.h>
++#include <libgen.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -15,9 +16,8 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+ 
+-static void usage(const char *argv0)
++static void usage(char *argv0)
+ {
+-
+ 	printf("Usage: %s input-file output-file\n", basename(argv0));
+ 	printf("Convert unpacked RAW10 Bayer data to the IPU3 packed Bayer formats\n");
+ 	printf("If the output-file '-', output data will be written to standard output\n");
+diff --git a/utils/ipu3/ipu3-unpack.c b/utils/ipu3/ipu3-unpack.c
+index 9d2c1200..1505a970 100644
+--- a/utils/ipu3/ipu3-unpack.c
++++ b/utils/ipu3/ipu3-unpack.c
+@@ -8,6 +8,7 @@
+ 
+ #include <errno.h>
+ #include <fcntl.h>
++#include <libgen.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -15,7 +16,7 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+ 
+-static void usage(const char *argv0)
++static void usage(char *argv0)
+ {
+ 	printf("Usage: %s input-file output-file\n", basename(argv0));
+ 	printf("Unpack the IPU3 raw Bayer format to 16-bit Bayer\n");
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-rpi-Use-alloca-instead-of-variable-length-arrays.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-rpi-Use-alloca-instead-of-variable-length-arrays.patch
index a6526d5..c336e92 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-rpi-Use-alloca-instead-of-variable-length-arrays.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0001-rpi-Use-alloca-instead-of-variable-length-arrays.patch
@@ -1,7 +1,7 @@
-From 7982e55ce3a8b3c60a47258ff7d37d0dd78c303d Mon Sep 17 00:00:00 2001
+From 11cc6dbd45f0880beea64cdc514f57484b90bc39 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Tue, 20 Feb 2024 18:44:23 -0800
-Subject: [PATCH] rpi: Use alloca instead of variable length arrays
+Subject: [PATCH] rpi: Use malloc instead of variable length arrays
 
 Clang-18+ diagnoses this as error
 
@@ -10,12 +10,14 @@
 
 Upstream-Status: Submitted [https://lists.libcamera.org/pipermail/libcamera-devel/2024-February/040529.html]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+s
 ---
- src/ipa/rpi/controller/rpi/alsc.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ src/ipa/rpi/controller/rpi/alsc.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/src/ipa/rpi/controller/rpi/alsc.cpp b/src/ipa/rpi/controller/rpi/alsc.cpp
-index 8a205c60..8c0ae8eb 100644
+index 8a205c60..a7d42614 100644
 --- a/src/ipa/rpi/controller/rpi/alsc.cpp
 +++ b/src/ipa/rpi/controller/rpi/alsc.cpp
 @@ -496,8 +496,8 @@ void resampleCalTable(const Array2D<double> &calTableIn,
@@ -24,11 +26,18 @@
  	 */
 -	int xLo[X], xHi[X];
 -	double xf[X];
-+	int *xLo = (int*)alloca(X), *xHi = (int*)alloca(X);
-+	double *xf = (double*)alloca(X);
++	int *xLo = (int*)malloc(X), *xHi = (int*)malloc(X);
++	double *xf = (double*)malloc(X);
  	double scaleX = cameraMode.sensorWidth /
  			(cameraMode.width * cameraMode.scaleX);
  	double xOff = cameraMode.cropX / (double)cameraMode.sensorWidth;
--- 
-2.43.2
-
+@@ -539,6 +539,9 @@ void resampleCalTable(const Array2D<double> &calTableIn,
+ 			*(out++) = above * (1 - yf) + below * yf;
+ 		}
+ 	}
++	free(xf);
++	free(xHi);
++	free(xLo);
+ }
+ 
+ /* Calculate chrominance statistics (R/G and B/G) for each region. */
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0002-options-Replace-use-of-VLAs-in-C.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0002-options-Replace-use-of-VLAs-in-C.patch
index 95f3217..4738206 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0002-options-Replace-use-of-VLAs-in-C.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera/0002-options-Replace-use-of-VLAs-in-C.patch
@@ -1,7 +1,7 @@
-From c80d273a57547aec9353d888aa316bf6560cf1ba Mon Sep 17 00:00:00 2001
+From 6e4736180fcaffdb06acf52fd3eb50ba5baa3d2a Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 31 Jan 2024 21:04:28 -0800
-Subject: [PATCH 2/2] options: Replace use of VLAs in C++
+Subject: [PATCH] options: Replace use of VLAs in C++
 
 Clang++ 18 is fussy about this with new warning checks.
 
@@ -14,12 +14,12 @@
 Upstream-Status: Submitted [https://lists.libcamera.org/pipermail/libcamera-devel/2024-February/040381.html]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- src/apps/common/options.cpp      |  4 ++--
- src/libcamera/ipc_unixsocket.cpp | 12 ++++++++----
- 2 files changed, 10 insertions(+), 6 deletions(-)
+ src/apps/common/options.cpp      | 12 ++++++++++--
+ src/libcamera/ipc_unixsocket.cpp | 13 +++++++++----
+ 2 files changed, 19 insertions(+), 6 deletions(-)
 
 diff --git a/src/apps/common/options.cpp b/src/apps/common/options.cpp
-index 4f7e8691..b020f603 100644
+index 4f7e8691..3656f3c1 100644
 --- a/src/apps/common/options.cpp
 +++ b/src/apps/common/options.cpp
 @@ -879,8 +879,8 @@ OptionsParser::Options OptionsParser::parse(int argc, char **argv)
@@ -28,16 +28,56 @@
  	 */
 -	char shortOptions[optionsMap_.size() * 3 + 2];
 -	struct option longOptions[optionsMap_.size() + 1];
-+	char *shortOptions = (char*)alloca(optionsMap_.size() * 3 + 2);
-+	struct option *longOptions = (struct option*)alloca(optionsMap_.size() + 1);
++	char *shortOptions = (char*)malloc(optionsMap_.size() * 3 + 2);
++	struct option *longOptions = (struct option*)malloc(sizeof(struct option) * (optionsMap_.size() + 1));
  	unsigned int ids = 0;
  	unsigned int idl = 0;
  
+@@ -935,12 +935,16 @@ OptionsParser::Options OptionsParser::parse(int argc, char **argv)
+ 			std::cerr << argv[optind - 1] << std::endl;
+ 
+ 			usage();
++			free(shortOptions);
++			free(longOptions);
+ 			return options;
+ 		}
+ 
+ 		const Option &option = *optionsMap_[c];
+ 		if (!parseValue(option, optarg, &options)) {
+ 			usage();
++			free(shortOptions);
++			free(longOptions);
+ 			return options;
+ 		}
+ 	}
+@@ -949,10 +953,14 @@ OptionsParser::Options OptionsParser::parse(int argc, char **argv)
+ 		std::cerr << "Invalid non-option argument '" << argv[optind]
+ 			  << "'" << std::endl;
+ 		usage();
++		free(shortOptions);
++		free(longOptions);
+ 		return options;
+ 	}
+ 
+ 	options.valid_ = true;
++	free(shortOptions);
++	free(longOptions);
+ 	return options;
+ }
+ 
 diff --git a/src/libcamera/ipc_unixsocket.cpp b/src/libcamera/ipc_unixsocket.cpp
-index 1980d374..3a7f8ee6 100644
+index 1980d374..3bd861cb 100644
 --- a/src/libcamera/ipc_unixsocket.cpp
 +++ b/src/libcamera/ipc_unixsocket.cpp
-@@ -247,8 +247,8 @@ int IPCUnixSocket::sendData(const void *buffer, size_t length,
+@@ -8,6 +8,7 @@
+ #include "libcamera/internal/ipc_unixsocket.h"
+ 
+ #include <array>
++#include <cstdint>
+ #include <poll.h>
+ #include <string.h>
+ #include <sys/socket.h>
+@@ -247,8 +248,8 @@ int IPCUnixSocket::sendData(const void *buffer, size_t length,
  	iov[0].iov_base = const_cast<void *>(buffer);
  	iov[0].iov_len = length;
  
@@ -48,19 +88,19 @@
  
  	struct cmsghdr *cmsg = (struct cmsghdr *)buf;
  	cmsg->cmsg_len = CMSG_LEN(num * sizeof(uint32_t));
-@@ -270,9 +270,11 @@ int IPCUnixSocket::sendData(const void *buffer, size_t length,
+@@ -270,9 +271,11 @@ int IPCUnixSocket::sendData(const void *buffer, size_t length,
  		int ret = -errno;
  		LOG(IPCUnixSocket, Error)
  			<< "Failed to sendmsg: " << strerror(-ret);
-+    free(buf);
++		free(buf);
  		return ret;
  	}
  
-+  free(buf);
++	free(buf);
  	return 0;
  }
  
-@@ -283,8 +285,8 @@ int IPCUnixSocket::recvData(void *buffer, size_t length,
+@@ -283,8 +286,8 @@ int IPCUnixSocket::recvData(void *buffer, size_t length,
  	iov[0].iov_base = buffer;
  	iov[0].iov_len = length;
  
@@ -71,21 +111,18 @@
  
  	struct cmsghdr *cmsg = (struct cmsghdr *)buf;
  	cmsg->cmsg_len = CMSG_LEN(num * sizeof(uint32_t));
-@@ -305,12 +307,14 @@ int IPCUnixSocket::recvData(void *buffer, size_t length,
+@@ -305,12 +308,14 @@ int IPCUnixSocket::recvData(void *buffer, size_t length,
  		if (ret != -EAGAIN)
  			LOG(IPCUnixSocket, Error)
  				<< "Failed to recvmsg: " << strerror(-ret);
-+    free(buf);
++		free(buf);
  		return ret;
  	}
  
  	if (fds)
  		memcpy(fds, CMSG_DATA(cmsg), num * sizeof(uint32_t));
  
-+  free(buf);
++	free(buf);
  	return 0;
  }
  
--- 
-2.43.0
-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.2.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.2.0.bb
index b96e69e..45d6be3 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.2.0.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/libcamera/libcamera_0.2.0.bb
@@ -13,6 +13,7 @@
         file://0001-media_device-Add-bool-return-type-to-unlock.patch \
         file://0002-options-Replace-use-of-VLAs-in-C.patch \
         file://0001-rpi-Use-alloca-instead-of-variable-length-arrays.patch \
+        file://0001-ipu3-Use-posix-basename.patch \
 "
 
 SRCREV = "89227a428a82e724548399d35c98ea89566f9045"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
index e8b10bc..2b373d3 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/musicbrainz/libmusicbrainz_git.bb
@@ -7,7 +7,7 @@
 
 PV = "5.1.0+git"
 
-SRCREV = "8be45b12a86bc0e46f2f836c8ac88e1e98d82aee"
+SRCREV = "4655b571a70d73d41467091f59c518517c956198"
 SRC_URI = "git://github.com/metabrainz/libmusicbrainz.git;branch=master;protocol=https \
            file://0001-http-fetch-Pass-a-non-null-buffer-to-ne_set_request_.patch \
            "
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft/0001-Use-BUILD_CC-to-compile-native-tools.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft/0001-Use-BUILD_CC-to-compile-native-tools.patch
deleted file mode 100644
index 2bffd65..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft/0001-Use-BUILD_CC-to-compile-native-tools.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 29217932c34d7e3368764ab64879dc6f1edab1a6 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Jan 2019 11:19:44 -0800
-Subject: [PATCH] Use host compiler to compile native tools
-
-Helps in cross compiling
-
-Upstream-Status: Inappropriate [OE-Specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- CMakeLists.txt | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1085,11 +1085,10 @@ ELSE()
-     SET(BIN2H_COMMAND  "${NATIVE_BIN_DIR}/bin2h")
-     SET(BSINCGEN_COMMAND  "${NATIVE_BIN_DIR}/bsincgen")
-     ADD_CUSTOM_COMMAND(OUTPUT "${BIN2H_COMMAND}" "${BSINCGEN_COMMAND}"
--        COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" "${NATIVE_SRC_DIR}"
-         COMMAND ${CMAKE_COMMAND} -E remove "${BIN2H_COMMAND}" "${BSINCGEN_COMMAND}"
--        COMMAND ${CMAKE_COMMAND} --build . --config "Release"
-+        COMMAND gcc "${NATIVE_SRC_DIR}/bin2h.c" -o "${BIN2H_COMMAND}" -lm
-+        COMMAND gcc "${NATIVE_SRC_DIR}/bsincgen.c" -o "${BSINCGEN_COMMAND}" -lm
-         WORKING_DIRECTORY "${NATIVE_BIN_DIR}"
--        DEPENDS "${NATIVE_SRC_DIR}/CMakeLists.txt"
-         IMPLICIT_DEPENDS
-             C "${NATIVE_SRC_DIR}/bin2h.c"
-             C "${NATIVE_SRC_DIR}/bsincgen.c"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft/0002-makehrtf-Disable-Wstringop-truncation.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft/0002-makehrtf-Disable-Wstringop-truncation.patch
deleted file mode 100644
index 607ddab..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/openal/openal-soft/0002-makehrtf-Disable-Wstringop-truncation.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 07ef86e33ed6f7585f0dfaa1732ea17c816655a4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 14 Jan 2019 11:45:42 -0800
-Subject: [PATCH] makehrtf: Disable Wstringop-truncation
-
-Upstream-Status: Inappropriate [Should be fixed in code]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- utils/makemhr/makemhr.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/utils/makemhr/makemhr.cpp
-+++ b/utils/makemhr/makemhr.cpp
-@@ -161,6 +161,7 @@ enum ChannelIndex : uint {
-  * pattern string are replaced with the replacement string.  The result is
-  * truncated if necessary.
-  */
-+#pragma GCC diagnostic ignored "-Wstringop-truncation"
- static int StrSubst(const char *in, const char *pat, const char *rep, const size_t maxLen, char *out)
- {
-     size_t inLen, patLen, repLen;
-@@ -199,6 +200,7 @@ static int StrSubst(const char *in, cons
-     return !truncated;
- }
- 
-+#pragma GCC diagnostic pop
- 
- /*********************
-  *** Math routines ***
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.3.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.3.bb
deleted file mode 100644
index f1c9f85..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.3.bb
+++ /dev/null
@@ -1,388 +0,0 @@
-SUMMARY     = "Multimedia processing server for Linux"
-DESCRIPTION = "Linux server for handling and routing audio and video streams between applications and multimedia I/O devices"
-HOMEPAGE    = "https://pipewire.org/"
-BUGTRACKER  = "https://gitlab.freedesktop.org/pipewire/pipewire/issues"
-SECTION     = "multimedia"
-
-LICENSE = "MIT & LGPL-2.1-or-later & GPL-2.0-only"
-LIC_FILES_CHKSUM = " \
-    file://LICENSE;md5=2158739e172e58dc9ab1bdd2d6ec9c72 \
-    file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
-"
-
-DEPENDS = "dbus ncurses"
-
-SRCREV = "6ab86209f23a841de7eac6bc0c1009aceb9ffd87"
-SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.0;protocol=https"
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig systemd gettext useradd
-
-USERADD_PACKAGES = "${PN}"
-
-GROUPADD_PARAM:${PN} = "--system pipewire"
-
-USERADD_PARAM:${PN} = "--system --home / --no-create-home \
-                       --comment 'PipeWire multimedia daemon' \
-                       --gid pipewire --groups audio,video \
-                       pipewire"
-
-SYSTEMD_PACKAGES = "${PN}"
-
-# For "EVL", look up https://evlproject.org/ . It involves
-# a specially prepared kernel, and is currently unavailable
-# in Yocto.
-#
-#
-# manpage generation requires xmltoman, which is not available.
-#
-# The session-managers list specifies which session managers Meson
-# shall download (via git clone) and build as subprojects. In OE,
-# this is not how a session manager should be built. Instead, they
-# should be integrated as separate OE recipes. To prevent PipeWire
-# from using this Meson feature, set an empty list.
-# This does not disable support or the need for session managers,
-# it just prevents this subproject feature.
-#
-# AptX and LDAC are not available in OE. Currently, neither
-# are lv2, ROC, and libmysofa.
-#
-# The RTKit module is deprecated in favor of the newer RT module.
-# It still exists for legacy setups that still include it in
-# their PipeWire configuration files.
-EXTRA_OEMESON += " \
-    -Devl=disabled \
-    -Dtests=disabled \
-    -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \
-    -Dsystemd-system-unit-dir=${systemd_system_unitdir} \
-    -Dsystemd-user-unit-dir=${systemd_user_unitdir} \
-    -Dman=disabled \
-    -Dsession-managers='[]' \
-    -Dlv2=disabled \
-    -Droc=disabled \
-    -Dbluez5-codec-aptx=disabled \
-    -Dbluez5-codec-ldac=disabled \
-    -Dlegacy-rtkit=false \
-    -Dlibmysofa=disabled \
-"
-
-# spa alsa plugin code uses typedef redefinition, which is officially a C11 feature.
-# Pipewire builds with 'c_std=gnu99' by default. Recent versions of gcc don't issue this warning in gnu99
-# mode but it looks like clang still does
-CFLAGS:append = " -Wno-typedef-redefinition"
-
-# According to wireplumber documentation only one session manager should be installed at a time
-# Possible options are media-session, which has fewer dependencies but is very simple,
-# or wireplumber, which is more powerful.
-PIPEWIRE_SESSION_MANAGER ??= "wireplumber"
-
-FFMPEG_AVAILABLE = "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'ffmpeg', '', d)}"
-BLUETOOTH_AAC = "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'bluez-aac', '', d)}"
-
-PACKAGECONFIG:class-target ??= " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez bluez-opus ${BLUETOOTH_AAC}', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service systemd-user-service', '', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa vulkan pulseaudio', d)} \
-    ${PIPEWIRE_SESSION_MANAGER} \
-    ${FFMPEG_AVAILABLE} avahi flatpak gstreamer gsettings jack libusb pw-cat raop sndfile v4l2 udev volume webrtc-echo-cancelling libcamera readline \
-"
-
-# "jack" and "pipewire-jack" packageconfigs cannot be both enabled,
-# since "jack" imports libjack, and "pipewire-jack" generates
-# libjack.so* files, thus colliding with the libpack package. This
-# is why these two are marked in their respective packageconfigs
-# as being in conflict.
-PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev,,pipewire-alsa pipewire-alsa-card-profile"
-PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"
-PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc"
-PACKAGECONFIG[bluez-aac] = "-Dbluez5-codec-aac=enabled,-Dbluez5-codec-aac=disabled,fdk-aac"
-PACKAGECONFIG[bluez-opus] = "-Dbluez5-codec-opus=enabled,-Dbluez5-codec-opus=disabled,libopus"
-PACKAGECONFIG[bluez-lc3] = "-Dbluez5-codec-lc3=enabled,-Dbluez5-codec-lc3=disabled,liblc3"
-# From the pipewire git log:
-# "Some Linux phones doesn't use oFono but ModemManager to control the modem."
-# This packageconfig enables modemmanager specific code in the BlueZ backend.
-PACKAGECONFIG[bluez-backend-native-mm] = "-Dbluez5-backend-native-mm=enabled,-Dbluez5-backend-native-mm=disabled,modemmanager"
-PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen-native graphviz-native"
-PACKAGECONFIG[ffmpeg] = "-Dffmpeg=enabled,-Dffmpeg=disabled,ffmpeg"
-PACKAGECONFIG[flatpak] = "-Dflatpak=enabled,-Dflatpak=disabled,glib-2.0"
-PACKAGECONFIG[gsettings] = "-Dgsettings=enabled,-Dgsettings=disabled,glib-2.0"
-PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base,,gstreamer1.0-pipewire"
-PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack,,,pipewire-jack"
-PACKAGECONFIG[libcamera] = "-Dlibcamera=enabled,-Dlibcamera=disabled,libcamera libdrm"
-PACKAGECONFIG[libcanberra] = "-Dlibcanberra=enabled,-Dlibcanberra=disabled,libcanberra"
-PACKAGECONFIG[libusb] = "-Dlibusb=enabled,-Dlibusb=disabled,libusb"
-PACKAGECONFIG[media-session] = ",,,pipewire-media-session,,wireplumber"
-PACKAGECONFIG[pulseaudio] = "-Dlibpulse=enabled,-Dlibpulse=disabled,pulseaudio,,pipewire-pulse"
-PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=enabled,-Dpipewire-alsa=disabled,alsa-lib"
-PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=enabled -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=disabled,jack,,pipewire-jack,jack"
-PACKAGECONFIG[pw-cat] = "-Dpw-cat=enabled,-Dpw-cat=disabled"
-PACKAGECONFIG[raop] = "-Draop=enabled,-Draop=disabled,openssl"
-# Starting with version 0.3.60, readline usage can be turned off in pw-cli.
-# If it is disabled, getline() is used as a fallback.
-PACKAGECONFIG[readline] = "-Dreadline=enabled,-Dreadline=disabled,readline"
-PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,libsdl2"
-PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
-PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
-PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled,systemd"
-# "systemd-user-service" packageconfig will only install service
-# files to rootfs but not enable them as systemd.bbclass
-# currently lacks the feature of enabling user services.
-PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=enabled,-Dsystemd-user-service=disabled,systemd"
-# pw-cat needs sndfile packageconfig to be enabled
-PACKAGECONFIG[udev] = "-Dudev=enabled,-Dudev=disabled,udev"
-PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
-PACKAGECONFIG[volume] = "-Dvolume=enabled,-Dvolume=disabled"
-PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-headers vulkan-loader"
-PACKAGECONFIG[webrtc-echo-cancelling] = "-Decho-cancel-webrtc=enabled,-Decho-cancel-webrtc=disabled,webrtc-audio-processing-1"
-PACKAGECONFIG[wireplumber] = ",,,wireplumber,,media-session"
-
-PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
-PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
-
-SPA_SUBDIR = "spa-0.2"
-PW_MODULE_SUBDIR = "pipewire-0.3"
-
-remove_unused_installed_files() {
-    # jack.conf is used by pipewire-jack (not the JACK SPA plugin).
-    # Remove it if pipewire-jack is not built to avoid creating the
-    # pipewire-jack package.
-    if ${@bb.utils.contains('PACKAGECONFIG', 'pipewire-jack', 'false', 'true', d)}; then
-        rm -f "${D}${datadir}/pipewire/jack.conf"
-    fi
-
-    # minimal.conf is an example of how to minimally configure the
-    # daemon and is not meant to be used for production.
-    rm -f "${D}${datadir}/pipewire/minimal.conf"
-}
-
-do_install[postfuncs] += "remove_unused_installed_files"
-
-python split_dynamic_packages () {
-    # Create packages for each SPA plugin. These plugins are located
-    # in individual subdirectories, so a recursive search is needed.
-    spa_libdir = d.expand('${libdir}/${SPA_SUBDIR}')
-    do_split_packages(d, spa_libdir, r'^libspa-(.*)\.so$', d.expand('${PN}-spa-plugins-%s'), 'PipeWire SPA plugin for %s', extra_depends='', recursive=True)
-
-    # Create packages for each PipeWire module.
-    pw_module_libdir = d.expand('${libdir}/${PW_MODULE_SUBDIR}')
-    do_split_packages(d, pw_module_libdir, r'^libpipewire-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'PipeWire %s module', extra_depends='', recursive=False)
-}
-
-python set_dynamic_metapkg_rdepends () {
-    import os
-    import oe.utils
-
-    if bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('native', d):
-        return
-
-    # Go through all generated SPA plugin and PipeWire module packages
-    # (excluding the main package and the -meta package itself) and
-    # add them to the -meta package as RDEPENDS.
-
-    base_pn = d.getVar('PN')
-
-    spa_pn = base_pn + '-spa-plugins'
-    spa_metapkg =  spa_pn + '-meta'
-
-    pw_module_pn = base_pn + '-modules'
-    pw_module_metapkg =  pw_module_pn + '-meta'
-
-    d.setVar('ALLOW_EMPTY:' + spa_metapkg, "1")
-    d.setVar('FILES:' + spa_metapkg, "")
-
-    d.setVar('ALLOW_EMPTY:' + pw_module_metapkg, "1")
-    d.setVar('FILES:' + pw_module_metapkg, "")
-
-    blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ]
-    spa_metapkg_rdepends = []
-    pw_module_metapkg_rdepends = []
-    pkgdest = d.getVar('PKGDEST')
-
-    for pkg in oe.utils.packages_filter_out_system(d):
-        if pkg in blacklist:
-            continue
-
-        is_spa_pkg = pkg.startswith(spa_pn)
-        is_pw_module_pkg = pkg.startswith(pw_module_pn)
-        if not is_spa_pkg and not is_pw_module_pkg:
-            continue
-
-        if pkg in spa_metapkg_rdepends or pkg in pw_module_metapkg_rdepends:
-            continue
-
-        # See if the package is empty by looking at the contents of its
-        # PKGDEST subdirectory. If this subdirectory is empty, then then
-        # package is empty as well. Empty packages do not get added to
-        # the meta package's RDEPENDS.
-        pkgdir = os.path.join(pkgdest, pkg)
-        if os.path.exists(pkgdir):
-            dir_contents = os.listdir(pkgdir) or []
-        else:
-            dir_contents = []
-        is_empty = len(dir_contents) == 0
-        if not is_empty:
-            if is_spa_pkg:
-                spa_metapkg_rdepends.append(pkg)
-            if is_pw_module_pkg:
-                pw_module_metapkg_rdepends.append(pkg)
-
-    d.setVar('RDEPENDS:' + spa_metapkg, ' '.join(spa_metapkg_rdepends))
-    d.setVar('DESCRIPTION:' + spa_metapkg, spa_pn + ' meta package')
-
-    d.setVar('RDEPENDS:' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends))
-    d.setVar('DESCRIPTION:' + pw_module_metapkg, pw_module_pn + ' meta package')
-}
-
-PACKAGES =+ "\
-    libpipewire \
-    ${PN}-tools \
-    ${PN}-pulse \
-    ${PN}-alsa \
-    ${PN}-jack \
-    ${PN}-spa-plugins \
-    ${PN}-spa-plugins-meta \
-    ${PN}-spa-tools \
-    ${PN}-modules \
-    ${PN}-modules-meta \
-    ${PN}-alsa-card-profile \
-    ${PN}-v4l2 \
-    ${PN}-aes67 \
-    gstreamer1.0-pipewire \
-"
-
-PACKAGES_DYNAMIC = "^${PN}-spa-plugins.* ^${PN}-modules.*"
-PACKAGES_DYNAMIC:class-native = ""
-
-SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd-system-service', 'pipewire.service', '', d)}"
-CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf"
-FILES:${PN} = " \
-    ${datadir}/pipewire \
-    ${systemd_system_unitdir}/pipewire* \
-    ${systemd_user_unitdir} \
-    ${bindir}/pipewire \
-    ${bindir}/pipewire-avb \
-    ${bindir}/pipewire-vulkan \
-"
-
-RRECOMMENDS:${PN}:class-target += " \
-	pipewire-modules-meta \
-	pipewire-spa-plugins-meta \
-"
-
-FILES:${PN}-dev += " \
-    ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \
-"
-
-CONFFILES:libpipewire += "${datadir}/pipewire/client.conf"
-FILES:libpipewire = " \
-    ${datadir}/pipewire/client.conf \
-    ${libdir}/libpipewire-*.so.* \
-"
-# Add the bare minimum modules and plugins required to be able
-# to use libpipewire. Without these, it is essentially unusable.
-RDEPENDS:libpipewire += " \
-    ${PN}-modules-client-node \
-    ${PN}-modules-protocol-native \
-    ${PN}-spa-plugins-support \
-"
-
-FILES:${PN}-tools = " \
-    ${bindir}/pw-cat \
-    ${bindir}/pw-cli \
-    ${bindir}/pw-config \
-    ${bindir}/pw-dot \
-    ${bindir}/pw-dsdplay \
-    ${bindir}/pw-dump \
-    ${bindir}/pw-encplay \
-    ${bindir}/pw-link \
-    ${bindir}/pw-loopback \
-    ${bindir}/pw-metadata \
-    ${bindir}/pw-mididump \
-    ${bindir}/pw-midiplay \
-    ${bindir}/pw-midirecord \
-    ${bindir}/pw-mon \
-    ${bindir}/pw-play \
-    ${bindir}/pw-profiler \
-    ${bindir}/pw-record \
-    ${bindir}/pw-reserve \
-    ${bindir}/pw-top \
-"
-
-# This is a shim daemon that is intended to be used as a
-# drop-in PulseAudio replacement, providing a pulseaudio-compatible
-# socket that can be used by applications that use libpulse.
-CONFFILES:${PN}-pulse += "${datadir}/pipewire/pipewire-pulse.conf"
-FILES:${PN}-pulse = " \
-    ${datadir}/pipewire/pipewire-pulse.conf \
-    ${systemd_system_unitdir}/pipewire-pulse.* \
-    ${systemd_user_unitdir}/pipewire-pulse.* \
-    ${bindir}/pipewire-pulse \
-"
-RDEPENDS:${PN}-pulse += " \
-    ${PN}-modules-protocol-pulse \
-"
-
-# ALSA plugin to redirect audio to pipewire.
-FILES:${PN}-alsa = "\
-    ${libdir}/alsa-lib/* \
-    ${datadir}/alsa/alsa.conf.d/* \
-"
-
-# JACK drop-in libraries to redirect audio to pipewire.
-CONFFILES:${PN}-jack = "${datadir}/pipewire/jack.conf"
-FILES:${PN}-jack = "\
-    ${bindir}/pw-jack \
-    ${datadir}/pipewire/jack.conf \
-    ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \
-"
-
-# Dynamic SPA plugin packages (see set_dynamic_metapkg_rdepends).
-FILES:${PN}-spa-plugins = ""
-RRECOMMENDS:${PN}-spa-plugins += "${PN}-spa-plugins-meta"
-
-FILES:${PN}-spa-plugins-bluez5 += " \
-    ${datadir}/${SPA_SUBDIR}/bluez5/* \
-"
-
-FILES:${PN}-spa-tools = " \
-    ${bindir}/spa-* \
-"
-
-# Dynamic PipeWire module packages (see set_dynamic_metapkg_rdepends).
-FILES:${PN}-modules = ""
-RRECOMMENDS:${PN}-modules += "${PN}-modules-meta"
-
-CONFFILES:${PN}-modules-rt = "${datadir}/pipewire/client-rt.conf"
-FILES:${PN}-modules-rt += " \
-    ${datadir}/pipewire/client-rt.conf \
-    ${sysconfdir}/security/limits.d/* \
-    "
-
-CONFFILES:${PN}-modules-filter-chain = "${datadir}/pipewire/filter-chain/*"
-FILES:${PN}-modules-filter-chain += " \
-    ${datadir}/pipewire/filter-chain/* \
-"
-
-FILES:${PN}-alsa-card-profile = " \
-    ${datadir}/alsa-card-profile/* \
-    ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \
-"
-
-# V4L2 interface emulator for sending/receiving data between PipeWire and V4L2 applications.
-FILES:${PN}-v4l2 += " \
-    ${bindir}/pw-v4l2 \
-    ${libdir}/${PW_MODULE_SUBDIR}/v4l2/libpw-v4l2.so \
-"
-
-# AES67 is a standard for audio over IP, from the Audio Engineering Society (AES).
-FILES:${PN}-aes67 += " \
-    ${bindir}/pipewire-aes67 \
-"
-
-FILES:gstreamer1.0-pipewire = " \
-    ${libdir}/gstreamer-1.0/* \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.4.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.4.bb
new file mode 100644
index 0000000..e9c83dd
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.4.bb
@@ -0,0 +1,388 @@
+SUMMARY     = "Multimedia processing server for Linux"
+DESCRIPTION = "Linux server for handling and routing audio and video streams between applications and multimedia I/O devices"
+HOMEPAGE    = "https://pipewire.org/"
+BUGTRACKER  = "https://gitlab.freedesktop.org/pipewire/pipewire/issues"
+SECTION     = "multimedia"
+
+LICENSE = "MIT & LGPL-2.1-or-later & GPL-2.0-only"
+LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=2158739e172e58dc9ab1bdd2d6ec9c72 \
+    file://COPYING;md5=97be96ca4fab23e9657ffa590b931c1a \
+"
+
+DEPENDS = "dbus ncurses"
+
+SRCREV = "f2874ad1c2f7f0b9a1da05cc4f402b3ea3761ee6"
+SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.0;protocol=https"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd gettext useradd
+
+USERADD_PACKAGES = "${PN}"
+
+GROUPADD_PARAM:${PN} = "--system pipewire"
+
+USERADD_PARAM:${PN} = "--system --home / --no-create-home \
+                       --comment 'PipeWire multimedia daemon' \
+                       --gid pipewire --groups audio,video \
+                       pipewire"
+
+SYSTEMD_PACKAGES = "${PN}"
+
+# For "EVL", look up https://evlproject.org/ . It involves
+# a specially prepared kernel, and is currently unavailable
+# in Yocto.
+#
+#
+# manpage generation requires xmltoman, which is not available.
+#
+# The session-managers list specifies which session managers Meson
+# shall download (via git clone) and build as subprojects. In OE,
+# this is not how a session manager should be built. Instead, they
+# should be integrated as separate OE recipes. To prevent PipeWire
+# from using this Meson feature, set an empty list.
+# This does not disable support or the need for session managers,
+# it just prevents this subproject feature.
+#
+# AptX and LDAC are not available in OE. Currently, neither
+# are lv2, ROC, and libmysofa.
+#
+# The RTKit module is deprecated in favor of the newer RT module.
+# It still exists for legacy setups that still include it in
+# their PipeWire configuration files.
+EXTRA_OEMESON += " \
+    -Devl=disabled \
+    -Dtests=disabled \
+    -Dudevrulesdir=${nonarch_base_libdir}/udev/rules.d/ \
+    -Dsystemd-system-unit-dir=${systemd_system_unitdir} \
+    -Dsystemd-user-unit-dir=${systemd_user_unitdir} \
+    -Dman=disabled \
+    -Dsession-managers='[]' \
+    -Dlv2=disabled \
+    -Droc=disabled \
+    -Dbluez5-codec-aptx=disabled \
+    -Dbluez5-codec-ldac=disabled \
+    -Dlegacy-rtkit=false \
+    -Dlibmysofa=disabled \
+"
+
+# spa alsa plugin code uses typedef redefinition, which is officially a C11 feature.
+# Pipewire builds with 'c_std=gnu99' by default. Recent versions of gcc don't issue this warning in gnu99
+# mode but it looks like clang still does
+CFLAGS:append = " -Wno-typedef-redefinition"
+
+# According to wireplumber documentation only one session manager should be installed at a time
+# Possible options are media-session, which has fewer dependencies but is very simple,
+# or wireplumber, which is more powerful.
+PIPEWIRE_SESSION_MANAGER ??= "wireplumber"
+
+FFMPEG_AVAILABLE = "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'ffmpeg', '', d)}"
+BLUETOOTH_AAC = "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'bluez-aac', '', d)}"
+
+PACKAGECONFIG:class-target ??= " \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez bluez-opus ${BLUETOOTH_AAC}', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service systemd-user-service', '', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa vulkan pulseaudio', d)} \
+    ${PIPEWIRE_SESSION_MANAGER} \
+    ${FFMPEG_AVAILABLE} avahi flatpak gstreamer gsettings jack libusb pw-cat raop sndfile v4l2 udev volume webrtc-echo-cancelling libcamera readline \
+"
+
+# "jack" and "pipewire-jack" packageconfigs cannot be both enabled,
+# since "jack" imports libjack, and "pipewire-jack" generates
+# libjack.so* files, thus colliding with the libpack package. This
+# is why these two are marked in their respective packageconfigs
+# as being in conflict.
+PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev,,pipewire-alsa pipewire-alsa-card-profile"
+PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"
+PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc"
+PACKAGECONFIG[bluez-aac] = "-Dbluez5-codec-aac=enabled,-Dbluez5-codec-aac=disabled,fdk-aac"
+PACKAGECONFIG[bluez-opus] = "-Dbluez5-codec-opus=enabled,-Dbluez5-codec-opus=disabled,libopus"
+PACKAGECONFIG[bluez-lc3] = "-Dbluez5-codec-lc3=enabled,-Dbluez5-codec-lc3=disabled,liblc3"
+# From the pipewire git log:
+# "Some Linux phones doesn't use oFono but ModemManager to control the modem."
+# This packageconfig enables modemmanager specific code in the BlueZ backend.
+PACKAGECONFIG[bluez-backend-native-mm] = "-Dbluez5-backend-native-mm=enabled,-Dbluez5-backend-native-mm=disabled,modemmanager"
+PACKAGECONFIG[docs] = "-Ddocs=enabled,-Ddocs=disabled,doxygen-native graphviz-native"
+PACKAGECONFIG[ffmpeg] = "-Dffmpeg=enabled,-Dffmpeg=disabled,ffmpeg"
+PACKAGECONFIG[flatpak] = "-Dflatpak=enabled,-Dflatpak=disabled,glib-2.0"
+PACKAGECONFIG[gsettings] = "-Dgsettings=enabled,-Dgsettings=disabled,glib-2.0"
+PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base,,gstreamer1.0-pipewire"
+PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack,,,pipewire-jack"
+PACKAGECONFIG[libcamera] = "-Dlibcamera=enabled,-Dlibcamera=disabled,libcamera libdrm"
+PACKAGECONFIG[libcanberra] = "-Dlibcanberra=enabled,-Dlibcanberra=disabled,libcanberra"
+PACKAGECONFIG[libusb] = "-Dlibusb=enabled,-Dlibusb=disabled,libusb"
+PACKAGECONFIG[media-session] = ",,,pipewire-media-session,,wireplumber"
+PACKAGECONFIG[pulseaudio] = "-Dlibpulse=enabled,-Dlibpulse=disabled,pulseaudio,,pipewire-pulse"
+PACKAGECONFIG[pipewire-alsa] = "-Dpipewire-alsa=enabled,-Dpipewire-alsa=disabled,alsa-lib"
+PACKAGECONFIG[pipewire-jack] = "-Dpipewire-jack=enabled -Dlibjack-path=${libdir}/${PW_MODULE_SUBDIR}/jack,-Dpipewire-jack=disabled,jack,,pipewire-jack,jack"
+PACKAGECONFIG[pw-cat] = "-Dpw-cat=enabled,-Dpw-cat=disabled"
+PACKAGECONFIG[raop] = "-Draop=enabled,-Draop=disabled,openssl"
+# Starting with version 0.3.60, readline usage can be turned off in pw-cli.
+# If it is disabled, getline() is used as a fallback.
+PACKAGECONFIG[readline] = "-Dreadline=enabled,-Dreadline=disabled,readline"
+PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,libsdl2"
+PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
+PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled,systemd"
+# "systemd-user-service" packageconfig will only install service
+# files to rootfs but not enable them as systemd.bbclass
+# currently lacks the feature of enabling user services.
+PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=enabled,-Dsystemd-user-service=disabled,systemd"
+# pw-cat needs sndfile packageconfig to be enabled
+PACKAGECONFIG[udev] = "-Dudev=enabled,-Dudev=disabled,udev"
+PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
+PACKAGECONFIG[volume] = "-Dvolume=enabled,-Dvolume=disabled"
+PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-headers vulkan-loader"
+PACKAGECONFIG[webrtc-echo-cancelling] = "-Decho-cancel-webrtc=enabled,-Decho-cancel-webrtc=disabled,webrtc-audio-processing-1"
+PACKAGECONFIG[wireplumber] = ",,,wireplumber,,media-session"
+
+PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
+PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
+
+SPA_SUBDIR = "spa-0.2"
+PW_MODULE_SUBDIR = "pipewire-0.3"
+
+remove_unused_installed_files() {
+    # jack.conf is used by pipewire-jack (not the JACK SPA plugin).
+    # Remove it if pipewire-jack is not built to avoid creating the
+    # pipewire-jack package.
+    if ${@bb.utils.contains('PACKAGECONFIG', 'pipewire-jack', 'false', 'true', d)}; then
+        rm -f "${D}${datadir}/pipewire/jack.conf"
+    fi
+
+    # minimal.conf is an example of how to minimally configure the
+    # daemon and is not meant to be used for production.
+    rm -f "${D}${datadir}/pipewire/minimal.conf"
+}
+
+do_install[postfuncs] += "remove_unused_installed_files"
+
+python split_dynamic_packages () {
+    # Create packages for each SPA plugin. These plugins are located
+    # in individual subdirectories, so a recursive search is needed.
+    spa_libdir = d.expand('${libdir}/${SPA_SUBDIR}')
+    do_split_packages(d, spa_libdir, r'^libspa-(.*)\.so$', d.expand('${PN}-spa-plugins-%s'), 'PipeWire SPA plugin for %s', extra_depends='', recursive=True)
+
+    # Create packages for each PipeWire module.
+    pw_module_libdir = d.expand('${libdir}/${PW_MODULE_SUBDIR}')
+    do_split_packages(d, pw_module_libdir, r'^libpipewire-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'PipeWire %s module', extra_depends='', recursive=False)
+}
+
+python set_dynamic_metapkg_rdepends () {
+    import os
+    import oe.utils
+
+    if bb.data.inherits_class('nativesdk', d) or bb.data.inherits_class('native', d):
+        return
+
+    # Go through all generated SPA plugin and PipeWire module packages
+    # (excluding the main package and the -meta package itself) and
+    # add them to the -meta package as RDEPENDS.
+
+    base_pn = d.getVar('PN')
+
+    spa_pn = base_pn + '-spa-plugins'
+    spa_metapkg =  spa_pn + '-meta'
+
+    pw_module_pn = base_pn + '-modules'
+    pw_module_metapkg =  pw_module_pn + '-meta'
+
+    d.setVar('ALLOW_EMPTY:' + spa_metapkg, "1")
+    d.setVar('FILES:' + spa_metapkg, "")
+
+    d.setVar('ALLOW_EMPTY:' + pw_module_metapkg, "1")
+    d.setVar('FILES:' + pw_module_metapkg, "")
+
+    blacklist = [ spa_pn, spa_metapkg, pw_module_pn, pw_module_metapkg ]
+    spa_metapkg_rdepends = []
+    pw_module_metapkg_rdepends = []
+    pkgdest = d.getVar('PKGDEST')
+
+    for pkg in oe.utils.packages_filter_out_system(d):
+        if pkg in blacklist:
+            continue
+
+        is_spa_pkg = pkg.startswith(spa_pn)
+        is_pw_module_pkg = pkg.startswith(pw_module_pn)
+        if not is_spa_pkg and not is_pw_module_pkg:
+            continue
+
+        if pkg in spa_metapkg_rdepends or pkg in pw_module_metapkg_rdepends:
+            continue
+
+        # See if the package is empty by looking at the contents of its
+        # PKGDEST subdirectory. If this subdirectory is empty, then then
+        # package is empty as well. Empty packages do not get added to
+        # the meta package's RDEPENDS.
+        pkgdir = os.path.join(pkgdest, pkg)
+        if os.path.exists(pkgdir):
+            dir_contents = os.listdir(pkgdir) or []
+        else:
+            dir_contents = []
+        is_empty = len(dir_contents) == 0
+        if not is_empty:
+            if is_spa_pkg:
+                spa_metapkg_rdepends.append(pkg)
+            if is_pw_module_pkg:
+                pw_module_metapkg_rdepends.append(pkg)
+
+    d.setVar('RDEPENDS:' + spa_metapkg, ' '.join(spa_metapkg_rdepends))
+    d.setVar('DESCRIPTION:' + spa_metapkg, spa_pn + ' meta package')
+
+    d.setVar('RDEPENDS:' + pw_module_metapkg, ' '.join(pw_module_metapkg_rdepends))
+    d.setVar('DESCRIPTION:' + pw_module_metapkg, pw_module_pn + ' meta package')
+}
+
+PACKAGES =+ "\
+    libpipewire \
+    ${PN}-tools \
+    ${PN}-pulse \
+    ${PN}-alsa \
+    ${PN}-jack \
+    ${PN}-spa-plugins \
+    ${PN}-spa-plugins-meta \
+    ${PN}-spa-tools \
+    ${PN}-modules \
+    ${PN}-modules-meta \
+    ${PN}-alsa-card-profile \
+    ${PN}-v4l2 \
+    ${PN}-aes67 \
+    gstreamer1.0-pipewire \
+"
+
+PACKAGES_DYNAMIC = "^${PN}-spa-plugins.* ^${PN}-modules.*"
+PACKAGES_DYNAMIC:class-native = ""
+
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd-system-service', 'pipewire.service', '', d)}"
+CONFFILES:${PN} += "${datadir}/pipewire/pipewire.conf"
+FILES:${PN} = " \
+    ${datadir}/pipewire \
+    ${systemd_system_unitdir}/pipewire* \
+    ${systemd_user_unitdir} \
+    ${bindir}/pipewire \
+    ${bindir}/pipewire-avb \
+    ${bindir}/pipewire-vulkan \
+"
+
+RRECOMMENDS:${PN}:class-target += " \
+	pipewire-modules-meta \
+	pipewire-spa-plugins-meta \
+"
+
+FILES:${PN}-dev += " \
+    ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so \
+"
+
+CONFFILES:libpipewire += "${datadir}/pipewire/client.conf"
+FILES:libpipewire = " \
+    ${datadir}/pipewire/client.conf \
+    ${libdir}/libpipewire-*.so.* \
+"
+# Add the bare minimum modules and plugins required to be able
+# to use libpipewire. Without these, it is essentially unusable.
+RDEPENDS:libpipewire += " \
+    ${PN}-modules-client-node \
+    ${PN}-modules-protocol-native \
+    ${PN}-spa-plugins-support \
+"
+
+FILES:${PN}-tools = " \
+    ${bindir}/pw-cat \
+    ${bindir}/pw-cli \
+    ${bindir}/pw-config \
+    ${bindir}/pw-dot \
+    ${bindir}/pw-dsdplay \
+    ${bindir}/pw-dump \
+    ${bindir}/pw-encplay \
+    ${bindir}/pw-link \
+    ${bindir}/pw-loopback \
+    ${bindir}/pw-metadata \
+    ${bindir}/pw-mididump \
+    ${bindir}/pw-midiplay \
+    ${bindir}/pw-midirecord \
+    ${bindir}/pw-mon \
+    ${bindir}/pw-play \
+    ${bindir}/pw-profiler \
+    ${bindir}/pw-record \
+    ${bindir}/pw-reserve \
+    ${bindir}/pw-top \
+"
+
+# This is a shim daemon that is intended to be used as a
+# drop-in PulseAudio replacement, providing a pulseaudio-compatible
+# socket that can be used by applications that use libpulse.
+CONFFILES:${PN}-pulse += "${datadir}/pipewire/pipewire-pulse.conf"
+FILES:${PN}-pulse = " \
+    ${datadir}/pipewire/pipewire-pulse.conf \
+    ${systemd_system_unitdir}/pipewire-pulse.* \
+    ${systemd_user_unitdir}/pipewire-pulse.* \
+    ${bindir}/pipewire-pulse \
+"
+RDEPENDS:${PN}-pulse += " \
+    ${PN}-modules-protocol-pulse \
+"
+
+# ALSA plugin to redirect audio to pipewire.
+FILES:${PN}-alsa = "\
+    ${libdir}/alsa-lib/* \
+    ${datadir}/alsa/alsa.conf.d/* \
+"
+
+# JACK drop-in libraries to redirect audio to pipewire.
+CONFFILES:${PN}-jack = "${datadir}/pipewire/jack.conf"
+FILES:${PN}-jack = "\
+    ${bindir}/pw-jack \
+    ${datadir}/pipewire/jack.conf \
+    ${libdir}/${PW_MODULE_SUBDIR}/jack/libjack*.so.* \
+"
+
+# Dynamic SPA plugin packages (see set_dynamic_metapkg_rdepends).
+FILES:${PN}-spa-plugins = ""
+RRECOMMENDS:${PN}-spa-plugins += "${PN}-spa-plugins-meta"
+
+FILES:${PN}-spa-plugins-bluez5 += " \
+    ${datadir}/${SPA_SUBDIR}/bluez5/* \
+"
+
+FILES:${PN}-spa-tools = " \
+    ${bindir}/spa-* \
+"
+
+# Dynamic PipeWire module packages (see set_dynamic_metapkg_rdepends).
+FILES:${PN}-modules = ""
+RRECOMMENDS:${PN}-modules += "${PN}-modules-meta"
+
+CONFFILES:${PN}-modules-rt = "${datadir}/pipewire/client-rt.conf"
+FILES:${PN}-modules-rt += " \
+    ${datadir}/pipewire/client-rt.conf \
+    ${sysconfdir}/security/limits.d/* \
+    "
+
+CONFFILES:${PN}-modules-filter-chain = "${datadir}/pipewire/filter-chain/*"
+FILES:${PN}-modules-filter-chain += " \
+    ${datadir}/pipewire/filter-chain/* \
+"
+
+FILES:${PN}-alsa-card-profile = " \
+    ${datadir}/alsa-card-profile/* \
+    ${nonarch_base_libdir}/udev/rules.d/90-pipewire-alsa.rules \
+"
+
+# V4L2 interface emulator for sending/receiving data between PipeWire and V4L2 applications.
+FILES:${PN}-v4l2 += " \
+    ${bindir}/pw-v4l2 \
+    ${libdir}/${PW_MODULE_SUBDIR}/v4l2/libpw-v4l2.so \
+"
+
+# AES67 is a standard for audio over IP, from the Audio Engineering Society (AES).
+FILES:${PN}-aes67 += " \
+    ${bindir}/pipewire-aes67 \
+"
+
+FILES:gstreamer1.0-pipewire = " \
+    ${libdir}/gstreamer-1.0/* \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
new file mode 100644
index 0000000..af504be
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp/configure.patch
@@ -0,0 +1,56 @@
+From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
+Date: Thu, 14 Mar 2024 09:41:57 +0100
+Subject: [PATCH 2/2] configure: Replace manual search for libxml by
+ AC_CHECK_LIB
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The manual search fails if the include directories (and build environment)
+are located somewhere else.
+
+Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
+Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
+---
+
+ERROR: spandsp-3.0.0+git-r0 do_configure: QA Issue: This autoconf log indicates errors, it looked at host include and/or library paths while determining system capabilities.
+
+ configure.ac | 22 +++++-----------------
+ 1 file changed, 5 insertions(+), 17 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 2140837..b5138d6 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -185,23 +185,11 @@ then
+ fi
+ 
+ # Determine XML2 include path
+-AC_MSG_CHECKING(for libxml/xmlmemory.h)
+-
+-# Can we include headers using system include dirs?
+-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE=" "],[XML2_INCLUDE=])
+-
+-# Hunt through several possible directories to find the includes for libxml2
+-if test "x$XML2_INCLUDE" = "x"; then
+-    old_CPPFLAGS="$CPPFLAGS"
+-    for i in $xml2_include_dir /usr/include /usr/local/include /usr/include/libxml2 /usr/local/include/libxml2 ; do
+-        CPPFLAGS="$old_CPPFLAGS -I$i"
+-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <libxml/xmlmemory.h>]], [[int a = 1;]])],[XML2_INCLUDE="-I$i"],[XML2_INCLUDE=
+-        ])
+-        if test "x$XML2_INCLUDE" != "x"; then
+-            break;
+-        fi
+-    done
+-    CPPFLAGS="$old_CPPFLAGS $XML2_INCLUDE"
++AC_CHECK_LIB([xml2], [xmlParseFile], [libxml2_found=yes])
++if test "$libxml2_found" = "yes" ; then
++    AC_DEFINE(HAVE_LIBXML2,1,[defined when libxml2 is available])
++else
++    AC_MSG_WARN([libxml2 not found. Disabling cache.])
+ fi
+ 
+ AC_CHECK_HEADERS([libxml/xmlmemory.h])
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
new file mode 100644
index 0000000..d3eb047
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp/makefile.patch
@@ -0,0 +1,161 @@
+From: =?UTF-8?q?J=C3=B6rg=20Sommer?= <joerg.sommer@navimatix.de>
+Date: Thu, 14 Mar 2024 08:08:13 +0100
+Subject: [PATCH 1/2] configure: Use AX_PROG_CC_FOR_BUILD for cross compiling
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The macro AX_PROG_CC_FOR_BUILD [1] sets the variables CC_FOR_BUILD and
+..._FLAGS_FOR_BUILD they can be used [2] to build binaries used at compile
+time.
+
+[1]: https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
+[2]: https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
+
+Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
+Upstream-Status: Submitted [https://github.com/freeswitch/spandsp/pull/74]
+---
+ configure.ac    | 49 +-------------------------------------------
+ src/Makefile.am | 54 +++++++++++++++++++++++++------------------------
+ 2 files changed, 29 insertions(+), 74 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 96fd022..2140837 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -55,54 +55,7 @@ AC_LANG([C])
+ 
+ AX_COMPILER_VENDOR
+ 
+-if test "${build}" != "${host}"
+-then
+-    # If we are doing a Canadian Cross, in which the host and build systems
+-    # are not the same, we set reasonable default values for the tools.
+-
+-    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
+-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
+-    CC=${CC-${host_alias}-gcc}
+-    CFLAGS=${CFLAGS-"-g -O2"}
+-    CXX=${CXX-${host_alias}-c++}
+-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
+-else
+-    # Set reasonable default values for some tools even if not Canadian.
+-    # Of course, these are different reasonable default values, originally
+-    # specified directly in the Makefile.
+-    # We don't export, so that autoconf can do its job.
+-    # Note that all these settings are above the fragment inclusion point
+-    # in Makefile.in, so can still be overridden by fragments.
+-    # This is all going to change when we autoconfiscate...
+-    CC_FOR_BUILD="\$(CC)"
+-    CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
+-    AC_PROG_CC
+-
+-    # We must set the default linker to the linker used by gcc for the correct
+-    # operation of libtool.  If LD is not defined and we are using gcc, try to
+-    # set the LD default to the ld used by gcc.
+-    if test -z "$LD"
+-    then
+-        if test "$GCC" = yes
+-        then
+-            case $build in
+-            *-*-mingw*)
+-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
+-            *)
+-                gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
+-            esac
+-            case $gcc_prog_ld in
+-            # Accept absolute paths.
+-            [[\\/]* | [A-Za-z]:[\\/]*)]
+-                LD="$gcc_prog_ld" ;;
+-            esac
+-        fi
+-    fi
+-
+-    CXX=${CXX-"c++"}
+-    CFLAGS=${CFLAGS-"-g -O2"}
+-    CXXFLAGS=${CXXFLAGS-"-g -O2"}
+-fi
++AX_PROG_CC_FOR_BUILD
+ 
+ AC_DEFUN([REMOVE_FROM_VAR],[
+     new_val=""
+diff --git a/src/Makefile.am b/src/Makefile.am
+index e05fad5..9b409a1 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -386,44 +386,46 @@ noinst_HEADERS = cielab_luts.h \
+                  v34_tx_pre_emphasis_filters.h \
+                  v34_tables.h
+ 
+-make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
+-	$(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT) $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
++LINK_FOR_BUILD.c = $(CC_FOR_BUILD) -DHAVE_CONFIG_H -I$(top_builddir)/src $(CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(TARGET_ARCH_FOR_BUILD)
+ 
+-make_cielab_luts$(EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
+-	$(CC_FOR_BUILD) -o make_cielab_luts$(EXEEXT) $(top_srcdir)/src/make_cielab_luts.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_at_dictionary$(BUILD_EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
++	$(LINK_FOR_BUILD.c) -o $@ $^
+ 
+-make_math_fixed_tables$(EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
+-	$(CC_FOR_BUILD) -o make_math_fixed_tables$(EXEEXT) $(top_srcdir)/src/make_math_fixed_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_cielab_luts$(BUILD_EXEEXT): $(top_srcdir)/src/make_cielab_luts.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_modem_filter$(EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
+-	$(CC_FOR_BUILD) -o make_modem_filter$(EXEEXT) $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_math_fixed_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_math_fixed_tables.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_modem_godard_coefficients$(EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
+-	$(CC_FOR_BUILD) -o make_modem_godard_coefficients$(EXEEXT) $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_modem_filter$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_filter.c $(top_srcdir)/src/filter_tools.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_t43_gray_code_tables$(EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
+-	$(CC_FOR_BUILD) -o make_t43_gray_code_tables$(EXEEXT) $(top_srcdir)/src/make_t43_gray_code_tables.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_modem_godard_coefficients$(BUILD_EXEEXT): $(top_srcdir)/src/make_modem_godard_coefficients.c $(top_srcdir)/src/filter_tools.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v17_v32_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v17_v32_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_t43_gray_code_tables$(BUILD_EXEEXT): $(top_srcdir)/src/make_t43_gray_code_tables.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v17_v32_convolutional_encoder$(EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v17_v32_convolutional_encoder$(EXEEXT) $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v17_v32_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v29_constellation_map$(EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v29_constellation_map$(EXEEXT) $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v17_v32_convolutional_encoder$(BUILD_EXEEXT): $(top_srcdir)/src/make_v17_v32_convolutional_encoder.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v34_convolutional_coders$(EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
+-	$(CC_FOR_BUILD) -o make_v34_convolutional_coders$(EXEEXT) $(top_srcdir)/src/make_v34_convolutional_coders.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v29_constellation_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v29_constellation_map.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v34_probe_signals$(EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
+-	$(CC_FOR_BUILD) -o make_v34_probe_signals$(EXEEXT) $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c -DHAVE_CONFIG_H -I$(top_builddir)/src -lm
++make_v34_convolutional_coders$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_convolutional_coders.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -lm
+ 
+-make_v34_shell_map$(EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
+-	$(CC_FOR_BUILD) -o make_v34_shell_map$(EXEEXT) $(top_srcdir)/src/make_v34_shell_map.c -DHAVE_CONFIG_H -I$(top_builddir)/src
++make_v34_probe_signals$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_probe_signals.c $(top_srcdir)/src/g711.c $(top_srcdir)/src/alloc.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/src -lm
+ 
+-make_v34_tx_pre_emphasis_filters$(EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
+-	$(CC_FOR_BUILD) -o make_v34_tx_pre_emphasis_filters$(EXEEXT) $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c -DHAVE_CONFIG_H -I$(top_builddir)/src -I$(top_builddir)/tools -lm
++make_v34_shell_map$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_shell_map.c
++	$(LINK_FOR_BUILD.c) -o $@ $^
++
++make_v34_tx_pre_emphasis_filters$(BUILD_EXEEXT): $(top_srcdir)/src/make_v34_tx_pre_emphasis_filters.c $(top_srcdir)/tools/meteor-engine.c
++	$(LINK_FOR_BUILD.c) -o $@ $^ -I$(top_srcdir)/tools -lm
+ 
+ # We need to run make_at_dictionary, so it generates the
+ # at_interpreter_dictionary.h file
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
new file mode 100644
index 0000000..f115553
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/spandsp/spandsp_git.bb
@@ -0,0 +1,50 @@
+SUMMARY = "A DSP library for telephony"
+DESCRIPTION = "\
+    SpanDSP is a low-level signal processing library that modulates and \
+    demodulates signals commonly used in telephony, such as the \"noise\" \
+    generated by a fax modem or DTMF touchpad. \
+"
+HOMEPAGE = "https://www.soft-switch.org/"
+BUGTRACKER = "https://github.com/freeswitch/spandsp/issues"
+SECTION = "libs"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8791c23ddf418deb5be264cffb5fa6bc"
+
+DEPENDS = "\
+    libxml2 \
+    tiff \
+    tiff-native \
+"
+
+PV = "3.0.0+git"
+
+SRC_URI = "\
+    git://github.com/freeswitch/spandsp.git;protocol=https;branch=master \
+    file://configure.patch \
+    file://makefile.patch \
+"
+# Fails to build with Clang since 5394b2cae6c482ccb835335b769469977e6802ae
+# https://github.com/freeswitch/spandsp/issues/67
+# https://lists.openembedded.org/g/openembedded-devel/message/109325
+SRCREV = "df1282eb9af538ab1aadb6d66146e258451d4fe4"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+PACKAGECONFIG ?= ""
+
+PACKAGECONFIG[mmx] = "--enable-mmx,--disable-mmx"
+PACKAGECONFIG[sse] = "--enable-sse,--disable-sse"
+PACKAGECONFIG[sse2] = "--enable-sse2,--disable-sse2"
+PACKAGECONFIG[sse3] = "--enable-sse3,--disable-sse3"
+PACKAGECONFIG[ssse3] = "--enable-ssse3,--disable-ssse3"
+PACKAGECONFIG[sse4-1] = "--enable-sse4-1,--disable-sse4-1"
+PACKAGECONFIG[sse4-2] = "--enable-sse4-2,--disable-sse4-2"
+PACKAGECONFIG[avx] = "--enable-avx,--disable-avx"
+PACKAGECONFIG[avx2] = "--enable-avx2,--disable-avx2"
+PACKAGECONFIG[neon] = "--enable-neon,--disable-neon"
+PACKAGECONFIG[fixed-point] = "--enable-fixed-point,--disable-fixed-point"
+PACKAGECONFIG[v32bis] = "--enable-v32bis,--disable-v32bis"
+PACKAGECONFIG[v34] = "--enable-v34,--disable-v34"
+PACKAGECONFIG[sslfax] = "--enable-sslfax,--disable-sslfax"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch
index cc65af0..d6ff0b2 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-make-opencv-configurable.patch
@@ -7,7 +7,7 @@
 
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1892,7 +1892,16 @@ PKG_ENABLE_MODULES_VLC([BLURAY], [libblu
+@@ -1891,7 +1891,16 @@ PKG_ENABLE_MODULES_VLC([BLURAY], [libblu
  dnl
  dnl  OpenCV wrapper and example filters
  dnl
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-taglib-Fix-build-on-x86-32-bit.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-taglib-Fix-build-on-x86-32-bit.patch
new file mode 100644
index 0000000..2dff9b6
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0001-taglib-Fix-build-on-x86-32-bit.patch
@@ -0,0 +1,50 @@
+From 5b921009b0db2c5c15aef7ce241d3c81f9c272c9 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Mar 2024 12:26:39 -0800
+Subject: [PATCH] taglib: Fix build on x86 32-bit
+
+While compiling with clang, there are errors seen such as
+on function override signature mismatches
+
+meta_engine/taglib.cpp:240:10: error: virtual function 'tell' has a different return type ('long') than the function it overrides (which has return type 'offset_t' (aka 'long long'))
+  240 |     long tell() const
+      |     ~~~~ ^
+/mnt/b/yoe/master/build/tmp/work/core2-32-yoe-linux/vlc/3.0.20/recipe-sysroot/usr/include/taglib/tiostream.h:156:22: note: overridden virtual function is here
+  156 |     virtual offset_t tell() const = 0;
+      |             ~~~~~~~~ ^
+meta_engine/taglib.cpp:245:10: error: virtual function 'length' has a different return type ('long') than the function it overrides (which has return type 'offset_t' (aka 'long long'))
+  245 |     long length()
+      |     ~~~~ ^
+/mnt/b/yoe/master/build/tmp/work/core2-32-yoe-linux/vlc/3.0.20/recipe-sysroot/usr/include/taglib/tiostream.h:161:22: note: overridden virtual function is here
+  161 |     virtual offset_t length() = 0;
+      |             ~~~~~~~~ ^
+
+Upstream-Status: Submitted [https://mailman.videolan.org/pipermail/vlc-devel/2024-March/143639.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/meta_engine/taglib.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp
+index f371485008..129fdf55f1 100644
+--- a/modules/meta_engine/taglib.cpp
++++ b/modules/meta_engine/taglib.cpp
+@@ -237,12 +237,12 @@ public:
+         return;
+     }
+ 
+-    long tell() const
++    offset_t tell() const
+     {
+-        return m_previousPos;
++        return (offset_t)m_previousPos;
+     }
+ 
+-    long length()
++    offset_t length()
+     {
+         uint64_t i_size;
+         if (vlc_stream_GetSize( m_stream, &i_size ) != VLC_SUCCESS)
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch
index 8ecddd3..f68da33 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0002-use-vorbisidec.patch
@@ -6,7 +6,7 @@
 
 --- a/modules/codec/Makefile.am
 +++ b/modules/codec/Makefile.am
-@@ -321,7 +321,7 @@ codec_LTLIBRARIES += $(LTLIBdaala)
+@@ -324,7 +324,7 @@ codec_LTLIBRARIES += $(LTLIBdaala)
  libtremor_plugin_la_SOURCES = codec/vorbis.c
  libtremor_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) -DMODULE_NAME_IS_tremor
  libtremor_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
index b9f5ad5..6659a44a 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0004-Use-packageconfig-to-detect-mmal-support.patch
@@ -16,7 +16,7 @@
 
 --- a/configure.ac
 +++ b/configure.ac
-@@ -3461,27 +3461,18 @@ AC_ARG_ENABLE(mmal,
+@@ -3460,27 +3460,18 @@ AC_ARG_ENABLE(mmal,
    AS_HELP_STRING([--enable-mmal],
      [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
  if test "${enable_mmal}" != "no"; then
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch
index cbf4f2b..89e7d58 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0005-ioctl-does-not-have-same-signature-between-glibc-and.patch
@@ -10,11 +10,9 @@
  modules/access/v4l2/v4l2.h | 4 ++++
  2 files changed, 8 insertions(+)
 
-diff --git a/modules/access/v4l2/lib.c b/modules/access/v4l2/lib.c
-index b212e1bc5f..ff7c66bf35 100644
 --- a/modules/access/v4l2/lib.c
 +++ b/modules/access/v4l2/lib.c
-@@ -43,7 +43,11 @@ int (*v4l2_fd_open) (int, int) = fd_open;
+@@ -49,7 +49,11 @@ int (*v4l2_fd_open) (int, int) = fd_open
  //int (*v4l2_open) (const char *, int, ...) = open;
  //int (*v4l2_dup) (const char *, int, ...) = dup;
  int (*v4l2_close) (int) = close;
@@ -26,11 +24,9 @@
  ssize_t (*v4l2_read) (int, void *, size_t) = read;
  //ssize_t (*v4l2_write) (int, const void *, size_t) = write;
  void * (*v4l2_mmap) (void *, size_t, int, int, int, int64_t) = mmap;
-diff --git a/modules/access/v4l2/v4l2.h b/modules/access/v4l2/v4l2.h
-index ac4562e269..727e83e9b1 100644
 --- a/modules/access/v4l2/v4l2.h
 +++ b/modules/access/v4l2/v4l2.h
-@@ -23,7 +23,11 @@
+@@ -28,7 +28,11 @@
  /* libv4l2 functions */
  extern int (*v4l2_fd_open) (int, int);
  extern int (*v4l2_close) (int);
@@ -42,6 +38,3 @@
  extern ssize_t (*v4l2_read) (int, void *, size_t);
  extern void * (*v4l2_mmap) (void *, size_t, int, int, int, int64_t);
  extern int (*v4l2_munmap) (void *, size_t);
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch
index 4128db1..b158328 100644
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/0006-configure-Disable-incompatible-function-pointer-type.patch
@@ -10,11 +10,9 @@
  configure.ac | 5 +++++
  1 file changed, 5 insertions(+)
 
-diff --git a/configure.ac b/configure.ac
-index 9f1c099e13..8e45a05808 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -98,6 +98,11 @@ AS_IF([test -n "${with_binary_version}"],[
+@@ -98,6 +98,11 @@ AS_IF([test -n "${with_binary_version}"]
  dnl Prevent clang from accepting unknown flags with a mere warning
  AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS])
  AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS])
@@ -26,6 +24,3 @@
  
  dnl
  dnl  Check the operating system
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/taglib-2.patch b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/taglib-2.patch
new file mode 100644
index 0000000..f238ff4
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc/taglib-2.patch
@@ -0,0 +1,67 @@
+Fix build with taglib 2.0
+
+Source: https://gitlab.archlinux.org/archlinux/packaging/packages/vlc/-/blob/main/taglib-2.patch?ref_type=heads
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- a/modules/meta_engine/taglib.cpp
++++ b/modules/meta_engine/taglib.cpp
+@@ -185,7 +185,7 @@ public:
+         ByteVector res(length, 0);
+         ssize_t i_read = vlc_stream_Read( m_stream, res.data(), length);
+         if (i_read < 0)
+-            return ByteVector::null;
++            return ByteVector();
+         else if ((size_t)i_read != length)
+             res.resize(i_read);
+         return res;
+@@ -465,7 +465,7 @@ static void ReadMetaFromASF( ASF::Tag* t
+ static void ReadMetaFromBasicTag(const Tag* tag, vlc_meta_t *dest)
+ {
+ #define SET( accessor, meta )                                                  \
+-    if( !tag->accessor().isNull() && !tag->accessor().isEmpty() )              \
++    if( !tag->accessor().isEmpty() )              \
+         vlc_meta_Set##meta( dest, tag->accessor().toCString(true) )
+ #define SETINT( accessor, meta )                                               \
+     if( tag->accessor() )                                                      \
+@@ -806,15 +806,15 @@ static void ReadMetaFromMP4( MP4::Tag* t
+ {
+     MP4::Item list;
+ #define SET( keyName, metaName )                                                             \
+-    if( tag->itemListMap().contains(keyName) )                                               \
++    if( tag->itemMap().contains(keyName) )                                               \
+     {                                                                                        \
+-        list = tag->itemListMap()[keyName];                                                  \
++        list = tag->itemMap()[keyName];                                                  \
+         vlc_meta_Set##metaName( p_meta, list.toStringList().front().toCString( true ) );     \
+     }
+ #define SET_EXTRA( keyName, metaName )                                                   \
+-    if( tag->itemListMap().contains(keyName) )                                  \
++    if( tag->itemMap().contains(keyName) )                                  \
+     {                                                                                \
+-        list = tag->itemListMap()[keyName];                                     \
++        list = tag->itemMap()[keyName];                                     \
+         vlc_meta_AddExtra( p_meta, metaName, list.toStringList().front().toCString( true ) ); \
+     }
+ 
+@@ -824,9 +824,9 @@ static void ReadMetaFromMP4( MP4::Tag* t
+ #undef SET
+ #undef SET_EXTRA
+ 
+-    if( tag->itemListMap().contains("covr") )
++    if( tag->itemMap().contains("covr") )
+     {
+-        MP4::CoverArtList list = tag->itemListMap()["covr"].toCoverArtList();
++        MP4::CoverArtList list = tag->itemMap()["covr"].toCoverArtList();
+         const char *psz_format = list[0].format() == MP4::CoverArt::PNG ? "image/png" : "image/jpeg";
+ 
+         msg_Dbg( p_demux_meta, "Found embedded art (%s) is %i bytes",
+@@ -1337,7 +1337,7 @@ static int WriteMeta( vlc_object_t *p_th
+         if( RIFF::AIFF::File* riff_aiff = dynamic_cast<RIFF::AIFF::File*>(f.file()) )
+             WriteMetaToId3v2( riff_aiff->tag(), p_item );
+         else if( RIFF::WAV::File* riff_wav = dynamic_cast<RIFF::WAV::File*>(f.file()) )
+-            WriteMetaToId3v2( riff_wav->tag(), p_item );
++            WriteMetaToId3v2( riff_wav->ID3v2Tag(), p_item );
+     }
+     else if( TrueAudio::File* trueaudio = dynamic_cast<TrueAudio::File*>(f.file()) )
+     {
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.18.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.18.bb
deleted file mode 100644
index 12b3287..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.18.bb
+++ /dev/null
@@ -1,135 +0,0 @@
-DESCRIPTION = "Video player and streamer - davinci edition"
-HOMEPAGE = "http://www.videolan.org"
-SECTION = "multimedia"
-
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = "coreutils-native fribidi libtool libgcrypt libgcrypt-native bison-native \
-   dbus libxml2 gnutls \
-   tremor faad2 ffmpeg flac alsa-lib \
-   lua-native lua libidn \
-   avahi jpeg xz libmodplug mpeg2dec \
-   libmtp libopus orc libsamplerate0 libusb1 schroedinger taglib \
-   tiff"
-
-LDFLAGS:append:riscv64 = " -latomic"
-LDFLAGS:append:riscv32 = " -latomic"
-
-SRC_URI = "git://github.com/videolan/vlc.git;protocol=https;branch=3.0.x \
-           file://0001-make-opencv-configurable.patch \
-           file://0002-use-vorbisidec.patch \
-           file://0003-fix-luaL-checkint.patch \
-           file://0004-Use-packageconfig-to-detect-mmal-support.patch \
-           file://0005-ioctl-does-not-have-same-signature-between-glibc-and.patch \
-           file://0006-configure-Disable-incompatible-function-pointer-type.patch \
-           file://0001-po-Fix-invalid-.oc-translation-format-string.patch \
-"
-SRCREV = "e9eceaed4d838dbd84638bfb2e4bdd08294163b1"
-S = "${WORKDIR}/git"
-
-inherit autotools-brokensep features_check gettext pkgconfig mime-xdg
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-export BUILDCC = "${BUILD_CC}"
-EXTRA_OECONF = "\
-    --enable-run-as-root \
-    --enable-xvideo \
-    --disable-screen --disable-caca \
-    --enable-vlm \
-    --enable-freetype \
-    --enable-tremor \
-    --enable-v4l2 --disable-aa --disable-faad \
-    --enable-dbus \
-    --without-contrib \
-    --without-kde-solid \
-    --enable-realrtsp \
-    --disable-libtar \
-    --enable-avcodec \
-    ac_cv_path_MOC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/moc \
-    ac_cv_path_RCC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/rcc \
-    ac_cv_path_UIC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/uic \
-"
-
-PACKAGECONFIG ?= " \
-    live555 dc1394 dv1394 notify fontconfig fluidsynth freetype dvdread png \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
-    x264 \
-"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt5', 'qmake5_paths', '', d)}
-
-PACKAGECONFIG[mmal] = "--enable-omxil --enable-omxil-vout --enable-rpi-omxil --enable-mmal,,userland"
-PACKAGECONFIG[x264] = "--enable-x264,--disable-x264,x264"
-PACKAGECONFIG[fluidsynth] = ",,fluidsynth"
-PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
-PACKAGECONFIG[a52] = "--enable-a52,--disable-a52,liba52"
-PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
-PACKAGECONFIG[live555] = "--enable-live555 LIVE555_PREFIX=${STAGING_DIR_HOST}${prefix},--disable-live555,live555"
-PACKAGECONFIG[libass] = "--enable-libass,--disable-libass,libass"
-PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc,libpostproc"
-PACKAGECONFIG[libva] = "--enable-libva,--disable-libva,libva"
-PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv"
-PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex"
-PACKAGECONFIG[gstreamer] = "--enable-gst-decode,--disable-gst-decode,gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
-PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx, libvpx"
-PACKAGECONFIG[qt5] = "--enable-qt,--disable-qt, qtbase-native qtx11extras qtsvg"
-PACKAGECONFIG[freerdp] = "--enable-freerdp,--disable-freerdp, freerdp"
-PACKAGECONFIG[dvbpsi] = "--enable-dvbpsi,--disable-dvbpsi, libdvbpsi"
-PACKAGECONFIG[samba] = "--enable-smbclient,--disable-smbclient, samba"
-PACKAGECONFIG[upnp] = "--enable-upnp,--disable-upnp,libupnp"
-PACKAGECONFIG[dvdnav] = "--enable-dvdnav,--disable-dvdnav,libdvdnav libdvdcss"
-PACKAGECONFIG[sftp] = "--enable-sftp,--disable-sftp,libssh2"
-PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis libogg"
-PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libvorbis libogg"
-PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394"
-PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libraw1394 libavc1394"
-PACKAGECONFIG[svg] = "--enable-svg,--disable-svg,librsvg"
-PACKAGECONFIG[svgdec] = "--enable-svgdec,--disable-svgdec,librsvg cairo"
-PACKAGECONFIG[notify] = "--enable-notify,--disable-notify, libnotify gtk+3"
-PACKAGECONFIG[fontconfig] = "--enable-fontconfig,--disable-fontconfig, fontconfig"
-PACKAGECONFIG[freetype] = "--enable-freetype,--disable-freetype, freetype"
-PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread, libdvdread libdvdcss"
-PACKAGECONFIG[vnc] = "--enable-vnc,--disable-vnc, libvncserver"
-PACKAGECONFIG[x11] = "--with-x --enable-xcb,--without-x --disable-xcb,  xcb-util-keysyms libxpm libxinerama"
-PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
-PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau"
-PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native"
-
-do_configure:append() {
-    # moc needs support: precreate build paths
-    for qtpath in adapters components/epg components/playlist components/sout dialogs managers styles util/buttons; do
-        mkdir -p "${B}/modules/gui/qt/$qtpath"
-    done
-    sed -i -e 's|${WORKDIR}||g' ${B}/config.h
-}
-
-# This recipe packages vlc as a library as well, so qt4 dependencies
-# can be avoided when only the library is installed.
-PACKAGES =+ "libvlc"
-
-LEAD_SONAME_libvlc = "libvlc.so.5"
-FILES:libvlc = "${libdir}/lib*.so.*"
-
-FILES:${PN} += "\
-    ${bindir}/vlc \
-    ${libdir}/vlc/vlc/libvlc_vdpau.so \
-    ${datadir}/applications \
-    ${datadir}/vlc/ \
-    ${datadir}/icons \
-    ${datadir}/metainfo/vlc.appdata.xml \
-"
-
-FILES:${PN}-dbg += "\
-    ${libdir}/vlc/*/.debug \
-    ${libdir}/vlc/plugins/*/.debug \
-"
-
-FILES:${PN}-staticdev += "\
-    ${libdir}/vlc/plugins/*/*.a \
-"
-
-INSANE_SKIP:${PN} = "dev-so"
-
-EXCLUDE_FROM_WORLD = "${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "0", "1", d)}"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.20.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.20.bb
new file mode 100644
index 0000000..d25a20a
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.20.bb
@@ -0,0 +1,135 @@
+DESCRIPTION = "Video player and streamer - davinci edition"
+HOMEPAGE = "http://www.videolan.org"
+SECTION = "multimedia"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "coreutils-native fribidi libtool libgcrypt libgcrypt-native bison-native \
+   dbus libxml2 gnutls \
+   tremor faad2 ffmpeg flac alsa-lib \
+   lua-native lua libidn \
+   avahi jpeg xz libmodplug mpeg2dec \
+   libmtp libopus orc libsamplerate0 libusb1 schroedinger taglib \
+   tiff"
+
+LDFLAGS:append:riscv64 = " -latomic"
+LDFLAGS:append:riscv32 = " -latomic"
+
+SRC_URI = "https://get.videolan.org/${BPN}/${PV}/${BP}.tar.xz \
+           file://0001-make-opencv-configurable.patch \
+           file://0002-use-vorbisidec.patch \
+           file://0003-fix-luaL-checkint.patch \
+           file://0004-Use-packageconfig-to-detect-mmal-support.patch \
+           file://0005-ioctl-does-not-have-same-signature-between-glibc-and.patch \
+           file://0006-configure-Disable-incompatible-function-pointer-type.patch \
+           file://taglib-2.patch \
+           file://0001-taglib-Fix-build-on-x86-32-bit.patch \
+"
+SRC_URI[sha256sum] = "adc7285b4d2721cddf40eb5270cada2aaa10a334cb546fd55a06353447ba29b5"
+
+inherit autotools-brokensep features_check gettext pkgconfig mime-xdg
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+export BUILDCC = "${BUILD_CC}"
+EXTRA_OECONF = "\
+    --enable-run-as-root \
+    --enable-xvideo \
+    --disable-screen --disable-caca \
+    --enable-vlm \
+    --enable-freetype \
+    --enable-tremor \
+    --enable-v4l2 --disable-aa --disable-faad \
+    --enable-dbus \
+    --without-contrib \
+    --without-kde-solid \
+    --enable-realrtsp \
+    --disable-libtar \
+    --enable-avcodec \
+    ac_cv_path_MOC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/moc \
+    ac_cv_path_RCC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/rcc \
+    ac_cv_path_UIC=${STAGING_BINDIR_NATIVE}${QT_DIR_NAME}/uic \
+"
+
+PACKAGECONFIG ?= " \
+    live555 dc1394 dv1394 notify fontconfig fluidsynth freetype dvdread png \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \
+    x264 \
+"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt5', 'qmake5_paths', '', d)}
+
+PACKAGECONFIG[mmal] = "--enable-omxil --enable-omxil-vout --enable-rpi-omxil --enable-mmal,,userland"
+PACKAGECONFIG[x264] = "--enable-x264,--disable-x264,x264"
+PACKAGECONFIG[fluidsynth] = ",,fluidsynth"
+PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad"
+PACKAGECONFIG[a52] = "--enable-a52,--disable-a52,liba52"
+PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack"
+PACKAGECONFIG[live555] = "--enable-live555 LIVE555_PREFIX=${STAGING_DIR_HOST}${prefix},--disable-live555,live555"
+PACKAGECONFIG[libass] = "--enable-libass,--disable-libass,libass"
+PACKAGECONFIG[postproc] = "--enable-postproc,--disable-postproc,libpostproc"
+PACKAGECONFIG[libva] = "--enable-libva,--disable-libva,libva"
+PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv"
+PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex"
+PACKAGECONFIG[gstreamer] = "--enable-gst-decode,--disable-gst-decode,gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
+PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx, libvpx"
+PACKAGECONFIG[qt5] = "--enable-qt,--disable-qt, qtbase-native qtx11extras qtsvg"
+PACKAGECONFIG[freerdp] = "--enable-freerdp,--disable-freerdp, freerdp"
+PACKAGECONFIG[dvbpsi] = "--enable-dvbpsi,--disable-dvbpsi, libdvbpsi"
+PACKAGECONFIG[samba] = "--enable-smbclient,--disable-smbclient, samba"
+PACKAGECONFIG[upnp] = "--enable-upnp,--disable-upnp,libupnp"
+PACKAGECONFIG[dvdnav] = "--enable-dvdnav,--disable-dvdnav,libdvdnav libdvdcss"
+PACKAGECONFIG[sftp] = "--enable-sftp,--disable-sftp,libssh2"
+PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis libogg"
+PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libvorbis libogg"
+PACKAGECONFIG[dc1394] = "--enable-dc1394,--disable-dc1394,libdc1394"
+PACKAGECONFIG[dv1394] = "--enable-dv1394,--disable-dv1394,libraw1394 libavc1394"
+PACKAGECONFIG[svg] = "--enable-svg,--disable-svg,librsvg"
+PACKAGECONFIG[svgdec] = "--enable-svgdec,--disable-svgdec,librsvg cairo"
+PACKAGECONFIG[notify] = "--enable-notify,--disable-notify, libnotify gtk+3"
+PACKAGECONFIG[fontconfig] = "--enable-fontconfig,--disable-fontconfig, fontconfig"
+PACKAGECONFIG[freetype] = "--enable-freetype,--disable-freetype, freetype"
+PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread, libdvdread libdvdcss"
+PACKAGECONFIG[vnc] = "--enable-vnc,--disable-vnc, libvncserver"
+PACKAGECONFIG[x11] = "--with-x --enable-xcb,--without-x --disable-xcb,  xcb-util-keysyms libxpm libxinerama"
+PACKAGECONFIG[png] = "--enable-png,--disable-png,libpng"
+PACKAGECONFIG[vdpau] = "--enable-vdpau,--disable-vdpau,libvdpau"
+PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native"
+
+do_configure:append() {
+    # moc needs support: precreate build paths
+    for qtpath in adapters components/epg components/playlist components/sout dialogs managers styles util/buttons; do
+        mkdir -p "${B}/modules/gui/qt/$qtpath"
+    done
+    sed -i -e 's|${WORKDIR}||g' ${B}/config.h
+}
+
+# This recipe packages vlc as a library as well, so qt4 dependencies
+# can be avoided when only the library is installed.
+PACKAGES =+ "libvlc"
+
+LEAD_SONAME_libvlc = "libvlc.so.5"
+FILES:libvlc = "${libdir}/lib*.so.*"
+
+FILES:${PN} += "\
+    ${bindir}/vlc \
+    ${libdir}/vlc/vlc/libvlc_vdpau.so \
+    ${datadir}/applications \
+    ${datadir}/vlc/ \
+    ${datadir}/icons \
+    ${datadir}/metainfo/vlc.appdata.xml \
+"
+
+FILES:${PN}-dbg += "\
+    ${libdir}/vlc/*/.debug \
+    ${libdir}/vlc/plugins/*/.debug \
+"
+
+FILES:${PN}-staticdev += "\
+    ${libdir}/vlc/plugins/*/*.a \
+"
+
+INSANE_SKIP:${PN} = "dev-so"
+
+EXCLUDE_FROM_WORLD = "${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "0", "1", d)}"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.17.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.17.bb
deleted file mode 100644
index 3959cd7..0000000
--- a/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.4.17.bb
+++ /dev/null
@@ -1,145 +0,0 @@
-SUMMARY    = "Session / policy manager implementation for PipeWire"
-HOMEPAGE   = "https://gitlab.freedesktop.org/pipewire/wireplumber"
-BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/wireplumber/issues"
-SECTION    = "multimedia"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=17d1fe479cdec331eecbc65d26bc7e77"
-
-DEPENDS = "glib-2.0 glib-2.0-native lua pipewire \
-    ${@bb.utils.contains("DISTRO_FEATURES", "gobject-introspection-data", "python3-native python3-lxml-native doxygen-native", "", d)} \
-"
-
-SRCREV = "d3eb77b292655cef333a8f4cab4e861415bc37c2"
-SRC_URI = " \
-    git://gitlab.freedesktop.org/pipewire/wireplumber.git;branch=master;protocol=https \
-    file://90-OE-disable-session-dbus-dependent-features.lua \
-"
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig gobject-introspection systemd
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-
-# Enable system-lua to let wireplumber use OE's lua.
-# Documentation needs python-sphinx, which is not in oe-core or meta-python2 for now.
-# elogind is not (yet) available in OE, so disable support.
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Dsystem-lua=true \
-    -Delogind=disabled \
-    -Dsystemd-system-unit-dir=${systemd_system_unitdir} \
-    -Dsystemd-user-unit-dir=${systemd_user_unitdir} \
-    -Dtests=false \
-"
-
-PACKAGECONFIG ??= " dbus \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service systemd-user-service', '', d)} \
-"
-
-PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
-PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=true,-Dsystemd-system-service=false,systemd"
-# "systemd-user-service" packageconfig will only install service
-# files to rootfs but not enable them as systemd.bbclass
-# currently lacks the feature of enabling user services.
-PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=true,-Dsystemd-user-service=false,systemd"
-PACKAGECONFIG[dbus] = ""
-
-PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
-PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
-
-WP_MODULE_SUBDIR = "wireplumber-0.4"
-
-do_install:append() {
-    if ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'false', 'true', d)}; then
-        install -m 0644 ${WORKDIR}/90-OE-disable-session-dbus-dependent-features.lua ${D}${datadir}/wireplumber/main.lua.d
-    fi
-}
-
-python split_dynamic_packages () {
-    # Create packages for each WirePlumber module.
-    wp_module_libdir = d.expand('${libdir}/${WP_MODULE_SUBDIR}')
-    do_split_packages(d, wp_module_libdir, r'^libwireplumber-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'WirePlumber %s module', extra_depends='', recursive=False)
-}
-
-python set_dynamic_metapkg_rdepends () {
-    import os
-    import oe.utils
-
-    # Go through all generated WirePlumber module packages
-    # (excluding the main package and the -meta package itself)
-    # and add them to the -meta package as RDEPENDS.
-
-    base_pn = d.getVar('PN')
-
-    wp_module_pn = base_pn + '-modules'
-    wp_module_metapkg =  wp_module_pn + '-meta'
-
-    d.setVar('ALLOW_EMPTY:' + wp_module_metapkg, "1")
-    d.setVar('FILES:' + wp_module_metapkg, "")
-
-    blacklist = [ wp_module_pn, wp_module_metapkg ]
-    wp_module_metapkg_rdepends = []
-    pkgdest = d.getVar('PKGDEST')
-
-    for pkg in oe.utils.packages_filter_out_system(d):
-        if pkg in blacklist:
-            continue
-
-        is_wp_module_pkg = pkg.startswith(wp_module_pn)
-        if not is_wp_module_pkg:
-            continue
-
-        if pkg in wp_module_metapkg_rdepends:
-            continue
-
-        # See if the package is empty by looking at the contents of its
-        # PKGDEST subdirectory. If this subdirectory is empty, then then
-        # package is empty as well. Empty packages do not get added to
-        # the meta package's RDEPENDS.
-        pkgdir = os.path.join(pkgdest, pkg)
-        if os.path.exists(pkgdir):
-            dir_contents = os.listdir(pkgdir) or []
-        else:
-            dir_contents = []
-        is_empty = len(dir_contents) == 0
-        if not is_empty:
-            if is_wp_module_pkg:
-                wp_module_metapkg_rdepends.append(pkg)
-
-    d.setVar('RDEPENDS:' + wp_module_metapkg, ' '.join(wp_module_metapkg_rdepends))
-    d.setVar('DESCRIPTION:' + wp_module_metapkg, wp_module_pn + ' meta package')
-}
-
-PACKAGES =+ "\
-    libwireplumber \
-    ${PN}-default-config \
-    ${PN}-scripts \
-    ${PN}-modules \
-    ${PN}-modules-meta \
-"
-
-PACKAGES_DYNAMIC = "^${PN}-modules.*"
-
-CONFFILES:${PN} += " \
-    ${datadir}/wireplumber/wireplumber.conf \
-    ${datadir}/wireplumber/*.lua.d/* \
-"
-# Add pipewire to RRECOMMENDS, since WirePlumber expects a PipeWire daemon to
-# be present. While in theory any application that uses libpipewire can configure
-# itself to become a daemon, in practice, the PipeWire daemon is used.
-RRECOMMENDS:${PN} += "pipewire ${PN}-scripts ${PN}-modules-meta"
-
-FILES:${PN} += "${systemd_user_unitdir} ${systemd_system_unitdir} ${datadir}/zsh"
-
-FILES:libwireplumber = " \
-    ${libdir}/libwireplumber-*.so.* \
-"
-
-FILES:${PN}-scripts += "${datadir}/wireplumber/scripts/*"
-
-# Dynamic packages (see set_dynamic_metapkg_rdepends).
-FILES:${PN}-modules = ""
-RRECOMMENDS:${PN}-modules += "${PN}-modules-meta"
diff --git a/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.5.0.bb b/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.5.0.bb
new file mode 100644
index 0000000..8aa95a3
--- /dev/null
+++ b/meta-openembedded/meta-multimedia/recipes-multimedia/wireplumber/wireplumber_0.5.0.bb
@@ -0,0 +1,145 @@
+SUMMARY    = "Session / policy manager implementation for PipeWire"
+HOMEPAGE   = "https://gitlab.freedesktop.org/pipewire/wireplumber"
+BUGTRACKER = "https://gitlab.freedesktop.org/pipewire/wireplumber/issues"
+SECTION    = "multimedia"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=17d1fe479cdec331eecbc65d26bc7e77"
+
+DEPENDS = "glib-2.0 glib-2.0-native lua pipewire \
+    ${@bb.utils.contains("DISTRO_FEATURES", "gobject-introspection-data", "python3-native python3-lxml-native doxygen-native", "", d)} \
+"
+
+SRCREV = "59d190a2bd400f3b093f99b16fc0fb06f6cb2cfe"
+SRC_URI = " \
+    git://gitlab.freedesktop.org/pipewire/wireplumber.git;branch=master;protocol=https \
+    file://90-OE-disable-session-dbus-dependent-features.lua \
+"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig gobject-introspection systemd
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+# Enable system-lua to let wireplumber use OE's lua.
+# Documentation needs python-sphinx, which is not in oe-core or meta-python2 for now.
+# elogind is not (yet) available in OE, so disable support.
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Dsystem-lua=true \
+    -Delogind=disabled \
+    -Dsystemd-system-unit-dir=${systemd_system_unitdir} \
+    -Dsystemd-user-unit-dir=${systemd_user_unitdir} \
+    -Dtests=false \
+"
+
+PACKAGECONFIG ??= " dbus \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd systemd-system-service systemd-user-service', '', d)} \
+"
+
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
+PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=true,-Dsystemd-system-service=false,systemd"
+# "systemd-user-service" packageconfig will only install service
+# files to rootfs but not enable them as systemd.bbclass
+# currently lacks the feature of enabling user services.
+PACKAGECONFIG[systemd-user-service] = "-Dsystemd-user-service=true,-Dsystemd-user-service=false,systemd"
+PACKAGECONFIG[dbus] = ""
+
+PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
+PACKAGESPLITFUNCS:append = " set_dynamic_metapkg_rdepends "
+
+WP_MODULE_SUBDIR = "wireplumber-0.5"
+
+do_install:append() {
+    if ${@bb.utils.contains('PACKAGECONFIG', 'dbus', 'false', 'true', d)}; then
+        install -m 0644 ${WORKDIR}/90-OE-disable-session-dbus-dependent-features.lua ${D}${datadir}/wireplumber/main.lua.d
+    fi
+}
+
+python split_dynamic_packages () {
+    # Create packages for each WirePlumber module.
+    wp_module_libdir = d.expand('${libdir}/${WP_MODULE_SUBDIR}')
+    do_split_packages(d, wp_module_libdir, r'^libwireplumber-module-(.*)\.so$', d.expand('${PN}-modules-%s'), 'WirePlumber %s module', extra_depends='', recursive=False)
+}
+
+python set_dynamic_metapkg_rdepends () {
+    import os
+    import oe.utils
+
+    # Go through all generated WirePlumber module packages
+    # (excluding the main package and the -meta package itself)
+    # and add them to the -meta package as RDEPENDS.
+
+    base_pn = d.getVar('PN')
+
+    wp_module_pn = base_pn + '-modules'
+    wp_module_metapkg =  wp_module_pn + '-meta'
+
+    d.setVar('ALLOW_EMPTY:' + wp_module_metapkg, "1")
+    d.setVar('FILES:' + wp_module_metapkg, "")
+
+    blacklist = [ wp_module_pn, wp_module_metapkg ]
+    wp_module_metapkg_rdepends = []
+    pkgdest = d.getVar('PKGDEST')
+
+    for pkg in oe.utils.packages_filter_out_system(d):
+        if pkg in blacklist:
+            continue
+
+        is_wp_module_pkg = pkg.startswith(wp_module_pn)
+        if not is_wp_module_pkg:
+            continue
+
+        if pkg in wp_module_metapkg_rdepends:
+            continue
+
+        # See if the package is empty by looking at the contents of its
+        # PKGDEST subdirectory. If this subdirectory is empty, then then
+        # package is empty as well. Empty packages do not get added to
+        # the meta package's RDEPENDS.
+        pkgdir = os.path.join(pkgdest, pkg)
+        if os.path.exists(pkgdir):
+            dir_contents = os.listdir(pkgdir) or []
+        else:
+            dir_contents = []
+        is_empty = len(dir_contents) == 0
+        if not is_empty:
+            if is_wp_module_pkg:
+                wp_module_metapkg_rdepends.append(pkg)
+
+    d.setVar('RDEPENDS:' + wp_module_metapkg, ' '.join(wp_module_metapkg_rdepends))
+    d.setVar('DESCRIPTION:' + wp_module_metapkg, wp_module_pn + ' meta package')
+}
+
+PACKAGES =+ "\
+    libwireplumber \
+    ${PN}-default-config \
+    ${PN}-scripts \
+    ${PN}-modules \
+    ${PN}-modules-meta \
+"
+
+PACKAGES_DYNAMIC = "^${PN}-modules.*"
+
+CONFFILES:${PN} += " \
+    ${datadir}/wireplumber/wireplumber.conf \
+    ${datadir}/wireplumber/*.lua.d/* \
+"
+# Add pipewire to RRECOMMENDS, since WirePlumber expects a PipeWire daemon to
+# be present. While in theory any application that uses libpipewire can configure
+# itself to become a daemon, in practice, the PipeWire daemon is used.
+RRECOMMENDS:${PN} += "pipewire ${PN}-scripts ${PN}-modules-meta"
+
+FILES:${PN} += "${systemd_user_unitdir} ${systemd_system_unitdir} ${datadir}/zsh"
+
+FILES:libwireplumber = " \
+    ${libdir}/libwireplumber-*.so.* \
+"
+
+FILES:${PN}-scripts += "${datadir}/wireplumber/scripts/*"
+
+# Dynamic packages (see set_dynamic_metapkg_rdepends).
+FILES:${PN}-modules = ""
+RRECOMMENDS:${PN}-modules += "${PN}-modules-meta"
diff --git a/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb b/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb
index 58b049b..5e680c4 100644
--- a/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb
+++ b/meta-openembedded/meta-multimedia/recipes-support/crossguid/crossguid_0.2.2.bb
@@ -15,3 +15,6 @@
 
 inherit cmake
 
+do_install:append() {
+    sed -i -e 's|${STAGING_DIR_HOST}||g' ${D}${datadir}/crossguid/cmake/crossguid-config.cmake
+}
diff --git a/meta-openembedded/meta-networking/conf/layer.conf b/meta-openembedded/meta-networking/conf/layer.conf
index a9088ee..ac5d15a 100644
--- a/meta-openembedded/meta-networking/conf/layer.conf
+++ b/meta-openembedded/meta-networking/conf/layer.conf
@@ -15,7 +15,7 @@
 
 LAYERDEPENDS_networking-layer = "core meta-python openembedded-layer"
 
-LAYERSERIES_COMPAT_networking-layer = "nanbield"
+LAYERSERIES_COMPAT_networking-layer = "scarthgap"
 
 LICENSE_PATH += "${LAYERDIR}/licenses"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools/fix-memory-leaks.patch b/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools/fix-memory-leaks.patch
new file mode 100644
index 0000000..22e1fac
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools/fix-memory-leaks.patch
@@ -0,0 +1,768 @@
+Upstream-Status: Submitted [https://github.com/khvzak/bluez-tools/pull/48]
+
+From e5db2eec2591f0109f0eb7c2631055210b55f2f5 Mon Sep 17 00:00:00 2001
+Message-Id: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Sat, 7 Nov 2020 01:07:24 -0500
+Subject: [PATCH 1/9] Remove memory leaks and overall restructure
+ manager_find_adapter
+
+---
+ src/lib/manager.c | 61 +++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 43 insertions(+), 18 deletions(-)
+
+diff --git a/src/lib/manager.c b/src/lib/manager.c
+index 5286a3a..2263afc 100644
+--- a/src/lib/manager.c
++++ b/src/lib/manager.c
+@@ -136,43 +136,68 @@ const gchar *manager_find_adapter(Manager *self, const gchar *pattern, GError **
+     GVariant *ifaces_and_properties;
+     GVariantIter i;
+ 
++    gchar *pattern_lowercase = g_ascii_strdown(pattern, -1);
++
+     g_variant_iter_init(&i, objects);
+-    while (g_variant_iter_next(&i, "{&o@a{sa{sv}}}", &object_path, &ifaces_and_properties))
++    gboolean still_looking = TRUE;
++    while (still_looking && g_variant_iter_next(&i, "{&o@a{sa{sv}}}", &object_path, &ifaces_and_properties))
+     {
+         const gchar *interface_name;
+-        GVariant *properties;
+         GVariantIter ii;
++        GVariant* properties;
+         g_variant_iter_init(&ii, ifaces_and_properties);
+         while (g_variant_iter_next(&ii, "{&s@a{sv}}", &interface_name, &properties))
+         {
+-            if (g_strstr_len(g_ascii_strdown(interface_name, -1), -1, "adapter"))
++            gchar *interface_name_lowercase = g_ascii_strdown(interface_name, -1);
++            if (strstr(interface_name_lowercase, "adapter"))
+             {
+-                const gchar *object_base_name = g_path_get_basename(object_path);
+-                if (g_strstr_len(g_ascii_strdown(object_base_name, -1), -1, g_ascii_strdown(pattern, -1)))
++                g_free(interface_name_lowercase);
++
++                gchar *object_base_name_original = g_path_get_basename(object_path);
++                gchar *object_base_name = g_ascii_strdown(interface_name, -1);
++                g_free(object_base_name_original);
++
++                if (strstr(object_base_name, pattern_lowercase))
+                 {
+-                    const gchar *retVal = g_strdup(object_path);
+-                    g_variant_unref(properties);
+-                    g_variant_unref(ifaces_and_properties);
+-                    g_variant_unref(objects);
+-                    return retVal;
++                    still_looking = FALSE;
++                    g_free(object_base_name);
++                    break;
+                 }
+-                const gchar *address = g_variant_get_string(g_variant_lookup_value(properties, "Address", NULL), NULL);
+-                if (g_strstr_len(g_ascii_strdown(address, -1), -1, g_ascii_strdown(pattern, -1)))
++
++                g_free(object_base_name);
++
++                const gchar *address_original = g_variant_get_string(g_variant_lookup_value(properties, "Address", NULL), NULL);
++                gchar *address = g_ascii_strdown(address_original, -1);
++
++                if (strstr(address, pattern_lowercase))
+                 {
+-                    gchar *retVal = g_strdup(object_path);
+-                    g_variant_unref(properties);
+-                    g_variant_unref(ifaces_and_properties);
+-                    g_variant_unref(objects);
+-                    return retVal;
++                    still_looking = FALSE;
++                    g_free(address);
++                    break;
+                 }
++                g_free(address);
+             }
++            else
++            {
++                g_free(interface_name_lowercase);
++            }
++
+             g_variant_unref(properties);
+         }
++
+         g_variant_unref(ifaces_and_properties);
+     }
+     g_variant_unref(objects);
++    g_free(pattern_lowercase);
+ 
+-    return NULL;
++    if (still_looking)
++    {
++        return NULL;
++    }
++    else
++    {
++        return object_path;
++    }
+ }
+ 
+ GPtrArray *manager_get_adapters(Manager *self)
+-- 
+2.34.1
+
+
+From 163fcc94f1bc7c8f238e78adb03af914a566d979 Mon Sep 17 00:00:00 2001
+Message-Id: <163fcc94f1bc7c8f238e78adb03af914a566d979.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Sat, 7 Nov 2020 22:12:21 -0500
+Subject: [PATCH 2/9] Replace manager_default_adapter with
+ manager_find_adapter(..., NULL, ...)
+
+---
+ src/lib/helpers.c | 57 ++++++++++++++++++-----------------------------
+ src/lib/manager.c | 51 +++++++++---------------------------------
+ src/lib/manager.h |  1 -
+ 3 files changed, 33 insertions(+), 76 deletions(-)
+
+diff --git a/src/lib/helpers.c b/src/lib/helpers.c
+index d7e95f9..99561b5 100644
+--- a/src/lib/helpers.c
++++ b/src/lib/helpers.c
+@@ -159,52 +159,39 @@ Adapter *find_adapter(const gchar *name, GError **error)
+ 
+     Manager *manager = g_object_new(MANAGER_TYPE, NULL);
+ 
+-    // If name is null or empty - return default adapter
+-    if (name == NULL || strlen(name) == 0)
++    // Try to find by id
++    adapter_path = (gchar *) manager_find_adapter(manager, name, error);
++
++    // Found
++    if (adapter_path)
+     {
+-        adapter_path = (gchar *) manager_default_adapter(manager, error);
+-        if (adapter_path)
+-        {
+-            // adapter = g_object_new(ADAPTER_TYPE, "DBusObjectPath", adapter_path, NULL);
+-            adapter = adapter_new(adapter_path);
+-        }
++        // adapter = g_object_new(ADAPTER_TYPE, "DBusObjectPath", adapter_path, NULL);
++        adapter = adapter_new(adapter_path);
+     }
+     else
+     {
+-        // Try to find by id
+-        adapter_path = (gchar *) manager_find_adapter(manager, name, error);
+-
+-        // Found
+-        if (adapter_path)
++        // Try to find by name
++        const GPtrArray *adapters_list = manager_get_adapters(manager);
++        g_assert(adapters_list != NULL);
++        for (int i = 0; i < adapters_list->len; i++)
+         {
++            adapter_path = g_ptr_array_index(adapters_list, i);
+             // adapter = g_object_new(ADAPTER_TYPE, "DBusObjectPath", adapter_path, NULL);
+             adapter = adapter_new(adapter_path);
+-        }
+-        else
+-        {
+-            // Try to find by name
+-            const GPtrArray *adapters_list = manager_get_adapters(manager);
+-            g_assert(adapters_list != NULL);
+-            for (int i = 0; i < adapters_list->len; i++)
++            adapter_path = NULL;
++
++            if (g_strcmp0(name, adapter_get_name(adapter, error)) == 0)
+             {
+-                adapter_path = g_ptr_array_index(adapters_list, i);
+-                // adapter = g_object_new(ADAPTER_TYPE, "DBusObjectPath", adapter_path, NULL);
+-                adapter = adapter_new(adapter_path);
+-                adapter_path = NULL;
+-
+-                if (g_strcmp0(name, adapter_get_name(adapter, error)) == 0)
++                if (*error)
+                 {
+-                    if (error)
+-                    {
+-                        g_error_free(*error);
+-                        *error = NULL;
+-                    }
+-                    break;
++                    g_error_free(*error);
++                    *error = NULL;
+                 }
+-
+-                g_object_unref(adapter);
+-                adapter = NULL;
++                break;
+             }
++
++            g_object_unref(adapter);
++            adapter = NULL;
+         }
+     }
+ 
+diff --git a/src/lib/manager.c b/src/lib/manager.c
+index 2263afc..891fc45 100644
+--- a/src/lib/manager.c
++++ b/src/lib/manager.c
+@@ -84,45 +84,6 @@ GVariant *manager_get_managed_objects(Manager *self, GError **error)
+     return retVal;
+ }
+ 
+-const gchar *manager_default_adapter(Manager *self, GError **error)
+-{
+-    g_assert(MANAGER_IS(self));
+-
+-    GVariant *objects = NULL;
+-    objects = manager_get_managed_objects(self, error);
+-    if (objects == NULL)
+-        return NULL;
+-
+-    const gchar *object_path;
+-    GVariant *ifaces_and_properties;
+-    GVariantIter i;
+-
+-    g_variant_iter_init(&i, objects);
+-    while (g_variant_iter_next(&i, "{&o@a{sa{sv}}}", &object_path, &ifaces_and_properties))
+-    {
+-        const gchar *interface_name;
+-        GVariant *properties;
+-        GVariantIter ii;
+-        g_variant_iter_init(&ii, ifaces_and_properties);
+-        while (g_variant_iter_next(&ii, "{&s@a{sv}}", &interface_name, &properties))
+-        {
+-            if (g_strstr_len(g_ascii_strdown(interface_name, -1), -1, "adapter"))
+-            {
+-                const gchar *retVal = g_strdup(object_path);
+-                g_variant_unref(properties);
+-                g_variant_unref(ifaces_and_properties);
+-                g_variant_unref(objects);
+-                return retVal;
+-            }
+-            g_variant_unref(properties);
+-        }
+-        g_variant_unref(ifaces_and_properties);
+-    }
+-    g_variant_unref(objects);
+-
+-    return NULL;
+-}
+-
+ const gchar *manager_find_adapter(Manager *self, const gchar *pattern, GError **error)
+ {
+     g_assert(MANAGER_IS(self));
+@@ -136,7 +97,11 @@ const gchar *manager_find_adapter(Manager *self, const gchar *pattern, GError **
+     GVariant *ifaces_and_properties;
+     GVariantIter i;
+ 
+-    gchar *pattern_lowercase = g_ascii_strdown(pattern, -1);
++    gchar *pattern_lowercase = NULL;
++    if (pattern != NULL)
++    {
++        pattern_lowercase = g_ascii_strdown(pattern, -1);
++    }
+ 
+     g_variant_iter_init(&i, objects);
+     gboolean still_looking = TRUE;
+@@ -153,6 +118,12 @@ const gchar *manager_find_adapter(Manager *self, const gchar *pattern, GError **
+             {
+                 g_free(interface_name_lowercase);
+ 
++                if (!pattern_lowercase)
++                {
++                    still_looking = FALSE;
++                    break;
++                }
++
+                 gchar *object_base_name_original = g_path_get_basename(object_path);
+                 gchar *object_base_name = g_ascii_strdown(interface_name, -1);
+                 g_free(object_base_name_original);
+diff --git a/src/lib/manager.h b/src/lib/manager.h
+index 0c9e052..b651812 100644
+--- a/src/lib/manager.h
++++ b/src/lib/manager.h
+@@ -54,7 +54,6 @@ extern "C" {
+      * Method definitions.
+      */
+     GVariant *manager_get_managed_objects(Manager *self, GError **error);
+-    const gchar *manager_default_adapter(Manager *self, GError **error);
+     const gchar *manager_find_adapter(Manager *self, const gchar *pattern, GError **error);
+     GPtrArray *manager_get_adapters(Manager *self);
+     const gchar **manager_get_devices(Manager *self, const gchar *adapter_pattern);
+-- 
+2.34.1
+
+
+From b463d9cfc2390ca6352c16e6f6e113cf42d0f688 Mon Sep 17 00:00:00 2001
+Message-Id: <b463d9cfc2390ca6352c16e6f6e113cf42d0f688.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Sat, 7 Nov 2020 23:38:42 -0500
+Subject: [PATCH 3/9] Fix remaining g_ascii_strdown leaks
+
+---
+ src/lib/helpers.c    | 2 +-
+ src/lib/manager.c    | 5 ++++-
+ src/lib/properties.c | 4 ++--
+ 3 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/src/lib/helpers.c b/src/lib/helpers.c
+index 99561b5..b61bc07 100644
+--- a/src/lib/helpers.c
++++ b/src/lib/helpers.c
+@@ -242,7 +242,7 @@ Device *find_device(Adapter *adapter, const gchar *name, GError **error)
+                     
+                     if(g_variant_lookup(properties, "Address", "s", &address))
+                     {
+-                        if(g_strcmp0(g_ascii_strdown(address, -1), g_ascii_strdown(name, -1)) == 0)
++                        if(name && address && g_ascii_strcasecmp(address, name) == 0)
+                         {
+                             device = device_new(object_path);
+                         }
+diff --git a/src/lib/manager.c b/src/lib/manager.c
+index 891fc45..d506ae6 100644
+--- a/src/lib/manager.c
++++ b/src/lib/manager.c
+@@ -200,8 +200,11 @@ GPtrArray *manager_get_adapters(Manager *self)
+         g_variant_iter_init(&ii, ifaces_and_properties);
+         while (g_variant_iter_next(&ii, "{&s@a{sv}}", &interface_name, &properties))
+         {
+-            if (g_strstr_len(g_ascii_strdown(interface_name, -1), -1, "adapter"))
++            char* interface_name_lowercase = g_ascii_strdown(interface_name, -1);
++            if (strstr(interface_name_lowercase, "adapter"))
+                 g_ptr_array_add(adapter_array, (gpointer) g_strdup(object_path));
++
++            g_free(interface_name_lowercase);
+             g_variant_unref(properties);
+         }
+         g_variant_unref(ifaces_and_properties);
+diff --git a/src/lib/properties.c b/src/lib/properties.c
+index 8b913d5..70a7640 100644
+--- a/src/lib/properties.c
++++ b/src/lib/properties.c
+@@ -205,12 +205,12 @@ static void _properties_create_gdbus_proxy(Properties *self, GError **error)
+ {
+     if(self->priv->dbus_type && self->priv->dbus_service_name && self->priv->dbus_object_path)
+     {
+-        if(g_ascii_strcasecmp(g_ascii_strdown(self->priv->dbus_type, -1), "system") == 0)
++        if(g_ascii_strcasecmp(self->priv->dbus_type, "system") == 0)
+         {
+             g_assert(system_conn != NULL);
+             self->priv->proxy = g_dbus_proxy_new_sync(system_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, self->priv->dbus_service_name, self->priv->dbus_object_path, PROPERTIES_DBUS_INTERFACE, NULL, error);
+         }
+-        else if(g_ascii_strcasecmp(g_ascii_strdown(self->priv->dbus_type, -1), "session") == 0)
++        else if(g_ascii_strcasecmp(self->priv->dbus_type, "session") == 0)
+         {
+             g_assert(session_conn != NULL);
+             self->priv->proxy = g_dbus_proxy_new_sync(session_conn, G_DBUS_PROXY_FLAGS_NONE, NULL, self->priv->dbus_service_name, self->priv->dbus_object_path, PROPERTIES_DBUS_INTERFACE, NULL, error);
+-- 
+2.34.1
+
+
+From 7ca191164a3a3d8867b1a4af7cd349dc53569fa3 Mon Sep 17 00:00:00 2001
+Message-Id: <7ca191164a3a3d8867b1a4af7cd349dc53569fa3.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Sun, 8 Nov 2020 14:04:36 -0500
+Subject: [PATCH 4/9] Don't leak g_variant_lookup_value results in bt-obex
+
+---
+ src/bt-obex.c | 23 ++++++++++++++++-------
+ 1 file changed, 16 insertions(+), 7 deletions(-)
+
+diff --git a/src/bt-obex.c b/src/bt-obex.c
+index 8aacb40..0f044a5 100644
+--- a/src/bt-obex.c
++++ b/src/bt-obex.c
+@@ -213,15 +213,24 @@ static void _obex_opp_client_object_manager_handler(GDBusConnection *connection,
+             g_hash_table_insert(_transfers, g_strdup(interface_object_path), t);
+ 
+             ObexTransferInfo *info = g_malloc0(sizeof(ObexTransferInfo));
+-            info->filesize = g_variant_get_uint64(g_variant_lookup_value(properties, "Size", NULL));
+-            info->filename = g_strdup(g_variant_get_string(g_variant_lookup_value(properties, "Name", NULL), NULL));
+-            info->status = g_strdup(g_variant_get_string(g_variant_lookup_value(properties, "Status", NULL), NULL));
+-            ObexSession *session = obex_session_new(g_variant_get_string(g_variant_lookup_value(properties, "Session", NULL), NULL));
+-            
++
++            GVariant* size_variant = g_variant_lookup_value(properties, "Size", NULL);
++            GVariant* name_variant = g_variant_lookup_value(properties, "Name", NULL);
++            GVariant* status_variant = g_variant_lookup_value(properties, "Status", NULL);
++            GVariant* session_variant = g_variant_lookup_value(properties, "Session", NULL);
++
++            info->filesize = g_variant_get_uint64(size_variant);
++            info->filename = g_variant_dup_string(name_variant, NULL);
++            info->status = g_variant_dup_string(status_variant, NULL);
++            ObexSession *session = obex_session_new(g_variant_get_string(session_variant, NULL));
+             info->obex_root = g_strdup(obex_session_get_root(session, NULL));
+-            
++
++            g_variant_unref(size_variant);
++            g_variant_unref(name_variant);
++            g_variant_unref(status_variant);
++            g_variant_unref(session_variant);
+             g_object_unref(session);
+-            
++
+             g_hash_table_insert(_transfer_infos, g_strdup(interface_object_path), info);
+             if(g_strcmp0(info->status, "queued") == 0)
+                 g_print("[Transfer#%s] Waiting...\n", info->filename);
+-- 
+2.34.1
+
+
+From 7100380b710b36f8e31748ac5bf0e6ffb7c4eed7 Mon Sep 17 00:00:00 2001
+Message-Id: <7100380b710b36f8e31748ac5bf0e6ffb7c4eed7.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Thu, 12 Nov 2020 21:41:55 -0500
+Subject: [PATCH 5/9] Correctly free temporary values in bt-obex
+
+---
+ src/bt-obex.c     | 35 +++++++++++++++++++++++++----------
+ src/lib/helpers.c |  3 ++-
+ 2 files changed, 27 insertions(+), 11 deletions(-)
+
+diff --git a/src/bt-obex.c b/src/bt-obex.c
+index 0f044a5..547186b 100644
+--- a/src/bt-obex.c
++++ b/src/bt-obex.c
+@@ -70,25 +70,32 @@ static void _obex_server_object_manager_handler(GDBusConnection *connection, con
+         const gchar *interface_object_path = g_variant_get_string(g_variant_get_child_value(parameters, 0), NULL);
+         GVariant *interfaces_and_properties = g_variant_get_child_value(parameters, 1);
+         GVariant *properties = NULL;
+-        
++
+         if(g_variant_lookup(interfaces_and_properties, OBEX_TRANSFER_DBUS_INTERFACE, "@a{sv}", &properties))
+         {
+             g_print("[OBEX Server] Transfer started\n");
+             ObexTransfer *t = obex_transfer_new(interface_object_path);
+             g_hash_table_insert(_transfers, g_strdup(interface_object_path), t);
+-            
++
++            GVariant* size_variant = g_variant_lookup_value(properties, "Size", NULL);
++            GVariant* status_variant = g_variant_lookup_value(properties, "Status", NULL);
++            GVariant* session_variant = g_variant_lookup_value(properties, "Session", NULL);
++
+             ObexTransferInfo *info = g_malloc0(sizeof(ObexTransferInfo));
+-            info->filesize = g_variant_get_uint64(g_variant_lookup_value(properties, "Size", NULL));
+-            info->status = g_strdup(g_variant_get_string(g_variant_lookup_value(properties, "Status", NULL), NULL));
+-            ObexSession *session = obex_session_new(g_variant_get_string(g_variant_lookup_value(properties, "Session", NULL), NULL));
+-            
++            info->filesize = g_variant_get_uint64(size_variant);
++            info->status = g_strdup(g_variant_get_string(status_variant, NULL));
++
++            ObexSession *session = obex_session_new(g_variant_get_string(session_variant, NULL));
+             info->obex_root = g_strdup(obex_session_get_root(session, NULL));
+-            
+             g_object_unref(session);
++
++            g_variant_unref(size_variant);
++            g_variant_unref(status_variant);
++            g_variant_unref(session_variant);
+             
+             g_hash_table_insert(_transfer_infos, g_strdup(interface_object_path), info);
+         }
+-        
++
+         if(g_variant_lookup(interfaces_and_properties, OBEX_SESSION_DBUS_INTERFACE, "@a{sv}", &properties))
+         {
+             g_print("[OBEX Server] OBEX session opened\n");
+@@ -177,7 +184,12 @@ static void _obex_server_properties_handler(GDBusConnection *connection, const g
+             {
+                 g_print("[OBEX Server] Transfer succeeded\n");
+                 ObexTransferInfo *info = g_hash_table_lookup(_transfer_infos, object_path);
+-                g_rename(g_build_filename(info->obex_root, info->filename, NULL), g_build_filename(_root_path, info->filename, NULL));
++
++                gchar* old_name = g_build_filename(info->obex_root, info->filename, NULL);
++                gchar* new_name = g_build_filename(_root_path, info->filename, NULL);
++                g_rename(old_name, new_name);
++                g_free(old_name);
++                g_free(new_name);
+             }
+             else if(g_strcmp0(status, "error") == 0)
+             {
+@@ -202,7 +214,8 @@ static void _obex_opp_client_object_manager_handler(GDBusConnection *connection,
+ {
+     if(g_strcmp0(signal_name, "InterfacesAdded") == 0)
+     {
+-        const gchar *interface_object_path = g_variant_get_string(g_variant_get_child_value(parameters, 0), NULL);
++        GVariant* interface_value = g_variant_get_child_value(parameters, 0);
++        const gchar *interface_object_path = g_variant_get_string(interface_value, NULL);
+         GVariant *interfaces_and_properties = g_variant_get_child_value(parameters, 1);
+         GVariant *properties = NULL;
+         
+@@ -242,6 +255,8 @@ static void _obex_opp_client_object_manager_handler(GDBusConnection *connection,
+         }
+         
+         g_variant_unref(interfaces_and_properties);
++        g_variant_unref(interface_value);
++
+         if(properties)
+             g_variant_unref(properties);
+     }
+diff --git a/src/lib/helpers.c b/src/lib/helpers.c
+index b61bc07..d9e2257 100644
+--- a/src/lib/helpers.c
++++ b/src/lib/helpers.c
+@@ -171,7 +171,7 @@ Adapter *find_adapter(const gchar *name, GError **error)
+     else
+     {
+         // Try to find by name
+-        const GPtrArray *adapters_list = manager_get_adapters(manager);
++        GPtrArray *adapters_list = manager_get_adapters(manager);
+         g_assert(adapters_list != NULL);
+         for (int i = 0; i < adapters_list->len; i++)
+         {
+@@ -193,6 +193,7 @@ Adapter *find_adapter(const gchar *name, GError **error)
+             g_object_unref(adapter);
+             adapter = NULL;
+         }
++        g_ptr_array_unref(adapters_list);
+     }
+ 
+     g_object_unref(manager);
+-- 
+2.34.1
+
+
+From 860fb6e19a7bc272722c36a980004044bc9906e5 Mon Sep 17 00:00:00 2001
+Message-Id: <860fb6e19a7bc272722c36a980004044bc9906e5.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Thu, 12 Nov 2020 21:45:51 -0500
+Subject: [PATCH 6/9] Use g_hash_table_new_full() instead of manual freeing
+
+---
+ src/bt-obex.c | 56 +++++++++++++++++----------------------------------
+ 1 file changed, 18 insertions(+), 38 deletions(-)
+
+diff --git a/src/bt-obex.c b/src/bt-obex.c
+index 547186b..413c12d 100644
+--- a/src/bt-obex.c
++++ b/src/bt-obex.c
+@@ -55,6 +55,14 @@ struct _ObexTransferInfo {
+     gchar *status;
+ };
+ 
++static void obex_transfer_info_free(ObexTransferInfo* info)
++{
++    g_free(info->filename);
++    g_free(info->obex_root);
++    g_free(info->status);
++    g_free(info);
++}
++
+ static void sigterm_handler(int sig)
+ {
+     g_message("%s received", sig == SIGTERM ? "SIGTERM" : "SIGINT");
+@@ -117,10 +125,7 @@ static void _obex_server_object_manager_handler(GDBusConnection *connection, con
+             if(g_strcmp0(*inf, OBEX_TRANSFER_DBUS_INTERFACE) == 0)
+             {
+                 g_print("[OBEX Server] OBEX transfer closed\n");
+-                ObexTransfer *transfer = g_hash_table_lookup(_transfers, interface_object_path);
+                 g_hash_table_remove(_transfers, interface_object_path);
+-                g_object_unref(transfer);
+-                g_free(g_hash_table_lookup(_transfer_infos, interface_object_path));
+                 g_hash_table_remove(_transfer_infos, interface_object_path);
+             }
+             
+@@ -272,10 +277,7 @@ static void _obex_opp_client_object_manager_handler(GDBusConnection *connection,
+             if(g_strcmp0(*inf, OBEX_TRANSFER_DBUS_INTERFACE) == 0)
+             {
+                 // g_print("[OBEX Client] OBEX transfer closed\n");
+-                ObexTransfer *transfer = g_hash_table_lookup(_transfers, interface_object_path);
+                 g_hash_table_remove(_transfers, interface_object_path);
+-                g_object_unref(transfer);
+-                g_free(g_hash_table_lookup(_transfer_infos, interface_object_path));
+                 g_hash_table_remove(_transfer_infos, interface_object_path);
+                 if (g_main_loop_is_running(mainloop))
+                     g_main_loop_quit(mainloop);
+@@ -514,8 +516,8 @@ int main(int argc, char *argv[])
+             exit_if_error(error);
+         }
+ 
+-        _transfers = g_hash_table_new(g_str_hash, g_str_equal);
+-        _transfer_infos = g_hash_table_new(g_str_hash, g_str_equal);
++        _transfers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
++        _transfer_infos = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)obex_transfer_info_free);
+ 
+         ObexAgentManager *manager = obex_agent_manager_new();
+         
+@@ -552,21 +554,10 @@ int main(int argc, char *argv[])
+         g_hash_table_iter_init(&iter, _transfers);
+         while (g_hash_table_iter_next(&iter, &key, &value))
+         {
+-            ObexTransfer *t = OBEX_TRANSFER(value);
+-            obex_transfer_cancel(t, NULL); // skip errors
+-            g_object_unref(t);
+-            g_hash_table_iter_remove(&iter);
+-        }
+-        g_hash_table_unref(_transfers);
+-        
+-        // Remove transfer information
+-        g_hash_table_iter_init(&iter, _transfer_infos);
+-        while (g_hash_table_iter_next(&iter, &key, &value))
+-        {
+-            g_free(value);
+-            g_hash_table_iter_remove(&iter);
++            obex_transfer_cancel(OBEX_TRANSFER(value), NULL);
+         }
+         g_hash_table_unref(_transfers);
++        g_hash_table_unref(_transfer_infos);
+ 
+         g_dbus_connection_signal_unsubscribe(session_conn, obex_server_object_id);
+         g_dbus_connection_signal_unsubscribe(session_conn, obex_server_properties_id);
+@@ -588,8 +579,8 @@ int main(int argc, char *argv[])
+             exit_if_error(error);
+         }
+         
+-        _transfers = g_hash_table_new(g_str_hash, g_str_equal);
+-        _transfer_infos = g_hash_table_new(g_str_hash, g_str_equal);
++        _transfers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
++        _transfer_infos = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+ 
+         gchar * files_to_send[] = {NULL, NULL};
+         files_to_send[0] = g_path_is_absolute(opp_file_arg) ? g_strdup(opp_file_arg) : get_absolute_path(opp_file_arg);
+@@ -663,24 +654,13 @@ int main(int argc, char *argv[])
+         g_hash_table_iter_init(&iter, _transfers);
+         while (g_hash_table_iter_next(&iter, &key, &value))
+         {
+-            ObexTransfer *t = OBEX_TRANSFER(value);
+-            obex_transfer_cancel(t, NULL); // skip errors
+-            g_object_unref(t);
+-            g_hash_table_iter_remove(&iter);
++            obex_transfer_cancel(OBEX_TRANSFER(value), NULL);
+         }
+         g_hash_table_unref(_transfers);
+-        
+-        // Remove transfer information objects
+-        g_hash_table_iter_init(&iter, _transfer_infos);
+-        while (g_hash_table_iter_next(&iter, &key, &value))
+-        {
+-            g_free(value);
+-            g_hash_table_iter_remove(&iter);
+-        }
+-        g_hash_table_unref(_transfers);
+-        
+-        g_object_unref(client);
+ 
++        g_hash_table_unref(_transfer_infos);
++        g_object_unref(client);
++        g_object_unref(session);
+         g_variant_unref(device_dict);
+ 
+         g_free(src_address);
+-- 
+2.34.1
+
+
+From 9804eb7e5996c52cc542eef59ba3b5f4d0b0b2f9 Mon Sep 17 00:00:00 2001
+Message-Id: <9804eb7e5996c52cc542eef59ba3b5f4d0b0b2f9.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Thu, 12 Nov 2020 21:51:34 -0500
+Subject: [PATCH 7/9] Don't set filesize if we don't know the size
+
+I only meant to fix the g_variant_unref warning, but fixing all of them
+works too!
+---
+ src/bt-obex.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/bt-obex.c b/src/bt-obex.c
+index 413c12d..219d458 100644
+--- a/src/bt-obex.c
++++ b/src/bt-obex.c
+@@ -90,14 +90,22 @@ static void _obex_server_object_manager_handler(GDBusConnection *connection, con
+             GVariant* session_variant = g_variant_lookup_value(properties, "Session", NULL);
+ 
+             ObexTransferInfo *info = g_malloc0(sizeof(ObexTransferInfo));
+-            info->filesize = g_variant_get_uint64(size_variant);
+             info->status = g_strdup(g_variant_get_string(status_variant, NULL));
+ 
+             ObexSession *session = obex_session_new(g_variant_get_string(session_variant, NULL));
+             info->obex_root = g_strdup(obex_session_get_root(session, NULL));
+             g_object_unref(session);
+ 
+-            g_variant_unref(size_variant);
++            if (size_variant != NULL)
++            {
++                info->filesize = g_variant_get_uint64(size_variant);
++                g_variant_unref(size_variant);
++            }
++            else
++            {
++                info->filesize = 0;
++            }
++
+             g_variant_unref(status_variant);
+             g_variant_unref(session_variant);
+             
+-- 
+2.34.1
+
+
+From 9566f84464d486983ec597945bc4d5d1594ed830 Mon Sep 17 00:00:00 2001
+Message-Id: <9566f84464d486983ec597945bc4d5d1594ed830.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Sun, 15 Nov 2020 16:18:36 -0500
+Subject: [PATCH 8/9] Fix a use-after-free in bt-obex
+
+---
+ src/bt-obex.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bt-obex.c b/src/bt-obex.c
+index 219d458..7dc5d6b 100644
+--- a/src/bt-obex.c
++++ b/src/bt-obex.c
+@@ -626,7 +626,7 @@ int main(int argc, char *argv[])
+         mainloop = g_main_loop_new(NULL, FALSE);
+ 
+         ObexClient *client = obex_client_new();
+-        const gchar *session_path = obex_client_create_session(client, dst_address, device_dict, &error);
++        const gchar *session_path = obex_client_create_session(client, dst_address, g_variant_ref(device_dict), &error);
+         exit_if_error(error);
+         ObexSession *session = obex_session_new(session_path);
+         ObexObjectPush *oop = obex_object_push_new(obex_session_get_dbus_object_path(session));
+-- 
+2.34.1
+
+
+From 5271a4c6419b54a0b18070d39bfc69fae2819c00 Mon Sep 17 00:00:00 2001
+Message-Id: <5271a4c6419b54a0b18070d39bfc69fae2819c00.1710791277.git.joerg.sommer@navimatix.de>
+In-Reply-To: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+References: <e5db2eec2591f0109f0eb7c2631055210b55f2f5.1710791277.git.joerg.sommer@navimatix.de>
+From: thatlittlegit <personal@thatlittlegit.tk>
+Date: Sat, 21 Nov 2020 13:09:46 -0500
+Subject: [PATCH 9/9] Fix running sdptool if it isn't in $PATH
+
+---
+ src/bt-device.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/bt-device.c b/src/bt-device.c
+index a739b98..948a10c 100644
+--- a/src/bt-device.c
++++ b/src/bt-device.c
+@@ -331,9 +331,9 @@ static GHashTable *_bt_device_sdp_browse(const gchar *device_path, const gchar *
+         }
+         
+         if(pattern == NULL || strlen(pattern) == 0)
+-            execl("/bin/sdptool", "/bin/sdptool", "browse", "--xml", device_path, (char *) 0);
++            execlp("sdptool", "sdptool", "browse", "--xml", device_path, (char *) 0);
+         else
+-            execl("/bin/sdptool", "/bin/sdptool", "browse", "--xml", "--uuid", pattern, device_path, (char *) 0);
++            execlp("sdptool", "sdptool", "browse", "--xml", "--uuid", pattern, device_path, (char *) 0);
+         
+     }
+     if(pid == -1)
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools/obex-file-fix-null-check.patch b/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools/obex-file-fix-null-check.patch
new file mode 100644
index 0000000..231f3b0
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools/obex-file-fix-null-check.patch
@@ -0,0 +1,41 @@
+Upstream-Status: Submitted [https://github.com/khvzak/bluez-tools/pull/47]
+
+From f9bc83d46f131037f7fa5195a506b65560199d0d Mon Sep 17 00:00:00 2001
+Message-Id: <f9bc83d46f131037f7fa5195a506b65560199d0d.1710791715.git.joerg.sommer@navimatix.de>
+From: George Talusan <george.talusan@gmail.com>
+Date: Mon, 26 Oct 2020 21:35:51 -0400
+Subject: [PATCH] fix null checks
+
+---
+ src/lib/bluez/obex/obex_file_transfer.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/lib/bluez/obex/obex_file_transfer.c b/src/lib/bluez/obex/obex_file_transfer.c
+index 2d3dafe..91c41d6 100644
+--- a/src/lib/bluez/obex/obex_file_transfer.c
++++ b/src/lib/bluez/obex/obex_file_transfer.c
+@@ -194,7 +194,7 @@ GVariant *obex_file_transfer_get_file(ObexFileTransfer *self, const gchar *targe
+ 	g_assert(OBEX_FILE_TRANSFER_IS(self));
+ 	GVariant *ret = NULL;
+ 	GVariant *proxy_ret = g_dbus_proxy_call_sync(self->priv->proxy, "GetFile", g_variant_new ("(ss)", targetfile, sourcefile), G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+-	if (proxy_ret != NULL)
++	if (proxy_ret == NULL)
+ 		return NULL;
+ 	ret = g_variant_ref_sink(proxy_ret);
+ 	g_variant_unref(proxy_ret);
+@@ -228,9 +228,9 @@ GVariant *obex_file_transfer_put_file(ObexFileTransfer *self, const gchar *sourc
+ 	g_assert(OBEX_FILE_TRANSFER_IS(self));
+ 	GVariant *ret = NULL;
+ 	GVariant *proxy_ret = g_dbus_proxy_call_sync(self->priv->proxy, "PutFile", g_variant_new ("(ss)", targetfile, sourcefile), G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+-	if (proxy_ret != NULL)
++	if (proxy_ret == NULL)
+ 		return NULL;
+ 	ret = g_variant_ref_sink(proxy_ret);
+ 	g_variant_unref(proxy_ret);
+ 	return ret;
+-}
+\ No newline at end of file
++}
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools_git.bb
new file mode 100644
index 0000000..2200563
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/bluez-tools/bluez-tools_git.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Bluez Tools"
+DESCRIPTION = "\
+    Additional tools for bluez5 to list, manage, and show inforations about \
+    adapters, agents, devices, network connections, and obex. \
+"
+HOMEPAGE = "https://github.com/khvzak/bluez-tools"
+BUGTRACKER = "https://github.com/khvzak/bluez-tools/issues"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
+
+DEPENDS = "dbus-glib glib-2.0 readline"
+
+SRC_URI = "\
+    git://github.com/khvzak/bluez-tools.git;protocol=https;branch=master \
+    file://fix-memory-leaks.patch \
+    file://obex-file-fix-null-check.patch \
+"
+SRCREV = "f65321736475429316f07ee94ec0deac8e46ec4a"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+RDEPENDS:${PN} = "bluez5"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_1.16.bb b/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_1.16.bb
index 0a654a1..f5a699d 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_1.16.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/civetweb/civetweb_1.16.bb
@@ -40,4 +40,9 @@
 PACKAGECONFIG[ssl] = "-DCIVETWEB_ENABLE_SSL=ON -DCIVETWEB_SSL_OPENSSL_API_1_1=OFF -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=OFF,-DCIVETWEB_ENABLE_SSL=OFF,openssl (=1.0.2%),"
 PACKAGECONFIG[websockets] = "-DCIVETWEB_ENABLE_WEBSOCKETS=ON,-DCIVETWEB_ENABLE_WEBSOCKETS=OFF,"
 
+do_install:append() {
+    sed -i -e 's|${RECIPE_SYSROOT_NATIVE}||g' \
+        -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/civetweb/civetweb-targets.cmake
+}
+
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0003-configure.ac-allow-cross-compilation.patch b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0003-configure.ac-allow-cross-compilation.patch
index e544236..3635412 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0003-configure.ac-allow-cross-compilation.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0003-configure.ac-allow-cross-compilation.patch
@@ -12,26 +12,28 @@
 Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
 Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
 
-update to new version 3.0.17 to fix patch warning
+Update to new version 3.0.17 to fix patch warning
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Rebased for 3.2.3
+Signed-off-by: Randy MacLeod <randy.macleod@windriver.com>
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+
 ---
  src/modules/rlm_krb5/configure.ac | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/src/modules/rlm_krb5/configure.ac b/src/modules/rlm_krb5/configure.ac
-index a0f510cfb3..d2f3eca03e 100644
+index 9ee6379ea4..1dad481da8 100644
 --- a/src/modules/rlm_krb5/configure.ac
 +++ b/src/modules/rlm_krb5/configure.ac
-@@ -140,7 +140,8 @@ if test x$with_[]modname != xno; then
- 		FR_SMART_CHECK_LIB(krb5, krb5_is_thread_safe)
- 		if test "x$ac_cv_lib_krb5_krb5_is_thread_safe" = xyes; then
- 			AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <krb5.h>]], [[return krb5_is_thread_safe() ? 0 : 1]])],
--				[krb5threadsafe="-DKRB5_IS_THREAD_SAFE"], [AC_MSG_WARN([[libkrb5 is not threadsafe]])])
-+				[krb5threadsafe="-DKRB5_IS_THREAD_SAFE"], [AC_MSG_WARN([[libkrb5 is not threadsafe]])],
-+				[AC_MSG_WARN(cross compiling: not checking)])
- 		fi
- 	else
- 		krb5threadsafe=""
--- 
-2.25.1
-
+@@ -143,7 +143,8 @@ if test "$krb5threadsafe" != "no"; then
+ 	FR_SMART_CHECK_LIB(krb5, krb5_is_thread_safe)
+ 	if test "x$ac_cv_lib_krb5_krb5_is_thread_safe" = xyes; then
+ 		AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <krb5.h>]], [[return krb5_is_thread_safe() ? 0 : 1]])],
+-			[krb5threadsafe="-DKRB5_IS_THREAD_SAFE"], [AC_MSG_WARN([[libkrb5 is not threadsafe]])])
++			[krb5threadsafe="-DKRB5_IS_THREAD_SAFE"], [AC_MSG_WARN([[libkrb5 is not threadsafe]])],
++			[AC_MSG_WARN(cross compiling: not checking)])
+ 	fi
+ else
+ 	krb5threadsafe=""
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0006-Avoid-searching-host-dirs.patch b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0006-Avoid-searching-host-dirs.patch
index 8fd0dca..510136d 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0006-Avoid-searching-host-dirs.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0006-Avoid-searching-host-dirs.patch
@@ -10,189 +10,214 @@
 
 Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
 Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- acinclude.m4                                                | 4 ++--
- src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac        | 4 ++--
- src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac   | 4 ++--
- src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac      | 4 ++--
- src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac      | 6 +++---
- src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac     | 2 +-
- src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac | 4 ++--
- src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac   | 4 ++--
- 8 files changed, 16 insertions(+), 16 deletions(-)
 
-diff --git a/acinclude.m4 b/acinclude.m4
-index a953d0e1b6..ede143d3c2 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -115,7 +115,7 @@ dnl #
- dnl #  Try to guess possible locations.
- dnl #
- if test "x$smart_lib" = "x"; then
--  for try in /usr/local/lib /opt/lib; do
-+  for try in $smart_lib_dir; do
-     AC_MSG_CHECKING([for $2 in -l$1 in $try])
-     LIBS="-l$1 $old_LIBS"
-     CPPFLAGS="-L$try -Wl,-rpath,$try $old_CPPFLAGS"
-@@ -155,7 +155,7 @@ ac_safe=`echo "$1" | sed 'y%./+-%__pm%'`
+Rebased for 3.2.3
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ m4/fr_smart_check_include.m4                                |    2 +-
+ m4/fr_smart_check_lib.m4                                    |   22 ----------------------
+ src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac        |    4 ++--
+ src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac   |    4 ++--
+ src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac      |    4 ++--
+ src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac      |    6 +++---
+ src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac     |    2 +-
+ src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac |    4 ++--
+ src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac   |    4 ++--
+ 9 files changed, 15 insertions(+), 37 deletions(-)
+
+diff --git a/m4/fr_smart_check_include.m4 b/m4/fr_smart_check_include.m4
+index e7d4443f9c..2b69704f98 100644
+--- a/m4/fr_smart_check_include.m4
++++ b/m4/fr_smart_check_include.m4
+@@ -9,7 +9,7 @@ ac_safe=`echo "$1" | sed 'y%./+-%__pm%'`
  old_CPPFLAGS="$CPPFLAGS"
  smart_include=
  dnl #  The default directories we search in (in addition to the compilers search path)
 -smart_include_dir="/usr/local/include /opt/include"
-+smart_include_dir=
++smart_include_dir=""
  
  dnl #  Our local versions
  _smart_try_dir=
 diff --git a/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac
-index 44f84aa27e..23a1899591 100644
+index 0d94ee9bf6..6108e62054 100644
 --- a/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac
 +++ b/src/modules/rlm_sql/drivers/rlm_sql_db2/configure.ac
-@@ -61,14 +61,14 @@ if test x$with_[]modname != xno; then
- 		esac])
+@@ -58,14 +58,14 @@ AC_ARG_WITH(ibmdb2-dir,
+ 	esac])
  
- 	dnl Check for SQLConnect in -ldb2
--	smart_try_dir="$ibmdb2_lib_dir /usr/local/db2/lib /usr/IBMdb2/V7.1/lib"
-+	smart_try_dir="$ibmdb2_lib_dir"
- 	FR_SMART_CHECK_LIB(db2, SQLConnect)
- 	if test "x$ac_cv_lib_db2_SQLConnect" != xyes; then
- 		fail="$fail libdb2"
- 	fi
+ dnl Check for SQLConnect in -ldb2
+-smart_try_dir="$ibmdb2_lib_dir /usr/local/db2/lib /usr/IBMdb2/V7.1/lib"
++smart_try_dir="$ibmdb2_lib_dir"
+ FR_SMART_CHECK_LIB(db2, SQLConnect)
+ if test "x$ac_cv_lib_db2_SQLConnect" != xyes; then
+ 	FR_MODULE_FAIL([libdb2])
+ fi
  
- 	dnl Check for sqlcli.h
--	smart_try_dir="$ibmdb2_include_dir /usr/local/db2/include /usr/IBMdb2/V7.1/include"
-+	smart_try_dir="$ibmdb2_include_dir"
- 	FR_SMART_CHECK_INCLUDE(sqlcli.h)
- 	if test "x$ac_cv_header_sqlcli_h" != xyes; then
- 		fail="$fail sqlcli.h"
+ dnl Check for sqlcli.h
+-smart_try_dir="$ibmdb2_include_dir /usr/local/db2/include /usr/IBMdb2/V7.1/include"
++smart_try_dir="$ibmdb2_include_dir"
+ FR_SMART_CHECK_INCLUDE(sqlcli.h)
+ if test "x$ac_cv_header_sqlcli_h" != xyes; then
+ 	FR_MODULE_FAIL([sqlcli.h])
 diff --git a/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac
-index 4c2fd7ba9e..10c864def5 100644
+index 5aa7b4b6ee..2eda5b6cc5 100644
 --- a/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac
 +++ b/src/modules/rlm_sql/drivers/rlm_sql_firebird/configure.ac
-@@ -60,14 +60,14 @@ if test x$with_[]modname != xno; then
- 		esac])
+@@ -58,14 +58,14 @@ AC_ARG_WITH(firebird-dir,
+ 	esac])
  
- 	dnl Check for isc_attach_database in -lfbclient
--	smart_try_dir="$firebird_lib_dir /usr/lib/firebird2/lib /usr/local/firebird/lib"
-+	smart_try_dir="$firebird_lib_dir"
- 	FR_SMART_CHECK_LIB(fbclient, isc_attach_database)
- 	if test "x$ac_cv_lib_fbclient_isc_attach_database" != xyes; then
- 		fail="$fail libfbclient"
- 	fi
+ dnl Check for isc_attach_database in -lfbclient
+-smart_try_dir="$firebird_lib_dir /usr/lib/firebird2/lib /usr/local/firebird/lib"
++smart_try_dir="$firebird_lib_dir"
+ FR_SMART_CHECK_LIB(fbclient, isc_attach_database)
+ if test "x$ac_cv_lib_fbclient_isc_attach_database" != xyes; then
+ 	FR_MODULE_FAIL([libfbclient])
+ fi
  
- 	dnl Check for ibase.h
--	smart_try_dir="$firebird_include_dir /usr/lib/firebird2/include /usr/local/firebird/include"
-+	smart_try_dir="$firebird_include_dir"
- 	FR_SMART_CHECK_INCLUDE(ibase.h)
- 	if test "x$ac_cv_header_ibase_h" != xyes; then
- 		fail="$fail ibase.h"
+ dnl Check for ibase.h
+-smart_try_dir="$firebird_include_dir /usr/lib/firebird2/include /usr/local/firebird/include"
++smart_try_dir="$firebird_include_dir"
+ FR_SMART_CHECK_INCLUDE(ibase.h)
+ if test "x$ac_cv_header_ibase_h" != xyes; then
+ 	FR_MODULE_FAIL([ibase.h])
 diff --git a/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac
-index d26ac9c431..6e4500e948 100644
+index d96216aca8..88cbc469f7 100644
 --- a/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac
 +++ b/src/modules/rlm_sql/drivers/rlm_sql_iodbc/configure.ac
-@@ -61,14 +61,14 @@ if test x$with_[]modname != xno; then
- 		esac])
+@@ -58,14 +58,14 @@ AC_ARG_WITH(iodbc-dir,
+ 	esac])
  
- 	dnl Check for SQLConnect in -liodbc
--	smart_try_dir="$iodbc_lib_dir /usr/lib /usr/lib/iodbc /usr/local/lib/iodbc /usr/local/iodbc/lib/iodbc"
-+	smart_try_dir="$iodbc_lib_dir"
- 	FR_SMART_CHECK_LIB(iodbc, SQLConnect)
- 	if test "x$ac_cv_lib_iodbc_SQLConnect" != xyes; then
- 		fail="$fail libiodbc"
- 	fi
+ dnl Check for SQLConnect in -liodbc
+-smart_try_dir="$iodbc_lib_dir /usr/lib /usr/lib/iodbc /usr/local/lib/iodbc /usr/local/iodbc/lib/iodbc"
++smart_try_dir="$iodbc_lib_dir"
+ FR_SMART_CHECK_LIB(iodbc, SQLConnect)
+ if test "x$ac_cv_lib_iodbc_SQLConnect" != xyes; then
+ 	FR_MODULE_FAIL([libiodbc])
+ fi
  
- 	dnl Check for isql.h
--	smart_try_dir="$iodbc_include_dir /usr/include /usr/include/iodbc /usr/local/iodbc/include"
-+	smart_try_dir="$iodbc_include_dir"
- 	FR_SMART_CHECK_INCLUDE(isql.h)
- 	if test "x$ac_cv_header_isql_h" != xyes; then
- 		fail="$fail isql.h"
+ dnl Check for isql.h
+-smart_try_dir="$iodbc_include_dir /usr/include /usr/include/iodbc /usr/local/iodbc/include"
++smart_try_dir="$iodbc_include_dir"
+ FR_SMART_CHECK_INCLUDE(isql.h)
+ if test "x$ac_cv_header_isql_h" != xyes; then
+ 	FR_MODULE_FAIL([isql.h])
 diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac
-index df36da77bf..31359041c7 100644
+index d36aecbda6..201a623d4e 100644
 --- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac
 +++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/configure.ac
-@@ -140,7 +140,7 @@ if test x$with_[]modname != xno; then
+@@ -138,7 +138,7 @@ fi
  
- 	dnl # Check for libmysqlclient_r
- 	if test "x$have_a_libmysqlclient" != "xyes"; then
--	    smart_try_dir="$mysql_lib_dir /usr/lib /usr/lib/mysql /usr/local/lib/mysql /usr/local/mysql/lib/mysql"
-+	    smart_try_dir="$mysql_lib_dir"
- 	    FR_SMART_CHECK_LIB(mysqlclient_r, mysql_init)
- 	    if test "x$ac_cv_lib_mysqlclient_r_mysql_init" = "xyes"; then
- 			have_a_libmysqlclient='yes'
-@@ -149,7 +149,7 @@ if test x$with_[]modname != xno; then
+ dnl # Check for libmysqlclient_r
+ if test "x$have_a_libmysqlclient" != "xyes"; then
+-    smart_try_dir="$mysql_lib_dir /usr/lib /usr/lib/mysql /usr/local/lib/mysql /usr/local/mysql/lib/mysql"
++    smart_try_dir="$mysql_lib_dir"
+     FR_SMART_CHECK_LIB(mysqlclient_r, mysql_init)
+     if test "x$ac_cv_lib_mysqlclient_r_mysql_init" = "xyes"; then
+ 		have_a_libmysqlclient='yes'
+@@ -147,7 +147,7 @@ fi
  
- 	dnl # Check for libmysqlclient
- 	if test "x$have_a_libmysqlclient" != "xyes"; then
--	    smart_try_dir="$mysql_lib_dir /usr/lib /usr/lib/mysql /usr/local/lib/mysql /usr/local/mysql/lib/mysql"
-+	    smart_try_dir="$mysql_lib_dir"
- 	    FR_SMART_CHECK_LIB(mysqlclient, mysql_init)
- 	    if test "x$ac_cv_lib_mysqlclient_mysql_init" = "xyes"; then
- 			have_a_libmysqlclient='yes'
-@@ -243,7 +243,7 @@ if test x$with_[]modname != xno; then
-     fi
+ dnl # Check for libmysqlclient
+ if test "x$have_a_libmysqlclient" != "xyes"; then
+-    smart_try_dir="$mysql_lib_dir /usr/lib /usr/lib/mysql /usr/local/lib/mysql /usr/local/mysql/lib/mysql"
++    smart_try_dir="$mysql_lib_dir"
+     FR_SMART_CHECK_LIB(mysqlclient, mysql_init)
+     if test "x$ac_cv_lib_mysqlclient_mysql_init" = "xyes"; then
+ 		have_a_libmysqlclient='yes'
+@@ -242,7 +242,7 @@ if test "x$have_mysql_h" != "xyes"; then
+ fi
  
-     if test "x$have_mysql_h" != "xyes"; then
--		smart_try_dir="$mysql_include_dir /usr/local/include /usr/local/mysql/include"
-+		smart_try_dir="$mysql_include_dir"
- 		FR_SMART_CHECK_INCLUDE(mysql/mysql.h)
- 		if test "x$ac_cv_header_mysql_mysql_h" = "xyes"; then
- 	    	AC_DEFINE(HAVE_MYSQL_MYSQL_H, [], [Define if you have <mysql/mysql.h>])
+ if test "x$have_mysql_h" != "xyes"; then
+-	smart_try_dir="$mysql_include_dir /usr/local/include /usr/local/mysql/include"
++	smart_try_dir="$mysql_include_dir"
+ 	FR_SMART_CHECK_INCLUDE(mysql/mysql.h)
+ 	if test "x$ac_cv_header_mysql_mysql_h" = "xyes"; then
+ 	AC_DEFINE(HAVE_MYSQL_MYSQL_H, [], [Define if you have <mysql/mysql.h>])
 diff --git a/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac
-index 3b45da582a..03e6607d2b 100644
+index f31b7d2c5a..67bbf66df5 100644
 --- a/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac
 +++ b/src/modules/rlm_sql/drivers/rlm_sql_oracle/configure.ac
-@@ -68,7 +68,7 @@ if test x$with_[]modname != xno; then
-     dnl # Check for header files
-     dnl ############################################################
+@@ -66,7 +66,7 @@ dnl ############################################################
+ dnl # Check for header files
+ dnl ############################################################
  
--    smart_try_dir="$oracle_include_dir /usr/local/instaclient/include"
-+    smart_try_dir="$oracle_include_dir"
+-smart_try_dir="$oracle_include_dir /usr/local/instaclient/include"
++smart_try_dir="$oracle_include_dir"
  
-     if test "x$ORACLE_HOME" != "x"; then
+ if test "x$ORACLE_HOME" != "x"; then
  	smart_try_dir="${smart_try_dir} ${ORACLE_HOME}/include"
 diff --git a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac
-index 8ac1022e89..d46c0f66bf 100644
+index 46587e4099..b41c51bda7 100644
 --- a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac
 +++ b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/configure.ac
-@@ -45,7 +45,7 @@ if test x$with_[]modname != xno; then
- 	  esac ]
- 	)
+@@ -43,7 +43,7 @@ AC_ARG_WITH(rlm-sql-postgresql-include-dir,
+ 		;;
+ 	esac])
  
--	smart_try_dir="$rlm_sql_postgresql_include_dir /usr/include/postgresql /usr/local/pgsql/include /usr/include/pgsql"
-+	smart_try_dir="$rlm_sql_postgresql_include_dir"
- 	FR_SMART_CHECK_INCLUDE(libpq-fe.h)
- 	if test "x$ac_cv_header_libpqmfe_h" != "xyes"; then
- 		fail="$fail libpq-fe.h"
-@@ -94,7 +94,7 @@ if test x$with_[]modname != xno; then
- 		  ])
- 	fi
+-smart_try_dir="$rlm_sql_postgresql_include_dir /usr/include/postgresql /usr/local/pgsql/include /usr/include/pgsql"
++smart_try_dir="$rlm_sql_postgresql_include_dir"
+ FR_SMART_CHECK_INCLUDE(libpq-fe.h)
+ if test "x$ac_cv_header_libpqmfe_h" != "xyes"; then
+ 	FR_MODULE_FAIL([libpq-fe.h])
+@@ -95,7 +95,7 @@ else
+ 		])
+ fi
  
--	smart_try_dir="$rlm_sql_postgresql_lib_dir /usr/lib /usr/local/pgsql/lib"
-+	smart_try_dir="$rlm_sql_postgresql_lib_dir"
- 	FR_SMART_CHECK_LIB(pq, PQconnectdb)
- 	if test "x$ac_cv_lib_pq_PQconnectdb" != "xyes"; then
- 		fail="$fail libpq"
+-smart_try_dir="$rlm_sql_postgresql_lib_dir /usr/lib /usr/local/pgsql/lib"
++smart_try_dir="$rlm_sql_postgresql_lib_dir"
+ FR_SMART_CHECK_LIB(pq, PQconnectdb)
+ if test "x$ac_cv_lib_pq_PQconnectdb" != "xyes"; then
+ 	FR_MODULE_FAIL([libpq])
 diff --git a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac
-index f10279fe1f..0081a338c8 100644
+index 3bdfae6032..ce68c312c6 100644
 --- a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac
 +++ b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/configure.ac
-@@ -61,14 +61,14 @@ if test x$with_[]modname != xno; then
- 		esac])
+@@ -58,14 +58,14 @@ AC_ARG_WITH(unixodbc-dir,
+ 	esac])
  
- 	dnl Check for SQLConnect in -lodbc
--	smart_try_dir="$unixodbc_lib_dir /usr/local/unixodbc/lib"
-+	smart_try_dir="$unixodbc_lib_dir"
- 	FR_SMART_CHECK_LIB(odbc, SQLConnect)
- 	if test "x$ac_cv_lib_odbc_SQLConnect" != xyes; then
- 		fail="$fail libodbc"
- 	fi
+ dnl Check for SQLConnect in -lodbc
+-smart_try_dir="$unixodbc_lib_dir /usr/local/unixodbc/lib"
++smart_try_dir="$unixodbc_lib_dir"
+ FR_SMART_CHECK_LIB(odbc, SQLConnect)
+ if test "x$ac_cv_lib_odbc_SQLConnect" != xyes; then
+ 	FR_MODULE_FAIL([libodbc])
+ fi
  
- 	dnl Check for sql.h
--	smart_try_dir="$unixodbc_include_dir /usr/local/unixodbc/include"
-+	smart_try_dir="$unixodbc_include_dir"
- 	FR_SMART_CHECK_INCLUDE(sql.h)
- 	if test "x$ac_cv_header_sql_h" != xyes; then
- 		fail="$fail sql.h"
--- 
-2.25.1
-
+ dnl Check for sql.h
+-smart_try_dir="$unixodbc_include_dir /usr/local/unixodbc/include"
++smart_try_dir="$unixodbc_include_dir"
+ FR_SMART_CHECK_INCLUDE(sql.h)
+ if test "x$ac_cv_header_sql_h" != xyes; then
+ 	FR_MODULE_FAIL([sql.h])
+diff --git a/m4/fr_smart_check_lib.m4 b/m4/fr_smart_check_lib.m4
+index 16ac5b3c5e..0f5e9fc6d6 100644
+--- a/m4/fr_smart_check_lib.m4
++++ b/m4/fr_smart_check_lib.m4
+@@ -64,28 +64,6 @@ if test "x$smart_lib" = "x"; then
+   LIBS="$old_LIBS"
+ fi
+ 
+-dnl #
+-dnl #  Try to guess possible locations.
+-dnl #
+-if test "x$smart_lib" = "x"; then
+-  for try in /usr/local/lib /opt/lib; do
+-    AC_MSG_CHECKING([for $2 in -l$1 in $try])
+-    LIBS="-l$1 $old_LIBS"
+-    CPPFLAGS="-L$try -Wl,-rpath,$try $old_CPPFLAGS"
+-    AC_TRY_LINK([extern char $2();],
+-		[$2()],
+-		[
+-		  smart_lib="-l$1"
+-		  smart_ldflags="-L$try -Wl,-rpath,$try"
+-		  AC_MSG_RESULT(yes)
+-		  break
+-		],
+-		[AC_MSG_RESULT(no)])
+-  done
+-  LIBS="$old_LIBS"
+-  CPPFLAGS="$old_CPPFLAGS"
+-fi
+-
+ dnl #
+ dnl #  Found it, set the appropriate variable.
+ dnl #
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch
index cb71fb1..78259d7 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch
@@ -16,18 +16,15 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/modules/rlm_python/configure.ac b/src/modules/rlm_python/configure.ac
-index 08ecb62518..d5c0944ff1 100644
+index c79c327064..5f4d274990 100644
 --- a/src/modules/rlm_python/configure.ac
 +++ b/src/modules/rlm_python/configure.ac
-@@ -98,7 +98,7 @@ if test x$with_[]modname != xno; then
+@@ -103,7 +103,7 @@ FR_MODULE_TEST_PASS_DO([
  
- 		old_CFLAGS=$CFLAGS
- 		CFLAGS="$CFLAGS $PY_CFLAGS"
--		smart_try_dir="$PY_PREFIX/include/python$PY_SYS_VERSION"
-+		smart_try_dir="$PY_PREFIX/include/python$PY_SYS_VERSION $PY_INC_DIR"
- 		FR_SMART_CHECK_INCLUDE(Python.h)
- 		CFLAGS=$old_CFLAGS
+ 	old_CFLAGS=$CFLAGS
+ 	CFLAGS="$CFLAGS $PY_CFLAGS"
+-	smart_try_dir="$PY_PREFIX/include/python$PY_SYS_VERSION"
++	smart_try_dir="$PY_PREFIX/include/python$PY_SYS_VERSION $PY_INC_DIR"
+ 	FR_SMART_CHECK_INCLUDE(Python.h)
+ 	CFLAGS=$old_CFLAGS
  
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch
index 69125eb..efa5c53 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch
@@ -14,18 +14,15 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/modules/rlm_mschap/configure.ac b/src/modules/rlm_mschap/configure.ac
-index 0fd105d7e6..6ab15509e5 100644
+index 953336f475..77a18af55d 100644
 --- a/src/modules/rlm_mschap/configure.ac
 +++ b/src/modules/rlm_mschap/configure.ac
-@@ -75,7 +75,7 @@ if test x$with_[]modname != xno; then
-         mod_ldflags="-F /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks -framework DirectoryService"
-     fi
+@@ -77,7 +77,7 @@ else
+         FR_MODULE_FEATURE([opendirectory], [without opendirectory support])
+ fi
  
--    smart_try_dir="$winbind_include_dir /usr/include/samba-4.0"
-+    smart_try_dir="$winbind_include_dir =/usr/include/samba-4.0"
-     FR_SMART_CHECK_INCLUDE(wbclient.h, [#include <stdint.h>
- 					#include <stdbool.h>])
-     if test "x$ac_cv_header_wbclient_h" != "xyes"; then
--- 
-2.25.1
-
+-smart_try_dir="$winbind_include_dir /usr/include/samba-4.0"
++smart_try_dir="$winbind_include_dir =/usr/include/samba-4.0"
+ FR_SMART_CHECK_INCLUDE(wbclient.h, [#include <stdint.h>
+ 				#include <stdbool.h>])
+ if test "x$ac_cv_header_wbclient_h" != "xyes"; then
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0017-Add-acinclude.m4-to-include-required-macros.patch b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0017-Add-acinclude.m4-to-include-required-macros.patch
new file mode 100644
index 0000000..f5c399e
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0017-Add-acinclude.m4-to-include-required-macros.patch
@@ -0,0 +1,61 @@
+From 40abff4062d0521cf2b2a8a4660a3d2933f86f9d Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Mon, 1 Apr 2024 09:09:07 +0000
+Subject: [PATCH] Add acinclude.m4 to include required macros
+
+* These micro files are in the m4 directories, but the aclocal didn't
+  add them to aclocal.m4 automatically, so add them to acinclude.m4
+  manually.
+
+* The runlog.m4 is added for python.m4.
+
+Upstream-Status: Inappropriate [OE Specific]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ acinclude.m4 |  8 ++++++++
+ m4/runlog.m4 | 17 +++++++++++++++++
+ 2 files changed, 25 insertions(+)
+ create mode 100644 acinclude.m4
+ create mode 100644 m4/runlog.m4
+
+diff --git a/acinclude.m4 b/acinclude.m4
+new file mode 100644
+index 0000000000..118b7f0e5f
+--- /dev/null
++++ b/acinclude.m4
+@@ -0,0 +1,8 @@
++m4_include([m4/fr_init_module.m4])
++m4_include([m4/ax_with_prog.m4])
++m4_include([m4/runlog.m4])
++m4_include([m4/python.m4])
++m4_include([m4/ax_compare_version.m4])
++m4_include([m4/libcurl_check_config.m4])
++m4_include([m4/ax_ruby_devel.m4])
++m4_include([m4/ax_prog_ruby_version.m4])
+diff --git a/m4/runlog.m4 b/m4/runlog.m4
+new file mode 100644
+index 0000000000..690efc3258
+--- /dev/null
++++ b/m4/runlog.m4
+@@ -0,0 +1,17 @@
++##                                                          -*- Autoconf -*-
++# Copyright (C) 2001-2018 Free Software Foundation, Inc.
++#
++# This file is free software; the Free Software Foundation
++# gives unlimited permission to copy and/or distribute it,
++# with or without modifications, as long as this notice is preserved.
++
++# AM_RUN_LOG(COMMAND)
++# -------------------
++# Run COMMAND, save the exit status in ac_status, and log it.
++# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
++AC_DEFUN([AM_RUN_LOG],
++[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
++   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
++   ac_status=$?
++   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
++   (exit $ac_status); }])
+-- 
+2.35.5
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0017-add-python.m4-for-detecting-python-3.10.patch b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0017-add-python.m4-for-detecting-python-3.10.patch
deleted file mode 100644
index 62a4869..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/files/0017-add-python.m4-for-detecting-python-3.10.patch
+++ /dev/null
@@ -1,427 +0,0 @@
-From f1418e1b46cb1cbd130935b76f5c78c577d1ad28 Mon Sep 17 00:00:00 2001
-From: Matthew Newton <matthew-git@newtoncomputing.co.uk>
-Date: Wed, 28 Sep 2022 23:49:32 +0100
-Subject: [PATCH] add python.m4 for detecting python > 3.10
-
-Upstream-Status: Backport
-[https://github.com/FreeRADIUS/freeradius-server/commit/86584d2753829756cc73aadce5d48f703af472b1]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- src/modules/rlm_python3/configure.ac |   4 +
- src/modules/rlm_python3/m4/python.m4 | 363 +++++++++++++++++++++++++++
- src/modules/rlm_python3/m4/runlog.m4 |  17 ++
- 3 files changed, 384 insertions(+)
- create mode 100644 src/modules/rlm_python3/m4/python.m4
- create mode 100644 src/modules/rlm_python3/m4/runlog.m4
-
-diff --git a/src/modules/rlm_python3/configure.ac b/src/modules/rlm_python3/configure.ac
-index bc0e97f9ba..90f2116e73 100644
---- a/src/modules/rlm_python3/configure.ac
-+++ b/src/modules/rlm_python3/configure.ac
-@@ -3,6 +3,10 @@ AC_INIT(rlm_python3.c)
- AC_REVISION($Revision$)
- AC_DEFUN(modname,[rlm_python3])
- 
-+m4_include([ax_compare_version.m4])
-+m4_include([runlog.m4])
-+m4_include([python.m4])
-+
- AC_ARG_WITH([]modname,
- [  --with-[]modname              build []modname. (default=yes)])
- 
-diff --git a/src/modules/rlm_python3/m4/python.m4 b/src/modules/rlm_python3/m4/python.m4
-new file mode 100644
-index 0000000000..78ca7635ab
---- /dev/null
-+++ b/src/modules/rlm_python3/m4/python.m4
-@@ -0,0 +1,363 @@
-+## ------------------------                                 -*- Autoconf -*-
-+## Python file handling
-+## From Andrew Dalke
-+## Updated by James Henstridge and other contributors.
-+## ------------------------
-+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
-+#
-+# This file is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+
-+# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-+# ---------------------------------------------------------------------------
-+# Adds support for distributing Python modules and packages.  To
-+# install modules, copy them to $(pythondir), using the python_PYTHON
-+# automake variable.  To install a package with the same name as the
-+# automake package, install to $(pkgpythondir), or use the
-+# pkgpython_PYTHON automake variable.
-+#
-+# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
-+# locations to install python extension modules (shared libraries).
-+# Another macro is required to find the appropriate flags to compile
-+# extension modules.
-+#
-+# If your package is configured with a different prefix to python,
-+# users will have to add the install directory to the PYTHONPATH
-+# environment variable, or create a .pth file (see the python
-+# documentation for details).
-+#
-+# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will
-+# cause an error if the version of python installed on the system
-+# doesn't meet the requirement.  MINIMUM-VERSION should consist of
-+# numbers and dots only.
-+AC_DEFUN([AM_PATH_PYTHON],
-+ [
-+  dnl Find a Python interpreter.  Python versions prior to 2.0 are not
-+  dnl supported. (2.0 was released on October 16, 2000).
-+  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-+[python python2 python3 dnl
-+ python3.11 python3.10 dnl
-+ python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl
-+ python3.2 python3.1 python3.0 dnl
-+ python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl
-+ python2.0])
-+
-+  AC_ARG_VAR([PYTHON], [the Python interpreter])
-+
-+  m4_if([$1],[],[
-+    dnl No version check is needed.
-+    # Find any Python interpreter.
-+    if test -z "$PYTHON"; then
-+      AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :)
-+    fi
-+    am_display_PYTHON=python
-+  ], [
-+    dnl A version check is needed.
-+    if test -n "$PYTHON"; then
-+      # If the user set $PYTHON, use it and don't search something else.
-+      AC_MSG_CHECKING([whether $PYTHON version is >= $1])
-+      AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
-+			      [AC_MSG_RESULT([yes])],
-+			      [AC_MSG_RESULT([no])
-+			       AC_MSG_ERROR([Python interpreter is too old])])
-+      am_display_PYTHON=$PYTHON
-+    else
-+      # Otherwise, try each interpreter until we find one that satisfies
-+      # VERSION.
-+      AC_CACHE_CHECK([for a Python interpreter with version >= $1],
-+	[am_cv_pathless_PYTHON],[
-+	for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do
-+	  test "$am_cv_pathless_PYTHON" = none && break
-+	  AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
-+	done])
-+      # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
-+      if test "$am_cv_pathless_PYTHON" = none; then
-+	PYTHON=:
-+      else
-+        AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
-+      fi
-+      am_display_PYTHON=$am_cv_pathless_PYTHON
-+    fi
-+  ])
-+
-+  if test "$PYTHON" = :; then
-+    dnl Run any user-specified action, or abort.
-+    m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
-+  else
-+
-+  dnl Query Python for its version number.  Although site.py simply uses
-+  dnl sys.version[:3], printing that failed with Python 3.10, since the
-+  dnl trailing zero was eliminated. So now we output just the major
-+  dnl and minor version numbers, as numbers. Apparently the tertiary
-+  dnl version is not of interest.
-+  dnl
-+  AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
-+    [am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[[:2]])"`])
-+  AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
-+
-+  dnl At times, e.g., when building shared libraries, you may want
-+  dnl to know which OS platform Python thinks this is.
-+  dnl
-+  AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
-+    [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
-+  AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
-+
-+  dnl emacs-page
-+  dnl If --with-python-sys-prefix is given, use the values of sys.prefix
-+  dnl and sys.exec_prefix for the corresponding values of PYTHON_PREFIX
-+  dnl and PYTHON_EXEC_PREFIX. Otherwise, use the GNU ${prefix} and
-+  dnl ${exec_prefix} variables.
-+  dnl
-+  dnl The two are made distinct variables so they can be overridden if
-+  dnl need be, although general consensus is that you shouldn't need
-+  dnl this separation.
-+  dnl
-+  dnl Also allow directly setting the prefixes via configure options,
-+  dnl overriding any default.
-+  dnl
-+  if test "x$prefix" = xNONE; then
-+    am__usable_prefix=$ac_default_prefix
-+  else
-+    am__usable_prefix=$prefix
-+  fi
-+
-+  # Allow user to request using sys.* values from Python,
-+  # instead of the GNU $prefix values.
-+  AC_ARG_WITH([python-sys-prefix],
-+  [AS_HELP_STRING([--with-python-sys-prefix],
-+                  [use Python's sys.prefix and sys.exec_prefix values])],
-+  [am_use_python_sys=:],
-+  [am_use_python_sys=false])
-+
-+  # Allow user to override whatever the default Python prefix is.
-+  AC_ARG_WITH([python_prefix],
-+  [AS_HELP_STRING([--with-python_prefix],
-+                  [override the default PYTHON_PREFIX])],
-+  [am_python_prefix_subst=$withval
-+   am_cv_python_prefix=$withval
-+   AC_MSG_CHECKING([for explicit $am_display_PYTHON prefix])
-+   AC_MSG_RESULT([$am_cv_python_prefix])],
-+  [
-+   if $am_use_python_sys; then
-+     # using python sys.prefix value, not GNU
-+     AC_CACHE_CHECK([for python default $am_display_PYTHON prefix],
-+     [am_cv_python_prefix],
-+     [am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`])
-+
-+     dnl If sys.prefix is a subdir of $prefix, replace the literal value of
-+     dnl $prefix with a variable reference so it can be overridden.
-+     case $am_cv_python_prefix in
-+     $am__usable_prefix*)
-+       am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
-+       am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
-+       ;;
-+     *)
-+       am_python_prefix_subst=$am_cv_python_prefix
-+       ;;
-+     esac
-+   else # using GNU prefix value, not python sys.prefix
-+     am_python_prefix_subst='${prefix}'
-+     am_python_prefix=$am_python_prefix_subst
-+     AC_MSG_CHECKING([for GNU default $am_display_PYTHON prefix])
-+     AC_MSG_RESULT([$am_python_prefix])
-+   fi])
-+  # Substituting python_prefix_subst value.
-+  AC_SUBST([PYTHON_PREFIX], [$am_python_prefix_subst])
-+
-+  # emacs-page Now do it all over again for Python exec_prefix, but with yet
-+  # another conditional: fall back to regular prefix if that was specified.
-+  AC_ARG_WITH([python_exec_prefix],
-+  [AS_HELP_STRING([--with-python_exec_prefix],
-+                  [override the default PYTHON_EXEC_PREFIX])],
-+  [am_python_exec_prefix_subst=$withval
-+   am_cv_python_exec_prefix=$withval
-+   AC_MSG_CHECKING([for explicit $am_display_PYTHON exec_prefix])
-+   AC_MSG_RESULT([$am_cv_python_exec_prefix])],
-+  [
-+   # no explicit --with-python_exec_prefix, but if
-+   # --with-python_prefix was given, use its value for python_exec_prefix too.
-+   AS_IF([test -n "$with_python_prefix"],
-+   [am_python_exec_prefix_subst=$with_python_prefix
-+    am_cv_python_exec_prefix=$with_python_prefix
-+    AC_MSG_CHECKING([for python_prefix-given $am_display_PYTHON exec_prefix])
-+    AC_MSG_RESULT([$am_cv_python_exec_prefix])],
-+   [
-+    # Set am__usable_exec_prefix whether using GNU or Python values,
-+    # since we use that variable for pyexecdir.
-+    if test "x$exec_prefix" = xNONE; then
-+      am__usable_exec_prefix=$am__usable_prefix
-+    else
-+      am__usable_exec_prefix=$exec_prefix
-+    fi
-+    #
-+    if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
-+      AC_CACHE_CHECK([for python default $am_display_PYTHON exec_prefix],
-+      [am_cv_python_exec_prefix],
-+      [am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`])
-+      dnl If sys.exec_prefix is a subdir of $exec_prefix, replace the
-+      dnl literal value of $exec_prefix with a variable reference so it can
-+      dnl be overridden.
-+      case $am_cv_python_exec_prefix in
-+      $am__usable_exec_prefix*)
-+        am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
-+        am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
-+        ;;
-+      *)
-+        am_python_exec_prefix_subst=$am_cv_python_exec_prefix
-+        ;;
-+     esac
-+   else # using GNU $exec_prefix, not python sys.exec_prefix
-+     am_python_exec_prefix_subst='${exec_prefix}'
-+     am_python_exec_prefix=$am_python_exec_prefix_subst
-+     AC_MSG_CHECKING([for GNU default $am_display_PYTHON exec_prefix])
-+     AC_MSG_RESULT([$am_python_exec_prefix])
-+   fi])])
-+  # Substituting python_exec_prefix_subst.
-+  AC_SUBST([PYTHON_EXEC_PREFIX], [$am_python_exec_prefix_subst])
-+
-+  # Factor out some code duplication into this shell variable.
-+  am_python_setup_sysconfig="\
-+import sys
-+# Prefer sysconfig over distutils.sysconfig, for better compatibility
-+# with python 3.x.  See automake bug#10227.
-+try:
-+    import sysconfig
-+except ImportError:
-+    can_use_sysconfig = 0
-+else:
-+    can_use_sysconfig = 1
-+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
-+# <https://github.com/pypa/virtualenv/issues/118>
-+try:
-+    from platform import python_implementation
-+    if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
-+        can_use_sysconfig = 0
-+except ImportError:
-+    pass"
-+
-+  dnl emacs-page Set up 4 directories:
-+
-+  dnl 1. pythondir: where to install python scripts.  This is the
-+  dnl    site-packages directory, not the python standard library
-+  dnl    directory like in previous automake betas.  This behavior
-+  dnl    is more consistent with lispdir.m4 for example.
-+  dnl Query distutils for this directory.
-+  dnl
-+  AC_CACHE_CHECK([for $am_display_PYTHON script directory (pythondir)],
-+  [am_cv_python_pythondir],
-+  [if test "x$am_cv_python_prefix" = x; then
-+     am_py_prefix=$am__usable_prefix
-+   else
-+     am_py_prefix=$am_cv_python_prefix
-+   fi
-+   am_cv_python_pythondir=`$PYTHON -c "
-+$am_python_setup_sysconfig
-+if can_use_sysconfig:
-+  if hasattr(sysconfig, 'get_default_scheme'):
-+    scheme = sysconfig.get_default_scheme()
-+  else:
-+    scheme = sysconfig._get_default_scheme()
-+  if scheme == 'posix_local':
-+    # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/
-+    scheme = 'posix_prefix'
-+  sitedir = sysconfig.get_path('purelib', scheme, vars={'base':'$am_py_prefix'})
-+else:
-+  from distutils import sysconfig
-+  sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
-+sys.stdout.write(sitedir)"`
-+   #
-+   case $am_cv_python_pythondir in
-+   $am_py_prefix*)
-+     am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
-+     am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
-+     ;;
-+   *)
-+     case $am_py_prefix in
-+       /usr|/System*) ;;
-+       *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
-+          ;;
-+     esac
-+     ;;
-+   esac
-+  ])
-+  AC_SUBST([pythondir], [$am_cv_python_pythondir])
-+
-+  dnl 2. pkgpythondir: $PACKAGE directory under pythondir.  Was
-+  dnl    PYTHON_SITE_PACKAGE in previous betas, but this naming is
-+  dnl    more consistent with the rest of automake.
-+  dnl
-+  AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
-+
-+  dnl 3. pyexecdir: directory for installing python extension modules
-+  dnl    (shared libraries).
-+  dnl Query distutils for this directory.
-+  dnl
-+  AC_CACHE_CHECK([for $am_display_PYTHON extension module directory (pyexecdir)],
-+  [am_cv_python_pyexecdir],
-+  [if test "x$am_cv_python_exec_prefix" = x; then
-+     am_py_exec_prefix=$am__usable_exec_prefix
-+   else
-+     am_py_exec_prefix=$am_cv_python_exec_prefix
-+   fi
-+   am_cv_python_pyexecdir=`$PYTHON -c "
-+$am_python_setup_sysconfig
-+if can_use_sysconfig:
-+  if hasattr(sysconfig, 'get_default_scheme'):
-+    scheme = sysconfig.get_default_scheme()
-+  else:
-+    scheme = sysconfig._get_default_scheme()
-+  if scheme == 'posix_local':
-+    # Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/
-+    scheme = 'posix_prefix'
-+  sitedir = sysconfig.get_path('platlib', scheme, vars={'platbase':'$am_py_exec_prefix'})
-+else:
-+  from distutils import sysconfig
-+  sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
-+sys.stdout.write(sitedir)"`
-+   #
-+   case $am_cv_python_pyexecdir in
-+   $am_py_exec_prefix*)
-+     am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
-+     am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
-+     ;;
-+   *)
-+     case $am_py_exec_prefix in
-+       /usr|/System*) ;;
-+       *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
-+          ;;
-+     esac
-+     ;;
-+   esac
-+  ])
-+  AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
-+
-+  dnl 4. pkgpyexecdir: $(pyexecdir)/$(PACKAGE)
-+  dnl
-+  AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
-+
-+  dnl Run any user-specified action.
-+  $2
-+  fi
-+])
-+
-+
-+# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
-+# ---------------------------------------------------------------------------
-+# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
-+# Run ACTION-IF-FALSE otherwise.
-+# This test uses sys.hexversion instead of the string equivalent (first
-+# word of sys.version), in order to cope with versions such as 2.2c1.
-+# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000).
-+AC_DEFUN([AM_PYTHON_CHECK_VERSION],
-+ [prog="import sys
-+# split strings by '.' and convert to numeric.  Append some zeros
-+# because we need at least 4 digits for the hex conversion.
-+# map returns an iterator in Python 3.0 and a list in 2.x
-+minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]]
-+minverhex = 0
-+# xrange is not present in Python 3.0 and range returns an iterator
-+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
-+sys.exit(sys.hexversion < minverhex)"
-+  AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
-diff --git a/src/modules/rlm_python3/m4/runlog.m4 b/src/modules/rlm_python3/m4/runlog.m4
-new file mode 100644
-index 0000000000..690efc3258
---- /dev/null
-+++ b/src/modules/rlm_python3/m4/runlog.m4
-@@ -0,0 +1,17 @@
-+##                                                          -*- Autoconf -*-
-+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
-+#
-+# This file is free software; the Free Software Foundation
-+# gives unlimited permission to copy and/or distribute it,
-+# with or without modifications, as long as this notice is preserved.
-+
-+# AM_RUN_LOG(COMMAND)
-+# -------------------
-+# Run COMMAND, save the exit status in ac_status, and log it.
-+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-+AC_DEFUN([AM_RUN_LOG],
-+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
-+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
-+   ac_status=$?
-+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-+   (exit $ac_status); }])
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.26.bb b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.26.bb
deleted file mode 100644
index e3730cf..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.0.26.bb
+++ /dev/null
@@ -1,297 +0,0 @@
-DESCRIPTION = "FreeRADIUS is an Internet authentication daemon, which implements the RADIUS \
-protocol, as defined in RFC 2865 (and others). It allows Network Access \
-Servers (NAS boxes) to perform authentication for dial-up users. There are \
-also RADIUS clients available for Web servers, firewalls, Unix logins, and \
-more.  Using RADIUS allows authentication and authorization for a network to \
-be centralized, and minimizes the amount of re-configuration which has to be \
-done when adding or deleting new users."
-
-SUMMARY = "High-performance and highly configurable RADIUS server"
-HOMEPAGE = "http://www.freeradius.org/"
-SECTION = "System/Servers"
-LICENSE = "GPL-2.0-only & LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=eb723b61539feef013de476e68b5c50a"
-DEPENDS = "openssl-native openssl libidn libtool libpcap libtalloc"
-
-SRC_URI = "git://github.com/FreeRADIUS/freeradius-server.git;branch=v3.0.x;lfs=0;;protocol=https \
-    file://freeradius \
-    file://volatiles.58_radiusd \
-    file://radiusd.service \
-    file://radiusd-volatiles.conf \
-    file://0001-Add-autogen.sh.patch \
-    file://0002-Enable-and-change-user-and-group-of-freeradius-serve.patch \
-    file://0003-configure.ac-allow-cross-compilation.patch \
-    file://0004-Fix-libtool-detection.patch \
-    file://0005-configure.ac-add-option-for-libcap.patch \
-    file://0006-Avoid-searching-host-dirs.patch \
-    file://0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch \
-    file://0008-libtool-do-not-use-jlibtool.patch \
-    file://0009-Fix-quoting-for-BUILD_WITH.patch \
-    file://0010-fix-error-for-expansion-of-macro-in-thread.h.patch \
-    file://0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch \
-    file://0012-raddb-certs-Makefile-fix-the-existed-certificate-err.patch \
-    file://0013-raddb-certs-Makefile-fix-the-occasional-verification.patch \
-    file://0014-Workaround-error-with-autoconf-2.7.patch \
-    file://0015-bootstrap-check-commands-of-openssl-exist.patch \
-    file://0016-version.c-don-t-print-build-flags.patch \
-    file://0017-add-python.m4-for-detecting-python-3.10.patch \
-"
-
-raddbdir = "${sysconfdir}/${MLPREFIX}raddb"
-
-SRCREV = "d956f683d37ea40e7977cc5907361f3e6988a439"
-
-UPSTREAM_CHECK_GITTAGREGEX = "release_(?P<pver>\d+(\_\d+)+)"
-
-CVE_STATUS[CVE-2002-0318] = "fixed-version: The CPE in the NVD database doesn't reflect correctly the vulnerable versions."
-CVE_STATUS[CVE-2011-4966] = "fixed-version: The CPE in the NVD database doesn't reflect correctly the vulnerable versions."
-
-PARALLEL_MAKE = ""
-
-S = "${WORKDIR}/git"
-
-LDFLAGS:append:powerpc = " -latomic"
-LDFLAGS:append:mipsarch = " -latomic"
-LDFLAGS:append:armv5 = " -latomic"
-
-EXTRA_OECONF = " --enable-strict-dependencies \
-        --with-docdir=${docdir}/freeradius-${PV} \
-        --with-openssl-includes=${STAGING_INCDIR} \
-        --with-openssl-libraries=${STAGING_LIBDIR} \
-        --with-raddbdir=${raddbdir} \
-        --without-rlm_ippool \
-        --without-rlm_cache_memcached \
-        --without-rlm_counter \
-        --without-rlm_couchbase \
-        --without-rlm_dbm \
-        --without-rlm_eap_tnc \
-        --without-rlm_eap_ikev2 \
-        --without-rlm_opendirectory \
-        --without-rlm_redis \
-        --without-rlm_rediswho \
-        --without-rlm_sql_db2 \
-        --without-rlm_sql_firebird \
-        --without-rlm_sql_freetds \
-        --without-rlm_sql_iodbc \
-        --without-rlm_sql_oracle \
-        --without-rlm_sql_sybase \
-        --without-rlm_sql_mongo \
-        --without-rlm_sqlhpwippool \
-        --without-rlm_securid \
-        --without-rlm_unbound \
-        --without-rlm_python \
-        ac_cv_path_PERL=${bindir}/perl \
-        ax_cv_cc_builtin_choose_expr=no \
-        ax_cv_cc_builtin_types_compatible_p=no \
-        ax_cv_cc_builtin_bswap64=no \
-        ax_cv_cc_bounded_attribute=no \
-"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
-                   pcre libcap \
-                   openssl rlm-eap-fast rlm-eap-pwd \
-"
-
-PACKAGECONFIG[krb5] = "--with-rlm_krb5,--without-rlm_krb5,krb5"
-PACKAGECONFIG[pam] = "--with-rlm_pam,--without-rlm_pam,libpam"
-PACKAGECONFIG[libcap] = "--with-libcap,--without-libcap,libcap"
-PACKAGECONFIG[ldap] = "--with-rlm_ldap,--without-rlm_ldap,openldap"
-PACKAGECONFIG[mysql] = "--with-rlm_sql_mysql,--without-rlm_sql_mysql,mysql5"
-PACKAGECONFIG[sqlite] = "--with-rlm_sql_sqlite,--without-rlm_sql_sqlite,sqlite3"
-PACKAGECONFIG[unixodbc] = "--with-rlm_sql_unixodbc,--without-rlm_sql_unixodbc,unixodbc"
-PACKAGECONFIG[postgresql] = "--with-rlm_sql_postgresql,--without-rlm_sql_postgresql,postgresql"
-PACKAGECONFIG[pcre] = "--with-pcre,--without-pcre,libpcre"
-PACKAGECONFIG[perl] = "--with-perl=${STAGING_BINDIR_NATIVE}/perl-native/perl --with-rlm_perl,--without-rlm_perl,perl-native perl,perl"
-PACKAGECONFIG[python3] = "--with-rlm_python3 --with-rlm-python3-bin=${STAGING_BINDIR_NATIVE}/python3-native/python3 --with-rlm-python3-include-dir=${STAGING_INCDIR}/${PYTHON_DIR},--without-rlm_python3,python3-native python3"
-PACKAGECONFIG[rest] = "--with-rlm_rest,--without-rlm_rest,curl json-c"
-PACKAGECONFIG[ruby] = "--with-rlm_ruby,--without-rlm_ruby,ruby"
-PACKAGECONFIG[openssl] = "--with-openssl, --without-openssl"
-PACKAGECONFIG[rlm-eap-fast] = "--with-rlm_eap_fast, --without-rlm_eap_fast"
-PACKAGECONFIG[rlm-eap-pwd] = "--with-rlm_eap_pwd, --without-rlm_eap_pwd"
-
-inherit useradd autotools-brokensep update-rc.d systemd multilib_script multilib_header
-
-MULTILIB_SCRIPTS = "${PN}:${sbindir}/checkrad"
-
-# This is not a cpan or python based package, but it needs some definitions
-# from cpan-base and python3-dir bbclasses for building rlm_perl and rlm_python
-# correctly.
-inherit cpan-base python3-dir
-
-# The modules subdirs also need to be processed by autoreconf. Use autogen.sh
-# in order to handle the subdirs correctly.
-do_configure() {
-    ./autogen.sh
-
-    # the configure of rlm_perl needs this to get correct
-    # mod_cflags and mod_ldflags
-    if ${@bb.utils.contains('PACKAGECONFIG', 'perl', 'true', 'false', d)}; then
-        export PERL5LIB="${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}"
-    fi
-
-    oe_runconf
-
-    # we don't need dhcpclient
-    sed -i -e 's/dhcpclient.mk//' ${S}/src/modules/proto_dhcp/all.mk
-}
-
-INITSCRIPT_NAME = "radiusd"
-
-SYSTEMD_SERVICE:${PN} = "radiusd.service"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system --no-create-home --shell /bin/false --user-group radiusd"
-
-do_install() {
-    rm -rf ${D}
-    install -d ${D}/${sysconfdir}/logrotate.d
-    install -d ${D}/${sysconfdir}/pam.d
-    install -d ${D}/${localstatedir}/lib/radiusd
-
-    export LD_LIBRARY_PATH=${D}/${libdir}
-    oe_runmake install R=${D} INSTALLSTRIP=""
-
-    # remove unsupported config files
-    rm -f ${D}/${raddbdir}/experimental.conf
-
-    # remove scripts that required Perl(DBI)
-    rm -rf ${D}/${bindir}/radsqlrelay
-
-    rm -f ${D}/${sbindir}/rc.radiusd
-    rm -rf ${D}/${localstatedir}/run/
-    rm -rf ${D}/${localstatedir}/log/
-
-    chown -R radiusd:radiusd ${D}/${raddbdir}
-    chown -R radiusd:radiusd ${D}/${localstatedir}/lib/radiusd
-
-    # For sysvinit
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-        install -d ${D}${sysconfdir}/init.d
-        install -d ${D}${sysconfdir}/default/volatiles
-        install -m 0755 ${WORKDIR}/freeradius ${D}/etc/init.d/radiusd
-        install -m 0644 ${WORKDIR}/volatiles.58_radiusd ${D}${sysconfdir}/default/volatiles/58_radiusd
-    fi
-
-    # For systemd
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        install -d ${D}${systemd_unitdir}/system
-        install -m 0644 ${WORKDIR}/radiusd.service ${D}${systemd_unitdir}/system
-        sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-            -e 's,@SBINDIR@,${sbindir},g' \
-            -e 's,@STATEDIR@,${localstatedir},g' \
-            -e 's,@SYSCONFDIR@,${sysconfdir},g' \
-            ${D}${systemd_unitdir}/system/radiusd.service
-
-        install -d ${D}${sysconfdir}/tmpfiles.d/
-        install -m 0644 ${WORKDIR}/radiusd-volatiles.conf ${D}${sysconfdir}/tmpfiles.d/radiusd.conf
-    fi
-
-    oe_multilib_header freeradius/autoconf.h
-    oe_multilib_header freeradius/missing.h
-    oe_multilib_header freeradius/radpaths.h
-}
-
-# This is only needed when we install/update on a running target.
-#
-pkg_postinst:${PN} () {
-    if [ -z "$D" ]; then
-        if command -v systemd-tmpfiles >/dev/null; then
-            # create /var/log/radius, /var/run/radiusd
-            systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/radiusd.conf
-        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
-            ${sysconfdir}/init.d/populate-volatile.sh update
-        fi
-
-        # Fix ownership for /etc/raddb/*, /var/lib/radiusd
-        chown -R radiusd:radiusd ${raddbdir}
-        chown -R radiusd:radiusd ${localstatedir}/lib/radiusd
-
-        # for radiusd.service with multilib
-        if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-            install -d ${sysconfdir}/sysconfig
-            echo "MLPREFIX=${MLPREFIX}" > ${sysconfdir}/sysconfig/radiusd
-        fi
-    else
-        if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-            install -d $D${sysconfdir}/sysconfig
-            echo "MLPREFIX=${MLPREFIX}" > $D${sysconfdir}/sysconfig/radiusd
-        fi
-    fi
-}
-
-pkg_postrm:${PN} () {
-    # only try to remove ${sysconfdir}/sysconfig/radiusd for systemd
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'false', 'true', d)}; then
-        exit 0
-    fi
-
-    if [ -d ${sysconfdir}/raddb ]; then
-        exit 0
-    fi
-    for variant in ${MULTILIB_GLOBAL_VARIANTS}; do
-        if [ -d ${sysconfdir}/${variant}-raddb ]; then
-            exit 0
-        fi
-    done
-
-    rm -f ${sysconfdir}/sysconfig/radiusd
-    rmdir --ignore-fail-on-non-empty ${sysconfdir}/sysconfig
-}
-
-# We really need the symlink :(
-INSANE_SKIP:${PN} = "dev-so"
-INSANE_SKIP:${PN}-krb5 = "dev-so"
-INSANE_SKIP:${PN}-ldap = "dev-so"
-INSANE_SKIP:${PN}-mysql = "dev-so"
-INSANE_SKIP:${PN}-perl = "dev-so"
-INSANE_SKIP:${PN}-postgresql = "dev-so"
-INSANE_SKIP:${PN}-python = "dev-so"
-INSANE_SKIP:${PN}-unixodbc = "dev-so"
-
-PACKAGES =+ "${PN}-utils ${PN}-ldap ${PN}-krb5 ${PN}-perl \
-    ${PN}-python ${PN}-mysql ${PN}-postgresql ${PN}-unixodbc"
-
-FILES:${PN}-utils = "${bindir}/*"
-
-FILES:${PN}-ldap = "${libdir}/rlm_ldap.so* \
-    ${raddbdir}/mods-available/ldap \
-"
-
-FILES:${PN}-krb5 = "${libdir}/rlm_krb5.so* \
-    ${raddbdir}/mods-available/krb5 \
-"
-
-FILES:${PN}-perl = "${libdir}/rlm_perl.so* \
-    ${raddbdir}/mods-config/perl \
-    ${raddbdir}/mods-available/perl \
-"
-
-FILES:${PN}-python = "${libdir}/rlm_python3.so* \
-    ${raddbdir}/mods-config/python3 \
-    ${raddbdir}/mods-available/python3 \
-"
-
-FILES:${PN}-mysql = "${libdir}/rlm_sql_mysql.so* \
-    ${raddbdir}/mods-config/sql/*/mysql \
-    ${raddbdir}/mods-available/sql \
-"
-
-FILES:${PN}-postgresql = "${libdir}/rlm_sql_postgresql.so* \
-    ${raddbdir}/mods-config/sql/*/postgresql \
-"
-
-FILES:${PN}-unixodbc = "${libdir}/rlm_sql_unixodbc.so*"
-
-FILES:${PN} =+ "${libdir}/rlm_*.so* ${libdir}/proto_*so*"
-
-RDEPENDS:${PN} += "perl"
-RDEPENDS:${PN}-utils = "${PN} perl"
-RDEPENDS:${PN}-krb5 = "${PN}"
-RDEPENDS:${PN}-ldap = "${PN}"
-RDEPENDS:${PN}-mysql = "${PN}"
-RDEPENDS:${PN}-perl = "${PN}"
-RDEPENDS:${PN}-postgresql = "${PN}"
-RDEPENDS:${PN}-python = "${PN}"
-RDEPENDS:${PN}-unixodbc = "${PN}"
-
-CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.2.3.bb b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.2.3.bb
new file mode 100644
index 0000000..7ea63a6
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/freeradius/freeradius_3.2.3.bb
@@ -0,0 +1,298 @@
+DESCRIPTION = "FreeRADIUS is an Internet authentication daemon, which implements the RADIUS \
+protocol, as defined in RFC 2865 (and others). It allows Network Access \
+Servers (NAS boxes) to perform authentication for dial-up users. There are \
+also RADIUS clients available for Web servers, firewalls, Unix logins, and \
+more.  Using RADIUS allows authentication and authorization for a network to \
+be centralized, and minimizes the amount of re-configuration which has to be \
+done when adding or deleting new users."
+
+SUMMARY = "High-performance and highly configurable RADIUS server"
+HOMEPAGE = "http://www.freeradius.org/"
+SECTION = "System/Servers"
+LICENSE = "GPL-2.0-only & LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=eb723b61539feef013de476e68b5c50a"
+DEPENDS = "openssl-native openssl libidn libtool libpcap libtalloc"
+
+SRC_URI = "git://github.com/FreeRADIUS/freeradius-server.git;branch=v3.2.x;lfs=0;;protocol=https \
+    file://freeradius \
+    file://volatiles.58_radiusd \
+    file://radiusd.service \
+    file://radiusd-volatiles.conf \
+    file://0001-Add-autogen.sh.patch \
+    file://0002-Enable-and-change-user-and-group-of-freeradius-serve.patch \
+    file://0003-configure.ac-allow-cross-compilation.patch \
+    file://0004-Fix-libtool-detection.patch \
+    file://0005-configure.ac-add-option-for-libcap.patch \
+    file://0006-Avoid-searching-host-dirs.patch \
+    file://0007-rlm_python-add-PY_INC_DIR-in-search-dir.patch \
+    file://0008-libtool-do-not-use-jlibtool.patch \
+    file://0009-Fix-quoting-for-BUILD_WITH.patch \
+    file://0010-fix-error-for-expansion-of-macro-in-thread.h.patch \
+    file://0011-rlm_mschap-Use-includedir-instead-of-hardcoding-usr-.patch \
+    file://0012-raddb-certs-Makefile-fix-the-existed-certificate-err.patch \
+    file://0013-raddb-certs-Makefile-fix-the-occasional-verification.patch \
+    file://0014-Workaround-error-with-autoconf-2.7.patch \
+    file://0015-bootstrap-check-commands-of-openssl-exist.patch \
+    file://0016-version.c-don-t-print-build-flags.patch \
+    file://0017-Add-acinclude.m4-to-include-required-macros.patch \
+"
+
+raddbdir = "${sysconfdir}/${MLPREFIX}raddb"
+
+SRCREV = "db3d1924d9a2e8d37c43872932621f69cfdbb099"
+
+UPSTREAM_CHECK_GITTAGREGEX = "release_(?P<pver>\d+(\_\d+)+)"
+
+CVE_STATUS[CVE-2002-0318] = "fixed-version: The CPE in the NVD database doesn't reflect correctly the vulnerable versions."
+CVE_STATUS[CVE-2011-4966] = "fixed-version: The CPE in the NVD database doesn't reflect correctly the vulnerable versions."
+
+PARALLEL_MAKE = ""
+
+S = "${WORKDIR}/git"
+
+LDFLAGS:append:powerpc = " -latomic"
+LDFLAGS:append:mipsarch = " -latomic"
+LDFLAGS:append:armv5 = " -latomic"
+
+EXTRA_OECONF = " --enable-strict-dependencies \
+        --with-docdir=${docdir}/freeradius-${PV} \
+        --with-openssl-includes=${STAGING_INCDIR} \
+        --with-openssl-libraries=${STAGING_LIBDIR} \
+        --with-raddbdir=${raddbdir} \
+        --without-rlm_ippool \
+        --without-rlm_cache_memcached \
+        --without-rlm_counter \
+        --without-rlm_couchbase \
+        --without-rlm_dbm \
+        --without-rlm_eap_tnc \
+        --without-rlm_eap_ikev2 \
+        --without-rlm_opendirectory \
+        --without-rlm_redis \
+        --without-rlm_rediswho \
+        --without-rlm_cache_redis \
+        --without-rlm_sql_db2 \
+        --without-rlm_sql_firebird \
+        --without-rlm_sql_freetds \
+        --without-rlm_sql_iodbc \
+        --without-rlm_sql_oracle \
+        --without-rlm_sql_sybase \
+        --without-rlm_sql_mongo \
+        --without-rlm_sqlhpwippool \
+        --without-rlm_securid \
+        --without-rlm_unbound \
+        --without-rlm_python \
+        ac_cv_path_PERL=${bindir}/perl \
+        ax_cv_cc_builtin_choose_expr=no \
+        ax_cv_cc_builtin_types_compatible_p=no \
+        ax_cv_cc_builtin_bswap64=no \
+        ax_cv_cc_bounded_attribute=no \
+"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'pam', '', d)} \
+                   pcre libcap \
+                   openssl rlm-eap-fast rlm-eap-pwd \
+"
+
+PACKAGECONFIG[krb5] = "--with-rlm_krb5,--without-rlm_krb5,krb5"
+PACKAGECONFIG[pam] = "--with-rlm_pam,--without-rlm_pam,libpam"
+PACKAGECONFIG[libcap] = "--with-libcap,--without-libcap,libcap"
+PACKAGECONFIG[ldap] = "--with-rlm_ldap,--without-rlm_ldap,openldap"
+PACKAGECONFIG[mysql] = "--with-rlm_sql_mysql,--without-rlm_sql_mysql,mysql5"
+PACKAGECONFIG[sqlite] = "--with-rlm_sql_sqlite,--without-rlm_sql_sqlite,sqlite3"
+PACKAGECONFIG[unixodbc] = "--with-rlm_sql_unixodbc,--without-rlm_sql_unixodbc,unixodbc"
+PACKAGECONFIG[postgresql] = "--with-rlm_sql_postgresql,--without-rlm_sql_postgresql,postgresql"
+PACKAGECONFIG[pcre] = "--with-pcre,--without-pcre,libpcre"
+PACKAGECONFIG[perl] = "--with-perl=${STAGING_BINDIR_NATIVE}/perl-native/perl --with-rlm_perl,--without-rlm_perl,perl-native perl,perl"
+PACKAGECONFIG[python3] = "--with-rlm_python3 --with-rlm-python3-bin=${STAGING_BINDIR_NATIVE}/python3-native/python3 --with-rlm-python3-include-dir=${STAGING_INCDIR}/${PYTHON_DIR},--without-rlm_python3,python3-native python3"
+PACKAGECONFIG[rest] = "--with-rlm_rest,--without-rlm_rest --without-rlm_json,curl json-c"
+PACKAGECONFIG[ruby] = "--with-rlm_ruby,--without-rlm_ruby,ruby"
+PACKAGECONFIG[openssl] = "--with-openssl, --without-openssl"
+PACKAGECONFIG[rlm-eap-fast] = "--with-rlm_eap_fast, --without-rlm_eap_fast"
+PACKAGECONFIG[rlm-eap-pwd] = "--with-rlm_eap_pwd, --without-rlm_eap_pwd"
+
+inherit useradd autotools-brokensep update-rc.d systemd multilib_script multilib_header
+
+MULTILIB_SCRIPTS = "${PN}:${sbindir}/checkrad"
+
+# This is not a cpan or python based package, but it needs some definitions
+# from cpan-base and python3-dir bbclasses for building rlm_perl and rlm_python
+# correctly.
+inherit cpan-base python3-dir
+
+# The modules subdirs also need to be processed by autoreconf. Use autogen.sh
+# in order to handle the subdirs correctly.
+do_configure() {
+    ./autogen.sh
+
+    # the configure of rlm_perl needs this to get correct
+    # mod_cflags and mod_ldflags
+    if ${@bb.utils.contains('PACKAGECONFIG', 'perl', 'true', 'false', d)}; then
+        export PERL5LIB="${STAGING_LIBDIR}${PERL_OWN_DIR}/perl/${@get_perl_version(d)}"
+    fi
+
+    oe_runconf
+
+    # we don't need dhcpclient
+    sed -i -e 's/dhcpclient.mk//' ${S}/src/modules/proto_dhcp/all.mk
+}
+
+INITSCRIPT_NAME = "radiusd"
+
+SYSTEMD_SERVICE:${PN} = "radiusd.service"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --shell /bin/false --user-group radiusd"
+
+do_install() {
+    rm -rf ${D}
+    install -d ${D}/${sysconfdir}/logrotate.d
+    install -d ${D}/${sysconfdir}/pam.d
+    install -d ${D}/${localstatedir}/lib/radiusd
+
+    export LD_LIBRARY_PATH=${D}/${libdir}
+    oe_runmake install R=${D} INSTALLSTRIP=""
+
+    # remove unsupported config files
+    rm -f ${D}/${raddbdir}/experimental.conf
+
+    # remove scripts that required Perl(DBI)
+    rm -rf ${D}/${bindir}/radsqlrelay
+
+    rm -f ${D}/${sbindir}/rc.radiusd
+    rm -rf ${D}/${localstatedir}/run/
+    rm -rf ${D}/${localstatedir}/log/
+
+    chown -R radiusd:radiusd ${D}/${raddbdir}
+    chown -R radiusd:radiusd ${D}/${localstatedir}/lib/radiusd
+
+    # For sysvinit
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/init.d
+        install -d ${D}${sysconfdir}/default/volatiles
+        install -m 0755 ${WORKDIR}/freeradius ${D}/etc/init.d/radiusd
+        install -m 0644 ${WORKDIR}/volatiles.58_radiusd ${D}${sysconfdir}/default/volatiles/58_radiusd
+    fi
+
+    # For systemd
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/radiusd.service ${D}${systemd_unitdir}/system
+        sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+            -e 's,@SBINDIR@,${sbindir},g' \
+            -e 's,@STATEDIR@,${localstatedir},g' \
+            -e 's,@SYSCONFDIR@,${sysconfdir},g' \
+            ${D}${systemd_unitdir}/system/radiusd.service
+
+        install -d ${D}${sysconfdir}/tmpfiles.d/
+        install -m 0644 ${WORKDIR}/radiusd-volatiles.conf ${D}${sysconfdir}/tmpfiles.d/radiusd.conf
+    fi
+
+    oe_multilib_header freeradius/autoconf.h
+    oe_multilib_header freeradius/missing.h
+    oe_multilib_header freeradius/radpaths.h
+}
+
+# This is only needed when we install/update on a running target.
+#
+pkg_postinst:${PN} () {
+    if [ -z "$D" ]; then
+        if command -v systemd-tmpfiles >/dev/null; then
+            # create /var/log/radius, /var/run/radiusd
+            systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/radiusd.conf
+        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+            ${sysconfdir}/init.d/populate-volatile.sh update
+        fi
+
+        # Fix ownership for /etc/raddb/*, /var/lib/radiusd
+        chown -R radiusd:radiusd ${raddbdir}
+        chown -R radiusd:radiusd ${localstatedir}/lib/radiusd
+
+        # for radiusd.service with multilib
+        if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+            install -d ${sysconfdir}/sysconfig
+            echo "MLPREFIX=${MLPREFIX}" > ${sysconfdir}/sysconfig/radiusd
+        fi
+    else
+        if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+            install -d $D${sysconfdir}/sysconfig
+            echo "MLPREFIX=${MLPREFIX}" > $D${sysconfdir}/sysconfig/radiusd
+        fi
+    fi
+}
+
+pkg_postrm:${PN} () {
+    # only try to remove ${sysconfdir}/sysconfig/radiusd for systemd
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'false', 'true', d)}; then
+        exit 0
+    fi
+
+    if [ -d ${sysconfdir}/raddb ]; then
+        exit 0
+    fi
+    for variant in ${MULTILIB_GLOBAL_VARIANTS}; do
+        if [ -d ${sysconfdir}/${variant}-raddb ]; then
+            exit 0
+        fi
+    done
+
+    rm -f ${sysconfdir}/sysconfig/radiusd
+    rmdir --ignore-fail-on-non-empty ${sysconfdir}/sysconfig
+}
+
+# We really need the symlink :(
+INSANE_SKIP:${PN} = "dev-so"
+INSANE_SKIP:${PN}-krb5 = "dev-so"
+INSANE_SKIP:${PN}-ldap = "dev-so"
+INSANE_SKIP:${PN}-mysql = "dev-so"
+INSANE_SKIP:${PN}-perl = "dev-so"
+INSANE_SKIP:${PN}-postgresql = "dev-so"
+INSANE_SKIP:${PN}-python = "dev-so"
+INSANE_SKIP:${PN}-unixodbc = "dev-so"
+
+PACKAGES =+ "${PN}-utils ${PN}-ldap ${PN}-krb5 ${PN}-perl \
+    ${PN}-python ${PN}-mysql ${PN}-postgresql ${PN}-unixodbc"
+
+FILES:${PN}-utils = "${bindir}/*"
+
+FILES:${PN}-ldap = "${libdir}/rlm_ldap.so* \
+    ${raddbdir}/mods-available/ldap \
+"
+
+FILES:${PN}-krb5 = "${libdir}/rlm_krb5.so* \
+    ${raddbdir}/mods-available/krb5 \
+"
+
+FILES:${PN}-perl = "${libdir}/rlm_perl.so* \
+    ${raddbdir}/mods-config/perl \
+    ${raddbdir}/mods-available/perl \
+"
+
+FILES:${PN}-python = "${libdir}/rlm_python3.so* \
+    ${raddbdir}/mods-config/python3 \
+    ${raddbdir}/mods-available/python3 \
+"
+
+FILES:${PN}-mysql = "${libdir}/rlm_sql_mysql.so* \
+    ${raddbdir}/mods-config/sql/*/mysql \
+    ${raddbdir}/mods-available/sql \
+"
+
+FILES:${PN}-postgresql = "${libdir}/rlm_sql_postgresql.so* \
+    ${raddbdir}/mods-config/sql/*/postgresql \
+"
+
+FILES:${PN}-unixodbc = "${libdir}/rlm_sql_unixodbc.so*"
+
+FILES:${PN} =+ "${libdir}/rlm_*.so* ${libdir}/proto_*so*"
+
+RDEPENDS:${PN} += "perl"
+RDEPENDS:${PN}-utils = "${PN} perl"
+RDEPENDS:${PN}-krb5 = "${PN}"
+RDEPENDS:${PN}-ldap = "${PN}"
+RDEPENDS:${PN}-mysql = "${PN}"
+RDEPENDS:${PN}-perl = "${PN}"
+RDEPENDS:${PN}-postgresql = "${PN}"
+RDEPENDS:${PN}-python = "${PN}"
+RDEPENDS:${PN}-unixodbc = "${PN}"
+
+CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.17.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.17.0.bb
deleted file mode 100644
index a42d014..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.17.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "dumb networking library"
-HOMEPAGE = "https://github.com/ofalk/libdnet"
-SECTION = "libs"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=0036c1b155f4e999f3e0a373490b5db9"
-
-SRC_URI = "git://github.com/ofalk/libdnet.git;nobranch=1;protocol=https"
-
-SRCREV = "912f7848bfff4ebc6d610f802a3144f84880cbe4"
-
-UPSTREAM_CHECK_GITTAGREGEX = "libdnet-(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit autotools multilib_script pkgconfig
-
-DEPENDS += "libcheck"
-
-EXTRA_AUTORECONF += "-I ./config"
-BBCLASSEXTEND = "native"
-
-MULTILIB_SCRIPTS = "${PN}:${bindir}/dnet-config"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.18.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.18.0.bb
new file mode 100644
index 0000000..75aaf52
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/libdnet/libdnet_1.18.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "dumb networking library"
+HOMEPAGE = "https://github.com/ofalk/libdnet"
+SECTION = "libs"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0036c1b155f4e999f3e0a373490b5db9"
+
+SRC_URI = "git://github.com/ofalk/libdnet.git;nobranch=1;protocol=https"
+
+SRCREV = "3dfbe889b1f65077efe579da34fc1d6819fcb7f3"
+
+UPSTREAM_CHECK_GITTAGREGEX = "libdnet-(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit autotools multilib_script pkgconfig
+
+DEPENDS += "libcheck"
+
+EXTRA_AUTORECONF += "-I ./config"
+BBCLASSEXTEND = "native"
+
+MULTILIB_SCRIPTS = "${PN}:${bindir}/dnet-config"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.44.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.44.0.bb
deleted file mode 100644
index 07a85b6..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.44.0.bb
+++ /dev/null
@@ -1,322 +0,0 @@
-SUMMARY = "NetworkManager is a program for providing detection and \
-configuration for systems to automatically connect to networks."
-
-DESCRIPTION = "NetworkManager is a program for providing detection and \
-configuration for systems to automatically connect to networks. \
-NetworkManager's functionality can be useful for both wireless and wired \
-networks. For wireless networks, NetworkManager prefers known wireless \
-networks and has the ability to switch to the most reliable network. \
-NetworkManager-aware applications can switch from online and offline mode. \
-NetworkManager also prefers wired connections over wireless ones, has support \
-for modem connections and certain types of VPN."
-
-HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager"
-SECTION = "net/misc"
-
-LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
-"
-
-DEPENDS = " \
-    python3-pygobject-native \
-    coreutils-native \
-    intltool-native \
-    libxslt-native \
-    libnl \
-    udev \
-    util-linux \
-    libndp \
-    curl \
-    dbus \
-"
-DEPENDS:append:class-target = " bash-completion"
-
-inherit gnomebase gettext update-rc.d systemd gobject-introspection gtk-doc update-alternatives upstream-version-is-even
-
-SRC_URI = " \
-    ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
-    file://${BPN}.initd \
-    file://enable-dhcpcd.conf \
-    file://enable-iwd.conf \
-"
-SRC_URI:append:libc-musl = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' file://0001-linker-scripts-Do-not-export-_IO_stdin_used.patch', '', d)}"
-
-SRC_URI[sha256sum] = "edca09637d182f806b3b12d8c5623d7badbd73ccca1ae63be20d2f298779fb9f"
-
-S = "${WORKDIR}/NetworkManager-${PV}"
-
-# ['auto', 'symlink', 'file', 'netconfig', 'resolvconf']
-NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT ??= "auto"
-
-# ['dhcpcanon', 'dhclient', 'dhcpcd', 'internal', 'nettools']
-NETWORKMANAGER_DHCP_DEFAULT ??= "internal"
-
-# The default gets detected based on whether /usr/sbin/nft or /usr/sbin/iptables is installed, with nftables preferred.
-# ['', 'iptables', 'nftables']
-NETWORKMANAGER_FIREWALL_DEFAULT ??= "nftables"
-
-EXTRA_OEMESON = "\
-    -Difcfg_rh=false \
-    -Dtests=yes \
-    -Dnmtui=true \
-    -Dudev_dir=${nonarch_base_libdir}/udev \
-    -Dlibpsl=false \
-    -Dqt=false \
-    -Dconfig_dns_rc_manager_default=${NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT} \
-    -Dconfig_dhcp_default=${NETWORKMANAGER_DHCP_DEFAULT} \
-    -Ddhcpcanon=false \
-    -Diptables=${sbindir}/iptables \
-    -Dnft=${sbindir}/nft \
-"
-
-# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template
-# avoids:
-# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'?
-CFLAGS:append:libc-musl = " \
-    -DRTLD_DEEPBIND=0 \
-"
-
-do_compile:prepend() {
-    export GI_TYPELIB_PATH="${B}}/src/libnm-client-impl${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
-}
-
-PACKAGECONFIG ??= "readline nss ifupdown dnsmasq nmcli vala \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit ppp', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \
-"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)}
-
-PACKAGECONFIG[systemd] = "\
-    -Dsystemdsystemunitdir=${systemd_unitdir}/system -Dsession_tracking=systemd,\
-    -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsession_tracking=no\
-"
-PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false,polkit"
-PACKAGECONFIG[bluez5] = "-Dbluez5_dun=true,-Dbluez5_dun=false,bluez5"
-# consolekit is not picked by shlibs, so add it to RDEPENDS too
-PACKAGECONFIG[consolekit] = "-Dsession_tracking_consolekit=true,-Dsession_tracking_consolekit=false,consolekit,consolekit"
-PACKAGECONFIG[modemmanager] = "-Dmodem_manager=true,-Dmodem_manager=false,modemmanager mobile-broadband-provider-info,modemmanager mobile-broadband-provider-info"
-PACKAGECONFIG[ppp] = "-Dppp=true -Dpppd=${sbindir}/pppd,-Dppp=false,ppp"
-PACKAGECONFIG[dnsmasq] = "-Ddnsmasq=${bindir}/dnsmasq"
-PACKAGECONFIG[nss] = "-Dcrypto=nss,,nss"
-PACKAGECONFIG[resolvconf] = "-Dresolvconf=${base_sbindir}/resolvconf,-Dresolvconf=no,,resolvconf"
-PACKAGECONFIG[gnutls] = "-Dcrypto=gnutls,,gnutls"
-PACKAGECONFIG[crypto-null] = "-Dcrypto=null"
-PACKAGECONFIG[wifi] = "-Dwext=true -Dwifi=true,-Dwext=false -Dwifi=false"
-PACKAGECONFIG[iwd] = "-Diwd=true,-Diwd=false"
-PACKAGECONFIG[ifupdown] = "-Difupdown=true,-Difupdown=false"
-PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false"
-PACKAGECONFIG[nmcli] = "-Dnmcli=true,-Dnmcli=false"
-PACKAGECONFIG[nmtui] = "-Dnmtui=true,-Dnmtui=false,libnewt"
-PACKAGECONFIG[readline] = "-Dreadline=libreadline,,readline"
-PACKAGECONFIG[libedit] = "-Dreadline=libedit,,libedit"
-PACKAGECONFIG[ovs] = "-Dovs=true,-Dovs=false,jansson"
-PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no"
-PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux"
-PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false"
-PACKAGECONFIG[dhcpcd] = "-Ddhcpcd=${base_sbindir}/dhcpcd,-Ddhcpcd=no,,dhcpcd"
-PACKAGECONFIG[dhclient] = "-Ddhclient=yes,-Ddhclient=no,,dhcp"
-PACKAGECONFIG[concheck] = "-Dconcheck=true,-Dconcheck=false"
-PACKAGECONFIG[adsl] = ",,"
-PACKAGECONFIG[wwan] = ",,"
-# The following PACKAGECONFIG is used to determine whether NM is managing /etc/resolv.conf itself or not
-PACKAGECONFIG[man-resolv-conf] = ",,"
-
-
-PACKAGES =+ " \
-    libnm \
-    ${PN}-adsl \
-    ${PN}-bluetooth \
-    ${PN}-cloud-setup \
-    ${PN}-nmcli \
-    ${PN}-nmcli-bash-completion \
-    ${PN}-nmtui \
-    ${PN}-wifi \
-    ${PN}-wwan \
-    ${PN}-ovs \
-    ${PN}-ppp \
-    ${PN}-daemon \
-"
-
-SYSTEMD_PACKAGES = "${PN}-daemon ${PN}-cloud-setup"
-INITSCRIPT_PACKAGES = "${PN}-daemon"
-
-NETWORKMANAGER_PLUGINDIR = "${libdir}/NetworkManager/${PV}"
-NETWORKMANAGER_DISPATCHERDIR = "${nonarch_libdir}/NetworkManager/dispatcher.d"
-
-
-SUMMARY:libnm = "Libraries for adding NetworkManager support to applications"
-FILES:libnm = "\
-    ${libdir}/libnm.so.* \
-    ${libdir}/girepository-1.0/NM-1.0.typelib \
-"
-
-SUMMARY:${PN}-adsl = "ADSL device plugin for NetworkManager"
-FILES:${PN}-adsl = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-adsl.so"
-RDEPENDS:${PN}-adsl += "${PN}-daemon"
-
-SUMMARY:${PN}-bluetooth = "Bluetooth device plugin for NetworkManager"
-FILES:${PN}-bluetooth = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-bluetooth.so"
-RDEPENDS:${PN}-bluetooth += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG', 'bluez5', '${PN}-wwan bluez5', '', d)}"
-
-SUMMARY:${PN}-cloud-setup = "Automatically configure NetworkManager in cloud"
-FILES:${PN}-cloud-setup = " \
-    ${libexecdir}/nm-cloud-setup \
-    ${systemd_system_unitdir}/nm-cloud-setup.service \
-    ${systemd_system_unitdir}/nm-cloud-setup.timer \
-    ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \
-    ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \
-"
-RDEPENDS:${PN}-cloud-setup += "${PN}-daemon"
-ALLOW_EMPTY:${PN}-cloud-setup = "1"
-SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}"
-
-SUMMARY:${PN}-nmcli = "NetworkManager command line client"
-FILES:${PN}-nmcli = " \
-    ${bindir}/nmcli \
-"
-RDEPENDS:${PN}-nmcli += "${PN}-daemon"
-
-SUMMARY:${PN}-nmcli-bash-completion = "NetworkManager command line client bash completion"
-FILES:${PN}-nmcli-bash-completion = "${datadir}/bash-completion/completions/nmcli"
-RDEPENDS:${PN}-nmcli-bash-completion = "bash-completion"
-
-SUMMARY:${PN}-nmtui = "NetworkManager curses-based UI"
-FILES:${PN}-nmtui = " \
-    ${bindir}/nmtui \
-    ${bindir}/nmtui-edit \
-    ${bindir}/nmtui-connect \
-    ${bindir}/nmtui-hostname \
-"
-RDEPENDS:${PN}-nmtui += "${PN}-daemon"
-
-SUMMARY:${PN}-wifi = "Wifi plugin for NetworkManager"
-FILES:${PN}-wifi = "\
-    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wifi.so \
-    ${libdir}/NetworkManager/conf.d/enable-iwd.conf \
-"
-def get_wifi_deps(d):
-    packageconfig = (d.getVar('PACKAGECONFIG') or "").split()
-    if 'wifi' in packageconfig:
-        if 'iwd' in packageconfig:
-            return 'iwd'
-        else:
-            return 'wpa-supplicant'
-    else:
-        return ''
-RDEPENDS:${PN}-wifi += "${PN}-daemon ${@get_wifi_deps(d)}"
-
-SUMMARY:${PN}-wwan = "Mobile broadband device plugin for NetworkManager"
-FILES:${PN}-wwan = "\
-    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wwan.so \
-    ${NETWORKMANAGER_PLUGINDIR}/libnm-wwan.so \
-"
-RDEPENDS:${PN}-wwan += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','modemmanager','modemmanager','',d)}"
-
-SUMMARY:${PN}-ovs = "Open vSwitch device plugin for NetworkManager"
-FILES:${PN}-ovs = "\
-    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-ovs.so \
-    ${systemd_system_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf \
-"
-RDEPENDS:${PN}-ovs += "${PN}-daemon"
-
-SUMMARY:${PN}-ppp = "PPP plugin for NetworkManager"
-FILES:${PN}-ppp = "\
-    ${NETWORKMANAGER_PLUGINDIR}/libnm-ppp-plugin.so \
-    ${libdir}/pppd/*/nm-pppd-plugin.so \
-"
-RDEPENDS:${PN}-ppp += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','ppp','ppp','',d)}"
-
-FILES:${PN}-dev += " \
-    ${libdir}/pppd/*/*.la \
-    ${libdir}/NetworkManager/*.la \
-    ${NETWORKMANAGER_PLUGINDIR}/*.la \
-    ${datadir}/dbus-1/interfaces/*.xml \
-"
-
-SUMMARY:${PN}-daemon += "The NetworkManager daemon"
-FILES:${PN}-daemon += " \
-    ${bindir}/nm-online \
-    ${datadir}/dbus-1 \
-    ${datadir}/polkit-1 \
-    ${libdir}/NetworkManager \
-    ${libexecdir} \
-    ${localstatedir}/lib/NetworkManager \
-    ${NETWORKMANAGER_DISPATCHERDIR} \
-    ${nonarch_base_libdir}/udev/* \
-    ${nonarch_libdir}/firewalld \
-    ${nonarch_libdir}/NetworkManager/conf.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \
-    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \
-    ${nonarch_libdir}/NetworkManager/system-connections \
-    ${nonarch_libdir}/NetworkManager/VPN \
-    ${sbindir}/NetworkManager \
-    ${sysconfdir}/init.d/network-manager \
-    ${sysconfdir}/NetworkManager \
-    ${sysconfdir}/resolv-conf.NetworkManager \
-    ${sysconfdir}/sysconfig/network-scripts \
-    ${systemd_system_unitdir} \
-"
-RDEPENDS:${PN}-daemon += "\
-    ${@bb.utils.contains('PACKAGECONFIG', 'ifupdown', 'bash', '', d)} \
-"
-RRECOMMENDS:${PN}-daemon += "\
-    ${NETWORKMANAGER_FIREWALL_DEFAULT} \
-    ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \
-"
-INITSCRIPT_NAME:${PN}-daemon = "network-manager"
-SYSTEMD_SERVICE:${PN}-daemon = "\
-    NetworkManager.service \
-    NetworkManager-dispatcher.service \
-"
-RCONFLICTS:${PN}-daemon += "connman"
-ALTERNATIVE_PRIORITY = "100"
-ALTERNATIVE:${PN}-daemon = "${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','resolv-conf','',d)}"
-ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','${sysconfdir}/resolv-conf.NetworkManager','',d)}"
-ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','${sysconfdir}/resolv.conf','',d)}"
-
-
-# The networkmanager package is an empty meta package which weakly depends on all the compiled features.
-# Install this package to get all plugins and related dependencies installed. Alternatively just install
-# plugins and related dependencies e.g. by installing networkmanager-wifi or networkmanager-wwan
-# packages to the firmware.
-ALLOW_EMPTY:${PN} = "1"
-RRECOMMENDS:${PN} += "\
-    ${@bb.utils.contains('PACKAGECONFIG','adsl','${PN}-adsl','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','bluez5','${PN}-bluetooth','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','cloud-setup','${PN}-cloud-setup','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','nmcli','${PN}-nmcli','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','nmtui','${PN}-nmtui','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','wifi','${PN}-wifi','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','wwan','${PN}-wwan','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','ovs','${PN}-ovs','',d)} \
-    ${@bb.utils.contains('PACKAGECONFIG','ppp','${PN}-ppp','',d)} \
-"
-
-do_install:append() {
-    install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager
-
-    rm -rf ${D}/run ${D}${localstatedir}/run
-
-    if ${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','true','false',d)}; then
-        # For read-only filesystem, do not create links during bootup
-        ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager
-
-        # systemd v210 and newer do not need this rule file
-        rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules
-    fi
-
-    # Enable iwd if compiled
-    if ${@bb.utils.contains('PACKAGECONFIG','iwd','true','false',d)}; then
-        install -Dm 0644 ${WORKDIR}/enable-iwd.conf ${D}${nonarch_libdir}/NetworkManager/conf.d/enable-iwd.conf
-    fi
-
-    # Enable dhcpd if compiled
-    if ${@bb.utils.contains('PACKAGECONFIG','dhcpcd','true','false',d)}; then
-        install -Dm 0644 ${WORKDIR}/enable-dhcpcd.conf ${D}${nonarch_libdir}/NetworkManager/conf.d/enable-dhcpcd.conf
-    fi
-}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.46.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.46.0.bb
new file mode 100644
index 0000000..be30154
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager_1.46.0.bb
@@ -0,0 +1,322 @@
+SUMMARY = "NetworkManager is a program for providing detection and \
+configuration for systems to automatically connect to networks."
+
+DESCRIPTION = "NetworkManager is a program for providing detection and \
+configuration for systems to automatically connect to networks. \
+NetworkManager's functionality can be useful for both wireless and wired \
+networks. For wireless networks, NetworkManager prefers known wireless \
+networks and has the ability to switch to the most reliable network. \
+NetworkManager-aware applications can switch from online and offline mode. \
+NetworkManager also prefers wired connections over wireless ones, has support \
+for modem connections and certain types of VPN."
+
+HOMEPAGE = "https://wiki.gnome.org/Projects/NetworkManager"
+SECTION = "net/misc"
+
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://COPYING.LGPL;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = " \
+    python3-pygobject-native \
+    coreutils-native \
+    intltool-native \
+    libxslt-native \
+    libnl \
+    udev \
+    util-linux \
+    libndp \
+    curl \
+    dbus \
+"
+DEPENDS:append:class-target = " bash-completion"
+
+inherit gnomebase gettext update-rc.d systemd gobject-introspection gtk-doc update-alternatives upstream-version-is-even
+
+SRC_URI = " \
+    ${GNOME_MIRROR}/NetworkManager/${@gnome_verdir("${PV}")}/NetworkManager-${PV}.tar.xz \
+    file://${BPN}.initd \
+    file://enable-dhcpcd.conf \
+    file://enable-iwd.conf \
+"
+SRC_URI:append:libc-musl = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' file://0001-linker-scripts-Do-not-export-_IO_stdin_used.patch', '', d)}"
+
+SRC_URI[sha256sum] = "722649e25362693b334371473802a729b0ec9ee283375096905f868808e74068"
+
+S = "${WORKDIR}/NetworkManager-${PV}"
+
+# ['auto', 'symlink', 'file', 'netconfig', 'resolvconf']
+NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT ??= "auto"
+
+# ['dhcpcanon', 'dhclient', 'dhcpcd', 'internal', 'nettools']
+NETWORKMANAGER_DHCP_DEFAULT ??= "internal"
+
+# The default gets detected based on whether /usr/sbin/nft or /usr/sbin/iptables is installed, with nftables preferred.
+# ['', 'iptables', 'nftables']
+NETWORKMANAGER_FIREWALL_DEFAULT ??= "nftables"
+
+EXTRA_OEMESON = "\
+    -Difcfg_rh=false \
+    -Dtests=yes \
+    -Dnmtui=true \
+    -Dudev_dir=${nonarch_base_libdir}/udev \
+    -Dlibpsl=false \
+    -Dqt=false \
+    -Dconfig_dns_rc_manager_default=${NETWORKMANAGER_DNS_RC_MANAGER_DEFAULT} \
+    -Dconfig_dhcp_default=${NETWORKMANAGER_DHCP_DEFAULT} \
+    -Ddhcpcanon=false \
+    -Diptables=${sbindir}/iptables \
+    -Dnft=${sbindir}/nft \
+"
+
+# stolen from https://github.com/void-linux/void-packages/blob/master/srcpkgs/NetworkManager/template
+# avoids:
+# | ../NetworkManager-1.16.0/libnm-core/nm-json.c:106:50: error: 'RTLD_DEEPBIND' undeclared (first use in this function); did you mean 'RTLD_DEFAULT'?
+CFLAGS:append:libc-musl = " \
+    -DRTLD_DEEPBIND=0 \
+"
+
+do_compile:prepend() {
+    export GI_TYPELIB_PATH="${B}}/src/libnm-client-impl${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}"
+}
+
+PACKAGECONFIG ??= "readline nss ifupdown dnsmasq nmcli vala \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', bb.utils.contains('DISTRO_FEATURES', 'x11', 'consolekit', '', d), d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez5', '', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'wifi polkit ppp', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit', '', d)} \
+"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'vala', 'vala', '', d)}
+
+PACKAGECONFIG[systemd] = "\
+    -Dsystemdsystemunitdir=${systemd_unitdir}/system -Dsession_tracking=systemd,\
+    -Dsystemdsystemunitdir=no -Dsystemd_journal=false -Dsession_tracking=no\
+"
+PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false,polkit"
+PACKAGECONFIG[bluez5] = "-Dbluez5_dun=true,-Dbluez5_dun=false,bluez5"
+# consolekit is not picked by shlibs, so add it to RDEPENDS too
+PACKAGECONFIG[consolekit] = "-Dsession_tracking_consolekit=true,-Dsession_tracking_consolekit=false,consolekit,consolekit"
+PACKAGECONFIG[modemmanager] = "-Dmodem_manager=true,-Dmodem_manager=false,modemmanager mobile-broadband-provider-info,modemmanager mobile-broadband-provider-info"
+PACKAGECONFIG[ppp] = "-Dppp=true -Dpppd=${sbindir}/pppd,-Dppp=false,ppp"
+PACKAGECONFIG[dnsmasq] = "-Ddnsmasq=${bindir}/dnsmasq"
+PACKAGECONFIG[nss] = "-Dcrypto=nss,,nss"
+PACKAGECONFIG[resolvconf] = "-Dresolvconf=${base_sbindir}/resolvconf,-Dresolvconf=no,,resolvconf"
+PACKAGECONFIG[gnutls] = "-Dcrypto=gnutls,,gnutls"
+PACKAGECONFIG[crypto-null] = "-Dcrypto=null"
+PACKAGECONFIG[wifi] = "-Dwext=true -Dwifi=true,-Dwext=false -Dwifi=false"
+PACKAGECONFIG[iwd] = "-Diwd=true,-Diwd=false"
+PACKAGECONFIG[ifupdown] = "-Difupdown=true,-Difupdown=false"
+PACKAGECONFIG[cloud-setup] = "-Dnm_cloud_setup=true,-Dnm_cloud_setup=false"
+PACKAGECONFIG[nmcli] = "-Dnmcli=true,-Dnmcli=false"
+PACKAGECONFIG[nmtui] = "-Dnmtui=true,-Dnmtui=false,libnewt"
+PACKAGECONFIG[readline] = "-Dreadline=libreadline,,readline"
+PACKAGECONFIG[libedit] = "-Dreadline=libedit,,libedit"
+PACKAGECONFIG[ovs] = "-Dovs=true,-Dovs=false,jansson"
+PACKAGECONFIG[audit] = "-Dlibaudit=yes,-Dlibaudit=no"
+PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux"
+PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false"
+PACKAGECONFIG[dhcpcd] = "-Ddhcpcd=${base_sbindir}/dhcpcd,-Ddhcpcd=no,,dhcpcd"
+PACKAGECONFIG[dhclient] = "-Ddhclient=yes,-Ddhclient=no,,dhcp"
+PACKAGECONFIG[concheck] = "-Dconcheck=true,-Dconcheck=false"
+PACKAGECONFIG[adsl] = ",,"
+PACKAGECONFIG[wwan] = ",,"
+# The following PACKAGECONFIG is used to determine whether NM is managing /etc/resolv.conf itself or not
+PACKAGECONFIG[man-resolv-conf] = ",,"
+
+
+PACKAGES =+ " \
+    libnm \
+    ${PN}-adsl \
+    ${PN}-bluetooth \
+    ${PN}-cloud-setup \
+    ${PN}-nmcli \
+    ${PN}-nmcli-bash-completion \
+    ${PN}-nmtui \
+    ${PN}-wifi \
+    ${PN}-wwan \
+    ${PN}-ovs \
+    ${PN}-ppp \
+    ${PN}-daemon \
+"
+
+SYSTEMD_PACKAGES = "${PN}-daemon ${PN}-cloud-setup"
+INITSCRIPT_PACKAGES = "${PN}-daemon"
+
+NETWORKMANAGER_PLUGINDIR = "${libdir}/NetworkManager/${PV}"
+NETWORKMANAGER_DISPATCHERDIR = "${nonarch_libdir}/NetworkManager/dispatcher.d"
+
+
+SUMMARY:libnm = "Libraries for adding NetworkManager support to applications"
+FILES:libnm = "\
+    ${libdir}/libnm.so.* \
+    ${libdir}/girepository-1.0/NM-1.0.typelib \
+"
+
+SUMMARY:${PN}-adsl = "ADSL device plugin for NetworkManager"
+FILES:${PN}-adsl = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-adsl.so"
+RDEPENDS:${PN}-adsl += "${PN}-daemon"
+
+SUMMARY:${PN}-bluetooth = "Bluetooth device plugin for NetworkManager"
+FILES:${PN}-bluetooth = "${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-bluetooth.so"
+RDEPENDS:${PN}-bluetooth += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG', 'bluez5', '${PN}-wwan bluez5', '', d)}"
+
+SUMMARY:${PN}-cloud-setup = "Automatically configure NetworkManager in cloud"
+FILES:${PN}-cloud-setup = " \
+    ${libexecdir}/nm-cloud-setup \
+    ${systemd_system_unitdir}/nm-cloud-setup.service \
+    ${systemd_system_unitdir}/nm-cloud-setup.timer \
+    ${libdir}/NetworkManager/dispatcher.d/90-nm-cloud-setup.sh \
+    ${libdir}/NetworkManager/dispatcher.d/no-wait.d/90-nm-cloud-setup.sh \
+"
+RDEPENDS:${PN}-cloud-setup += "${PN}-daemon"
+ALLOW_EMPTY:${PN}-cloud-setup = "1"
+SYSTEMD_SERVICE:${PN}-cloud-setup = "${@bb.utils.contains('PACKAGECONFIG', 'cloud-setup', 'nm-cloud-setup.service nm-cloud-setup.timer', '', d)}"
+
+SUMMARY:${PN}-nmcli = "NetworkManager command line client"
+FILES:${PN}-nmcli = " \
+    ${bindir}/nmcli \
+"
+RDEPENDS:${PN}-nmcli += "${PN}-daemon"
+
+SUMMARY:${PN}-nmcli-bash-completion = "NetworkManager command line client bash completion"
+FILES:${PN}-nmcli-bash-completion = "${datadir}/bash-completion/completions/nmcli"
+RDEPENDS:${PN}-nmcli-bash-completion = "bash-completion"
+
+SUMMARY:${PN}-nmtui = "NetworkManager curses-based UI"
+FILES:${PN}-nmtui = " \
+    ${bindir}/nmtui \
+    ${bindir}/nmtui-edit \
+    ${bindir}/nmtui-connect \
+    ${bindir}/nmtui-hostname \
+"
+RDEPENDS:${PN}-nmtui += "${PN}-daemon"
+
+SUMMARY:${PN}-wifi = "Wifi plugin for NetworkManager"
+FILES:${PN}-wifi = "\
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wifi.so \
+    ${libdir}/NetworkManager/conf.d/enable-iwd.conf \
+"
+def get_wifi_deps(d):
+    packageconfig = (d.getVar('PACKAGECONFIG') or "").split()
+    if 'wifi' in packageconfig:
+        if 'iwd' in packageconfig:
+            return 'iwd'
+        else:
+            return 'wpa-supplicant'
+    else:
+        return ''
+RDEPENDS:${PN}-wifi += "${PN}-daemon ${@get_wifi_deps(d)}"
+
+SUMMARY:${PN}-wwan = "Mobile broadband device plugin for NetworkManager"
+FILES:${PN}-wwan = "\
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-wwan.so \
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-wwan.so \
+"
+RDEPENDS:${PN}-wwan += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','modemmanager','modemmanager','',d)}"
+
+SUMMARY:${PN}-ovs = "Open vSwitch device plugin for NetworkManager"
+FILES:${PN}-ovs = "\
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-device-plugin-ovs.so \
+    ${systemd_system_unitdir}/NetworkManager.service.d/NetworkManager-ovs.conf \
+"
+RDEPENDS:${PN}-ovs += "${PN}-daemon"
+
+SUMMARY:${PN}-ppp = "PPP plugin for NetworkManager"
+FILES:${PN}-ppp = "\
+    ${NETWORKMANAGER_PLUGINDIR}/libnm-ppp-plugin.so \
+    ${libdir}/pppd/*/nm-pppd-plugin.so \
+"
+RDEPENDS:${PN}-ppp += "${PN}-daemon ${@bb.utils.contains('PACKAGECONFIG','ppp','ppp','',d)}"
+
+FILES:${PN}-dev += " \
+    ${libdir}/pppd/*/*.la \
+    ${libdir}/NetworkManager/*.la \
+    ${NETWORKMANAGER_PLUGINDIR}/*.la \
+    ${datadir}/dbus-1/interfaces/*.xml \
+"
+
+SUMMARY:${PN}-daemon += "The NetworkManager daemon"
+FILES:${PN}-daemon += " \
+    ${bindir}/nm-online \
+    ${datadir}/dbus-1 \
+    ${datadir}/polkit-1 \
+    ${libdir}/NetworkManager \
+    ${libexecdir} \
+    ${localstatedir}/lib/NetworkManager \
+    ${NETWORKMANAGER_DISPATCHERDIR} \
+    ${nonarch_base_libdir}/udev/* \
+    ${nonarch_libdir}/firewalld \
+    ${nonarch_libdir}/NetworkManager/conf.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/no-wait.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-down.d \
+    ${nonarch_libdir}/NetworkManager/dispatcher.d/pre-up.d \
+    ${nonarch_libdir}/NetworkManager/system-connections \
+    ${nonarch_libdir}/NetworkManager/VPN \
+    ${sbindir}/NetworkManager \
+    ${sysconfdir}/init.d/network-manager \
+    ${sysconfdir}/NetworkManager \
+    ${sysconfdir}/resolv-conf.NetworkManager \
+    ${sysconfdir}/sysconfig/network-scripts \
+    ${systemd_system_unitdir} \
+"
+RDEPENDS:${PN}-daemon += "\
+    ${@bb.utils.contains('PACKAGECONFIG', 'ifupdown', 'bash', '', d)} \
+"
+RRECOMMENDS:${PN}-daemon += "\
+    ${NETWORKMANAGER_FIREWALL_DEFAULT} \
+    ${@bb.utils.filter('PACKAGECONFIG', 'dnsmasq', d)} \
+"
+INITSCRIPT_NAME:${PN}-daemon = "network-manager"
+SYSTEMD_SERVICE:${PN}-daemon = "\
+    NetworkManager.service \
+    NetworkManager-dispatcher.service \
+"
+RCONFLICTS:${PN}-daemon += "connman"
+ALTERNATIVE_PRIORITY = "100"
+ALTERNATIVE:${PN}-daemon = "${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','resolv-conf','',d)}"
+ALTERNATIVE_TARGET[resolv-conf] = "${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','${sysconfdir}/resolv-conf.NetworkManager','',d)}"
+ALTERNATIVE_LINK_NAME[resolv-conf] = "${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','${sysconfdir}/resolv.conf','',d)}"
+
+
+# The networkmanager package is an empty meta package which weakly depends on all the compiled features.
+# Install this package to get all plugins and related dependencies installed. Alternatively just install
+# plugins and related dependencies e.g. by installing networkmanager-wifi or networkmanager-wwan
+# packages to the firmware.
+ALLOW_EMPTY:${PN} = "1"
+RRECOMMENDS:${PN} += "\
+    ${@bb.utils.contains('PACKAGECONFIG','adsl','${PN}-adsl','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','bluez5','${PN}-bluetooth','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','cloud-setup','${PN}-cloud-setup','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','nmcli','${PN}-nmcli','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','nmtui','${PN}-nmtui','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','wifi','${PN}-wifi','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','wwan','${PN}-wwan','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','ovs','${PN}-ovs','',d)} \
+    ${@bb.utils.contains('PACKAGECONFIG','ppp','${PN}-ppp','',d)} \
+"
+
+do_install:append() {
+    install -Dm 0755 ${WORKDIR}/${BPN}.initd ${D}${sysconfdir}/init.d/network-manager
+
+    rm -rf ${D}/run ${D}${localstatedir}/run
+
+    if ${@bb.utils.contains('PACKAGECONFIG','man-resolv-conf','true','false',d)}; then
+        # For read-only filesystem, do not create links during bootup
+        ln -sf ../run/NetworkManager/resolv.conf ${D}${sysconfdir}/resolv-conf.NetworkManager
+
+        # systemd v210 and newer do not need this rule file
+        rm ${D}/${nonarch_base_libdir}/udev/rules.d/84-nm-drivers.rules
+    fi
+
+    # Enable iwd if compiled
+    if ${@bb.utils.contains('PACKAGECONFIG','iwd','true','false',d)}; then
+        install -Dm 0644 ${WORKDIR}/enable-iwd.conf ${D}${nonarch_libdir}/NetworkManager/conf.d/enable-iwd.conf
+    fi
+
+    # Enable dhcpd if compiled
+    if ${@bb.utils.contains('PACKAGECONFIG','dhcpcd','true','false',d)}; then
+        install -Dm 0644 ${WORKDIR}/enable-dhcpcd.conf ${D}${nonarch_libdir}/NetworkManager/conf.d/enable-dhcpcd.conf
+    fi
+}
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch
deleted file mode 100644
index 8b286df..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From c0546e351f6d7ab50eb1de8cef1d0d167760fccc Mon Sep 17 00:00:00 2001
-From: Peter Korsgaard <peter@korsgaard.com>
-Date: Mon, 27 Aug 2018 22:50:57 +0200
-Subject: [PATCH] bn_mul.h: fix x86 PIC inline ASM compilation with GCC < 5
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fixes #1910
-
-With ebx added to the MULADDC_STOP clobber list to fix #1550, the inline
-assembly fails to build with GCC < 5 in PIC mode with the following error:
-
-include/mbedtls/bn_mul.h:46:13: error: PIC register clobbered by ‘ebx’ in ‘asm’
-
-This is because older GCC versions treated the x86 ebx register (which is
-used for the GOT) as a fixed reserved register when building as PIC.
-
-This is fixed by an improved register allocator in GCC 5+.  From the release
-notes:
-
-Register allocation improvements: Reuse of the PIC hard register, instead of
-using a fixed register, was implemented on x86/x86-64 targets.  This
-improves generated PIC code performance as more hard registers can be used.
-
-https://www.gnu.org/software/gcc/gcc-5/changes.html
-
-As a workaround, detect this situation and disable the inline assembly,
-similar to the MULADDC_CANNOT_USE_R7 logic.
-
-Upstream-Status: Backport [https://github.com/Mbed-TLS/mbedtls/commit/c0546e351f6d7ab50eb1de8cef1d0d167760fccc]
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- library/bn_mul.h | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
---- a/third_party/openthread/repo/third_party/mbedtls/repo/include/mbedtls/bn_mul.h
-+++ b/third_party/openthread/repo/third_party/mbedtls/repo/include/mbedtls/bn_mul.h
-@@ -95,12 +95,28 @@
-     ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )
- 
- /*
-+ * GCC < 5.0 treated the x86 ebx (which is used for the GOT) as a
-+ * fixed reserved register when building as PIC, leading to errors
-+ * like: bn_mul.h:46:13: error: PIC register clobbered by 'ebx' in 'asm'
-+ *
-+ * This is fixed by an improved register allocator in GCC 5+. From the
-+ * release notes:
-+ * Register allocation improvements: Reuse of the PIC hard register,
-+ * instead of using a fixed register, was implemented on x86/x86-64
-+ * targets. This improves generated PIC code performance as more hard
-+ * registers can be used.
-+ */
-+#if defined(__GNUC__) && __GNUC__ < 5 && defined(__PIC__)
-+#define MULADDC_CANNOT_USE_EBX
-+#endif
-+
-+/*
-  * Disable use of the i386 assembly code below if option -O0, to disable all
-  * compiler optimisations, is passed, detected with __OPTIMIZE__
-  * This is done as the number of registers used in the assembly code doesn't
-  * work with the -O0 option.
-  */
--#if defined(__i386__) && defined(__OPTIMIZE__)
-+#if defined(__i386__) && defined(__OPTIMIZE__) && !defined(MULADDC_CANNOT_USE_EBX)
- 
- #define MULADDC_INIT                        \
-     asm(                                    \
---- a/third_party/openthread/repo/third_party/mbedtls/repo/CMakeLists.txt
-+++ b/third_party/openthread/repo/third_party/mbedtls/repo/CMakeLists.txt
-@@ -210,7 +210,7 @@ if(CMAKE_COMPILER_IS_GNU)
- endif(CMAKE_COMPILER_IS_GNU)
- 
- if(CMAKE_COMPILER_IS_CLANG)
--    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral")
-+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wno-error=documentation")
-     set(CMAKE_C_FLAGS_RELEASE     "-O2")
-     set(CMAKE_C_FLAGS_DEBUG       "-O0 -g3")
-     set(CMAKE_C_FLAGS_COVERAGE    "-O0 -g3 --coverage")
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/mbedtls.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/mbedtls.patch
deleted file mode 100644
index 0824eb6..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/mbedtls.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-mbedtls: Disable documentation warning as error with clang
-
-There are shortcomings with doxygen info which clang-15+ flags, dont
-treat them as errors
-
-Remove unused variable
-
-Fixes
-library/bignum.c:1395:29: error: variable 't' set but not used [-Werror,-Wunused-but-set-variable]
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/third_party/openthread/repo/third_party/mbedtls/repo/library/bignum.c
-+++ b/third_party/openthread/repo/third_party/mbedtls/repo/library/bignum.c
-@@ -1392,7 +1392,7 @@ void mpi_mul_hlp( size_t i,
-                   mbedtls_mpi_uint *d,
-                   mbedtls_mpi_uint b )
- {
--    mbedtls_mpi_uint c = 0, t = 0;
-+    mbedtls_mpi_uint c = 0, t __attribute__ ((unused)) = 0;
- 
- #if defined(MULADDC_HUIT)
-     for( ; i >= 8; i -= 8 )
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/musl-fixes.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/musl-fixes.patch
new file mode 100644
index 0000000..279a607
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/musl-fixes.patch
@@ -0,0 +1,26 @@
+Musl fixes, which should be applied upstream too
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/src/dbus/common/types.hpp
++++ b/src/dbus/common/types.hpp
+@@ -715,7 +715,7 @@ struct TrelInfo
+     };
+ 
+     bool               mEnabled;      ///< Whether TREL is enabled.
+-    u_int16_t          mNumTrelPeers; ///< The number of TREL peers.
++    uint16_t          mNumTrelPeers; ///< The number of TREL peers.
+     TrelPacketCounters mTrelCounters; ///< The TREL counters.
+ };
+ 
+--- a/third_party/openthread/repo/src/posix/platform/CMakeLists.txt
++++ b/third_party/openthread/repo/src/posix/platform/CMakeLists.txt
+@@ -172,7 +172,7 @@ target_link_libraries(openthread-posix
+ )
+ 
+ option(OT_TARGET_OPENWRT "enable openthread posix for OpenWRT" OFF)
+-if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND NOT OT_TARGET_OPENWRT)
++if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND NOT OT_TARGET_OPENWRT AND NOT OT_TARGET_MUSL)
+     target_compile_definitions(ot-posix-config
+         INTERFACE "OPENTHREAD_POSIX_CONFIG_NAT64_AIL_PREFIX_ENABLE=1"
+     )
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb
index 271340a..d7be1cd 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb
@@ -11,15 +11,14 @@
                     file://third_party/openthread/repo/LICENSE;md5=543b6fe90ec5901a683320a36390c65f \
                     "
 DEPENDS = "autoconf-archive dbus readline avahi jsoncpp boost libnetfilter-queue protobuf protobuf-native"
-SRCREV = "4e937939ba6ce146fd98537cb63e0f4c41c8dbe1"
+SRCREV = "a35cc682305bb2201c314472adf06a4960536750"
 PV = "0.3.0+git"
 
 SRC_URI = "gitsm://github.com/openthread/ot-br-posix.git;protocol=https;branch=main \
            file://0001-otbr-agent.service.in-remove-pre-exec-hook-for-mdns-.patch \
            file://0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch \
-           file://0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch \
-           file://mbedtls.patch \
            file://default-cxx-std.patch \
+           file://musl-fixes.patch \
            "
 
 S = "${WORKDIR}/git"
@@ -56,6 +55,7 @@
                  -DOT_DHCP6_CLIENT=ON \
                  -DOT_DHCP6_SERVER=ON \
                  "
+EXTRA_OECMAKE:append:libc-musl = " -DOT_TARGET_MUSL=ON"
 
 RDEPENDS:${PN} = "iproute2 ipset avahi-daemon"
 
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch
deleted file mode 100644
index c9edb00..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon/0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From c0546e351f6d7ab50eb1de8cef1d0d167760fccc Mon Sep 17 00:00:00 2001
-From: Peter Korsgaard <peter@korsgaard.com>
-Date: Mon, 27 Aug 2018 22:50:57 +0200
-Subject: [PATCH] bn_mul.h: fix x86 PIC inline ASM compilation with GCC < 5
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fixes #1910
-
-With ebx added to the MULADDC_STOP clobber list to fix #1550, the inline
-assembly fails to build with GCC < 5 in PIC mode with the following error:
-
-include/mbedtls/bn_mul.h:46:13: error: PIC register clobbered by ‘ebx’ in ‘asm’
-
-This is because older GCC versions treated the x86 ebx register (which is
-used for the GOT) as a fixed reserved register when building as PIC.
-
-This is fixed by an improved register allocator in GCC 5+.  From the release
-notes:
-
-Register allocation improvements: Reuse of the PIC hard register, instead of
-using a fixed register, was implemented on x86/x86-64 targets.  This
-improves generated PIC code performance as more hard registers can be used.
-
-https://www.gnu.org/software/gcc/gcc-5/changes.html
-
-As a workaround, detect this situation and disable the inline assembly,
-similar to the MULADDC_CANNOT_USE_R7 logic.
-
-Upstream-Status: Backport [https://github.com/Mbed-TLS/mbedtls/commit/c0546e351f6d7ab50eb1de8cef1d0d167760fccc]
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- library/bn_mul.h | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
---- a/third_party/mbedtls/repo/include/mbedtls/bn_mul.h
-+++ b/third_party/mbedtls/repo/include/mbedtls/bn_mul.h
-@@ -55,12 +55,28 @@
-     ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )
- 
- /*
-+ * GCC < 5.0 treated the x86 ebx (which is used for the GOT) as a
-+ * fixed reserved register when building as PIC, leading to errors
-+ * like: bn_mul.h:46:13: error: PIC register clobbered by 'ebx' in 'asm'
-+ *
-+ * This is fixed by an improved register allocator in GCC 5+. From the
-+ * release notes:
-+ * Register allocation improvements: Reuse of the PIC hard register,
-+ * instead of using a fixed register, was implemented on x86/x86-64
-+ * targets. This improves generated PIC code performance as more hard
-+ * registers can be used.
-+ */
-+#if defined(__GNUC__) && __GNUC__ < 5 && defined(__PIC__)
-+#define MULADDC_CANNOT_USE_EBX
-+#endif
-+
-+/*
-  * Disable use of the i386 assembly code below if option -O0, to disable all
-  * compiler optimisations, is passed, detected with __OPTIMIZE__
-  * This is done as the number of registers used in the assembly code doesn't
-  * work with the -O0 option.
-  */
--#if defined(__i386__) && defined(__OPTIMIZE__)
-+#if defined(__i386__) && defined(__OPTIMIZE__) && !defined(MULADDC_CANNOT_USE_EBX)
- 
- #define MULADDC_INIT                        \
-     asm(                                    \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon/mbedtls.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon/mbedtls.patch
deleted file mode 100644
index ffaff48..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon/mbedtls.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-mbedtls: Disable documentation warning as error with clang
-
-There are shortcomings with doxygen info which clang-15+ flags, dont
-treat them as errors
-
-Remove unused variable
-
-Fixes
-library/bignum.c:1395:29: error: variable 't' set but not used [-Werror,-Wunused-but-set-variable]
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/third_party/mbedtls/repo/library/bignum.c
-+++ b/third_party/mbedtls/repo/library/bignum.c
-@@ -1544,7 +1544,7 @@ __attribute__ ((noinline))
- #endif
- void mpi_mul_hlp( size_t i, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d, mbedtls_mpi_uint b )
- {
--    mbedtls_mpi_uint c = 0, t = 0;
-+    mbedtls_mpi_uint c = 0, t __attribute__ ((unused)) = 0;
- 
- #if defined(MULADDC_HUIT)
-     for( ; i >= 8; i -= 8 )
---- a/third_party/mbedtls/repo/CMakeLists.txt
-+++ b/third_party/mbedtls/repo/CMakeLists.txt
-@@ -192,7 +192,7 @@ if(CMAKE_COMPILER_IS_GNU)
- endif(CMAKE_COMPILER_IS_GNU)
- 
- if(CMAKE_COMPILER_IS_CLANG)
--    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla")
-+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wno-error=documentation")
-     set(CMAKE_C_FLAGS_RELEASE     "-O2")
-     set(CMAKE_C_FLAGS_DEBUG       "-O0 -g3")
-     set(CMAKE_C_FLAGS_COVERAGE    "-O0 -g3 --coverage")
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon_git.bb
index 1583a3f..4456835 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-daemon_git.bb
@@ -5,15 +5,13 @@
 SECTION = "net"
 LICENSE = "BSD-3-Clause & Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=543b6fe90ec5901a683320a36390c65f \
-                    file://third_party/mbedtls/repo/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+                    file://third_party/mbedtls/repo/LICENSE;md5=379d5819937a6c2f1ef1630d341e026d \
                     "
 DEPENDS = "readline"
-SRCREV = "7dfde1f12923f03c9680be4d838b94b7a2320324"
+SRCREV = "90adc86d34e21a9e8f86d093c2190030042c4a59"
 PV = "0.1+git"
 
 SRC_URI = "git://github.com/openthread/openthread.git;protocol=https;branch=main \
-           file://0001-bn_mul.h-fix-x86-PIC-inline-ASM-compilation-with-GCC.patch \
-           file://mbedtls.patch \
            "
 
 S = "${WORKDIR}/git"
@@ -27,3 +25,5 @@
                  -DOT_PLATFORM=posix \
                  -DCMAKE_BUILD_TYPE=Release \
                  "
+
+EXTRA_OECMAKE:append:libc-musl = " -DOT_TARGET_OPENWRT=ON"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund/basename.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund/basename.patch
new file mode 100644
index 0000000..30bd9e5
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund/basename.patch
@@ -0,0 +1,19 @@
+include libgen.h for getting prototype for basename()
+Newer musl has remove prototype from string.h [1]
+which renders a compile error with newer compilers like
+clang 18+ about missing prototype.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/third_party/openthread/tools/spi-hdlc-adapter/spi-hdlc-adapter.c
++++ b/third_party/openthread/tools/spi-hdlc-adapter/spi-hdlc-adapter.c
+@@ -32,6 +32,7 @@
+ #endif
+ 
+ #include <assert.h>
++#include <libgen.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <stdint.h>
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb
index b75d686..6a84897 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb
@@ -12,10 +12,11 @@
                     file://third_party/pt/LICENSE;md5=dcd598b69cad786beea33da7b1ae14b7 \
                     "
 DEPENDS = "autoconf-archive dbus readline boost"
-SRCREV = "0fb1f57e4224e2df3e630e146702bfcf63fbf07a"
+SRCREV = "8b5ce64c2f5bbf106cabfd015bcb3bdb2e0248d3"
 PV = "0.07.01+git"
 
 SRC_URI = "gitsm://github.com/openthread/wpantund.git;protocol=https;branch=master \
+           file://basename.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.19.4.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.19.4.bb
deleted file mode 100644
index 9e02afd..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.19.4.bb
+++ /dev/null
@@ -1,355 +0,0 @@
-HOMEPAGE = "https://www.samba.org/"
-SECTION = "console/network"
-
-LICENSE = "GPL-3.0-or-later & LGPL-3.0-or-later & GPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://${COREBASE}/meta/files/common-licenses/LGPL-3.0-or-later;md5=c51d3eef3be114124d11349ca0d7e117 \
-                    file://${COREBASE}/meta/files/common-licenses/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c"
-
-SAMBA_MIRROR = "http://samba.org/samba/ftp"
-MIRRORS += "\
-${SAMBA_MIRROR}    http://mirror.internode.on.net/pub/samba \n \
-${SAMBA_MIRROR}    http://www.mirrorservice.org/sites/ftp.samba.org \n \
-"
-
-export PYTHONHASHSEED="1"
-
-SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \
-           file://smb.conf \
-           file://volatiles.03_samba \
-           file://0001-Don-t-check-xsltproc-manpages.patch \
-           file://0002-do-not-import-target-module-while-cross-compile.patch \
-           file://0003-Add-config-option-without-valgrind.patch \
-           file://0004-Add-options-to-configure-the-use-of-libbsd.patch \
-           file://0005-Fix-pyext_PATTERN-for-cross-compilation.patch \
-           file://0006-smbtorture-skip-test-case-tfork_cmd_send.patch \
-           file://0007-Deleted-settiong-of-python-to-fix-the-install-confli.patch \
-           "
-
-SRC_URI:append:libc-musl = " \
-           file://samba-pam.patch \
-           file://samba-4.3.9-remove-getpwent_r.patch \
-           "
-
-SRC_URI[sha256sum] = "4026d93b866db198c8ca1685b0f5d52793f65c6e63cb364163af661fdff0968c"
-
-UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.19(\.\d+)+).tar.gz"
-
-inherit systemd waf-samba cpan-base perlnative update-rc.d perl-version pkgconfig
-
-CVE_STATUS[CVE-2011-2411] = "not-applicable-platform: vulnerable only on HP NonStop Servers"
-
-# remove default added RDEPENDS on perl
-RDEPENDS:${PN}:remove = "perl"
-
-DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb libaio libpam libtasn1 libtasn1-native jansson libparse-yapp-perl-native gnutls cmocka"
-
-inherit features_check
-REQUIRED_DISTRO_FEATURES = "pam"
-
-DEPENDS:append:libc-musl = " libtirpc"
-CFLAGS:append:libc-musl = " -I${STAGING_INCDIR}/tirpc"
-LDFLAGS:append:libc-musl = " -ltirpc"
-
-COMPATIBLE_HOST:riscv32 = "null"
-
-INITSCRIPT_NAME = "samba"
-INITSCRIPT_PARAMS = "start 20 3 5 . stop 20 0 1 6 ."
-
-SYSTEMD_PACKAGES = "${PN}-base ${PN}-ad-dc winbind ctdb"
-SYSTEMD_SERVICE:${PN}-base = "nmb.service smb.service"
-SYSTEMD_SERVICE:${PN}-ad-dc = "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'samba.service', '', d)}"
-SYSTEMD_SERVICE:winbind = "winbind.service"
-SYSTEMD_SERVICE:ctdb = "ctdb.service"
-
-# There are prerequisite settings to enable ad-dc, so disable the service by default.
-# Reference:
-# https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
-SYSTEMD_AUTO_ENABLE:${PN}-ad-dc = "disable"
-
-#cross_compile cannot use preforked process, since fork process earlier than point subproces.popen
-#to cross Popen
-export WAF_NO_PREFORK="yes"
-
-# Use krb5. Build active domain controller.
-#
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd zeroconf', d)} \
-                   acl cups ldap mitkrb5 \
-"
-
-PACKAGECONFIG[acl] = "--with-acl-support,--without-acl-support,acl"
-PACKAGECONFIG[fam] = "--with-fam,--without-fam,gamin"
-PACKAGECONFIG[cups] = "--enable-cups,--disable-cups,cups"
-PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
-PACKAGECONFIG[sasl] = ",,cyrus-sasl"
-PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
-PACKAGECONFIG[dmapi] = "--with-dmapi,--without-dmapi,dmapi"
-PACKAGECONFIG[zeroconf] = "--enable-avahi,--disable-avahi,avahi"
-PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
-PACKAGECONFIG[lttng] = "--with-lttng,--without-lttng,lttng-ust"
-PACKAGECONFIG[archive] = "--with-libarchive,--without-libarchive,libarchive"
-PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
-PACKAGECONFIG[gpgme] = "--with-gpgme,--without-gpgme,gpgme"
-PACKAGECONFIG[lmdb] = ",--without-ldb-lmdb,lmdb"
-PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd"
-PACKAGECONFIG[ad-dc] = "--with-experimental-mit-ad-dc,--without-ad-dc,python3-markdown python3-dnspython,"
-PACKAGECONFIG[mitkrb5] = "--with-system-mitkrb5 --with-system-mitkdc=/usr/sbin/krb5kdc,,krb5,"
-
-SAMBA4_IDMAP_MODULES="idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2"
-SAMBA4_PDB_MODULES="pdb_tdbsam,${@bb.utils.contains('PACKAGECONFIG', 'ldap', 'pdb_ldap,', '', d)}pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4"
-SAMBA4_AUTH_MODULES="auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4"
-SAMBA4_MODULES="${SAMBA4_IDMAP_MODULES},${SAMBA4_PDB_MODULES},${SAMBA4_AUTH_MODULES}"
-
-# These libraries are supposed to replace others supplied by packages, but decorate the names of
-# .so files so there will not be a conflict.  This is not done consistantly, so be very careful
-# when adding to this list.
-#
-SAMBA4_LIBS="heimdal,NONE"
-
-EXTRA_OECONF += "--enable-fhs \
-                 --with-piddir=/run \
-                 --with-sockets-dir=/run/samba \
-                 --with-modulesdir=${libdir}/samba \
-                 --with-privatelibdir=${libdir}/samba \
-                 --with-lockdir=${localstatedir}/lib/samba \
-                 --with-cachedir=${localstatedir}/lib/samba \
-                 --disable-rpath-install \
-                 --disable-rpath \
-                 --with-shared-modules=${SAMBA4_MODULES} \
-                 --bundled-libraries=${SAMBA4_LIBS} \
-                 ${@oe.utils.conditional('TARGET_ARCH', 'x86_64', '', '--disable-glusterfs', d)} \
-                 --with-cluster-support \
-                 --with-profiling-data \
-                 --with-libiconv=${STAGING_DIR_HOST}${prefix} \
-                 --with-pam --with-pammodulesdir=${base_libdir}/security \
-                "
-
-LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
-
-do_configure:append() {
-    cd ${S}/pidl/
-    perl Makefile.PL PREFIX=${prefix}
-    sed -e 's,VENDORPREFIX)/lib/perl,VENDORPREFIX)/${baselib}/perl,g' \
-        -e 's,PERLPREFIX)/lib/perl,PERLPREFIX)/${baselib}/perl,g' -i Makefile
-}
-
-do_compile:append() {
-    oe_runmake -C ${S}/pidl
-}
-
-do_install:append() {
-    for section in 1 5 7; do
-        install -d ${D}${mandir}/man$section
-        install -m 0644 ctdb/doc/*.$section ${D}${mandir}/man$section
-    done
-    for section in 1 5 7 8; do
-        install -d ${D}${mandir}/man$section
-        install -m 0644 docs/manpages/*.$section ${D}${mandir}/man$section
-    done
-
-    install -d ${D}${systemd_system_unitdir}
-    install -m 0644 ${S}/bin/default/packaging/systemd/*.service ${D}${systemd_system_unitdir}/
-    sed -e 's,\(ExecReload=\).*\(/kill\),\1${base_bindir}\2,' \
-        -e 's,/etc/sysconfig/samba,${sysconfdir}/default/samba,' \
-        -i ${D}${systemd_system_unitdir}/*.service
-
-    if [ "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'yes', 'no', d)}" = "no" ]; then
-        rm -f ${D}${systemd_system_unitdir}/samba.service
-    fi
-
-    install -d ${D}${sysconfdir}/tmpfiles.d
-    install -m644 packaging/systemd/samba.conf.tmp ${D}${sysconfdir}/tmpfiles.d/samba.conf
-    echo "d ${localstatedir}/log/samba 0755 root root -" \
-        >> ${D}${sysconfdir}/tmpfiles.d/samba.conf
-    install -d ${D}${sysconfdir}/init.d
-    install -m 0755 packaging/sysv/samba.init ${D}${sysconfdir}/init.d/samba
-    sed -e 's,/opt/samba/bin,${sbindir},g' \
-        -e 's,/opt/samba/smb.conf,${sysconfdir}/samba/smb.conf,g' \
-        -e 's,/opt/samba/log,${localstatedir}/log/samba,g' \
-        -e 's,/etc/init.d/samba.server,${sysconfdir}/init.d/samba,g' \
-        -e 's,/usr/bin,${base_bindir},g' \
-        -i ${D}${sysconfdir}/init.d/samba
-
-    install -d ${D}${sysconfdir}/samba
-    echo "127.0.0.1 localhost" > ${D}${sysconfdir}/samba/lmhosts
-    install -m644 ${WORKDIR}/smb.conf ${D}${sysconfdir}/samba/smb.conf
-    install -D -m 644 ${WORKDIR}/volatiles.03_samba ${D}${sysconfdir}/default/volatiles/03_samba
-
-    install -d ${D}${sysconfdir}/default
-    install -m644 packaging/systemd/samba.sysconfig ${D}${sysconfdir}/default/samba
-
-    # the items are from ctdb/tests/run_tests.sh
-    for d in cunit eventd eventscripts onnode shellcheck takeover takeover_helper tool; do
-        testdir=${D}${datadir}/ctdb-tests/UNIT/$d
-        install -d $testdir
-        cp ${S}/ctdb/tests/UNIT/$d/*.sh $testdir
-        cp -r ${S}/ctdb/tests/UNIT/$d/scripts ${S}/ctdb/tests/UNIT/$d/stubs $testdir || true
-    done
-
-    # fix file-rdeps qa warning
-    if [ -f ${D}${bindir}/onnode ]; then
-        sed -i 's:\(#!/bin/\)bash:\1sh:' ${D}${bindir}/onnode
-    fi
-
-    chmod 0750 ${D}${sysconfdir}/sudoers.d || true
-    rm -rf ${D}/run ${D}${localstatedir}/run ${D}${localstatedir}/log
-
-    for f in samba-gpupdate samba_upgradedns samba_spnupdate samba_kcc samba_dnsupdate samba_downgrade_db; do
-        if [ -f "${D}${sbindir}/$f" ]; then
-            sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${sbindir}/$f
-        fi
-    done
-    if [ -f "${D}${bindir}/samba-tool" ]; then
-        sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${bindir}/samba-tool
-    fi
-
-    oe_runmake -C ${S}/pidl DESTDIR=${D} install_vendor
-    find ${D}${libdir}/perl5/ -type f -name "perllocal.pod" -delete
-    find ${D}${libdir}/perl5/ -type f -name ".packlist" -delete
-    sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${bindir}/pidl
-}
-
-PACKAGES =+ "${PN}-python3 ${PN}-pidl \
-             ${PN}-dsdb-modules ${PN}-testsuite registry-tools \
-             winbind ctdb ctdb-tests \
-             ${PN}-common ${PN}-base ${PN}-ad-dc \
-             smbclient ${PN}-client ${PN}-server ${PN}-test"
-
-python samba_populate_packages() {
-    def module_hook(file, pkg, pattern, format, basename):
-        pn = d.getVar('PN')
-        d.appendVar('RRECOMMENDS:%s-base' % pn, ' %s' % pkg)
-
-    mlprefix = d.getVar('MLPREFIX') or ''
-    pam_libdir = d.expand('${base_libdir}/security')
-    pam_pkgname = mlprefix + 'pam-plugin%s'
-    do_split_packages(d, pam_libdir, r'^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True)
-
-    libdir = d.getVar('libdir')
-    do_split_packages(d, libdir, r'^lib(.*)\.so\..*$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True, allow_links=True)
-    pkglibdir = '%s/samba' % libdir
-    do_split_packages(d, pkglibdir, r'^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True)
-    moduledir = '%s/samba/auth' % libdir
-    do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-auth-%s', 'Samba %s authentication backend', hook=module_hook, extra_depends='', prepend=True)
-    moduledir = '%s/samba/pdb' % libdir
-    do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-pdb-%s', 'Samba %s password backend', hook=module_hook, extra_depends='', prepend=True)
-}
-
-PACKAGESPLITFUNCS:prepend = "samba_populate_packages "
-PACKAGES_DYNAMIC = "samba-auth-.* samba-pdb-.*"
-
-RDEPENDS:${PN} += "${PN}-base ${PN}-python3 ${PN}-dsdb-modules python3"
-RDEPENDS:${PN}-python3 += "pytalloc python3-tdb pyldb"
-
-FILES:${PN}-base = "${sbindir}/nmbd \
-                    ${sbindir}/smbd \
-                    ${sysconfdir}/init.d \
-                    ${systemd_system_unitdir}/nmb.service \
-                    ${systemd_system_unitdir}/smb.service"
-
-FILES:${PN}-ad-dc = "${sbindir}/samba \
-                     ${systemd_system_unitdir}/samba.service \
-                     ${libdir}/krb5/plugins/kdb/samba.so \
-"
-
-RDEPENDS:${PN}-ad-dc = "krb5-kdc"
-
-FILES:ctdb = "${bindir}/ctdb \
-              ${bindir}/ctdb_diagnostics \
-              ${bindir}/ltdbtool \
-              ${bindir}/onnode \
-              ${bindir}/ping_pong \
-              ${sbindir}/ctdbd \
-              ${datadir}/ctdb \
-              ${libexecdir}/ctdb \
-              ${localstatedir}/lib/ctdb \
-              ${sysconfdir}/ctdb \
-              ${sysconfdir}/sudoers.d/ctdb \
-              ${systemd_system_unitdir}/ctdb.service \
-"
-
-FILES:ctdb-tests = "${bindir}/ctdb_run_tests \
-                    ${bindir}/ctdb_run_cluster_tests \
-                    ${datadir}/ctdb-tests \
-                    ${datadir}/ctdb/tests \
-"
-
-RDEPENDS:ctdb-tests += "bash util-linux-getopt ctdb"
-
-FILES:${BPN}-common = "${sysconfdir}/default \
-                       ${sysconfdir}/samba \
-                       ${sysconfdir}/tmpfiles.d \
-                       ${localstatedir}/lib/samba \
-                       ${localstatedir}/spool/samba \
-"
-
-FILES:${PN} += "${libdir}/vfs/*.so \
-                ${libdir}/charset/*.so \
-                ${libdir}/*.dat \
-                ${libdir}/auth/*.so \
-"
-
-FILES:${PN}-dsdb-modules = "${libdir}/samba/ldb"
-
-FILES:${PN}-testsuite = "${bindir}/gentest \
-                         ${bindir}/locktest \
-                         ${bindir}/masktest \
-                         ${bindir}/ndrdump \
-                         ${bindir}/smbtorture"
-
-FILES:registry-tools = "${bindir}/regdiff \
-                        ${bindir}/regpatch \
-                        ${bindir}/regshell \
-                        ${bindir}/regtree"
-
-FILES:winbind = "${sbindir}/winbindd \
-                 ${bindir}/wbinfo \
-                 ${bindir}/ntlm_auth \
-                 ${libdir}/samba/idmap \
-                 ${libdir}/samba/nss_info \
-                 ${libdir}/winbind_krb5_locator.so \
-                 ${libdir}/winbind-krb5-localauth.so \
-                 ${sysconfdir}/init.d/winbind \
-                 ${systemd_system_unitdir}/winbind.service"
-
-FILES:${PN}-python3 = "${PYTHON_SITEPACKAGES_DIR}"
-
-FILES:smbclient = "${bindir}/cifsdd \
-                   ${bindir}/rpcclient \
-                   ${bindir}/smbcacls \
-                   ${bindir}/smbclient \
-                   ${bindir}/smbcquotas \
-                   ${bindir}/smbget \
-                   ${bindir}/smbspool \
-                   ${bindir}/smbtar \
-                   ${bindir}/smbtree \
-                   ${libexecdir}/samba/smbspool_krb5_wrapper"
-
-FILES:${PN}-pidl = "${bindir}/pidl \
-                    ${libdir}/perl5 \
-                   "
-RDEPENDS:${PN}-pidl += "perl perl-modules libparse-yapp-perl"
-
-RDEPENDS:${PN}-client = "\
-    smbclient \
-    winbind \
-    registry-tools \
-    ${PN}-pidl \
-    "
-
-ALLOW_EMPTY:${PN}-client = "1"
-
-RDEPENDS:${PN}-server = "\
-    ${PN} \
-    winbind \
-    registry-tools \
-    "
-
-ALLOW_EMPTY:${PN}-server = "1"
-
-RDEPENDS:${PN}-test = "\
-    ctdb-tests \
-    ${PN}-testsuite \
-    "
-
-ALLOW_EMPTY:${PN}-test = "1"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.19.5.bb b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.19.5.bb
new file mode 100644
index 0000000..f5ef86d
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/samba/samba_4.19.5.bb
@@ -0,0 +1,356 @@
+HOMEPAGE = "https://www.samba.org/"
+SECTION = "console/network"
+
+LICENSE = "GPL-3.0-or-later & LGPL-3.0-or-later & GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
+                    file://${COREBASE}/meta/files/common-licenses/LGPL-3.0-or-later;md5=c51d3eef3be114124d11349ca0d7e117 \
+                    file://${COREBASE}/meta/files/common-licenses/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c"
+
+SAMBA_MIRROR = "http://samba.org/samba/ftp"
+MIRRORS += "\
+${SAMBA_MIRROR}    http://mirror.internode.on.net/pub/samba \n \
+${SAMBA_MIRROR}    http://www.mirrorservice.org/sites/ftp.samba.org \n \
+"
+
+export PYTHONHASHSEED="1"
+
+SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \
+           file://smb.conf \
+           file://volatiles.03_samba \
+           file://0001-Don-t-check-xsltproc-manpages.patch \
+           file://0002-do-not-import-target-module-while-cross-compile.patch \
+           file://0003-Add-config-option-without-valgrind.patch \
+           file://0004-Add-options-to-configure-the-use-of-libbsd.patch \
+           file://0005-Fix-pyext_PATTERN-for-cross-compilation.patch \
+           file://0006-smbtorture-skip-test-case-tfork_cmd_send.patch \
+           file://0007-Deleted-settiong-of-python-to-fix-the-install-confli.patch \
+           "
+
+SRC_URI:append:libc-musl = " \
+           file://samba-pam.patch \
+           file://samba-4.3.9-remove-getpwent_r.patch \
+           "
+
+SRC_URI[sha256sum] = "0e2405b4cec29d0459621f4340a1a74af771ec7cffedff43250cad7f1f87605e"
+
+UPSTREAM_CHECK_REGEX = "samba\-(?P<pver>4\.19(\.\d+)+).tar.gz"
+
+inherit systemd waf-samba cpan-base perlnative update-rc.d perl-version pkgconfig
+
+CVE_STATUS[CVE-2011-2411] = "not-applicable-platform: vulnerable only on HP NonStop Servers"
+
+# remove default added RDEPENDS on perl
+RDEPENDS:${PN}:remove = "perl"
+
+DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb libaio libpam libtasn1 libtasn1-native jansson libparse-yapp-perl-native gnutls cmocka"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "pam"
+
+DEPENDS:append:libc-musl = " libtirpc"
+CFLAGS:append:libc-musl = " -I${STAGING_INCDIR}/tirpc"
+LDFLAGS:append:libc-musl = " -ltirpc"
+
+COMPATIBLE_HOST:riscv32 = "null"
+
+INITSCRIPT_NAME = "samba"
+INITSCRIPT_PARAMS = "start 20 3 5 . stop 20 0 1 6 ."
+
+SYSTEMD_PACKAGES = "${PN}-base ${PN}-ad-dc winbind ctdb"
+SYSTEMD_SERVICE:${PN}-base = "nmb.service smb.service"
+SYSTEMD_SERVICE:${PN}-ad-dc = "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'samba.service', '', d)}"
+SYSTEMD_SERVICE:winbind = "winbind.service"
+SYSTEMD_SERVICE:ctdb = "ctdb.service"
+
+# There are prerequisite settings to enable ad-dc, so disable the service by default.
+# Reference:
+# https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
+SYSTEMD_AUTO_ENABLE:${PN}-ad-dc = "disable"
+
+#cross_compile cannot use preforked process, since fork process earlier than point subproces.popen
+#to cross Popen
+export WAF_NO_PREFORK="yes"
+
+# Use krb5. Build active domain controller.
+#
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd zeroconf', d)} \
+                   acl cups ldap mitkrb5 \
+"
+
+PACKAGECONFIG[acl] = "--with-acl-support,--without-acl-support,acl"
+PACKAGECONFIG[fam] = "--with-fam,--without-fam,gamin"
+PACKAGECONFIG[cups] = "--enable-cups,--disable-cups,cups"
+PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap"
+PACKAGECONFIG[sasl] = ",,cyrus-sasl"
+PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
+PACKAGECONFIG[dmapi] = "--with-dmapi,--without-dmapi,dmapi"
+PACKAGECONFIG[zeroconf] = "--enable-avahi,--disable-avahi,avahi"
+PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
+PACKAGECONFIG[lttng] = "--with-lttng,--without-lttng,lttng-ust"
+PACKAGECONFIG[archive] = "--with-libarchive,--without-libarchive,libarchive"
+PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind"
+PACKAGECONFIG[gpgme] = "--with-gpgme,--without-gpgme,gpgme"
+PACKAGECONFIG[lmdb] = ",--without-ldb-lmdb,lmdb"
+PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd"
+PACKAGECONFIG[ad-dc] = "--with-experimental-mit-ad-dc,--without-ad-dc,python3-markdown python3-dnspython,"
+PACKAGECONFIG[mitkrb5] = "--with-system-mitkrb5 --with-system-mitkdc=/usr/sbin/krb5kdc,,krb5,"
+
+SAMBA4_IDMAP_MODULES="idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2"
+SAMBA4_PDB_MODULES="pdb_tdbsam,${@bb.utils.contains('PACKAGECONFIG', 'ldap', 'pdb_ldap,', '', d)}pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4"
+SAMBA4_AUTH_MODULES="auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4"
+SAMBA4_MODULES="${SAMBA4_IDMAP_MODULES},${SAMBA4_PDB_MODULES},${SAMBA4_AUTH_MODULES}"
+
+# These libraries are supposed to replace others supplied by packages, but decorate the names of
+# .so files so there will not be a conflict.  This is not done consistantly, so be very careful
+# when adding to this list.
+#
+SAMBA4_LIBS="heimdal,NONE"
+
+EXTRA_OECONF += "--enable-fhs \
+                 --with-piddir=/run \
+                 --with-sockets-dir=/run/samba \
+                 --with-modulesdir=${libdir}/samba \
+                 --with-privatelibdir=${libdir}/samba \
+                 --with-lockdir=${localstatedir}/lib/samba \
+                 --with-cachedir=${localstatedir}/lib/samba \
+                 --disable-rpath-install \
+                 --disable-rpath \
+                 --with-shared-modules=${SAMBA4_MODULES} \
+                 --bundled-libraries=${SAMBA4_LIBS} \
+                 ${@oe.utils.conditional('TARGET_ARCH', 'x86_64', '', '--disable-glusterfs', d)} \
+                 --with-cluster-support \
+                 --with-profiling-data \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix} \
+                 --with-pam --with-pammodulesdir=${base_libdir}/security \
+                 --pythondir=${PYTHON_SITEPACKAGES_DIR} \
+                "
+
+LDFLAGS += "-Wl,-z,relro,-z,now ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd ', '', d)}"
+
+do_configure:append() {
+    cd ${S}/pidl/
+    perl Makefile.PL PREFIX=${prefix}
+    sed -e 's,VENDORPREFIX)/lib/perl,VENDORPREFIX)/${baselib}/perl,g' \
+        -e 's,PERLPREFIX)/lib/perl,PERLPREFIX)/${baselib}/perl,g' -i Makefile
+}
+
+do_compile:append() {
+    oe_runmake -C ${S}/pidl
+}
+
+do_install:append() {
+    for section in 1 5 7; do
+        install -d ${D}${mandir}/man$section
+        install -m 0644 ctdb/doc/*.$section ${D}${mandir}/man$section
+    done
+    for section in 1 5 7 8; do
+        install -d ${D}${mandir}/man$section
+        install -m 0644 docs/manpages/*.$section ${D}${mandir}/man$section
+    done
+
+    install -d ${D}${systemd_system_unitdir}
+    install -m 0644 ${S}/bin/default/packaging/systemd/*.service ${D}${systemd_system_unitdir}/
+    sed -e 's,\(ExecReload=\).*\(/kill\),\1${base_bindir}\2,' \
+        -e 's,/etc/sysconfig/samba,${sysconfdir}/default/samba,' \
+        -i ${D}${systemd_system_unitdir}/*.service
+
+    if [ "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'yes', 'no', d)}" = "no" ]; then
+        rm -f ${D}${systemd_system_unitdir}/samba.service
+    fi
+
+    install -d ${D}${sysconfdir}/tmpfiles.d
+    install -m644 packaging/systemd/samba.conf.tmp ${D}${sysconfdir}/tmpfiles.d/samba.conf
+    echo "d ${localstatedir}/log/samba 0755 root root -" \
+        >> ${D}${sysconfdir}/tmpfiles.d/samba.conf
+    install -d ${D}${sysconfdir}/init.d
+    install -m 0755 packaging/sysv/samba.init ${D}${sysconfdir}/init.d/samba
+    sed -e 's,/opt/samba/bin,${sbindir},g' \
+        -e 's,/opt/samba/smb.conf,${sysconfdir}/samba/smb.conf,g' \
+        -e 's,/opt/samba/log,${localstatedir}/log/samba,g' \
+        -e 's,/etc/init.d/samba.server,${sysconfdir}/init.d/samba,g' \
+        -e 's,/usr/bin,${base_bindir},g' \
+        -i ${D}${sysconfdir}/init.d/samba
+
+    install -d ${D}${sysconfdir}/samba
+    echo "127.0.0.1 localhost" > ${D}${sysconfdir}/samba/lmhosts
+    install -m644 ${WORKDIR}/smb.conf ${D}${sysconfdir}/samba/smb.conf
+    install -D -m 644 ${WORKDIR}/volatiles.03_samba ${D}${sysconfdir}/default/volatiles/03_samba
+
+    install -d ${D}${sysconfdir}/default
+    install -m644 packaging/systemd/samba.sysconfig ${D}${sysconfdir}/default/samba
+
+    # the items are from ctdb/tests/run_tests.sh
+    for d in cunit eventd eventscripts onnode shellcheck takeover takeover_helper tool; do
+        testdir=${D}${datadir}/ctdb-tests/UNIT/$d
+        install -d $testdir
+        cp ${S}/ctdb/tests/UNIT/$d/*.sh $testdir
+        cp -r ${S}/ctdb/tests/UNIT/$d/scripts ${S}/ctdb/tests/UNIT/$d/stubs $testdir || true
+    done
+
+    # fix file-rdeps qa warning
+    if [ -f ${D}${bindir}/onnode ]; then
+        sed -i 's:\(#!/bin/\)bash:\1sh:' ${D}${bindir}/onnode
+    fi
+
+    chmod 0750 ${D}${sysconfdir}/sudoers.d || true
+    rm -rf ${D}/run ${D}${localstatedir}/run ${D}${localstatedir}/log
+
+    for f in samba-gpupdate samba_upgradedns samba_spnupdate samba_kcc samba_dnsupdate samba_downgrade_db; do
+        if [ -f "${D}${sbindir}/$f" ]; then
+            sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${sbindir}/$f
+        fi
+    done
+    if [ -f "${D}${bindir}/samba-tool" ]; then
+        sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${bindir}/samba-tool
+    fi
+
+    oe_runmake -C ${S}/pidl DESTDIR=${D} install_vendor
+    find ${D}${libdir}/perl5/ -type f -name "perllocal.pod" -delete
+    find ${D}${libdir}/perl5/ -type f -name ".packlist" -delete
+    sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${bindir}/pidl
+}
+
+PACKAGES =+ "${PN}-python3 ${PN}-pidl \
+             ${PN}-dsdb-modules ${PN}-testsuite registry-tools \
+             winbind ctdb ctdb-tests \
+             ${PN}-common ${PN}-base ${PN}-ad-dc \
+             smbclient ${PN}-client ${PN}-server ${PN}-test"
+
+python samba_populate_packages() {
+    def module_hook(file, pkg, pattern, format, basename):
+        pn = d.getVar('PN')
+        d.appendVar('RRECOMMENDS:%s-base' % pn, ' %s' % pkg)
+
+    mlprefix = d.getVar('MLPREFIX') or ''
+    pam_libdir = d.expand('${base_libdir}/security')
+    pam_pkgname = mlprefix + 'pam-plugin%s'
+    do_split_packages(d, pam_libdir, r'^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True)
+
+    libdir = d.getVar('libdir')
+    do_split_packages(d, libdir, r'^lib(.*)\.so\..*$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True, allow_links=True)
+    pkglibdir = '%s/samba' % libdir
+    do_split_packages(d, pkglibdir, r'^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True)
+    moduledir = '%s/samba/auth' % libdir
+    do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-auth-%s', 'Samba %s authentication backend', hook=module_hook, extra_depends='', prepend=True)
+    moduledir = '%s/samba/pdb' % libdir
+    do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-pdb-%s', 'Samba %s password backend', hook=module_hook, extra_depends='', prepend=True)
+}
+
+PACKAGESPLITFUNCS:prepend = "samba_populate_packages "
+PACKAGES_DYNAMIC = "samba-auth-.* samba-pdb-.*"
+
+RDEPENDS:${PN} += "${PN}-base ${PN}-python3 ${PN}-dsdb-modules python3"
+RDEPENDS:${PN}-python3 += "pytalloc python3-tdb pyldb"
+
+FILES:${PN}-base = "${sbindir}/nmbd \
+                    ${sbindir}/smbd \
+                    ${sysconfdir}/init.d \
+                    ${systemd_system_unitdir}/nmb.service \
+                    ${systemd_system_unitdir}/smb.service"
+
+FILES:${PN}-ad-dc = "${sbindir}/samba \
+                     ${systemd_system_unitdir}/samba.service \
+                     ${libdir}/krb5/plugins/kdb/samba.so \
+"
+
+RDEPENDS:${PN}-ad-dc = "krb5-kdc"
+
+FILES:ctdb = "${bindir}/ctdb \
+              ${bindir}/ctdb_diagnostics \
+              ${bindir}/ltdbtool \
+              ${bindir}/onnode \
+              ${bindir}/ping_pong \
+              ${sbindir}/ctdbd \
+              ${datadir}/ctdb \
+              ${libexecdir}/ctdb \
+              ${localstatedir}/lib/ctdb \
+              ${sysconfdir}/ctdb \
+              ${sysconfdir}/sudoers.d/ctdb \
+              ${systemd_system_unitdir}/ctdb.service \
+"
+
+FILES:ctdb-tests = "${bindir}/ctdb_run_tests \
+                    ${bindir}/ctdb_run_cluster_tests \
+                    ${datadir}/ctdb-tests \
+                    ${datadir}/ctdb/tests \
+"
+
+RDEPENDS:ctdb-tests += "bash util-linux-getopt ctdb"
+
+FILES:${BPN}-common = "${sysconfdir}/default \
+                       ${sysconfdir}/samba \
+                       ${sysconfdir}/tmpfiles.d \
+                       ${localstatedir}/lib/samba \
+                       ${localstatedir}/spool/samba \
+"
+
+FILES:${PN} += "${libdir}/vfs/*.so \
+                ${libdir}/charset/*.so \
+                ${libdir}/*.dat \
+                ${libdir}/auth/*.so \
+"
+
+FILES:${PN}-dsdb-modules = "${libdir}/samba/ldb"
+
+FILES:${PN}-testsuite = "${bindir}/gentest \
+                         ${bindir}/locktest \
+                         ${bindir}/masktest \
+                         ${bindir}/ndrdump \
+                         ${bindir}/smbtorture"
+
+FILES:registry-tools = "${bindir}/regdiff \
+                        ${bindir}/regpatch \
+                        ${bindir}/regshell \
+                        ${bindir}/regtree"
+
+FILES:winbind = "${sbindir}/winbindd \
+                 ${bindir}/wbinfo \
+                 ${bindir}/ntlm_auth \
+                 ${libdir}/samba/idmap \
+                 ${libdir}/samba/nss_info \
+                 ${libdir}/winbind_krb5_locator.so \
+                 ${libdir}/winbind-krb5-localauth.so \
+                 ${sysconfdir}/init.d/winbind \
+                 ${systemd_system_unitdir}/winbind.service"
+
+FILES:${PN}-python3 = "${PYTHON_SITEPACKAGES_DIR}"
+
+FILES:smbclient = "${bindir}/cifsdd \
+                   ${bindir}/rpcclient \
+                   ${bindir}/smbcacls \
+                   ${bindir}/smbclient \
+                   ${bindir}/smbcquotas \
+                   ${bindir}/smbget \
+                   ${bindir}/smbspool \
+                   ${bindir}/smbtar \
+                   ${bindir}/smbtree \
+                   ${libexecdir}/samba/smbspool_krb5_wrapper"
+
+FILES:${PN}-pidl = "${bindir}/pidl \
+                    ${libdir}/perl5 \
+                   "
+RDEPENDS:${PN}-pidl += "perl perl-modules libparse-yapp-perl"
+
+RDEPENDS:${PN}-client = "\
+    smbclient \
+    winbind \
+    registry-tools \
+    ${PN}-pidl \
+    "
+
+ALLOW_EMPTY:${PN}-client = "1"
+
+RDEPENDS:${PN}-server = "\
+    ${PN} \
+    winbind \
+    registry-tools \
+    "
+
+ALLOW_EMPTY:${PN}-server = "1"
+
+RDEPENDS:${PN}-test = "\
+    ctdb-tests \
+    ${PN}-testsuite \
+    "
+
+ALLOW_EMPTY:${PN}-test = "1"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.6.6.bb b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.6.6.bb
deleted file mode 100644
index 4f7c6c3..0000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.6.6.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "wolfSSL Lightweight Embedded SSL/TLS Library"
-DESCRIPTION = "wolfSSL, formerly CyaSSL, is a lightweight SSL library written \
-               in C and optimized for embedded and RTOS environments. It can \
-               be up to 20 times smaller than OpenSSL while still supporting \
-               a full TLS client and server, up to TLS 1.3"
-HOMEPAGE = "https://www.wolfssl.com/products/wolfssl"
-BUGTRACKER = "https://github.com/wolfssl/wolfssl/issues"
-SECTION = "libs"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-PROVIDES += "cyassl"
-RPROVIDES:${PN} = "cyassl"
-
-SRC_URI = "git://github.com/wolfSSL/wolfssl.git;protocol=https;branch=master"
-SRCREV = "66596ad9e1d7efa8479656872cf09c9c1870a02e"
-
-S = "${WORKDIR}/git"
-
-inherit autotools
-
-BBCLASSEXTEND += "native nativesdk"
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.7.0.bb b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.7.0.bb
new file mode 100644
index 0000000..47c14dd
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/wolfssl/wolfssl_5.7.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "wolfSSL Lightweight Embedded SSL/TLS Library"
+DESCRIPTION = "wolfSSL, formerly CyaSSL, is a lightweight SSL library written \
+               in C and optimized for embedded and RTOS environments. It can \
+               be up to 20 times smaller than OpenSSL while still supporting \
+               a full TLS client and server, up to TLS 1.3"
+HOMEPAGE = "https://www.wolfssl.com/products/wolfssl"
+BUGTRACKER = "https://github.com/wolfssl/wolfssl/issues"
+SECTION = "libs"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+PROVIDES += "cyassl"
+RPROVIDES:${PN} = "cyassl"
+
+SRC_URI = "git://github.com/wolfSSL/wolfssl.git;protocol=https;branch=master"
+SRCREV = "8970ff4c34034dbb3594943d11f8c9d4c5512bd5"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+
+BBCLASSEXTEND += "native nativesdk"
diff --git a/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb b/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb
index 941efed..2e3aa54 100644
--- a/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb
+++ b/meta-openembedded/meta-networking/recipes-core/packagegroups/packagegroup-meta-networking.bb
@@ -241,6 +241,7 @@
     vnstat \
     wpan-tools \
     ettercap \
+    libcpr \
 "
 RDEPENDS:packagegroup-meta-networking-support:remove:mipsarch = "memcached"
 RDEPENDS:packagegroup-meta-networking-support:remove:riscv64 = "memcached"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..4c8b4ef
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,58 @@
+From 1651e7a35be8b3e2fa90ca57b073f6944664fa62 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 12:04:03 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ daemon/automount.c    | 1 +
+ daemon/master.c       | 1 +
+ modules/lookup_file.c | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/daemon/automount.c b/daemon/automount.c
+index 3d9461d..61b3478 100644
+--- a/daemon/automount.c
++++ b/daemon/automount.c
+@@ -21,6 +21,7 @@
+ 
+ #include <dirent.h>
+ #include <getopt.h>
++#include <libgen.h>
+ #include <signal.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+diff --git a/daemon/master.c b/daemon/master.c
+index f99359c..3f56499 100644
+--- a/daemon/master.c
++++ b/daemon/master.c
+@@ -21,6 +21,7 @@
+ #include <string.h>
+ #include <memory.h>
+ #include <limits.h>
++#include <libgen.h>
+ #include <signal.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+diff --git a/modules/lookup_file.c b/modules/lookup_file.c
+index 6afc558..82b1f28 100644
+--- a/modules/lookup_file.c
++++ b/modules/lookup_file.c
+@@ -15,6 +15,7 @@
+ 
+ #include <stdio.h>
+ #include <malloc.h>
++#include <libgen.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <time.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb
index ca11f1a..e3f9777 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb
+++ b/meta-openembedded/meta-networking/recipes-daemons/autofs/autofs_5.1.8.bb
@@ -29,6 +29,7 @@
            file://mount_conflict.patch \
            file://0001-autofs-5.1.8-add-autofs_strerror_r-helper-for-musl.patch \
            file://0002-autofs-5.1.8-handle-innetgr-not-present-in-musl.patch \
+           file://0001-include-libgen.h-for-basename.patch \
            "
 SRC_URI[sha256sum] = "0bd401c56f0eb1ca6251344c3a3d70bface3eccf9c67117cd184422c4cace30c"
 
diff --git a/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.1.bb b/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.1.bb
deleted file mode 100644
index 65bf91c..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Dispatcher service for systemd-networkd connection status changes"
-DESCRIPTION = "This daemon is similar to NetworkManager-dispatcher, but is much \
-more limited in the types of events it supports due to the limited nature of \
-systemd-networkd(8)."
-
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
-
-inherit features_check systemd
-
-RDEPENDS:${PN} = "python3-pygobject python3-dbus"
-REQUIRED_DISTRO_FEATURES = "systemd gobject-introspection-data"
-
-SRCREV = "30e278e50749a60a930ceaa0971207c6436b8a0c"
-SRC_URI = "git://gitlab.com/craftyguy/networkd-dispatcher;protocol=https;nobranch=1"
-
-S = "${WORKDIR}/git"
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE:${PN} = "networkd-dispatcher.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-# Nothing to build, just a python script to install
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
-    install -D -m 0755 ${S}/networkd-dispatcher ${D}${bindir}/networkd-dispatcher
-    install -D -m 0644 ${S}/networkd-dispatcher.service ${D}/${systemd_system_unitdir}/networkd-dispatcher.service
-    install -D -m 0644 ${S}/networkd-dispatcher.conf ${D}/${sysconfdir}/conf.d/networkd-dispatcher.conf
-}
diff --git a/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.2.4.bb b/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.2.4.bb
new file mode 100644
index 0000000..f0f7eb5
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/networkd-dispatcher/networkd-dispatcher_2.2.4.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Dispatcher service for systemd-networkd connection status changes"
+DESCRIPTION = "This daemon is similar to NetworkManager-dispatcher, but is much \
+more limited in the types of events it supports due to the limited nature of \
+systemd-networkd(8)."
+
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
+
+inherit features_check systemd
+
+RDEPENDS:${PN} = "python3-pygobject python3-dbus"
+REQUIRED_DISTRO_FEATURES = "systemd gobject-introspection-data"
+
+SRCREV = "dfd26d72793914eb3da910ef8c71de6d7c8942a2"
+SRC_URI = "git://gitlab.com/craftyguy/networkd-dispatcher;protocol=https;nobranch=1"
+
+S = "${WORKDIR}/git"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "networkd-dispatcher.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+# Nothing to build, just a python script to install
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+    install -D -m 0755 ${S}/networkd-dispatcher ${D}${bindir}/networkd-dispatcher
+    install -D -m 0644 ${S}/networkd-dispatcher.service ${D}/${systemd_system_unitdir}/networkd-dispatcher.service
+    install -D -m 0644 ${S}/networkd-dispatcher.conf ${D}/${sysconfdir}/conf.d/networkd-dispatcher.conf
+}
diff --git a/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.8.5.bb b/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.8.5.bb
deleted file mode 100644
index 1c92c07..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.8.5.bb
+++ /dev/null
@@ -1,240 +0,0 @@
-SUMMARY = "Postfix Mail Transport Agent"
-DESCRIPTION = "Postfix is Wietse Venema's mail server that started life at \
-IBM research as an alternative to the widely-used Sendmail program. \
-Postfix attempts to be fast, easy to administer, and secure. The outsidei \
-has a definite Sendmail-ish flavor, but the inside is completely different."
-
-HOMEPAGE= "http://www.postfix.org"
-SECTION = "mail"
-DEPENDS = "db icu libpcre libnsl2 m4-native openssl postfix-native \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', 'openldap', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'sasl', 'cyrus-sasl', '', d)} \
-"
-
-LICENSE = "IPL-1.0 | EPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b181651ad99a7dc4cc8c4ce2f491ed1a"
-
-SRC_URI = "ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-${PV}.tar.gz \
-           file://main.cf \
-           file://postfix \
-           file://internal_recipient \
-           file://postfix.service \
-           file://aliasesdb \
-           file://check_hostname.sh \
-           file://0001-Fix-makedefs.patch \
-           file://0002-Change-fixed-postconf-to-a-variable-for-cross-compil.patch \
-           file://0003-makedefs-Use-native-compiler-to-build-makedefs.test.patch \
-           file://0004-Fix-icu-config.patch \
-           file://0005-makedefs-add-lnsl-and-lresolv-to-SYSLIBS-by-default.patch \
-           "
-
-SRC_URI[sha256sum] = "f3e827a2b2e410359ad25d31341970434ab07e36139f9a2ef93981b0ec564c85"
-
-UPSTREAM_CHECK_REGEX = "postfix\-(?P<pver>3\.8(\.\d+)+).tar.gz"
-
-S = "${WORKDIR}/postfix-${PV}"
-
-CLEANBROKEN = "1"
-
-BBCLASSEXTEND = "native"
-
-inherit pkgconfig update-rc.d useradd update-alternatives systemd lib_package
-
-INITSCRIPT_NAME = "postfix"
-INITSCRIPT_PARAMS = "start 58 3 4 5 . stop 13 0 1 6 ."
-USERADD_PACKAGES = "${PN}-bin"
-USERADD_PARAM:${PN}-bin = \
-"-d /var/spool/postfix -r -g postfix --shell /bin/false postfix; \
- -d /var/spool/vmail -r -g vmail --shell /bin/false vmail \
-"
-GROUPADD_PARAM:${PN}-bin = "--system postfix;--system postdrop;--system vmail"
-
-export SYSLIBS = "${LDFLAGS}"
-
-# CCARGS specifies includes, defines
-# AUXLIBS specifies libraries
-# Linux2/Linux3 has HAS_DB defined
-# makedefs will make CC to be CC+CCARGS
-
-# ldap support
-export CCARGS-ldap  = "\
-    ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', '-DHAS_LDAP', '', d)}"
-export AUXLIBS-ldap = "\
-    ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', '-lldap -llber', '', d)}"
-
-# no native openldap
-export CCARGS-ldap:class-native = ""
-export AUXLIBS-ldap:class-native = ""
-
-export CCARGS-nonis:libc-musl = "-DNO_NIS"
-export CCARGS-nonis = ""
-
-# SASL support -DUSE_LDAP_SASL -DUSE_SASL_AUTH
-# current openldap didn't enable SASL
-export CCARGS-sasl  = "\
-    ${@bb.utils.contains('DISTRO_FEATURES', 'sasl', '-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I${STAGING_INCDIR}/sasl', '', d)}"
-export AUXLIBS-sasl = "\
-    ${@bb.utils.contains('DISTRO_FEATURES', 'sasl', '-lsasl2', '', d)}"
-export CCARGS-sasl:class-native = ""
-export AUXLIBS-sasl:class-native = ""
-
-# PCRE, TLS support default
-export CCARGS  = "${CFLAGS} -DHAS_PCRE -DUSE_TLS -I${STAGING_INCDIR}/openssl ${CCARGS-ldap} ${CCARGS-sasl} ${CCARGS-nonis}"
-export AUXLIBS = "-lpcre -lssl -lcrypto ${AUXLIBS-sasl} ${AUXLIBS-ldap}"
-export POSTCONF = "${STAGING_DIR_NATIVE}${sbindir_native}/postconf"
-
-# OPT,DEBUG is aready in CFLAGS
-# ignore the OPTS="CC=$CC" in Makefile it will not use the CC=$CC $CCARGS
-EXTRA_OEMAKE += "OPT= DEBUG= OPTS= "
-
-do_compile () {
-    unset CFLAGS CPPFLAGS CXXFLAGS
-    local native_build
-
-    native_build="${@['0', '1'][bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d)]}"
-
-    # if not native build, then pass SYSTEM and RELEASE to makedefs
-    if [ "${native_build}" != "1" ]; then
-        # uname -s for target
-        SYSTEM="Linux"
-
-        # uname -r, use 2.6 as bottomline, even target kernel ver > 2.6
-        RELEASE="2.6.34"
-        sed -i -e \
-            "s:\$(SHELL) makedefs):\$(SHELL) makedefs $SYSTEM $RELEASE):" \
-            ${S}/Makefile.in
-        export BUILD_SYSROOT="${STAGING_DIR_HOST}"
-    else
-        # native build
-        export BUILD_SYSROOT="${STAGING_DIR_NATIVE}"
-    fi
-
-    oe_runmake makefiles
-    oe_runmake
-}
-
-do_install:prepend:class-native() {
-    export POSTCONF="bin/postconf"
-}
-
-SYSTEMD_SERVICE:${PN} = "postfix.service"
-
-do_install () {
-    sh ./postfix-install 'install_root=${D}' \
-        'config_directory=${sysconfdir}/postfix' \
-        'daemon_directory=${libexecdir}/postfix' \
-        'command_directory=${sbindir}' \
-        'queue_directory=${localstatedir}/spool/postfix' \
-        'sendmail_path=${sbindir}/sendmail.postfix' \
-        'newaliases_path=${bindir}/newaliases' \
-        'mailq_path=${bindir}/mailq' \
-        'manpage_directory=${mandir}' \
-        'readme_directory=${datadir}/doc/postfix' \
-        'data_directory=${localstatedir}/lib/postfix' \
-        -non-interactive
-    rm -rf ${D}${localstatedir}/spool/postfix
-    mv ${D}${sysconfdir}/postfix/main.cf ${D}${sysconfdir}/postfix/${MLPREFIX}sample-main.cf
-    install -m 755 ${S}/bin/smtp-sink ${D}/${sbindir}/
-    install -d ${D}${sysconfdir}/init.d
-    install -m 644 ${WORKDIR}/main.cf ${D}${sysconfdir}/postfix/main.cf
-    sed -i 's#@LIBEXECDIR@#${libexecdir}#' ${D}${sysconfdir}/postfix/main.cf
-
-    install -m 755 ${WORKDIR}/check_hostname.sh ${D}${sbindir}/
-
-    install -m 755 ${WORKDIR}/postfix ${D}${sysconfdir}/init.d/postfix
-    install -m 644 ${WORKDIR}/internal_recipient ${D}${sysconfdir}/postfix/internal_recipient
-
-    install -d ${D}${systemd_unitdir}/system
-    install -m 0644 ${WORKDIR}/postfix.service ${D}${systemd_unitdir}/system
-    sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}${systemd_unitdir}/system/postfix.service
-    sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${systemd_unitdir}/system/postfix.service
-    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/postfix.service
-
-    install -m 0755 ${WORKDIR}/aliasesdb ${D}${libexecdir}/postfix
-
-    install -m 770 -d ${D}${localstatedir}/spool/postfix
-    chown postfix:postfix ${D}${localstatedir}/spool/postfix
-
-    install -m 0755 -d ${D}${localstatedir}/lib/postfix
-    chown postfix:nogroup ${D}${localstatedir}/lib/postfix
-    install -m 0755 -d ${D}${localstatedir}/spool/postfix
-    chown root:postfix ${D}${localstatedir}/spool/postfix
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/active
-    chown postfix:root ${D}${localstatedir}/spool/postfix/active
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/bounce
-    chown postfix:root ${D}${localstatedir}/spool/postfix/bounce
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/corrupt
-    chown postfix:root ${D}${localstatedir}/spool/postfix/corrupt
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/defer
-    chown postfix:root ${D}${localstatedir}/spool/postfix/defer
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/deferred
-    chown postfix:root ${D}${localstatedir}/spool/postfix/deferred
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/flush
-    chown postfix:root ${D}${localstatedir}/spool/postfix/flush
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/hold
-    chown postfix:root ${D}${localstatedir}/spool/postfix/hold
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/incoming
-    chown postfix:root ${D}${localstatedir}/spool/postfix/incoming
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/saved
-    chown postfix:root ${D}${localstatedir}/spool/postfix/saved
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/trace
-    chown postfix:root ${D}${localstatedir}/spool/postfix/trace
-    install -m 0730 -d ${D}${localstatedir}/spool/postfix/maildrop
-    chown postfix:postdrop ${D}${localstatedir}/spool/postfix/maildrop
-    install -m 0755 -d ${D}${localstatedir}/spool/postfix/pid
-    chown root:root ${D}${localstatedir}/spool/postfix/pid
-    install -m 0700 -d ${D}${localstatedir}/spool/postfix/private
-    chown postfix:root ${D}${localstatedir}/spool/postfix/private
-    install -m 0710 -d ${D}${localstatedir}/spool/postfix/public
-    chown postfix:postdrop ${D}${localstatedir}/spool/postfix/public
-    install -m 0755 -d ${D}${localstatedir}/spool/vmail
-    chown vmail:vmail ${D}${localstatedir}/spool/vmail
-
-    chown :postdrop ${D}${sbindir}/postqueue
-    chown :postdrop ${D}${sbindir}/postdrop
-    chmod g+s ${D}${sbindir}/postqueue
-    chmod g+s ${D}${sbindir}/postdrop
-
-    rm -rf ${D}/etc/postfix/makedefs.out
-}
-
-do_install:append:class-native() {
-    ln -sf ../sbin/sendmail.postfix ${D}${bindir}/newaliases
-    ln -sf ../sbin/sendmail.postfix ${D}${bindir}/mailq
-}
-
-ALTERNATIVE:${PN}-bin = "sendmail mailq newaliases"
-# /usr/lib/sendmial is required by LSB core test
-ALTERNATIVE:${PN}-bin:linuxstdbase = "sendmail mailq newaliases usr-lib-sendmail"
-ALTERNATIVE_TARGET[mailq] = "${bindir}/mailq"
-ALTERNATIVE_TARGET[newaliases] = "${bindir}/newaliases"
-ALTERNATIVE_TARGET[sendmail] = "${sbindir}/sendmail.postfix"
-ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
-ALTERNATIVE_TARGET[usr-lib-sendmail] = "${sbindir}/sendmail.postfix"
-ALTERNATIVE_LINK_NAME[usr-lib-sendmail] = "/usr/lib/sendmail"
-
-ALTERNATIVE_PRIORITY = "120"
-
-ALTERNATIVE:${PN}-doc += "mailq.1 newaliases.1 sendmail.1"
-ALTERNATIVE_LINK_NAME[mailq.1] = "${mandir}/man1/mailq.1"
-ALTERNATIVE_LINK_NAME[newaliases.1] = "${mandir}/man1/newaliases.1"
-ALTERNATIVE_LINK_NAME[sendmail.1] = "${mandir}/man1/sendmail.1"
-
-pkg_postinst_ontarget:${PN}-cfg () {
-    touch /etc/aliases
-    newaliases
-
-    # generate virtual_alias, default is hash
-    touch /etc/postfix/virtual_alias
-    postmap /etc/postfix/virtual_alias
-}
-
-PACKAGES =+ "${PN}-cfg"
-RDEPENDS:${PN}-cfg:class-target += "${PN}-bin"
-RDEPENDS:${PN}:class-target += "${PN}-cfg"
-# Exclude .debug directories from the main package
-FILES:${PN}-bin += "${localstatedir} ${bindir}/* ${sbindir}/* \
-               ${libexecdir}/* ${systemd_unitdir}/*"
-FILES:${PN}-cfg = "${sysconfdir}"
-FILES:${PN}-dbg += "${libexecdir}/postfix/.debug"
-ALLOW_EMPTY:${PN} = "1"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.8.6.bb b/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.8.6.bb
new file mode 100644
index 0000000..0e433bb
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/postfix/postfix_3.8.6.bb
@@ -0,0 +1,240 @@
+SUMMARY = "Postfix Mail Transport Agent"
+DESCRIPTION = "Postfix is Wietse Venema's mail server that started life at \
+IBM research as an alternative to the widely-used Sendmail program. \
+Postfix attempts to be fast, easy to administer, and secure. The outsidei \
+has a definite Sendmail-ish flavor, but the inside is completely different."
+
+HOMEPAGE= "http://www.postfix.org"
+SECTION = "mail"
+DEPENDS = "db icu libpcre libnsl2 m4-native openssl postfix-native \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', 'openldap', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'sasl', 'cyrus-sasl', '', d)} \
+"
+
+LICENSE = "IPL-1.0 | EPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b181651ad99a7dc4cc8c4ce2f491ed1a"
+
+SRC_URI = "ftp://ftp.porcupine.org/mirrors/postfix-release/official/postfix-${PV}.tar.gz \
+           file://main.cf \
+           file://postfix \
+           file://internal_recipient \
+           file://postfix.service \
+           file://aliasesdb \
+           file://check_hostname.sh \
+           file://0001-Fix-makedefs.patch \
+           file://0002-Change-fixed-postconf-to-a-variable-for-cross-compil.patch \
+           file://0003-makedefs-Use-native-compiler-to-build-makedefs.test.patch \
+           file://0004-Fix-icu-config.patch \
+           file://0005-makedefs-add-lnsl-and-lresolv-to-SYSLIBS-by-default.patch \
+           "
+
+SRC_URI[sha256sum] = "4b6e17c826cc438cc3016a9c0a55ea7e77c6cbafba7dd57241d81b690b0e9774"
+
+UPSTREAM_CHECK_REGEX = "postfix\-(?P<pver>3\.8(\.\d+)+).tar.gz"
+
+S = "${WORKDIR}/postfix-${PV}"
+
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "native"
+
+inherit pkgconfig update-rc.d useradd update-alternatives systemd lib_package
+
+INITSCRIPT_NAME = "postfix"
+INITSCRIPT_PARAMS = "start 58 3 4 5 . stop 13 0 1 6 ."
+USERADD_PACKAGES = "${PN}-bin"
+USERADD_PARAM:${PN}-bin = \
+"-d /var/spool/postfix -r -g postfix --shell /bin/false postfix; \
+ -d /var/spool/vmail -r -g vmail --shell /bin/false vmail \
+"
+GROUPADD_PARAM:${PN}-bin = "--system postfix;--system postdrop;--system vmail"
+
+export SYSLIBS = "${LDFLAGS}"
+
+# CCARGS specifies includes, defines
+# AUXLIBS specifies libraries
+# Linux2/Linux3 has HAS_DB defined
+# makedefs will make CC to be CC+CCARGS
+
+# ldap support
+export CCARGS-ldap  = "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', '-DHAS_LDAP', '', d)}"
+export AUXLIBS-ldap = "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ldap', '-lldap -llber', '', d)}"
+
+# no native openldap
+export CCARGS-ldap:class-native = ""
+export AUXLIBS-ldap:class-native = ""
+
+export CCARGS-nonis:libc-musl = "-DNO_NIS"
+export CCARGS-nonis = ""
+
+# SASL support -DUSE_LDAP_SASL -DUSE_SASL_AUTH
+# current openldap didn't enable SASL
+export CCARGS-sasl  = "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'sasl', '-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I${STAGING_INCDIR}/sasl', '', d)}"
+export AUXLIBS-sasl = "\
+    ${@bb.utils.contains('DISTRO_FEATURES', 'sasl', '-lsasl2', '', d)}"
+export CCARGS-sasl:class-native = ""
+export AUXLIBS-sasl:class-native = ""
+
+# PCRE, TLS support default
+export CCARGS  = "${CFLAGS} -DHAS_PCRE -DUSE_TLS -I${STAGING_INCDIR}/openssl ${CCARGS-ldap} ${CCARGS-sasl} ${CCARGS-nonis}"
+export AUXLIBS = "-lpcre -lssl -lcrypto ${AUXLIBS-sasl} ${AUXLIBS-ldap}"
+export POSTCONF = "${STAGING_DIR_NATIVE}${sbindir_native}/postconf"
+
+# OPT,DEBUG is aready in CFLAGS
+# ignore the OPTS="CC=$CC" in Makefile it will not use the CC=$CC $CCARGS
+EXTRA_OEMAKE += "OPT= DEBUG= OPTS= "
+
+do_compile () {
+    unset CFLAGS CPPFLAGS CXXFLAGS
+    local native_build
+
+    native_build="${@['0', '1'][bb.data.inherits_class('native', d) or bb.data.inherits_class('nativesdk', d)]}"
+
+    # if not native build, then pass SYSTEM and RELEASE to makedefs
+    if [ "${native_build}" != "1" ]; then
+        # uname -s for target
+        SYSTEM="Linux"
+
+        # uname -r, use 2.6 as bottomline, even target kernel ver > 2.6
+        RELEASE="2.6.34"
+        sed -i -e \
+            "s:\$(SHELL) makedefs):\$(SHELL) makedefs $SYSTEM $RELEASE):" \
+            ${S}/Makefile.in
+        export BUILD_SYSROOT="${STAGING_DIR_HOST}"
+    else
+        # native build
+        export BUILD_SYSROOT="${STAGING_DIR_NATIVE}"
+    fi
+
+    oe_runmake makefiles
+    oe_runmake
+}
+
+do_install:prepend:class-native() {
+    export POSTCONF="bin/postconf"
+}
+
+SYSTEMD_SERVICE:${PN} = "postfix.service"
+
+do_install () {
+    sh ./postfix-install 'install_root=${D}' \
+        'config_directory=${sysconfdir}/postfix' \
+        'daemon_directory=${libexecdir}/postfix' \
+        'command_directory=${sbindir}' \
+        'queue_directory=${localstatedir}/spool/postfix' \
+        'sendmail_path=${sbindir}/sendmail.postfix' \
+        'newaliases_path=${bindir}/newaliases' \
+        'mailq_path=${bindir}/mailq' \
+        'manpage_directory=${mandir}' \
+        'readme_directory=${datadir}/doc/postfix' \
+        'data_directory=${localstatedir}/lib/postfix' \
+        -non-interactive
+    rm -rf ${D}${localstatedir}/spool/postfix
+    mv ${D}${sysconfdir}/postfix/main.cf ${D}${sysconfdir}/postfix/${MLPREFIX}sample-main.cf
+    install -m 755 ${S}/bin/smtp-sink ${D}/${sbindir}/
+    install -d ${D}${sysconfdir}/init.d
+    install -m 644 ${WORKDIR}/main.cf ${D}${sysconfdir}/postfix/main.cf
+    sed -i 's#@LIBEXECDIR@#${libexecdir}#' ${D}${sysconfdir}/postfix/main.cf
+
+    install -m 755 ${WORKDIR}/check_hostname.sh ${D}${sbindir}/
+
+    install -m 755 ${WORKDIR}/postfix ${D}${sysconfdir}/init.d/postfix
+    install -m 644 ${WORKDIR}/internal_recipient ${D}${sysconfdir}/postfix/internal_recipient
+
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/postfix.service ${D}${systemd_unitdir}/system
+    sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}${systemd_unitdir}/system/postfix.service
+    sed -i -e 's#@LOCALSTATEDIR@#${localstatedir}#g' ${D}${systemd_unitdir}/system/postfix.service
+    sed -i -e 's#@SBINDIR@#${sbindir}#g' ${D}${systemd_unitdir}/system/postfix.service
+
+    install -m 0755 ${WORKDIR}/aliasesdb ${D}${libexecdir}/postfix
+
+    install -m 770 -d ${D}${localstatedir}/spool/postfix
+    chown postfix:postfix ${D}${localstatedir}/spool/postfix
+
+    install -m 0755 -d ${D}${localstatedir}/lib/postfix
+    chown postfix:nogroup ${D}${localstatedir}/lib/postfix
+    install -m 0755 -d ${D}${localstatedir}/spool/postfix
+    chown root:postfix ${D}${localstatedir}/spool/postfix
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/active
+    chown postfix:root ${D}${localstatedir}/spool/postfix/active
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/bounce
+    chown postfix:root ${D}${localstatedir}/spool/postfix/bounce
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/corrupt
+    chown postfix:root ${D}${localstatedir}/spool/postfix/corrupt
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/defer
+    chown postfix:root ${D}${localstatedir}/spool/postfix/defer
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/deferred
+    chown postfix:root ${D}${localstatedir}/spool/postfix/deferred
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/flush
+    chown postfix:root ${D}${localstatedir}/spool/postfix/flush
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/hold
+    chown postfix:root ${D}${localstatedir}/spool/postfix/hold
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/incoming
+    chown postfix:root ${D}${localstatedir}/spool/postfix/incoming
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/saved
+    chown postfix:root ${D}${localstatedir}/spool/postfix/saved
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/trace
+    chown postfix:root ${D}${localstatedir}/spool/postfix/trace
+    install -m 0730 -d ${D}${localstatedir}/spool/postfix/maildrop
+    chown postfix:postdrop ${D}${localstatedir}/spool/postfix/maildrop
+    install -m 0755 -d ${D}${localstatedir}/spool/postfix/pid
+    chown root:root ${D}${localstatedir}/spool/postfix/pid
+    install -m 0700 -d ${D}${localstatedir}/spool/postfix/private
+    chown postfix:root ${D}${localstatedir}/spool/postfix/private
+    install -m 0710 -d ${D}${localstatedir}/spool/postfix/public
+    chown postfix:postdrop ${D}${localstatedir}/spool/postfix/public
+    install -m 0755 -d ${D}${localstatedir}/spool/vmail
+    chown vmail:vmail ${D}${localstatedir}/spool/vmail
+
+    chown :postdrop ${D}${sbindir}/postqueue
+    chown :postdrop ${D}${sbindir}/postdrop
+    chmod g+s ${D}${sbindir}/postqueue
+    chmod g+s ${D}${sbindir}/postdrop
+
+    rm -rf ${D}/etc/postfix/makedefs.out
+}
+
+do_install:append:class-native() {
+    ln -sf ../sbin/sendmail.postfix ${D}${bindir}/newaliases
+    ln -sf ../sbin/sendmail.postfix ${D}${bindir}/mailq
+}
+
+ALTERNATIVE:${PN}-bin = "sendmail mailq newaliases"
+# /usr/lib/sendmial is required by LSB core test
+ALTERNATIVE:${PN}-bin:linuxstdbase = "sendmail mailq newaliases usr-lib-sendmail"
+ALTERNATIVE_TARGET[mailq] = "${bindir}/mailq"
+ALTERNATIVE_TARGET[newaliases] = "${bindir}/newaliases"
+ALTERNATIVE_TARGET[sendmail] = "${sbindir}/sendmail.postfix"
+ALTERNATIVE_LINK_NAME[sendmail] = "${sbindir}/sendmail"
+ALTERNATIVE_TARGET[usr-lib-sendmail] = "${sbindir}/sendmail.postfix"
+ALTERNATIVE_LINK_NAME[usr-lib-sendmail] = "/usr/lib/sendmail"
+
+ALTERNATIVE_PRIORITY = "120"
+
+ALTERNATIVE:${PN}-doc += "mailq.1 newaliases.1 sendmail.1"
+ALTERNATIVE_LINK_NAME[mailq.1] = "${mandir}/man1/mailq.1"
+ALTERNATIVE_LINK_NAME[newaliases.1] = "${mandir}/man1/newaliases.1"
+ALTERNATIVE_LINK_NAME[sendmail.1] = "${mandir}/man1/sendmail.1"
+
+pkg_postinst_ontarget:${PN}-cfg () {
+    touch /etc/aliases
+    newaliases
+
+    # generate virtual_alias, default is hash
+    touch /etc/postfix/virtual_alias
+    postmap /etc/postfix/virtual_alias
+}
+
+PACKAGES =+ "${PN}-cfg"
+RDEPENDS:${PN}-cfg:class-target += "${PN}-bin"
+RDEPENDS:${PN}:class-target += "${PN}-cfg"
+# Exclude .debug directories from the main package
+FILES:${PN}-bin += "${localstatedir} ${bindir}/* ${sbindir}/* \
+               ${libexecdir}/* ${systemd_unitdir}/*"
+FILES:${PN}-cfg = "${sysconfdir}"
+FILES:${PN}-dbg += "${libexecdir}/postfix/.debug"
+ALLOW_EMPTY:${PN} = "1"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/files/0001-configure-Check-for-Wno-error-format-truncation-comp.patch b/meta-openembedded/meta-networking/recipes-daemons/squid/files/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
deleted file mode 100644
index a478dcd..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/squid/files/0001-configure-Check-for-Wno-error-format-truncation-comp.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 38e7e90cc2075952c1b74f5fca826f9c6cadb2f0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 22 Apr 2017 11:54:57 -0700
-Subject: [PATCH] configure: Check for -Wno-error=format-truncation compiler
- option
-
-If this option is supported by compiler then disable it ( gcc7+)
-Fixes
-client.c:834:23: error: '%s' directive output may be truncated writing up to 1023 bytes into a region of size 1010 [-Werror=format-truncation=]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
-Upstream-Status: Pending
-
- acinclude/ax_check_compile_flag.m4 | 74 ++++++++++++++++++++++++++++++
- configure.ac                       |  2 +
- 2 files changed, 76 insertions(+)
- create mode 100644 acinclude/ax_check_compile_flag.m4
-
-diff --git a/acinclude/ax_check_compile_flag.m4 b/acinclude/ax_check_compile_flag.m4
-new file mode 100644
-index 0000000..dcabb92
---- /dev/null
-+++ b/acinclude/ax_check_compile_flag.m4
-@@ -0,0 +1,74 @@
-+# ===========================================================================
-+#  https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
-+# ===========================================================================
-+#
-+# SYNOPSIS
-+#
-+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
-+#
-+# DESCRIPTION
-+#
-+#   Check whether the given FLAG works with the current language's compiler
-+#   or gives an error.  (Warnings, however, are ignored)
-+#
-+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
-+#   success/failure.
-+#
-+#   If EXTRA-FLAGS is defined, it is added to the current language's default
-+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
-+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
-+#   force the compiler to issue an error when a bad flag is given.
-+#
-+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
-+#
-+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
-+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
-+#
-+# LICENSE
-+#
-+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
-+#
-+#   This program is free software: you can redistribute it and/or modify it
-+#   under the terms of the GNU General Public License as published by the
-+#   Free Software Foundation, either version 3 of the License, or (at your
-+#   option) any later version.
-+#
-+#   This program is distributed in the hope that it will be useful, but
-+#   WITHOUT ANY WARRANTY; without even the implied warranty of
-+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-+#   Public License for more details.
-+#
-+#   You should have received a copy of the GNU General Public License along
-+#   with this program. If not, see <https://www.gnu.org/licenses/>.
-+#
-+#   As a special exception, the respective Autoconf Macro's copyright owner
-+#   gives unlimited permission to copy, distribute and modify the configure
-+#   scripts that are the output of Autoconf when processing the Macro. You
-+#   need not follow the terms of the GNU General Public License when using
-+#   or distributing such scripts, even though portions of the text of the
-+#   Macro appear in them. The GNU General Public License (GPL) does govern
-+#   all other use of the material that constitutes the Autoconf Macro.
-+#
-+#   This special exception to the GPL applies to versions of the Autoconf
-+#   Macro released by the Autoconf Archive. When you make and distribute a
-+#   modified version of the Autoconf Macro, you may extend this special
-+#   exception to the GPL to apply to your modified version as well.
-+
-+#serial 5
-+
-+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
-+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
-+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
-+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
-+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
-+  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
-+  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
-+    [AS_VAR_SET(CACHEVAR,[yes])],
-+    [AS_VAR_SET(CACHEVAR,[no])])
-+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
-+AS_VAR_IF(CACHEVAR,yes,
-+  [m4_default([$2], :)],
-+  [m4_default([$3], :)])
-+AS_VAR_POPDEF([CACHEVAR])dnl
-+])dnl AX_CHECK_COMPILE_FLAGS
-diff --git a/configure.ac b/configure.ac
-index 2543676..4635474 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -28,6 +28,7 @@ m4_include([acinclude/pkg.m4])
- m4_include([acinclude/tdb.m4])
- m4_include([acinclude/lib-checks.m4])
- m4_include([acinclude/ax_cxx_compile_stdcxx.m4])
-+m4_include([acinclude/ax_check_compile_flag.m4])
- 
- HOSTCXX="$BUILD_CXX"
- PRESET_CFLAGS="$CFLAGS"
-@@ -59,6 +60,7 @@ AC_USE_SYSTEM_EXTENSIONS
- 
- AC_LANG([C++])
- 
-+AX_CHECK_COMPILE_FLAG([-Werror=format-truncation],[CFLAGS="$CFLAGS -Wno-error=format-truncation" CXXFLAGS="$CXXFLAGS -Wno-error=format-truncation"])
- # Clang 3.2 on some CPUs requires -march-native to detect correctly.
- # GCC 4.3+ can also produce faster executables when its used.
- # But building inside a virtual machine environment has been found to
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/files/0002-squid-make-squid-conf-tests-run-on-target-device.patch b/meta-openembedded/meta-networking/recipes-daemons/squid/files/0002-squid-make-squid-conf-tests-run-on-target-device.patch
index 56c91de..ca1c16b 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/squid/files/0002-squid-make-squid-conf-tests-run-on-target-device.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/squid/files/0002-squid-make-squid-conf-tests-run-on-target-device.patch
@@ -17,8 +17,6 @@
  test-suite/test-squid-conf.sh |  2 +-
  2 files changed, 9 insertions(+), 9 deletions(-)
 
-diff --git a/test-suite/Makefile.am b/test-suite/Makefile.am
-index 8becdbc..eccd49c 100644
 --- a/test-suite/Makefile.am
 +++ b/test-suite/Makefile.am
 @@ -21,7 +21,7 @@ LDADD = \
@@ -59,8 +57,6 @@
  
 -CLEANFILES += squid-conf-tests squid-stderr.log
 +CLEANFILES += squid-conf-tests /var/log/squid-stderr.log
-diff --git a/test-suite/test-squid-conf.sh b/test-suite/test-squid-conf.sh
-index 05fcaf3..a5a8a5a 100755
 --- a/test-suite/test-squid-conf.sh
 +++ b/test-suite/test-squid-conf.sh
 @@ -111,7 +111,7 @@ then
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/files/Set-up-for-cross-compilation.patch b/meta-openembedded/meta-networking/recipes-daemons/squid/files/Set-up-for-cross-compilation.patch
index ae8706d..18bc78e 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/squid/files/Set-up-for-cross-compilation.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/squid/files/Set-up-for-cross-compilation.patch
@@ -16,8 +16,6 @@
  configure.ac | 1 +
  1 file changed, 1 insertion(+)
 
-diff --git a/configure.ac b/configure.ac
-index ca0bc79..c222851 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -29,6 +29,7 @@ m4_include([acinclude/tdb.m4])
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/files/Skip-AC_RUN_IFELSE-tests.patch b/meta-openembedded/meta-networking/recipes-daemons/squid/files/Skip-AC_RUN_IFELSE-tests.patch
index 5bb30bf..e0d002c 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/squid/files/Skip-AC_RUN_IFELSE-tests.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/squid/files/Skip-AC_RUN_IFELSE-tests.patch
@@ -16,8 +16,6 @@
  acinclude/lib-checks.m4 |  8 ++++++--
  2 files changed, 15 insertions(+), 3 deletions(-)
 
-diff --git a/acinclude/krb5.m4 b/acinclude/krb5.m4
-index 2c4e340..64648e3 100644
 --- a/acinclude/krb5.m4
 +++ b/acinclude/krb5.m4
 @@ -57,7 +57,15 @@ main(void)
@@ -37,11 +35,9 @@
      ])
      SQUID_STATE_ROLLBACK(squid_krb5_heimdal_test)
    ])
-diff --git a/acinclude/lib-checks.m4 b/acinclude/lib-checks.m4
-index 53847a8..850322a 100644
 --- a/acinclude/lib-checks.m4
 +++ b/acinclude/lib-checks.m4
-@@ -205,7 +205,9 @@ AC_DEFUN([SQUID_CHECK_OPENSSL_CONST_SSL_METHOD],[
+@@ -205,7 +205,9 @@ AC_DEFUN([SQUID_CHECK_OPENSSL_CONST_SSL_
    [
     AC_MSG_RESULT([no])
    ],
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/files/squid-use-serial-tests-config-needed-by-ptest.patch b/meta-openembedded/meta-networking/recipes-daemons/squid/files/squid-use-serial-tests-config-needed-by-ptest.patch
index 732cf17..5df0060 100644
--- a/meta-openembedded/meta-networking/recipes-daemons/squid/files/squid-use-serial-tests-config-needed-by-ptest.patch
+++ b/meta-openembedded/meta-networking/recipes-daemons/squid/files/squid-use-serial-tests-config-needed-by-ptest.patch
@@ -14,8 +14,6 @@
  configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/configure.ac b/configure.ac
-index c7ae568..5e1454e 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -10,7 +10,7 @@ AC_PREREQ(2.61)
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/squid_6.7.bb b/meta-openembedded/meta-networking/recipes-daemons/squid/squid_6.7.bb
deleted file mode 100644
index a4932cd..0000000
--- a/meta-openembedded/meta-networking/recipes-daemons/squid/squid_6.7.bb
+++ /dev/null
@@ -1,146 +0,0 @@
-SUMMARY = "A fully-featured http proxy and web-cache daemon for Linux"
-DESCRIPTION = "A fully-featured http proxy and web-cache daemon for Linux. \
-Squid offers a rich access control, authorization and logging environment to \
-develop web proxy and content serving applications. \
-Squid offers a rich set of traffic optimization options, most of which are \
-enabled by default for simpler installation and high performance. \
-"
-HOMEPAGE = "http://www.squid-cache.org"
-SECTION = "web"
-LICENSE = "GPL-2.0-or-later"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 1)}"
-MIN_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-SRC_URI = "http://www.squid-cache.org/Versions/v${MAJ_VER}/${BPN}-${PV}.tar.bz2 \
-           file://Set-up-for-cross-compilation.patch \
-           file://Skip-AC_RUN_IFELSE-tests.patch \
-           file://squid-use-serial-tests-config-needed-by-ptest.patch \
-           file://run-ptest \
-           file://volatiles.03_squid \
-           file://0001-configure-Check-for-Wno-error-format-truncation-comp.patch \
-           file://0002-squid-make-squid-conf-tests-run-on-target-device.patch \
-           file://squid.nm \
-           "
-
-SRC_URI:remove:toolchain-clang = "file://0001-configure-Check-for-Wno-error-format-truncation-comp.patch"
-
-SRC_URI[sha256sum] = "7a09a0232026824c300b72c42cc5c0c431cbb65498f41d5dea48ef447ab8037e"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://errors/COPYRIGHT;md5=d324bc1f9447d1d1588d75b22a678dc4 \
-                    "
-DEPENDS = "libtool"
-
-inherit autotools pkgconfig useradd ptest perlnative systemd
-
-LDFLAGS:append:mipsarch = " -latomic"
-LDFLAGS:append:powerpc = " -latomic"
-LDFLAGS:append:riscv64 = " -latomic"
-LDFLAGS:append:riscv32 = " -latomic"
-
-USERADD_PACKAGES = "${PN}"
-USERADD_PARAM:${PN} = "--system --no-create-home --home-dir /var/run/squid --shell /bin/false --user-group squid"
-
-PACKAGECONFIG ??= "auth url-rewrite-helpers \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-"
-
-PACKAGECONFIG[libnetfilter-conntrack] = "--with-netfilter-conntrack=${includedir}, --without-netfilter-conntrack, libnetfilter-conntrack"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[werror] = "--enable-strict-error-checking,--disable-strict-error-checking,"
-PACKAGECONFIG[esi] = "--enable-esi,--disable-esi,expat libxml2"
-PACKAGECONFIG[ssl] = "--with-openssl=yes,--with-openssl=no,openssl"
-PACKAGECONFIG[auth] = "--enable-auth-basic='${BASIC_AUTH}',--disable-auth --disable-auth-basic,krb5 openldap db cyrus-sasl"
-PACKAGECONFIG[url-rewrite-helpers] = "--enable-url-rewrite-helpers,--disable-url-rewrite-helpers,"
-PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
-
-PACKAGES =+ " \
-    ${PN}-conf \
-    ${PN}-networkmanager \
-"
-
-BASIC_AUTH = "DB SASL LDAP"
-
-DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-BASIC_AUTH += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'PAM', '', d)}"
-
-EXTRA_OECONF += "--with-default-user=squid \
-                 --sysconfdir=${sysconfdir}/${BPN} \
-                 --with-logdir=${localstatedir}/log/${BPN} \
-                 'PERL=${USRBINPATH}/env perl'"
-
-export BUILDCXXFLAGS="${BUILD_CXXFLAGS}"
-
-TESTDIR = "test-suite"
-
-do_configure:prepend() {
-    export SYSROOT=$PKG_CONFIG_SYSROOT_DIR
-}
-
-do_configure:append() {
-   sed -i -e 's|${WORKDIR}||g' ${B}/include/autoconf.h
-}
-
-do_compile_ptest() {
-    oe_runmake -C ${TESTDIR} buildtest-TESTS
-}
-
-do_install_ptest() {
-    cp -rf ${B}/${TESTDIR} ${D}${PTEST_PATH}
-    cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH}
-
-    # Install default config
-    install -d ${D}${PTEST_PATH}/src
-    install -m 0644 ${B}/src/squid.conf.default ${D}${PTEST_PATH}/src
-
-    # autoconf.h is needed during squid-conf-tests
-    install -d ${D}${PTEST_PATH}/include
-    install -m 0644 ${B}/include/autoconf.h ${D}${PTEST_PATH}/include
-
-    # do NOT need to rebuild Makefile itself
-    sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
-
-    # Ensure the path for command true is correct
-    sed -i 's:^TRUE = .*$:TRUE = /bin/true:' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
-}
-
-do_install:append() {
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        # Install service unit file
-        install -d ${D}/${systemd_unitdir}/system
-        install ${S}/tools/systemd/squid.service ${D}/${systemd_unitdir}/system
-        sed -i 's:/var/run/:/run/:g' ${D}/${systemd_unitdir}/system/squid.service
-
-        # Configure tmpfiles.d
-        install -d ${D}${sysconfdir}/tmpfiles.d
-        echo "d ${localstatedir}/run/${BPN} 0755 squid squid -" >> ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
-        echo "d ${localstatedir}/log/${BPN} 0750 squid squid -" >> ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
-    fi
-
-    install -d ${D}${sysconfdir}/default/volatiles
-    install -m 0644 ${WORKDIR}/volatiles.03_squid ${D}${sysconfdir}/default/volatiles/03_squid
-
-    rmdir "${D}${localstatedir}/run/${BPN}"
-    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}/run"
-
-    rmdir "${D}${localstatedir}/log/${BPN}"
-    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}/log"
-
-    # Install NetworkManager dispatcher reload hooks
-    install -d ${D}${libdir}/NetworkManager/dispatcher.d
-    install -m 0755 ${WORKDIR}/squid.nm ${D}${libdir}/NetworkManager/dispatcher.d/20-squid
-}
-
-SYSTEMD_AUTO_ENABLE = "disable"
-SYSTEMD_SERVICE:${PN} = "squid.service"
-
-FILES:${PN} += "${libdir} ${datadir}/errors ${datadir}/icons"
-FILES:${PN}-dbg += "/usr/src/debug"
-FILES:${PN}-doc += "${datadir}/*.txt"
-FILES:${PN}-conf += "${sysconfdir}/squid"
-FILES:${PN}-networkmanager = "${libdir}/NetworkManager/dispatcher.d"
-
-RDEPENDS:${PN} += "perl ${PN}-conf"
-RDEPENDS:${PN}-ptest += "perl make bash"
diff --git a/meta-openembedded/meta-networking/recipes-daemons/squid/squid_6.8.bb b/meta-openembedded/meta-networking/recipes-daemons/squid/squid_6.8.bb
new file mode 100644
index 0000000..c8370ea
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-daemons/squid/squid_6.8.bb
@@ -0,0 +1,143 @@
+SUMMARY = "A fully-featured http proxy and web-cache daemon for Linux"
+DESCRIPTION = "A fully-featured http proxy and web-cache daemon for Linux. \
+Squid offers a rich access control, authorization and logging environment to \
+develop web proxy and content serving applications. \
+Squid offers a rich set of traffic optimization options, most of which are \
+enabled by default for simpler installation and high performance. \
+"
+HOMEPAGE = "http://www.squid-cache.org"
+SECTION = "web"
+LICENSE = "GPL-2.0-or-later"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 1)}"
+MIN_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+SRC_URI = "http://www.squid-cache.org/Versions/v${MAJ_VER}/${BPN}-${PV}.tar.xz \
+           file://Set-up-for-cross-compilation.patch \
+           file://Skip-AC_RUN_IFELSE-tests.patch \
+           file://squid-use-serial-tests-config-needed-by-ptest.patch \
+           file://run-ptest \
+           file://volatiles.03_squid \
+           file://0002-squid-make-squid-conf-tests-run-on-target-device.patch \
+           file://squid.nm \
+           "
+
+SRC_URI[sha256sum] = "11cc5650b51809d99483ccfae24744a2e51cd16199f5ff0c917e84fce695870f"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://errors/COPYRIGHT;md5=d324bc1f9447d1d1588d75b22a678dc4 \
+                    "
+DEPENDS = "libtool"
+
+inherit autotools pkgconfig useradd ptest perlnative systemd
+
+LDFLAGS:append:mipsarch = " -latomic"
+LDFLAGS:append:powerpc = " -latomic"
+LDFLAGS:append:riscv64 = " -latomic"
+LDFLAGS:append:riscv32 = " -latomic"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --no-create-home --home-dir /var/run/squid --shell /bin/false --user-group squid"
+
+PACKAGECONFIG ??= "auth url-rewrite-helpers \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+
+PACKAGECONFIG[libnetfilter-conntrack] = "--with-netfilter-conntrack=${includedir}, --without-netfilter-conntrack, libnetfilter-conntrack"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[werror] = "--enable-strict-error-checking,--disable-strict-error-checking,"
+PACKAGECONFIG[esi] = "--enable-esi,--disable-esi,expat libxml2"
+PACKAGECONFIG[ssl] = "--with-openssl=yes,--with-openssl=no,openssl"
+PACKAGECONFIG[auth] = "--enable-auth-basic='${BASIC_AUTH}',--disable-auth --disable-auth-basic,krb5 openldap db cyrus-sasl"
+PACKAGECONFIG[url-rewrite-helpers] = "--enable-url-rewrite-helpers,--disable-url-rewrite-helpers,"
+PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd"
+
+PACKAGES =+ " \
+    ${PN}-conf \
+    ${PN}-networkmanager \
+"
+
+BASIC_AUTH = "DB SASL LDAP"
+
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+BASIC_AUTH += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'PAM', '', d)}"
+
+EXTRA_OECONF += "--with-default-user=squid \
+                 --sysconfdir=${sysconfdir}/${BPN} \
+                 --with-logdir=${localstatedir}/log/${BPN} \
+                 'PERL=${USRBINPATH}/env perl'"
+
+export BUILDCXXFLAGS="${BUILD_CXXFLAGS}"
+
+TESTDIR = "test-suite"
+
+do_configure:prepend() {
+    export SYSROOT=$PKG_CONFIG_SYSROOT_DIR
+}
+
+do_configure:append() {
+   sed -i -e 's|${WORKDIR}||g' ${B}/include/autoconf.h
+}
+
+do_compile_ptest() {
+    oe_runmake -C ${TESTDIR} buildtest-TESTS
+}
+
+do_install_ptest() {
+    cp -rf ${B}/${TESTDIR} ${D}${PTEST_PATH}
+    cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH}
+
+    # Install default config
+    install -d ${D}${PTEST_PATH}/src
+    install -m 0644 ${B}/src/squid.conf.default ${D}${PTEST_PATH}/src
+
+    # autoconf.h is needed during squid-conf-tests
+    install -d ${D}${PTEST_PATH}/include
+    install -m 0644 ${B}/include/autoconf.h ${D}${PTEST_PATH}/include
+
+    # do NOT need to rebuild Makefile itself
+    sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+
+    # Ensure the path for command true is correct
+    sed -i 's:^TRUE = .*$:TRUE = /bin/true:' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+}
+
+do_install:append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        # Install service unit file
+        install -d ${D}/${systemd_unitdir}/system
+        install ${S}/tools/systemd/squid.service ${D}/${systemd_unitdir}/system
+        sed -i 's:/var/run/:/run/:g' ${D}/${systemd_unitdir}/system/squid.service
+
+        # Configure tmpfiles.d
+        install -d ${D}${sysconfdir}/tmpfiles.d
+        echo "d ${localstatedir}/run/${BPN} 0755 squid squid -" >> ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
+        echo "d ${localstatedir}/log/${BPN} 0750 squid squid -" >> ${D}${sysconfdir}/tmpfiles.d/${BPN}.conf
+    fi
+
+    install -d ${D}${sysconfdir}/default/volatiles
+    install -m 0644 ${WORKDIR}/volatiles.03_squid ${D}${sysconfdir}/default/volatiles/03_squid
+
+    rmdir "${D}${localstatedir}/run/${BPN}"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}/run"
+
+    rmdir "${D}${localstatedir}/log/${BPN}"
+    rmdir --ignore-fail-on-non-empty "${D}${localstatedir}/log"
+
+    # Install NetworkManager dispatcher reload hooks
+    install -d ${D}${libdir}/NetworkManager/dispatcher.d
+    install -m 0755 ${WORKDIR}/squid.nm ${D}${libdir}/NetworkManager/dispatcher.d/20-squid
+}
+
+SYSTEMD_AUTO_ENABLE = "disable"
+SYSTEMD_SERVICE:${PN} = "squid.service"
+
+FILES:${PN} += "${libdir} ${datadir}/errors ${datadir}/icons"
+FILES:${PN}-dbg += "/usr/src/debug"
+FILES:${PN}-doc += "${datadir}/*.txt"
+FILES:${PN}-conf += "${sysconfdir}/squid"
+FILES:${PN}-networkmanager = "${libdir}/NetworkManager/dispatcher.d"
+
+RDEPENDS:${PN} += "perl ${PN}-conf"
+RDEPENDS:${PN}-ptest += "perl make bash"
diff --git a/meta-openembedded/meta-networking/recipes-filter/ipset/ipset/0001-ipset-Define-portable-basename-function.patch b/meta-openembedded/meta-networking/recipes-filter/ipset/ipset/0001-ipset-Define-portable-basename-function.patch
new file mode 100644
index 0000000..a06bcac
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/ipset/ipset/0001-ipset-Define-portable-basename-function.patch
@@ -0,0 +1,50 @@
+From 8c5c0a7a48af7652c50bc27a4efdd9cb4f7d95bd Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 24 Mar 2024 21:58:50 -0700
+Subject: [PATCH] ipset: Define portable basename function
+
+Newer version of musl have removed prototype for basename in string.h [1]
+which now makes it fail to compile with newer clang 18+ compiler therefore
+define own basename utility function and not depend on platform for it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/ipset.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/src/ipset.c b/src/ipset.c
+index 162f477..7b5d580 100644
+--- a/src/ipset.c
++++ b/src/ipset.c
+@@ -16,6 +16,16 @@
+ #include <libipset/ipset.h>		/* ipset library */
+ #include <libipset/xlate.h>		/* translate to nftables */
+ 
++/* basename is implemented differently across different C libraries. This
++ * implementation matches the one provided by the GNU libc, and does not
++ * modify its input parameter.
++ */
++static const char *ipset_basename(const char *path)
++{
++	const char *base = strrchr(path, '/');
++	return base ? base + 1 : path;
++}
++
+ int
+ main(int argc, char *argv[])
+ {
+@@ -32,7 +42,7 @@ main(int argc, char *argv[])
+ 		exit(1);
+ 	}
+ 
+-	if (!strcmp(basename(argv[0]), "ipset-translate")) {
++	if (!strcmp(ipset_basename(argv[0]), "ipset-translate")) {
+ 		ret = ipset_xlate_argv(ipset, argc, argv);
+ 	} else {
+ 		ret = ipset_parse_argv(ipset, argc, argv);
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.19.bb b/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.19.bb
deleted file mode 100644
index bb4319f..0000000
--- a/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.19.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2017 Aaron Brice <aaron.brice@datasoft.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "Administration tool for IP sets"
-HOMEPAGE = "http://ipset.netfilter.org"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-SECTION = "base"
-
-DEPENDS = "libtool libmnl"
-
-SRC_URI = "http://ftp.netfilter.org/pub/ipset/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "9bc1fba48d65786e3e0b63dc6b669a866823d77840c6990c0c6b23078ec2c4d6"
-
-inherit autotools pkgconfig module-base
-
-EXTRA_OECONF += "-with-kbuild=${KBUILD_OUTPUT} --with-ksource=${STAGING_KERNEL_DIR}"
-
-RRECOMMENDS:${PN} = "\
-    kernel-module-ip-set \
-"
diff --git a/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.21.bb b/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.21.bb
new file mode 100644
index 0000000..c7ebdc1
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/ipset/ipset_7.21.bb
@@ -0,0 +1,22 @@
+# Copyright (C) 2017 Aaron Brice <aaron.brice@datasoft.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "Administration tool for IP sets"
+HOMEPAGE = "http://ipset.netfilter.org"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+SECTION = "base"
+
+DEPENDS = "libtool libmnl"
+
+SRC_URI = "http://ftp.netfilter.org/pub/ipset/${BP}.tar.bz2 \
+           file://0001-ipset-Define-portable-basename-function.patch"
+SRC_URI[sha256sum] = "e2c6ce4fcf3acb3893ca5d35c86935f80ad76fc5ccae601185842df760e0bc69"
+
+inherit autotools pkgconfig module-base
+
+EXTRA_OECONF += "-with-kbuild=${KBUILD_OUTPUT} --with-ksource=${STAGING_KERNEL_DIR}"
+
+RRECOMMENDS:${PN} = "\
+    kernel-module-ip-set \
+"
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-tests-shell-Fix-sets-reset_command_0-for-current-ker.patch b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-tests-shell-Fix-sets-reset_command_0-for-current-ker.patch
new file mode 100644
index 0000000..164182b
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-tests-shell-Fix-sets-reset_command_0-for-current-ker.patch
@@ -0,0 +1,53 @@
+From 7a6089a400a573b9a4fd92f29c00a6be7b8ef269 Mon Sep 17 00:00:00 2001
+From: Phil Sutter <phil@nwl.cc>
+Date: Thu, 2 Nov 2023 16:02:14 +0100
+Subject: [PATCH] tests: shell: Fix sets/reset_command_0 for current kernels
+
+Since kernel commit 4c90bba60c26 ("netfilter: nf_tables: do not refresh
+timeout when resetting element"), element reset won't touch expiry
+anymore. Invert the one check to make sure it remains unaltered, drop
+the other testing behaviour for per-element timeouts.
+
+Signed-off-by: Phil Sutter <phil@nwl.cc>
+
+Upstream-Status: Backport
+[https://git.netfilter.org/nftables/commit/?id=7a6089a400a573b9a4fd92f29c00a6be7b8ef269]
+
+Signed-off-by: William Lyu <William.Lyu@windriver.com>
+---
+ tests/shell/testcases/sets/reset_command_0 | 10 ++--------
+ 1 file changed, 2 insertions(+), 8 deletions(-)
+
+diff --git a/tests/shell/testcases/sets/reset_command_0 b/tests/shell/testcases/sets/reset_command_0
+index e663dac8..d38ddb3f 100755
+--- a/tests/shell/testcases/sets/reset_command_0
++++ b/tests/shell/testcases/sets/reset_command_0
+@@ -44,10 +44,10 @@ elem='element t s { 1.0.0.1 . udp . 53 }'
+ 	grep 'elements = ' | drop_seconds | uniq | wc -l) == 1 ]]
+ echo OK
+ 
+-echo -n "counters and expiry are reset: "
++echo -n "counters are reset, expiry left alone: "
+ NEW=$($NFT "get $elem")
+ grep -q 'counter packets 0 bytes 0' <<< "$NEW"
+-[[ $(expires_minutes <<< "$NEW") -gt 20 ]]
++[[ $(expires_minutes <<< "$NEW") -lt 20 ]]
+ echo OK
+ 
+ echo -n "get map elem matches reset map elem: "
+@@ -80,12 +80,6 @@ OUT=$($NFT reset map t m)
+ $DIFF -u <(echo "$EXP") <(echo "$OUT")
+ echo OK
+ 
+-echo -n "reset command respects per-element timeout: "
+-VAL=$($NFT get element t s '{ 2.0.0.2 . tcp . 22 }' | expires_minutes)
+-[[ $VAL -lt 15 ]]	# custom timeout applies
+-[[ $VAL -gt 10 ]]	# expires was reset
+-echo OK
+-
+ echo -n "remaining elements are reset: "
+ OUT=$($NFT list ruleset)
+ grep -q '2.0.0.2 . tcp . 22 counter packets 0 bytes 0' <<< "$OUT"
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-tests-shell-skip-secmark-tests-if-kernel-does-not-su.patch b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-tests-shell-skip-secmark-tests-if-kernel-does-not-su.patch
new file mode 100644
index 0000000..2a966ab
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/0001-tests-shell-skip-secmark-tests-if-kernel-does-not-su.patch
@@ -0,0 +1,46 @@
+From fff913c1eefbc84eb2d9c52038ef29fe881e9ee9 Mon Sep 17 00:00:00 2001
+From: Pablo Neira Ayuso <pablo@netfilter.org>
+Date: Tue, 21 Nov 2023 21:16:38 +0100
+Subject: [PATCH] tests: shell: skip secmark tests if kernel does not support
+ it
+
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+
+Upstream-Status: Backport
+[https://git.netfilter.org/nftables/commit/?id=fff913c1eefbc84eb2d9c52038ef29fe881e9ee9]
+
+Signed-off-by: William Lyu <William.Lyu@windriver.com>
+---
+ tests/shell/features/secmark.nft                | 7 +++++++
+ tests/shell/testcases/json/0005secmark_objref_0 | 1 +
+ 2 files changed, 8 insertions(+)
+ create mode 100644 tests/shell/features/secmark.nft
+
+diff --git a/tests/shell/features/secmark.nft b/tests/shell/features/secmark.nft
+new file mode 100644
+index 00000000..ccbb572f
+--- /dev/null
++++ b/tests/shell/features/secmark.nft
+@@ -0,0 +1,7 @@
++# fb961945457f ("netfilter: nf_tables: add SECMARK support")
++# v4.20-rc1~14^2~125^2~5
++table inet x {
++	secmark ssh_server {
++		"system_u:object_r:ssh_server_packet_t:s0"
++	}
++}
+diff --git a/tests/shell/testcases/json/0005secmark_objref_0 b/tests/shell/testcases/json/0005secmark_objref_0
+index 992d1b00..5c44f093 100755
+--- a/tests/shell/testcases/json/0005secmark_objref_0
++++ b/tests/shell/testcases/json/0005secmark_objref_0
+@@ -1,6 +1,7 @@
+ #!/bin/bash
+ 
+ # NFT_TEST_REQUIRES(NFT_TEST_HAVE_json)
++# NFT_TEST_REQUIRES(NFT_TEST_HAVE_secmark)
+ 
+ set -e
+ 
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/run-ptest b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/run-ptest
index 27d780a..363a1ee 100644
--- a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/run-ptest
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables/run-ptest
@@ -1,17 +1,17 @@
 #!/bin/sh
 
 NFTABLESLIB=@libdir@/nftables
-cd ${NFTABLESLIB}/ptest
+cd ${NFTABLESLIB}/ptest || exit 1
 
 LOG="${NFTABLESLIB}/ptest/nftables_ptest_$(date +%Y%m%d-%H%M%S).log"
-tests/shell/run-tests.sh -v | sed  -e '/OK/ s/^/PASS: / ; /FAILED/ s/^/FAIL: /' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | tee -a ${LOG}
+tests/shell/run-tests.sh -v | sed -E '/I: \[OK\]/ s/^/PASS: / ; /W: \[(CHK DUMP|VALGRIND|TAINTED|DUMP FAIL|FAILED)\]/ s/^/FAIL: /' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | tee -a "${LOG}"
 
-passed=`grep PASS: ${LOG}|wc -l`
-failed=`grep FAIL: ${LOG}|wc -l`
+passed=$(grep -c PASS: "${LOG}")
+failed=$(grep -c FAIL: "${LOG}")
 all=$((passed + failed))
 
 (   echo "=== Test Summary ==="
     echo "TOTAL: ${all}"
     echo "PASSED: ${passed}"
     echo "FAILED: ${failed}"
-) | tee -a ${LOG}
+) | tee -a "${LOG}"
diff --git a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.9.bb b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.9.bb
index 43d606f..ad99a80 100644
--- a/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.9.bb
+++ b/meta-openembedded/meta-networking/recipes-filter/nftables/nftables_1.0.9.bb
@@ -1,4 +1,9 @@
 SUMMARY = "Netfilter Tables userspace utillites"
+DESCRIPTION = "nftables replaces the popular {ip,ip6,arp,eb}tables. \
+               This software provides an in-kernel packet classification framework \
+               that is based on a network-specific Virtual Machine (VM), \
+               nft, a userspace command line tool and libnftables, a high-level userspace library."
+HOMEPAGE = "https://netfilter.org/projects/nftables"
 SECTION = "net"
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=81ec33bb3e47b460fc993ac768c74b62"
@@ -7,6 +12,8 @@
            ${@bb.utils.contains('PACKAGECONFIG', 'mini-gmp', '', 'gmp', d)}"
 
 SRC_URI = "http://www.netfilter.org/projects/nftables/files/${BP}.tar.xz \
+           file://0001-tests-shell-Fix-sets-reset_command_0-for-current-ker.patch \
+           file://0001-tests-shell-skip-secmark-tests-if-kernel-does-not-su.patch \
            file://run-ptest \
           "
 SRC_URI[sha256sum] = "a3c304cd9ba061239ee0474f9afb938a9bb99d89b960246f66f0c3a0a85e14cd"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/frr/frr/0001-zebra-Mimic-GNU-basename-API-for-non-glibc-library-e.patch b/meta-openembedded/meta-networking/recipes-protocols/frr/frr/0001-zebra-Mimic-GNU-basename-API-for-non-glibc-library-e.patch
new file mode 100644
index 0000000..8c83d5c
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/frr/frr/0001-zebra-Mimic-GNU-basename-API-for-non-glibc-library-e.patch
@@ -0,0 +1,34 @@
+From 49aeccbec4bf620bb594999bbd4a9de669a3984c Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 15 Mar 2024 14:34:06 -0700
+Subject: [PATCH] zebra: Mimic GNU basename() API for non-glibc library e.g.
+ musl musl only provides POSIX version of basename and it has also removed
+ providing it via string.h header [1] which now results in compile errors with
+ newer compilers e.g. clang-18
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://github.com/FRRouting/frr/pull/15561/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ zebra/zebra_netns_notify.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/zebra/zebra_netns_notify.c b/zebra/zebra_netns_notify.c
+index 1bb1292e34..d55df2f62d 100644
+--- a/zebra/zebra_netns_notify.c
++++ b/zebra/zebra_netns_notify.c
+@@ -41,6 +41,10 @@
+ #define ZEBRA_NS_POLLING_INTERVAL_MSEC     1000
+ #define ZEBRA_NS_POLLING_MAX_RETRIES  200
+ 
++#if !defined(__GLIBC__)
++#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
++#endif
++
+ DEFINE_MTYPE_STATIC(ZEBRA, NETNS_MISC, "ZebraNetNSInfo");
+ static struct event *zebra_netns_notify_current;
+ 
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/frr/frr_9.1.bb b/meta-openembedded/meta-networking/recipes-protocols/frr/frr_9.1.bb
index 0926f84..eea6d62 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/frr/frr_9.1.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/frr/frr_9.1.bb
@@ -9,13 +9,13 @@
 LIC_FILES_CHKSUM = "file://doc/licenses/GPL-2.0;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://doc/licenses/LGPL-2.1;md5=4fbd65380cdd255951079008b364516c"
 
-PR = "r1"
 
 SRC_URI = "git://github.com/FRRouting/frr.git;protocol=https;branch=stable/9.1 \
            file://frr.pam \
+           file://0001-zebra-Mimic-GNU-basename-API-for-non-glibc-library-e.patch \
            "
 
-SRCREV = "312faf8008bb4f3b9e84b8e2758cd2cbdf5742b5"
+SRCREV = "ca2d6f0f1e000951224a18973cc1827f7f5215b5"
 
 UPSTREAM_CHECK_GITTAGREGEX = "frr-(?P<pver>\d+(\.\d+)+)$"
 
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/init b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/files/init
old mode 100755
new mode 100644
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-noreturn-attribute-to-netsnmp_pci_error.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-noreturn-attribute-to-netsnmp_pci_error.patch
deleted file mode 100644
index 6fbace7..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Add-noreturn-attribute-to-netsnmp_pci_error.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 5719f40db65a72624a0b0f08e546d12bf823bd1e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 18 Jan 2023 14:38:44 -0800
-Subject: [PATCH] Add noreturn attribute to netsnmp_pci_error()
-
-Fixes build with clang16
-| mibgroup/if-mib/data_access/interface_linux.c:152:23: error: incompatible function pointer types assigning to 'void (*)(char *, ...) __attribute__((noreturn))' from 'void (char *, ...)' [-Wincompatible-function-pointer-types]
-|     pci_access->error = netsnmp_pci_error;
-|                       ^ ~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- agent/mibgroup/if-mib/data_access/interface_linux.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/agent/mibgroup/if-mib/data_access/interface_linux.c b/agent/mibgroup/if-mib/data_access/interface_linux.c
-index c6cc54e..12eb865 100644
---- a/agent/mibgroup/if-mib/data_access/interface_linux.c
-+++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
-@@ -31,7 +31,7 @@ static struct pci_access *pci_access;
- /* Avoid letting libpci call exit(1) when no PCI bus is available. */
- static int do_longjmp =0;
- static jmp_buf err_buf;
--static void
-+__attribute__((noreturn))  static void
- netsnmp_pci_error(char *msg, ...)
- {
-     va_list args;
--- 
-2.39.1
-
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Android-Fix-the-build.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Android-Fix-the-build.patch
new file mode 100644
index 0000000..097d9f8
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-Android-Fix-the-build.patch
@@ -0,0 +1,83 @@
+From b4598662a39ff6974119c900ea56a4d020eac366 Mon Sep 17 00:00:00 2001
+From: Bart Van Assche <bvanassche@acm.org>
+Date: Wed, 20 Dec 2023 13:08:06 -0800
+Subject: [PATCH] Android: Fix the build
+
+Include <sys/select.h> for the fd_set type. In the configure script,
+check whether 'unsigned long' is the underlying type of fd_set. Use
+u_long instead of ulong.
+
+Upstream-Status: Backport [https://github.com/net-snmp/net-snmp/commit/b4598662a39ff6974119c900ea56a4d020eac366]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ agent/mibgroup/ip-mib/data_access/ipaddress_linux.c | 4 ++--
+ configure                                           | 2 +-
+ configure.d/config_project_types                    | 2 +-
+ include/net-snmp/types.h                            | 3 +++
+ 4 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
+index b38beb57dd..232202d0f9 100644
+--- a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
++++ b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
+@@ -50,7 +50,7 @@ int _load_v6(netsnmp_container *container, int idx_offset);
+ int
+ netsnmp_access_ipaddress_extra_prefix_info(int index,
+                                            u_long *preferedlt,
+-                                           ulong *validlt,
++                                           u_long *validlt,
+                                            char *addr);
+ #endif
+ 
+@@ -523,7 +523,7 @@ out:
+ 
+ int
+ netsnmp_access_ipaddress_extra_prefix_info(int index, u_long *preferedlt,
+-                                           ulong *validlt, char *addr)
++                                           u_long *validlt, char *addr)
+ {
+ 
+     struct {
+diff --git a/configure b/configure
+index e7bf859bba..48abcbab11 100755
+--- a/configure
++++ b/configure
+@@ -31577,7 +31577,7 @@ CFLAGS="$CFLAGS -Werror"
+ 
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the type of fd_set::fds_bits" >&5
+ printf %s "checking for the type of fd_set::fds_bits... " >&6; }
+-for type in __fd_mask __int32_t long\ int unknown; do
++for type in __fd_mask __int32_t long 'unsigned long' unknown; do
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+diff --git a/configure.d/config_project_types b/configure.d/config_project_types
+index a78e8ebb06..ac958d6712 100644
+--- a/configure.d/config_project_types
++++ b/configure.d/config_project_types
+@@ -66,7 +66,7 @@ netsnmp_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -Werror"
+ 
+ AC_MSG_CHECKING([for the type of fd_set::fds_bits])
+-for type in __fd_mask __int32_t long\ int unknown; do
++for type in __fd_mask __int32_t long 'unsigned long' unknown; do
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+ #include <sys/select.h>
+ #include <stddef.h>
+diff --git a/include/net-snmp/types.h b/include/net-snmp/types.h
+index b78f53ffd7..6228170e5f 100644
+--- a/include/net-snmp/types.h
++++ b/include/net-snmp/types.h
+@@ -23,6 +23,9 @@
+ #endif
+ 
+ #include <sys/types.h>
++#ifdef __ANDROID__
++#include <sys/select.h>
++#endif
+ 
+ #if defined(WIN32) && !defined(cygwin)
+ typedef HANDLE netsnmp_pid_t;
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-ac_add_search_path.m4-keep-consistent-between-32bit.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-ac_add_search_path.m4-keep-consistent-between-32bit.patch
deleted file mode 100644
index 0eeddf7..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-ac_add_search_path.m4-keep-consistent-between-32bit.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 98c62e24fdd05d7e8bd8149840bad8eb0feb3fb1 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Fri, 29 Jan 2021 08:49:15 +0000
-Subject: [PATCH] ac_add_search_path.m4: keep consistent between 32bit and
- 64bit
-
-With configure option "--with-openssl=${STAGING_EXECPREFIXDIR}", it behaves
-differently between 32bit and 64bit system as the openssl lib resides under
-/build/tmp/work/corei7-64-wrs-linux/net-snmp/5.9-r0/recipe-sysroot/usr/lib64
-for 64bit system, but resides under [1] for 32bit system.
-
-So add the patch to fix the gap between 32bit and 64bit system.
-
-[1] /build/tmp/work/corei7-64-wrs-linux/net-snmp/5.9-r0/recipe-sysroot/usr/lib
-
-Upstream-Status: Inappropriate [configuration specific]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
-
----
- m4/ac_add_search_path.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/ac_add_search_path.m4 b/m4/ac_add_search_path.m4
-index 8e0a819..e9585bc 100644
---- a/m4/ac_add_search_path.m4
-+++ b/m4/ac_add_search_path.m4
-@@ -3,8 +3,8 @@ dnl Add a search path to the LIBS and CPPFLAGS variables
- dnl
- AC_DEFUN([AC_ADD_SEARCH_PATH],[
-   if test "x$1" != x -a -d $1; then
--     if test -d $1/lib; then
--       LDFLAGS="-L$1/lib $LDFLAGS"
-+     if test -d $1/${libdir:5}; then
-+       LDFLAGS="-L$1/${libdir:5} $LDFLAGS"
-      fi
-      if test -d $1/include; then
- 	CPPFLAGS="-I$1/include $CPPFLAGS"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch
deleted file mode 100644
index 5aea527..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-config_os_headers-Error-Fix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From e86d5fd52f19b85da0b7cce660c6e65ec4c0f9bb Mon Sep 17 00:00:00 2001
-From: Li xin <lixin.fnst@cn.fujitsu.com>
-Date: Fri, 21 Aug 2015 18:23:13 +0900
-Subject: [PATCH] config_os_headers: Error Fix
-
-ERROR: This autoconf log indicates errors, it looked at host include
-and/or library paths while determining system capabilities.
-cc1: warning: include location "/usr/local/include" is unsafe for cross-compilation [-Wpoison-system-directories]
-conftest.c:168:17: fatal error: pkg.h: No such file or directory
- #include <pkg.h>
-                 ^
-
-Upstream-Status: Pending
-
-Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
-
----
- configure.d/config_os_headers | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
-index 01c3376..6edd85f 100644
---- a/configure.d/config_os_headers
-+++ b/configure.d/config_os_headers
-@@ -395,8 +395,8 @@ then
-     unset ac_cv_header_pkg_h
-     netsnmp_save_CPPFLAGS="$CPPFLAGS"
-     netsnmp_save_LDFLAGS="$LDFLAGS"
--    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
--    LDFLAGS="$LDFLAGS -L/usr/local/lib"
-+    CPPFLAGS="$CPPFLAGS"
-+    LDFLAGS="$LDFLAGS"
-     AC_CHECK_HEADERS(pkg.h,
-         NETSNMP_SEARCH_LIBS(pkg_init, pkg,
- 	    AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-get_pid_from_inode-Include-limit.h.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-get_pid_from_inode-Include-limit.h.patch
deleted file mode 100644
index a7881a8..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-get_pid_from_inode-Include-limit.h.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 8097734b27fd146f358a4edd0d1a0d28309bd9a4 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 22 Jul 2016 18:34:39 +0000
-Subject: [PATCH] get_pid_from_inode: Include limit.h
-
-PATH_MAX and NAME_MAX are required by this file
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- agent/mibgroup/util_funcs/get_pid_from_inode.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/agent/mibgroup/util_funcs/get_pid_from_inode.c b/agent/mibgroup/util_funcs/get_pid_from_inode.c
-index 5788e1d..ea380a6 100644
---- a/agent/mibgroup/util_funcs/get_pid_from_inode.c
-+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.c
-@@ -6,6 +6,7 @@
- #include <net-snmp/output_api.h>
- 
- #include <ctype.h>
-+#include <limits.h>
- #include <stdio.h>
- #ifdef HAVE_STDLIB_H
- #include <stdlib.h>
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-net-snmp-add-knob-whether-nlist.h-are-checked.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-net-snmp-add-knob-whether-nlist.h-are-checked.patch
new file mode 100644
index 0000000..ea9dcca
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-net-snmp-add-knob-whether-nlist.h-are-checked.patch
@@ -0,0 +1,38 @@
+From 787269b337e70f073e194c3b361eaf4d5f2291ce Mon Sep 17 00:00:00 2001
+From: Chong Lu <Chong.Lu@windriver.com>
+Date: Thu, 28 May 2020 09:46:34 -0500
+Subject: [PATCH] net-snmp: add knob whether nlist.h are checked
+
+Previously, it still was checked when there was no nlish.h in sysroots directory.
+Add knob to decide whether nlist.h are checked or not.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
+---
+ configure.d/config_os_headers | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
+index 584064e..c0688f8 100644
+--- a/configure.d/config_os_headers
++++ b/configure.d/config_os_headers
+@@ -37,6 +37,7 @@ AC_CHECK_HEADERS([getopt.h   pthread.h  regex.h      ] dnl
+                  [sys/timeb.h        ])
+ 
+ #  Library and Agent:
++if test "x$with_elf" != "xno"; then
+ AC_CHECK_HEADERS([nlist.h],,,[
+ AC_INCLUDES_DEFAULT
+ [
+@@ -44,6 +45,7 @@ AC_INCLUDES_DEFAULT
+ #define LIBBSD_DISABLE_DEPRECATED 1
+ #endif
+ ]])
++fi
+ 
+ #  Library:
+ AC_CHECK_HEADERS([crt_externs.h                        ] dnl
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch
deleted file mode 100644
index 6450c1c..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From f4e1acd4f509dd26cf88da872bd5adcf884f4a5f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 18 Sep 2015 00:28:45 -0400
-Subject: [PATCH] snmplib/keytools.c: Don't check for return from
-
- EVP_MD_CTX_init()
-
-EVP_MD_CTX_init() API returns void, it fixes errors with new compilers
-
-snmplib/keytools.c: In function 'generate_Ku': error: invalid use of void expression
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
-
----
-Upstream-Status: Pending
-
- snmplib/keytools.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/snmplib/keytools.c b/snmplib/keytools.c
-index 14a452a..fb1694b 100644
---- a/snmplib/keytools.c
-+++ b/snmplib/keytools.c
-@@ -183,10 +183,7 @@ generate_Ku(const oid * hashtype, u_int hashtype_len,
-     ctx = EVP_MD_CTX_create();
- #else
-     ctx = malloc(sizeof(*ctx));
--    if (!EVP_MD_CTX_init(ctx)) {
--        rval = SNMPERR_GENERR;
--        goto generate_Ku_quit;
--    }
-+    EVP_MD_CTX_init(ctx);
- #endif
-     if (!EVP_DigestInit(ctx, hashfn)) {
-         rval = SNMPERR_GENERR;
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0002-net-snmp-fix-libtool-finish.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0002-net-snmp-fix-libtool-finish.patch
new file mode 100644
index 0000000..e951537
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0002-net-snmp-fix-libtool-finish.patch
@@ -0,0 +1,36 @@
+From 5f002c3cc46ecf4d4a29571309f2cc0d3d34330f Mon Sep 17 00:00:00 2001
+From: "Roy.Li" <rongqing.li@windriver.com>
+Date: Fri, 16 Jan 2015 14:14:01 +0800
+Subject: [PATCH] net-snmp: fix "libtool --finish"
+
+LIB_LDCONFIG_CMD failed since it is using a host dir $(libdir)
+which is /usr/lib64 does not exist on host when compile 64bit
+image.
+
+In fact, configuring dynamic linker run-time bindings is meaningless
+at this step,  If it is needed, Poky would write ldconfig scripts to
+rpm-postinst for each recipe while do_package, in package.bbclass.
+
+Upstream-Status: Inappropriate [cross compile specific]
+
+Signed-off-by: Roy.Li <rongqing.li@windriver.com>
+---
+ Makefile.top | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.top b/Makefile.top
+index d1b3923..53e0392 100644
+--- a/Makefile.top
++++ b/Makefile.top
+@@ -89,7 +89,7 @@ LIBREVISION = 1
+ LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) @LD_NO_UNDEFINED@ -o
+ LIB_EXTENSION   = la
+ LIB_VERSION     =
+-LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(INSTALL_PREFIX)$(libdir)
++LIB_LDCONFIG_CMD = echo "do not ldconfig\n"
+ LINK		= $(LIBTOOL) --mode=link $(LINKCC)
+ # RANLIB 	= @RANLIB@
+ RANLIB		= :
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0003-testing-add-the-output-format-for-ptest.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0003-testing-add-the-output-format-for-ptest.patch
new file mode 100644
index 0000000..ab54492
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0003-testing-add-the-output-format-for-ptest.patch
@@ -0,0 +1,37 @@
+From 2a1a2b58af09c6c03026474f1fd0db7d36e977c7 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Wed, 14 Jan 2015 15:10:06 +0800
+Subject: [PATCH] testing: add the output format for ptest
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ testing/RUNTESTS | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/testing/RUNTESTS b/testing/RUNTESTS
+index 6715831..a2b6fb8 100755
+--- a/testing/RUNTESTS
++++ b/testing/RUNTESTS
+@@ -17,13 +17,17 @@ failed_count=0
+ rm -f failed_tests
+ for i in "${srcdir}"/testing/fulltests/default/T*$1*; do
+     echo "RUNNING $i"
++    test_name=`basename $i`
+     ${srcdir}/testing/fulltests/support/simple_run $i
+     if [ $? = 0 ]; then
++        echo "PASS: $test_name"
+         success_count=`expr $success_count + 1`
+     else
++        echo "FAIL: $test_name"
+         failed_count=`expr $failed_count + 1`
+         echo "$i" >> failed_tests
+     fi
++    echo
+ done
+ 
+ if [ -f failed_tests ]; then
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-config_os_headers-Error-Fix.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-config_os_headers-Error-Fix.patch
new file mode 100644
index 0000000..e2269bc
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-config_os_headers-Error-Fix.patch
@@ -0,0 +1,37 @@
+From b1c941c20577578aa5ff3450d9d8d7a23c55d14a Mon Sep 17 00:00:00 2001
+From: Li xin <lixin.fnst@cn.fujitsu.com>
+Date: Fri, 21 Aug 2015 18:23:13 +0900
+Subject: [PATCH] config_os_headers: Error Fix
+
+ERROR: This autoconf log indicates errors, it looked at host include
+and/or library paths while determining system capabilities.
+cc1: warning: include location "/usr/local/include" is unsafe for cross-compilation [-Wpoison-system-directories]
+conftest.c:168:17: fatal error: pkg.h: No such file or directory
+ #include <pkg.h>
+                 ^
+
+Upstream-Status: Pending
+
+Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com>
+---
+ configure.d/config_os_headers | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
+index c0688f8..f68713c 100644
+--- a/configure.d/config_os_headers
++++ b/configure.d/config_os_headers
+@@ -395,8 +395,8 @@ then
+     unset ac_cv_header_pkg_h
+     netsnmp_save_CPPFLAGS="$CPPFLAGS"
+     netsnmp_save_LDFLAGS="$LDFLAGS"
+-    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+-    LDFLAGS="$LDFLAGS -L/usr/local/lib"
++    CPPFLAGS="$CPPFLAGS"
++    LDFLAGS="$LDFLAGS"
+     AC_CHECK_HEADERS(pkg.h,
+         NETSNMP_SEARCH_LIBS(pkg_init, pkg,
+ 	    AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-configure-fix-incorrect-variable.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-configure-fix-incorrect-variable.patch
deleted file mode 100644
index 6e22418..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0004-configure-fix-incorrect-variable.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 6d655ba677563ac9d62d4d8eee59fdb39d486c02 Mon Sep 17 00:00:00 2001
-From: Wenlin Kang <wenlin.kang@windriver.com>
-Date: Wed, 24 May 2017 17:10:20 +0800
-Subject: [PATCH] configure: fix incorrect variable
-
-For cross compile platform, this variable will not be correct, so fix it.
-
-Upstream-Status: Inappropriate [cross compile specific]
-
-Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
-
----
- Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.in b/Makefile.in
-index f1cbbf5..1545be3 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -173,7 +173,7 @@ OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pyt
- #
- # override LD_RUN_PATH to avoid dependencies on the build directory
- perlmodules: perlmakefiles subdirs
--	@(cd perl ; $(MAKE) LD_RUN_PATH="$(libdir):`$(PERL) -e 'use Config; print qq($$Config{archlibexp}/CORE);'`") ; \
-+	@(cd perl ; $(MAKE) LD_RUN_PATH="$(libdir):`$(PERL) -e 'use Config; print qq($$Config{installprivlib}/CORE);'`") ; \
-         if test $$? != 0 ; then \
-            exit 1 ; \
-         fi
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0005-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0005-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch
new file mode 100644
index 0000000..7a6b354
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0005-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch
@@ -0,0 +1,37 @@
+From c790411f9aa82064fea9bbf23b499fb6b7f22c4f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 18 Sep 2015 00:28:45 -0400
+Subject: [PATCH] snmplib/keytools.c: Don't check for return from
+ EVP_MD_CTX_init()
+
+EVP_MD_CTX_init() API returns void, it fixes errors with new compilers
+
+snmplib/keytools.c: In function 'generate_Ku': error: invalid use of void expression
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
+---
+ snmplib/keytools.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/snmplib/keytools.c b/snmplib/keytools.c
+index 388e655..5a66898 100644
+--- a/snmplib/keytools.c
++++ b/snmplib/keytools.c
+@@ -183,10 +183,7 @@ generate_Ku(const oid * hashtype, u_int hashtype_len,
+     ctx = EVP_MD_CTX_create();
+ #else
+     ctx = malloc(sizeof(*ctx));
+-    if (!EVP_MD_CTX_init(ctx)) {
+-        rval = SNMPERR_GENERR;
+-        goto generate_Ku_quit;
+-    }
++    EVP_MD_CTX_init(ctx);
+ #endif
+     if (!EVP_DigestInit(ctx, hashfn)) {
+         rval = SNMPERR_GENERR;
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0006-get_pid_from_inode-Include-limit.h.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0006-get_pid_from_inode-Include-limit.h.patch
new file mode 100644
index 0000000..6a0161a
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0006-get_pid_from_inode-Include-limit.h.patch
@@ -0,0 +1,29 @@
+From 95868615a04b4a6f0dd5997c9726422828426116 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 22 Jul 2016 18:34:39 +0000
+Subject: [PATCH] get_pid_from_inode: Include limit.h
+
+PATH_MAX and NAME_MAX are required by this file
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ agent/mibgroup/util_funcs/get_pid_from_inode.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/agent/mibgroup/util_funcs/get_pid_from_inode.c b/agent/mibgroup/util_funcs/get_pid_from_inode.c
+index 5788e1d..ea380a6 100644
+--- a/agent/mibgroup/util_funcs/get_pid_from_inode.c
++++ b/agent/mibgroup/util_funcs/get_pid_from_inode.c
+@@ -6,6 +6,7 @@
+ #include <net-snmp/output_api.h>
+ 
+ #include <ctype.h>
++#include <limits.h>
+ #include <stdio.h>
+ #ifdef HAVE_STDLIB_H
+ #include <stdlib.h>
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0007-configure-fix-incorrect-variable.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0007-configure-fix-incorrect-variable.patch
new file mode 100644
index 0000000..5d394ee
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0007-configure-fix-incorrect-variable.patch
@@ -0,0 +1,30 @@
+From 385fa343cf178ccfe2c9a9fd7795d0db3c959fdd Mon Sep 17 00:00:00 2001
+From: Wenlin Kang <wenlin.kang@windriver.com>
+Date: Wed, 24 May 2017 17:10:20 +0800
+Subject: [PATCH] configure: fix incorrect variable
+
+For cross compile platform, this variable will not be correct, so fix it.
+
+Upstream-Status: Inappropriate [cross compile specific]
+
+Signed-off-by: Wenlin Kang <wenlin.kang@windriver.com>
+---
+ Makefile.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 1c1182e..f947b8c 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -173,7 +173,7 @@ OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pyt
+ #
+ # override LD_RUN_PATH to avoid dependencies on the build directory
+ perlmodules: perlmakefiles subdirs
+-	@(cd perl ; $(MAKE) LD_RUN_PATH="$(libdir):`$(PERL) -e 'use Config; print qq($$Config{archlibexp}/CORE);'`") ; \
++	@(cd perl ; $(MAKE) LD_RUN_PATH="$(libdir):`$(PERL) -e 'use Config; print qq($$Config{installprivlib}/CORE);'`") ; \
+         if test $$? != 0 ; then \
+            exit 1 ; \
+         fi
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0008-net-snmp-fix-engineBoots-value-on-SIGHUP.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0008-net-snmp-fix-engineBoots-value-on-SIGHUP.patch
new file mode 100644
index 0000000..a57c4c8
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0008-net-snmp-fix-engineBoots-value-on-SIGHUP.patch
@@ -0,0 +1,46 @@
+From b5cbe0953a7e7a3c77c7ec69dfe81254475f08c0 Mon Sep 17 00:00:00 2001
+From: Zheng Ruoqin <zhengrq.fnst@fujitsu.com>
+Date: Wed, 9 Jun 2021 15:47:30 +0900
+Subject: [PATCH] net snmp: fix engineBoots value on SIGHUP
+
+Upstream-Status: Pending
+
+Signed-off-by: Marian Florea <marian.florea@windriver.com>
+Signed-off-by: Li Zhou <li.zhou@windriver.com>
+Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
+---
+ agent/snmpd.c    | 1 +
+ snmplib/snmpv3.c | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/agent/snmpd.c b/agent/snmpd.c
+index fe31c87..d9f68dd 100644
+--- a/agent/snmpd.c
++++ b/agent/snmpd.c
+@@ -1169,6 +1169,7 @@ snmpd_reconfig(void)
+     snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n",
+              netsnmp_get_version());
+     update_config();
++    snmp_store(app_name);
+     send_easy_trap(SNMP_TRAP_ENTERPRISESPECIFIC, 3);
+ #ifdef HAVE_SIGPROCMASK
+     ret = sigprocmask(SIG_UNBLOCK, &set, NULL);
+diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c
+index be9256f..d17d2e3 100644
+--- a/snmplib/snmpv3.c
++++ b/snmplib/snmpv3.c
+@@ -1071,9 +1071,9 @@ init_snmpv3_post_config(int majorid, int minorid, void *serverarg,
+     /*
+      * if our engineID has changed at all, the boots record must be set to 1 
+      */
+-    if (engineIDLen != oldEngineIDLength ||
++    if (oldEngineIDLength != (size_t)0 && (engineIDLen != oldEngineIDLength ||
+         oldEngineID == NULL || c_engineID == NULL ||
+-        memcmp(oldEngineID, c_engineID, engineIDLen) != 0) {
++        memcmp(oldEngineID, c_engineID, engineIDLen) != 0)) {
+         engineBoots = 1;
+     }
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0009-net-snmp-fix-for-disable-des.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0009-net-snmp-fix-for-disable-des.patch
new file mode 100644
index 0000000..36a676f
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0009-net-snmp-fix-for-disable-des.patch
@@ -0,0 +1,32 @@
+From aa1f157c675da248ed186e020d17cb2528d0be12 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Thu, 22 Jun 2017 10:25:08 +0800
+Subject: [PATCH] net-snmp: fix for --disable-des
+
+Include des.h only if it's found in openssl so that
+the --disable-des works correctly.
+
+Upstream-Status: Submitted [net-snmp-coders@lists.sourceforge.net]
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ snmplib/scapi.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/snmplib/scapi.c b/snmplib/scapi.c
+index ac77004..7545bfa 100644
+--- a/snmplib/scapi.c
++++ b/snmplib/scapi.c
+@@ -86,7 +86,9 @@ netsnmp_feature_child_of(usm_scapi, usm_support);
+ #include <openssl/hmac.h>
+ #include <openssl/evp.h>
+ #include <openssl/rand.h>
++#ifdef HAVE_OPENSSL_DES_H
+ #include <openssl/des.h>
++#endif
+ #ifdef HAVE_AES
+ #include <openssl/aes.h>
+ #endif
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0010-net-snmp-Reproducibility-Don-t-check-build-host-for.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0010-net-snmp-Reproducibility-Don-t-check-build-host-for.patch
new file mode 100644
index 0000000..246ce2b
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0010-net-snmp-Reproducibility-Don-t-check-build-host-for.patch
@@ -0,0 +1,34 @@
+From a96140995d10660046146d9fa75faa5f7faabab0 Mon Sep 17 00:00:00 2001
+From: "douglas.royds" <douglas.royds@taitradio.com>
+Date: Wed, 21 Nov 2018 13:52:18 +1300
+Subject: [PATCH] net-snmp: Reproducibility: Don't check build host for
+
+Reproducible build: Don't check for /etc/printcap on the build machine when
+cross-compiling. Use AC_CHECK_FILE to set the cached variable
+ac_cv_file__etc_printcap instead. When cross-compiling, this variable should be
+set in the environment to "yes" or "no" as appropriate for the target platform.
+
+Upstream-Status: Pending
+---
+ configure.d/config_os_misc4 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.d/config_os_misc4 b/configure.d/config_os_misc4
+index 4c445d6..099257f 100644
+--- a/configure.d/config_os_misc4
++++ b/configure.d/config_os_misc4
+@@ -99,9 +99,9 @@ if test x$LPSTAT_PATH != x; then
+ 	[Path to the lpstat command])
+     AC_DEFINE(HAVE_LPSTAT, 1, [Set if the lpstat command is available])
+ fi
+-if test -r /etc/printcap; then
++AC_CHECK_FILE([/etc/printcap],
+     AC_DEFINE(HAVE_PRINTCAP, 1, [Set if /etc/printcap exists])
+-fi
++)
+ 
+ 
+ #       Check ps args
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch
new file mode 100644
index 0000000..1e845c4
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch
@@ -0,0 +1,40 @@
+From 85a6c5017a2cd18a5a66afcb3f6a02276c101ad0 Mon Sep 17 00:00:00 2001
+From: Mingli Yu <mingli.yu@windriver.com>
+Date: Fri, 29 Jan 2021 08:49:15 +0000
+Subject: [PATCH] ac_add_search_path.m4: keep consistent between 32bit and
+ 64bit
+
+With configure option "--with-openssl=${STAGING_EXECPREFIXDIR}", it behaves
+differently between 32bit and 64bit system as the openssl lib resides under
+/build/tmp/work/corei7-64-wrs-linux/net-snmp/5.9-r0/recipe-sysroot/usr/lib64
+for 64bit system, but resides under [1] for 32bit system.
+
+So add the patch to fix the gap between 32bit and 64bit system.
+
+[1] /build/tmp/work/corei7-64-wrs-linux/net-snmp/5.9-r0/recipe-sysroot/usr/lib
+
+Upstream-Status: Inappropriate [configuration specific]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ m4/ac_add_search_path.m4 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/m4/ac_add_search_path.m4 b/m4/ac_add_search_path.m4
+index 8e0a819..e9585bc 100644
+--- a/m4/ac_add_search_path.m4
++++ b/m4/ac_add_search_path.m4
+@@ -3,8 +3,8 @@ dnl Add a search path to the LIBS and CPPFLAGS variables
+ dnl
+ AC_DEFUN([AC_ADD_SEARCH_PATH],[
+   if test "x$1" != x -a -d $1; then
+-     if test -d $1/lib; then
+-       LDFLAGS="-L$1/lib $LDFLAGS"
++     if test -d $1/${libdir:5}; then
++       LDFLAGS="-L$1/${libdir:5} $LDFLAGS"
+      fi
+      if test -d $1/include; then
+ 	CPPFLAGS="-I$1/include $CPPFLAGS"
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch
new file mode 100644
index 0000000..9d4b769
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch
@@ -0,0 +1,43 @@
+From 21ea0b9ce5cc9445f7ffd7a9020b816681e16284 Mon Sep 17 00:00:00 2001
+From: Adam Gajda <adgajda@users.noreply.github.com>
+Date: Mon, 2 Oct 2023 16:40:31 +0200
+Subject: [PATCH] Fix configuration of NETSNMP_FD_MASK_TYPE
+
+Upstream-Status: Backport
+[https://github.com/net-snmp/net-snmp/commit/af1b7f77975bbb2fcbdb3f005f8cb010d1d33cd3]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ configure                        | 2 +-
+ configure.d/config_project_types | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 907d441..f4468c6 100755
+--- a/configure
++++ b/configure
+@@ -31638,7 +31638,7 @@ CFLAGS="$CFLAGS -Werror"
+ 
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the type of fd_set::fds_bits" >&5
+ printf %s "checking for the type of fd_set::fds_bits... " >&6; }
+-for type in __fd_mask __int32_t unknown; do
++for type in __fd_mask __int32_t long\ int unknown; do
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
+diff --git a/configure.d/config_project_types b/configure.d/config_project_types
+index 1b4c66b..a78e8eb 100644
+--- a/configure.d/config_project_types
++++ b/configure.d/config_project_types
+@@ -66,7 +66,7 @@ netsnmp_save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -Werror"
+ 
+ AC_MSG_CHECKING([for the type of fd_set::fds_bits])
+-for type in __fd_mask __int32_t unknown; do
++for type in __fd_mask __int32_t long\ int unknown; do
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+ #include <sys/select.h>
+ #include <stddef.h>
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/CVE-2022-44792-CVE-2022-44793.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/CVE-2022-44792-CVE-2022-44793.patch
deleted file mode 100644
index b18d4dc..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/CVE-2022-44792-CVE-2022-44793.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From d13302656d9ff0807c5defe18623adc947f43a2b Mon Sep 17 00:00:00 2001
-From: Narpat Mali <narpat.mali@windriver.com>
-Date: Wed, 8 Feb 2023 13:15:39 +0000
-Subject: [PATCH] agent: Disallow SET requests with any NULL varbind Merge pull
- request #490 from fenner/set-null
-
-fixes: #474 and #475
-
-CVE: CVE-2022-44792, CVE-2022-44793
-
-Upstream-Status: Backport [https://github.com/net-snmp/net-snmp/commit/be804106fd0771a7d05236cff36e199af077af57]
-
-Signed-off-by: Narpat Mali <narpat.mali@windriver.com>
----
- agent/snmp_agent.c                            | 32 +++++++++++++++++++
- apps/snmpset.c                                |  1 +
- .../default/T0142snmpv2csetnull_simple        | 31 ++++++++++++++++++
- 3 files changed, 64 insertions(+)
- create mode 100644 testing/fulltests/default/T0142snmpv2csetnull_simple
-
-diff --git a/agent/snmp_agent.c b/agent/snmp_agent.c
-index 867d0c1..3f678fe 100644
---- a/agent/snmp_agent.c
-+++ b/agent/snmp_agent.c
-@@ -3719,12 +3719,44 @@ netsnmp_handle_request(netsnmp_agent_session *asp, int status)
-     return 1;
- }
- 
-+static int
-+check_set_pdu_for_null_varbind(netsnmp_agent_session *asp)
-+{
-+    int i;
-+    netsnmp_variable_list *v = NULL;
-+
-+    for (i = 1, v = asp->pdu->variables; v != NULL; i++, v = v->next_variable) {
-+	if (v->type == ASN_NULL) {
-+	    /*
-+	     * Protect SET implementations that do not protect themselves
-+	     * against wrong type.
-+	     */
-+	    DEBUGMSGTL(("snmp_agent", "disallowing SET with NULL var for varbind %d\n", i));
-+	    asp->index = i;
-+	    return SNMP_ERR_WRONGTYPE;
-+	}
-+    }
-+    return SNMP_ERR_NOERROR;
-+}
-+
- int
- handle_pdu(netsnmp_agent_session *asp)
- {
-     int             status, inclusives = 0;
-     netsnmp_variable_list *v = NULL;
- 
-+#ifndef NETSNMP_NO_WRITE_SUPPORT
-+    /*
-+     * Check for ASN_NULL in SET request
-+     */
-+    if (asp->pdu->command == SNMP_MSG_SET) {
-+	status = check_set_pdu_for_null_varbind(asp);
-+	if (status != SNMP_ERR_NOERROR) {
-+	    return status;
-+	}
-+    }
-+#endif /* NETSNMP_NO_WRITE_SUPPORT */
-+
-     /*
-      * for illegal requests, mark all nodes as ASN_NULL 
-      */
-diff --git a/apps/snmpset.c b/apps/snmpset.c
-index 48e14bd..d542713 100644
---- a/apps/snmpset.c
-+++ b/apps/snmpset.c
-@@ -182,6 +182,7 @@ main(int argc, char *argv[])
-             case 'x':
-             case 'd':
-             case 'b':
-+            case 'n': /* undocumented */
- #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
-             case 'I':
-             case 'U':
-diff --git a/testing/fulltests/default/T0142snmpv2csetnull_simple b/testing/fulltests/default/T0142snmpv2csetnull_simple
-new file mode 100644
-index 0000000..0f1b8f3
---- /dev/null
-+++ b/testing/fulltests/default/T0142snmpv2csetnull_simple
-@@ -0,0 +1,31 @@
-+#!/bin/sh
-+
-+. ../support/simple_eval_tools.sh
-+
-+HEADER SNMPv2c set of system.sysContact.0 with NULL varbind
-+
-+SKIPIF NETSNMP_DISABLE_SET_SUPPORT
-+SKIPIF NETSNMP_NO_WRITE_SUPPORT
-+SKIPIF NETSNMP_DISABLE_SNMPV2C
-+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-+
-+#
-+# Begin test
-+#
-+
-+# standard V2C configuration: testcomunnity
-+snmp_write_access='all'
-+. ./Sv2cconfig
-+STARTAGENT
-+
-+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
-+
-+CHECK ".1.3.6.1.2.1.1.4.0 = STRING:"
-+
-+CAPTURE "snmpset -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 n x"
-+
-+CHECK "Reason: wrongType"
-+
-+STOPAGENT
-+
-+FINISHED
--- 
-2.34.1
-
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch
deleted file mode 100644
index 409c1e0..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/fix-libtool-finish.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ab1d77c52e84746e75506a2870783806bc77f396 Mon Sep 17 00:00:00 2001
-From: "Roy.Li" <rongqing.li@windriver.com>
-Date: Fri, 16 Jan 2015 14:14:01 +0800
-Subject: [PATCH] net-snmp: fix "libtool --finish"
-
-LIB_LDCONFIG_CMD failed since it is using a host dir $(libdir)
-which is /usr/lib64 does not exist on host when compile 64bit
-image.
-
-In fact, configuring dynamic linker run-time bindings is meaningless
-at this step,  If it is needed, Poky would write ldconfig scripts to
-rpm-postinst for each recipe while do_package, in package.bbclass.
-
-Upstream-Status: Inappropriate [cross compile specific]
-
-Signed-off-by: Roy.Li <rongqing.li@windriver.com>
-
----
- Makefile.top | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.top b/Makefile.top
-index a962c54..1ba5607 100644
---- a/Makefile.top
-+++ b/Makefile.top
-@@ -89,7 +89,7 @@ LIBREVISION = 0
- LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) @LD_NO_UNDEFINED@ -o
- LIB_EXTENSION   = la
- LIB_VERSION     =
--LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(INSTALL_PREFIX)$(libdir)
-+LIB_LDCONFIG_CMD = echo "do not ldconfig\n"
- LINK		= $(LIBTOOL) --mode=link $(LINKCC)
- # RANLIB 	= @RANLIB@
- RANLIB		= :
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch
deleted file mode 100644
index 35e93d6..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 5ad4eab43c1ea63ff343bba64d576440e8783e75 Mon Sep 17 00:00:00 2001
-From: Zheng Ruoqin <zhengrq.fnst@fujitsu.com>
-Date: Wed, 9 Jun 2021 15:47:30 +0900
-Subject: [PATCH] net snmp: fix engineBoots value on SIGHUP
-
-Upstream-Status: Pending
-
-Signed-off-by: Marian Florea <marian.florea@windriver.com>
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
-
----
- agent/snmpd.c    | 1 +
- snmplib/snmpv3.c | 4 ++--
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/agent/snmpd.c b/agent/snmpd.c
-index 90de12d..1ccc4db 100644
---- a/agent/snmpd.c
-+++ b/agent/snmpd.c
-@@ -1169,6 +1169,7 @@ snmpd_reconfig(void)
-     snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n",
-              netsnmp_get_version());
-     update_config();
-+    snmp_store(app_name);
-     send_easy_trap(SNMP_TRAP_ENTERPRISESPECIFIC, 3);
- #ifdef HAVE_SIGPROCMASK
-     ret = sigprocmask(SIG_UNBLOCK, &set, NULL);
-diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c
-index 7b1746b..4a17e0d 100644
---- a/snmplib/snmpv3.c
-+++ b/snmplib/snmpv3.c
-@@ -1059,9 +1059,9 @@ init_snmpv3_post_config(int majorid, int minorid, void *serverarg,
-     /*
-      * if our engineID has changed at all, the boots record must be set to 1 
-      */
--    if (engineIDLen != oldEngineIDLength ||
-+    if (oldEngineIDLength != (size_t)0 && (engineIDLen != oldEngineIDLength ||
-         oldEngineID == NULL || c_engineID == NULL ||
--        memcmp(oldEngineID, c_engineID, engineIDLen) != 0) {
-+        memcmp(oldEngineID, c_engineID, engineIDLen) != 0)) {
-         engineBoots = 1;
-     }
- 
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch
deleted file mode 100644
index 3152ce2..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-add-knob-whether-nlist.h-are-checked.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ad65b106d3cb3c6e595381be1c45a73c1ef6eb5e Mon Sep 17 00:00:00 2001
-From: Chong Lu <Chong.Lu@windriver.com>
-Date: Thu, 28 May 2020 09:46:34 -0500
-Subject: [PATCH] net-snmp: add knob whether nlist.h are checked
-
-Previously, it still was checked when there was no nlish.h in sysroots directory.
-Add knob to decide whether nlist.h are checked or not.
-
-Upstream-Status: Pending
-
-Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
-
----
- configure.d/config_os_headers | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/configure.d/config_os_headers b/configure.d/config_os_headers
-index b9c8c31..01c3376 100644
---- a/configure.d/config_os_headers
-+++ b/configure.d/config_os_headers
-@@ -37,6 +37,7 @@ AC_CHECK_HEADERS([getopt.h   pthread.h  regex.h      ] dnl
-                  [sys/timeb.h        ])
- 
- #  Library and Agent:
-+if test "x$with_elf" != "xno"; then
- AC_CHECK_HEADERS([nlist.h],,,[
- AC_INCLUDES_DEFAULT
- [
-@@ -44,6 +45,7 @@ AC_INCLUDES_DEFAULT
- #define LIBBSD_DISABLE_DEPRECATED 1
- #endif
- ]])
-+fi
- 
- #  Library:
- AC_CHECK_HEADERS([crt_externs.h                        ] dnl
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-fix-for-disable-des.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-fix-for-disable-des.patch
deleted file mode 100644
index c382c02..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-fix-for-disable-des.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b1b9980853b1083f0c8b9f628f8b4c3a484d4f91 Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Thu, 22 Jun 2017 10:25:08 +0800
-Subject: [PATCH] net-snmp: fix for --disable-des
-
-Include des.h only if it's found in openssl so that
-the --disable-des works correctly.
-
-Upstream-Status: Submitted [net-snmp-coders@lists.sourceforge.net]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
-
----
- snmplib/scapi.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/snmplib/scapi.c b/snmplib/scapi.c
-index 54fdd5c..0f7e931 100644
---- a/snmplib/scapi.c
-+++ b/snmplib/scapi.c
-@@ -85,7 +85,9 @@ netsnmp_feature_child_of(usm_scapi, usm_support);
- #include <openssl/hmac.h>
- #include <openssl/evp.h>
- #include <openssl/rand.h>
-+#ifdef HAVE_OPENSSL_DES_H
- #include <openssl/des.h>
-+#endif
- #ifdef HAVE_AES
- #include <openssl/aes.h>
- #endif
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch
deleted file mode 100644
index 09ca532..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/net-snmp-testing-add-the-output-format-for-ptest.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 36a5656db7ea75dd15f35a6c1728937c6e2b901c Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Wed, 14 Jan 2015 15:10:06 +0800
-Subject: [PATCH] testing: add the output format for ptest
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
-
----
- testing/RUNTESTS | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/testing/RUNTESTS b/testing/RUNTESTS
-index 6715831..a2b6fb8 100755
---- a/testing/RUNTESTS
-+++ b/testing/RUNTESTS
-@@ -17,13 +17,17 @@ failed_count=0
- rm -f failed_tests
- for i in "${srcdir}"/testing/fulltests/default/T*$1*; do
-     echo "RUNNING $i"
-+    test_name=`basename $i`
-     ${srcdir}/testing/fulltests/support/simple_run $i
-     if [ $? = 0 ]; then
-+        echo "PASS: $test_name"
-         success_count=`expr $success_count + 1`
-     else
-+        echo "FAIL: $test_name"
-         failed_count=`expr $failed_count + 1`
-         echo "$i" >> failed_tests
-     fi
-+    echo
- done
- 
- if [ -f failed_tests ]; then
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-have-printcap.patch b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-have-printcap.patch
deleted file mode 100644
index 5fbb411..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/reproducibility-have-printcap.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From b923cd38e2503b86aedf66b767fd7f51c9f25645 Mon Sep 17 00:00:00 2001
-From: "douglas.royds" <douglas.royds@taitradio.com>
-Date: Wed, 21 Nov 2018 13:52:18 +1300
-Subject: [PATCH] net-snmp: Reproducibility: Don't check build host for
-
-Reproducible build: Don't check for /etc/printcap on the build machine when
-cross-compiling. Use AC_CHECK_FILE to set the cached variable
-ac_cv_file__etc_printcap instead. When cross-compiling, this variable should be
-set in the environment to "yes" or "no" as appropriate for the target platform.
-
----
-Upstream-Status: Pending
-
- configure.d/config_os_misc4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.d/config_os_misc4 b/configure.d/config_os_misc4
-index b6864d9..07ca922 100644
---- a/configure.d/config_os_misc4
-+++ b/configure.d/config_os_misc4
-@@ -99,9 +99,9 @@ if test x$LPSTAT_PATH != x; then
- 	[Path to the lpstat command])
-     AC_DEFINE(HAVE_LPSTAT, 1, [Set if the lpstat command is available])
- fi
--if test -r /etc/printcap; then
-+AC_CHECK_FILE([/etc/printcap],
-     AC_DEFINE(HAVE_PRINTCAP, 1, [Set if /etc/printcap exists])
--fi
-+)
- 
- 
- #       Check ps args
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/run-ptest b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp/run-ptest
old mode 100755
new mode 100644
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.3.bb b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.3.bb
deleted file mode 100644
index 6f1c114..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.3.bb
+++ /dev/null
@@ -1,294 +0,0 @@
-SUMMARY = "Various tools relating to the Simple Network Management Protocol"
-HOMEPAGE = "http://www.net-snmp.org/"
-SECTION = "net"
-LICENSE = "BSD-3-Clause & MIT"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=9d100a395a38584f2ec18a8275261687"
-
-DEPENDS = "openssl"
-DEPENDS:append:class-target = " pciutils"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
-           file://init \
-           file://snmpd.conf \
-           file://snmptrapd.conf \
-           file://snmpd.service \
-           file://snmptrapd.service \
-           file://net-snmp-add-knob-whether-nlist.h-are-checked.patch \
-           file://fix-libtool-finish.patch \
-           file://net-snmp-testing-add-the-output-format-for-ptest.patch \
-           file://run-ptest \
-           file://0001-config_os_headers-Error-Fix.patch \
-           file://0001-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch \
-           file://0001-get_pid_from_inode-Include-limit.h.patch \
-           file://0004-configure-fix-incorrect-variable.patch \
-           file://net-snmp-5.7.2-fix-engineBoots-value-on-SIGHUP.patch \
-           file://net-snmp-fix-for-disable-des.patch \
-           file://reproducibility-have-printcap.patch \
-           file://0001-ac_add_search_path.m4-keep-consistent-between-32bit.patch \
-           file://0001-Add-noreturn-attribute-to-netsnmp_pci_error.patch \
-           file://CVE-2022-44792-CVE-2022-44793.patch \
-           "
-SRC_URI[sha256sum] = "2097f29b7e1bf3f1300b4bae52fa2308d0bb8d5d3998dbe02f9462a413a2ef0a"
-
-UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/net-snmp/files/net-snmp/"
-UPSTREAM_CHECK_REGEX = "/net-snmp/(?P<pver>\d+(\.\d+)+)/"
-
-inherit autotools-brokensep update-rc.d siteinfo systemd pkgconfig perlnative ptest multilib_script multilib_header
-
-EXTRA_OEMAKE = "INSTALL_PREFIX=${D} OTHERLDFLAGS='${LDFLAGS}' HOST_CPPFLAGS='${BUILD_CPPFLAGS}'"
-
-PARALLEL_MAKE = ""
-CCACHE = ""
-CLEANBROKEN = "1"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd', d)} des smux"
-PACKAGECONFIG[des] = "--enable-des, --disable-des"
-PACKAGECONFIG[elfutils] = "--with-elf, --without-elf, elfutils"
-PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6"
-PACKAGECONFIG[libnl] = "--with-nl, --without-nl, libnl"
-PACKAGECONFIG[perl] = "--enable-embedded-perl --with-perl-modules=yes, --disable-embedded-perl --with-perl-modules=no, perl"
-PACKAGECONFIG[smux] = ""
-PACKAGECONFIG[systemd] = "--with-systemd, --without-systemd"
-
-EXTRA_OECONF = " \
-    --enable-shared \
-    --disable-manuals \
-    --with-defaults \
-    --with-install-prefix=${D} \
-    --with-persistent-directory=${localstatedir}/lib/net-snmp \
-    --with-endianness=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
-    --with-mib-modules='${MIB_MODULES}' \
-"
-
-MIB_MODULES = ""
-MIB_MODULES:append = " ${@bb.utils.filter('PACKAGECONFIG', 'smux', d)}"
-
-CACHED_CONFIGUREVARS = " \
-    ac_cv_header_valgrind_valgrind_h=no \
-    ac_cv_header_valgrind_memcheck_h=no \
-    ac_cv_ETC_MNTTAB=/etc/mtab \
-    lt_cv_shlibpath_overrides_runpath=yes \
-    ac_cv_path_UNAMEPROG=${base_bindir}/uname \
-    ac_cv_path_PSPROG=${base_bindir}/ps \
-    ac_cv_file__etc_printcap=no \
-    NETSNMP_CONFIGURE_OPTIONS= \
-"
-PERLPROG = "${bindir}/env perl"
-PERLPROG:class-native = "${bindir_native}/env perl"
-PERLPROG:append = "${@bb.utils.contains('PACKAGECONFIG', 'perl', ' -I${WORKDIR}', '', d)}"
-export PERLPROG
-
-HAS_PERL = "${@bb.utils.contains('PACKAGECONFIG', 'perl', '1', '0', d)}"
-
-PTEST_BUILD_HOST_FILES += "net-snmp-config gen-variables"
-
-do_configure:prepend() {
-    sed -i -e "s|I/usr/include|I${STAGING_INCDIR}|g" \
-        "${S}"/configure \
-        "${S}"/configure.d/config_os_libs2
-
-    if [ "${HAS_PERL}" = "1" ]; then
-        # this may need to be changed when package perl has any change.
-        cp -f ${STAGING_DIR_TARGET}/usr/lib*/perl?/*/Config.pm ${WORKDIR}/
-        cp -f ${STAGING_DIR_TARGET}/usr/lib*/perl?/*/*/Config_heavy.pl ${WORKDIR}/
-        sed -e "s@libpth => '/usr/lib.*@libpth => '${STAGING_DIR_TARGET}/${libdir} ${STAGING_DIR_TARGET}/${base_libdir}',@g" \
-            -e "s@privlibexp => '/usr@privlibexp => '${STAGING_DIR_TARGET}/usr@g" \
-            -e "s@scriptdir => '/usr@scriptdir => '${STAGING_DIR_TARGET}/usr@g" \
-            -e "s@sitearchexp => '/usr@sitearchexp => '${STAGING_DIR_TARGET}/usr@g" \
-            -e "s@sitelibexp => '/usr@sitearchexp => '${STAGING_DIR_TARGET}/usr@g" \
-            -e "s@vendorarchexp => '/usr@vendorarchexp => '${STAGING_DIR_TARGET}/usr@g" \
-            -e "s@vendorlibexp => '/usr@vendorlibexp => '${STAGING_DIR_TARGET}/usr@g" \
-            -i ${WORKDIR}/Config.pm
-    fi
-
-}
-
-do_configure:append() {
-    sed -e "s@^NSC_INCLUDEDIR=.*@NSC_INCLUDEDIR=${STAGING_DIR_TARGET}\$\{includedir\}@g" \
-        -e "s@^NSC_LIBDIR=-L.*@NSC_LIBDIR=-L${STAGING_DIR_TARGET}\$\{libdir\}@g" \
-        -e "s@^NSC_LDFLAGS=\"-L.* @NSC_LDFLAGS=\"-L${STAGING_DIR_TARGET}\$\{libdir\} @g" \
-        -i ${B}/net-snmp-config
-}
-
-do_install:append() {
-    install -d ${D}${sysconfdir}/snmp
-    install -d ${D}${sysconfdir}/init.d
-    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/snmpd
-    install -m 644 ${WORKDIR}/snmpd.conf ${D}${sysconfdir}/snmp/
-    install -m 644 ${WORKDIR}/snmptrapd.conf ${D}${sysconfdir}/snmp/
-    install -d ${D}${systemd_unitdir}/system
-    install -m 0644 ${WORKDIR}/snmpd.service ${D}${systemd_unitdir}/system
-    install -m 0644 ${WORKDIR}/snmptrapd.service ${D}${systemd_unitdir}/system
-    sed -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \
-        -i ${D}${bindir}/net-snmp-create-v3-user
-    sed -e 's@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g' \
-        -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
-        -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
-        -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
-        -e 's@[^ ]*--sysroot=[^ "]*@@g' \
-        -e 's@[^ ]*--with-libtool-sysroot=[^ "]*@@g' \
-        -e 's@[^ ]*--with-install-prefix=[^ "]*@@g' \
-        -e 's@[^ ]*PKG_CONFIG_PATH=[^ "]*@@g' \
-        -e 's@[^ ]*PKG_CONFIG_LIBDIR=[^ "]*@@g' \
-        -i ${D}${bindir}/net-snmp-config
-
-    sed -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
-        -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
-        -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
-        -i ${D}${libdir}/pkgconfig/netsnmp*.pc
-
-    # ${STAGING_DIR_HOST} is empty for native builds, and the sed command below
-    # will result in errors if run for native.
-    if [ "${STAGING_DIR_HOST}" ]; then
-        sed -e 's@${STAGING_DIR_HOST}@@g' \
-            -i ${D}${bindir}/net-snmp-config ${D}${libdir}/pkgconfig/netsnmp*.pc
-    fi
-
-    sed -e "s@^NSC_INCLUDEDIR=.*@NSC_INCLUDEDIR=\$\{includedir\}@g" \
-        -e "s@^NSC_LIBDIR=-L.*@NSC_LIBDIR=-L\$\{libdir\}@g" \
-        -e "s@^NSC_LDFLAGS=\"-L.* @NSC_LDFLAGS=\"-L\$\{libdir\} @g" \
-        -i ${D}${bindir}/net-snmp-config
-
-    oe_multilib_header net-snmp/net-snmp-config.h
-
-    if [ "${HAS_PERL}" = "1" ]; then
-        find ${D}${libdir}/ -type f -name "perllocal.pod" | xargs rm -f
-    fi
-}
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}
-    for i in ${S}/dist ${S}/include ${B}/include ${S}/mibs ${S}/configure \
-        ${B}/net-snmp-config ${S}/testing; do
-        if [ -e "$i" ]; then
-            cp -R --no-dereference --preserve=mode,links -v "$i" ${D}${PTEST_PATH}
-        fi
-    done
-    echo `autoconf -V|awk '/autoconf/{print $NF}'` > ${D}${PTEST_PATH}/dist/autoconf-version
-
-    rmdlist="${D}${PTEST_PATH}/dist/net-snmp-solaris-build"
-    for i in $rmdlist; do
-        if [ -d "$i" ]; then
-            rm -rf "$i"
-        fi
-    done
-}
-
-SYSROOT_PREPROCESS_FUNCS += "net_snmp_sysroot_preprocess"
-SNMP_DBGDIR = "${TARGET_DBGSRC_DIR}"
-
-net_snmp_sysroot_preprocess () {
-    if [ -e ${D}${bindir}/net-snmp-config ]; then
-        install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
-        install -m 755 ${D}${bindir}/net-snmp-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
-        sed -e "s@-I/usr/include@-I${STAGING_INCDIR}@g" \
-            -e "s@^prefix=.*@prefix=${STAGING_DIR_HOST}${prefix}@g" \
-            -e "s@^exec_prefix=.*@exec_prefix=${STAGING_EXECPREFIXDIR}@g" \
-            -e "s@^includedir=.*@includedir=${STAGING_INCDIR}@g" \
-            -e "s@^libdir=.*@libdir=${STAGING_LIBDIR}@g" \
-            -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=${S}@g" \
-            -e "s@-ffile-prefix-map=${SNMP_DBGDIR}@-ffile-prefix-map=${WORKDIR}=${SNMP_DBGDIR}@g" \
-            -e "s@-fdebug-prefix-map=${SNMP_DBGDIR}@-fdebug-prefix-map=${WORKDIR}=${SNMP_DBGDIR}@g" \
-            -e "s@-fdebug-prefix-map= -fdebug-prefix-map=@-fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
-                  -fdebug-prefix-map=${STAGING_DIR_HOST}=@g" \
-            -e "s@--sysroot=@--sysroot=${STAGING_DIR_HOST}@g" \
-            -e "s@--with-libtool-sysroot=@--with-libtool-sysroot=${STAGING_DIR_HOST}@g" \
-            -e "s@--with-install-prefix=@--with-install-prefix=${D}@g" \
-          -i  ${SYSROOT_DESTDIR}${bindir_crossscripts}/net-snmp-config
-    fi
-}
-
-PACKAGES += "${PN}-libs ${PN}-mibs ${PN}-server ${PN}-client \
-             ${PN}-server-snmpd ${PN}-server-snmptrapd \
-             ${PN}-lib-netsnmp ${PN}-lib-agent ${PN}-lib-helpers \
-             ${PN}-lib-mibs ${PN}-lib-trapd"
-
-# perl module
-PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'perl', '${PN}-perl-modules', '', d)}"
-
-ALLOW_EMPTY:${PN} = "1"
-ALLOW_EMPTY:${PN}-server = "1"
-ALLOW_EMPTY:${PN}-libs = "1"
-
-FILES:${PN}-perl-modules = "${libdir}/perl?/*"
-RDEPENDS:${PN}-perl-modules = "perl"
-
-FILES:${PN}-libs = ""
-FILES:${PN}-mibs = "${datadir}/snmp/mibs"
-FILES:${PN}-server-snmpd = "${sbindir}/snmpd \
-                            ${sysconfdir}/snmp/snmpd.conf \
-                            ${sysconfdir}/init.d \
-                            ${systemd_unitdir}/system/snmpd.service \
-"
-
-FILES:${PN}-server-snmptrapd = "${sbindir}/snmptrapd \
-                                ${sysconfdir}/snmp/snmptrapd.conf \
-                                ${systemd_unitdir}/system/snmptrapd.service \
-"
-
-FILES:${PN}-lib-netsnmp = "${libdir}/libnetsnmp${SOLIBS}"
-FILES:${PN}-lib-agent = "${libdir}/libnetsnmpagent${SOLIBS}"
-FILES:${PN}-lib-helpers = "${libdir}/libnetsnmphelpers${SOLIBS}"
-FILES:${PN}-lib-mibs = "${libdir}/libnetsnmpmibs${SOLIBS}"
-FILES:${PN}-lib-trapd = "${libdir}/libnetsnmptrapd${SOLIBS}"
-
-FILES:${PN} = ""
-FILES:${PN}-client = "${bindir}/* ${datadir}/snmp/"
-FILES:${PN}-dbg += "${libdir}/.debug/ ${sbindir}/.debug/ ${bindir}/.debug/"
-FILES:${PN}-dev += "${bindir}/mib2c \
-                    ${bindir}/mib2c-update \
-                    ${bindir}/net-snmp-config \
-                    ${bindir}/net-snmp-create-v3-user \
-"
-
-CONFFILES:${PN}-server-snmpd = "${sysconfdir}/snmp/snmpd.conf"
-CONFFILES:${PN}-server-snmptrapd = "${sysconfdir}/snmp/snmptrapd.conf"
-
-INITSCRIPT_PACKAGES = "${PN}-server-snmpd"
-INITSCRIPT_NAME:${PN}-server-snmpd = "snmpd"
-INITSCRIPT_PARAMS:${PN}-server-snmpd = "start 90 2 3 4 5 . stop 60 0 1 6 ."
-
-SYSTEMD_PACKAGES = "${PN}-server-snmpd \
-                    ${PN}-server-snmptrapd"
-
-SYSTEMD_SERVICE:${PN}-server-snmpd = "snmpd.service"
-SYSTEMD_SERVICE:${PN}-server-snmptrapd =  "snmptrapd.service"
-
-RDEPENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'perl', 'net-snmp-perl-modules', '', d)}"
-RDEPENDS:${PN} += "net-snmp-client"
-RDEPENDS:${PN}-server-snmpd += "net-snmp-mibs"
-RDEPENDS:${PN}-server-snmptrapd += "net-snmp-server-snmpd ${PN}-lib-trapd"
-RDEPENDS:${PN}-server += "net-snmp-server-snmpd net-snmp-server-snmptrapd"
-RDEPENDS:${PN}-client += "net-snmp-mibs net-snmp-libs"
-RDEPENDS:${PN}-libs += "libpci \
-                        ${PN}-lib-netsnmp \
-                        ${PN}-lib-agent \
-                        ${PN}-lib-helpers \
-                        ${PN}-lib-mibs \
-"
-RDEPENDS:${PN}-ptest += "perl \
-                         perl-module-test \
-                         perl-module-file-basename \
-                         perl-module-getopt-long \
-                         perl-module-file-temp \
-                         perl-module-data-dumper \
-"
-RDEPENDS:${PN}-dev = "net-snmp-client (= ${EXTENDPKGV}) net-snmp-server (= ${EXTENDPKGV})"
-RRECOMMENDS:${PN}-dbg = "net-snmp-client (= ${EXTENDPKGV}) net-snmp-server (= ${EXTENDPKGV})"
-
-RPROVIDES:${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
-RREPLACES:${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
-RCONFLICTS:${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
-
-RPROVIDES:${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
-RREPLACES:${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
-RCONFLICTS:${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
-
-LEAD_SONAME = "libnetsnmp.so"
-
-MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/net-snmp-config"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb
new file mode 100644
index 0000000..395b02d
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/net-snmp/net-snmp_5.9.4.bb
@@ -0,0 +1,296 @@
+SUMMARY = "Various tools relating to the Simple Network Management Protocol"
+HOMEPAGE = "http://www.net-snmp.org/"
+SECTION = "net"
+LICENSE = "BSD-3-Clause & MIT"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=9d100a395a38584f2ec18a8275261687"
+
+DEPENDS = "openssl"
+DEPENDS:append:class-target = " pciutils"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/net-snmp/net-snmp-${PV}.tar.gz \
+           file://init \
+           file://snmpd.conf \
+           file://snmptrapd.conf \
+           file://snmpd.service \
+           file://snmptrapd.service \
+           file://run-ptest \
+           file://0001-net-snmp-add-knob-whether-nlist.h-are-checked.patch \
+           file://0002-net-snmp-fix-libtool-finish.patch \
+           file://0003-testing-add-the-output-format-for-ptest.patch \
+           file://0004-config_os_headers-Error-Fix.patch \
+           file://0005-snmplib-keytools.c-Don-t-check-for-return-from-EVP_M.patch \
+           file://0006-get_pid_from_inode-Include-limit.h.patch \
+           file://0007-configure-fix-incorrect-variable.patch \
+           file://0008-net-snmp-fix-engineBoots-value-on-SIGHUP.patch \
+           file://0009-net-snmp-fix-for-disable-des.patch \
+           file://0010-net-snmp-Reproducibility-Don-t-check-build-host-for.patch \
+           file://0011-ac_add_search_path.m4-keep-consistent-between-32bit-.patch \
+           file://0012-Fix-configuration-of-NETSNMP_FD_MASK_TYPE.patch \
+           file://0001-Android-Fix-the-build.patch \
+          "
+SRC_URI[sha256sum] = "8b4de01391e74e3c7014beb43961a2d6d6fa03acc34280b9585f4930745b0544"
+
+UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/net-snmp/files/net-snmp/"
+UPSTREAM_CHECK_REGEX = "/net-snmp/(?P<pver>\d+(\.\d+)+)/"
+
+inherit autotools-brokensep update-rc.d siteinfo systemd pkgconfig perlnative ptest multilib_script multilib_header
+
+EXTRA_OEMAKE = "INSTALL_PREFIX=${D} OTHERLDFLAGS='${LDFLAGS}' HOST_CPPFLAGS='${BUILD_CPPFLAGS}'"
+
+PARALLEL_MAKE = ""
+CCACHE = ""
+CLEANBROKEN = "1"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd', d)} des smux"
+PACKAGECONFIG[des] = "--enable-des, --disable-des"
+PACKAGECONFIG[elfutils] = "--with-elf, --without-elf, elfutils"
+PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6"
+PACKAGECONFIG[libnl] = "--with-nl, --without-nl, libnl"
+PACKAGECONFIG[perl] = "--enable-embedded-perl --with-perl-modules=yes, --disable-embedded-perl --with-perl-modules=no, perl"
+PACKAGECONFIG[smux] = ""
+PACKAGECONFIG[systemd] = "--with-systemd, --without-systemd"
+
+EXTRA_OECONF = " \
+    --enable-shared \
+    --disable-manuals \
+    --with-defaults \
+    --with-install-prefix=${D} \
+    --with-persistent-directory=${localstatedir}/lib/net-snmp \
+    --with-endianness=${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'little', 'big', d)} \
+    --with-mib-modules='${MIB_MODULES}' \
+"
+
+MIB_MODULES = ""
+MIB_MODULES:append = " ${@bb.utils.filter('PACKAGECONFIG', 'smux', d)}"
+
+CACHED_CONFIGUREVARS = " \
+    ac_cv_header_valgrind_valgrind_h=no \
+    ac_cv_header_valgrind_memcheck_h=no \
+    ac_cv_ETC_MNTTAB=/etc/mtab \
+    lt_cv_shlibpath_overrides_runpath=yes \
+    ac_cv_path_UNAMEPROG=${base_bindir}/uname \
+    ac_cv_path_PSPROG=${base_bindir}/ps \
+    ac_cv_file__etc_printcap=no \
+    NETSNMP_CONFIGURE_OPTIONS= \
+"
+PERLPROG = "${bindir}/env perl"
+PERLPROG:class-native = "${bindir_native}/env perl"
+PERLPROG:append = "${@bb.utils.contains('PACKAGECONFIG', 'perl', ' -I${WORKDIR}', '', d)}"
+export PERLPROG
+
+HAS_PERL = "${@bb.utils.contains('PACKAGECONFIG', 'perl', '1', '0', d)}"
+
+PTEST_BUILD_HOST_FILES += "net-snmp-config gen-variables"
+
+do_configure:prepend() {
+    sed -i -e "s|I/usr/include|I${STAGING_INCDIR}|g" \
+        "${S}"/configure \
+        "${S}"/configure.d/config_os_libs2
+
+    if [ "${HAS_PERL}" = "1" ]; then
+        # this may need to be changed when package perl has any change.
+        cp -f ${STAGING_DIR_TARGET}/usr/lib*/perl?/*/Config.pm ${WORKDIR}/
+        cp -f ${STAGING_DIR_TARGET}/usr/lib*/perl?/*/*/Config_heavy.pl ${WORKDIR}/
+        sed -e "s@libpth => '/usr/lib.*@libpth => '${STAGING_DIR_TARGET}/${libdir} ${STAGING_DIR_TARGET}/${base_libdir}',@g" \
+            -e "s@privlibexp => '/usr@privlibexp => '${STAGING_DIR_TARGET}/usr@g" \
+            -e "s@scriptdir => '/usr@scriptdir => '${STAGING_DIR_TARGET}/usr@g" \
+            -e "s@sitearchexp => '/usr@sitearchexp => '${STAGING_DIR_TARGET}/usr@g" \
+            -e "s@sitelibexp => '/usr@sitearchexp => '${STAGING_DIR_TARGET}/usr@g" \
+            -e "s@vendorarchexp => '/usr@vendorarchexp => '${STAGING_DIR_TARGET}/usr@g" \
+            -e "s@vendorlibexp => '/usr@vendorlibexp => '${STAGING_DIR_TARGET}/usr@g" \
+            -i ${WORKDIR}/Config.pm
+    fi
+
+}
+
+do_configure:append() {
+    sed -e "s@^NSC_INCLUDEDIR=.*@NSC_INCLUDEDIR=${STAGING_DIR_TARGET}\$\{includedir\}@g" \
+        -e "s@^NSC_LIBDIR=-L.*@NSC_LIBDIR=-L${STAGING_DIR_TARGET}\$\{libdir\}@g" \
+        -e "s@^NSC_LDFLAGS=\"-L.* @NSC_LDFLAGS=\"-L${STAGING_DIR_TARGET}\$\{libdir\} @g" \
+        -i ${B}/net-snmp-config
+}
+
+do_install:append() {
+    install -d ${D}${sysconfdir}/snmp
+    install -d ${D}${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/snmpd
+    install -m 644 ${WORKDIR}/snmpd.conf ${D}${sysconfdir}/snmp/
+    install -m 644 ${WORKDIR}/snmptrapd.conf ${D}${sysconfdir}/snmp/
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/snmpd.service ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/snmptrapd.service ${D}${systemd_unitdir}/system
+    sed -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g" \
+        -i ${D}${bindir}/net-snmp-create-v3-user
+    sed -e 's@^NSC_SRCDIR=.*@NSC_SRCDIR=.@g' \
+        -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*--sysroot=[^ "]*@@g' \
+        -e 's@[^ ]*--with-libtool-sysroot=[^ "]*@@g' \
+        -e 's@[^ ]*--with-install-prefix=[^ "]*@@g' \
+        -e 's@[^ ]*PKG_CONFIG_PATH=[^ "]*@@g' \
+        -e 's@[^ ]*PKG_CONFIG_LIBDIR=[^ "]*@@g' \
+        -i ${D}${bindir}/net-snmp-config
+
+    sed -e 's@[^ ]*-ffile-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fdebug-prefix-map=[^ "]*@@g' \
+        -e 's@[^ ]*-fmacro-prefix-map=[^ "]*@@g' \
+        -i ${D}${libdir}/pkgconfig/netsnmp*.pc
+
+    # ${STAGING_DIR_HOST} is empty for native builds, and the sed command below
+    # will result in errors if run for native.
+    if [ "${STAGING_DIR_HOST}" ]; then
+        sed -e 's@${STAGING_DIR_HOST}@@g' \
+            -i ${D}${bindir}/net-snmp-config ${D}${libdir}/pkgconfig/netsnmp*.pc
+    fi
+
+    sed -e "s@^NSC_INCLUDEDIR=.*@NSC_INCLUDEDIR=\$\{includedir\}@g" \
+        -e "s@^NSC_LIBDIR=-L.*@NSC_LIBDIR=-L\$\{libdir\}@g" \
+        -e "s@^NSC_LDFLAGS=\"-L.* @NSC_LDFLAGS=\"-L\$\{libdir\} @g" \
+        -i ${D}${bindir}/net-snmp-config
+
+    sed -i -e 's:${HOSTTOOLS_DIR}/::g' ${D}${bindir}/net-snmp-create-v3-user
+
+    oe_multilib_header net-snmp/net-snmp-config.h
+
+    if [ "${HAS_PERL}" = "1" ]; then
+        find ${D}${libdir}/ -type f -name "perllocal.pod" | xargs rm -f
+    fi
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+    for i in ${S}/dist ${S}/include ${B}/include ${S}/mibs ${S}/configure \
+        ${B}/net-snmp-config ${S}/testing; do
+        if [ -e "$i" ]; then
+            cp -R --no-dereference --preserve=mode,links -v "$i" ${D}${PTEST_PATH}
+        fi
+    done
+    echo `autoconf -V|awk '/autoconf/{print $NF}'` > ${D}${PTEST_PATH}/dist/autoconf-version
+
+    rmdlist="${D}${PTEST_PATH}/dist/net-snmp-solaris-build"
+    for i in $rmdlist; do
+        if [ -d "$i" ]; then
+            rm -rf "$i"
+        fi
+    done
+}
+
+SYSROOT_PREPROCESS_FUNCS += "net_snmp_sysroot_preprocess"
+SNMP_DBGDIR = "${TARGET_DBGSRC_DIR}"
+
+net_snmp_sysroot_preprocess () {
+    if [ -e ${D}${bindir}/net-snmp-config ]; then
+        install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+        install -m 755 ${D}${bindir}/net-snmp-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+        sed -e "s@-I/usr/include@-I${STAGING_INCDIR}@g" \
+            -e "s@^prefix=.*@prefix=${STAGING_DIR_HOST}${prefix}@g" \
+            -e "s@^exec_prefix=.*@exec_prefix=${STAGING_EXECPREFIXDIR}@g" \
+            -e "s@^includedir=.*@includedir=${STAGING_INCDIR}@g" \
+            -e "s@^libdir=.*@libdir=${STAGING_LIBDIR}@g" \
+            -e "s@^NSC_SRCDIR=.*@NSC_SRCDIR=${S}@g" \
+            -e "s@-ffile-prefix-map=${SNMP_DBGDIR}@-ffile-prefix-map=${WORKDIR}=${SNMP_DBGDIR}@g" \
+            -e "s@-fdebug-prefix-map=${SNMP_DBGDIR}@-fdebug-prefix-map=${WORKDIR}=${SNMP_DBGDIR}@g" \
+            -e "s@-fdebug-prefix-map= -fdebug-prefix-map=@-fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
+                  -fdebug-prefix-map=${STAGING_DIR_HOST}=@g" \
+            -e "s@--sysroot=@--sysroot=${STAGING_DIR_HOST}@g" \
+            -e "s@--with-libtool-sysroot=@--with-libtool-sysroot=${STAGING_DIR_HOST}@g" \
+            -e "s@--with-install-prefix=@--with-install-prefix=${D}@g" \
+          -i  ${SYSROOT_DESTDIR}${bindir_crossscripts}/net-snmp-config
+    fi
+}
+
+PACKAGES += "${PN}-libs ${PN}-mibs ${PN}-server ${PN}-client \
+             ${PN}-server-snmpd ${PN}-server-snmptrapd \
+             ${PN}-lib-netsnmp ${PN}-lib-agent ${PN}-lib-helpers \
+             ${PN}-lib-mibs ${PN}-lib-trapd"
+
+# perl module
+PACKAGES += "${@bb.utils.contains('PACKAGECONFIG', 'perl', '${PN}-perl-modules', '', d)}"
+
+ALLOW_EMPTY:${PN} = "1"
+ALLOW_EMPTY:${PN}-server = "1"
+ALLOW_EMPTY:${PN}-libs = "1"
+
+FILES:${PN}-perl-modules = "${libdir}/perl?/*"
+RDEPENDS:${PN}-perl-modules = "perl"
+
+FILES:${PN}-libs = ""
+FILES:${PN}-mibs = "${datadir}/snmp/mibs"
+FILES:${PN}-server-snmpd = "${sbindir}/snmpd \
+                            ${sysconfdir}/snmp/snmpd.conf \
+                            ${sysconfdir}/init.d \
+                            ${systemd_unitdir}/system/snmpd.service \
+"
+
+FILES:${PN}-server-snmptrapd = "${sbindir}/snmptrapd \
+                                ${sysconfdir}/snmp/snmptrapd.conf \
+                                ${systemd_unitdir}/system/snmptrapd.service \
+"
+
+FILES:${PN}-lib-netsnmp = "${libdir}/libnetsnmp${SOLIBS}"
+FILES:${PN}-lib-agent = "${libdir}/libnetsnmpagent${SOLIBS}"
+FILES:${PN}-lib-helpers = "${libdir}/libnetsnmphelpers${SOLIBS}"
+FILES:${PN}-lib-mibs = "${libdir}/libnetsnmpmibs${SOLIBS}"
+FILES:${PN}-lib-trapd = "${libdir}/libnetsnmptrapd${SOLIBS}"
+
+FILES:${PN} = ""
+FILES:${PN}-client = "${bindir}/* ${datadir}/snmp/"
+FILES:${PN}-dbg += "${libdir}/.debug/ ${sbindir}/.debug/ ${bindir}/.debug/"
+FILES:${PN}-dev += "${bindir}/mib2c \
+                    ${bindir}/mib2c-update \
+                    ${bindir}/net-snmp-config \
+                    ${bindir}/net-snmp-create-v3-user \
+"
+
+CONFFILES:${PN}-server-snmpd = "${sysconfdir}/snmp/snmpd.conf"
+CONFFILES:${PN}-server-snmptrapd = "${sysconfdir}/snmp/snmptrapd.conf"
+
+INITSCRIPT_PACKAGES = "${PN}-server-snmpd"
+INITSCRIPT_NAME:${PN}-server-snmpd = "snmpd"
+INITSCRIPT_PARAMS:${PN}-server-snmpd = "start 90 2 3 4 5 . stop 60 0 1 6 ."
+
+SYSTEMD_PACKAGES = "${PN}-server-snmpd \
+                    ${PN}-server-snmptrapd"
+
+SYSTEMD_SERVICE:${PN}-server-snmpd = "snmpd.service"
+SYSTEMD_SERVICE:${PN}-server-snmptrapd =  "snmptrapd.service"
+
+RDEPENDS:${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'perl', 'net-snmp-perl-modules', '', d)}"
+RDEPENDS:${PN} += "net-snmp-client"
+RDEPENDS:${PN}-server-snmpd += "net-snmp-mibs"
+RDEPENDS:${PN}-server-snmptrapd += "net-snmp-server-snmpd ${PN}-lib-trapd"
+RDEPENDS:${PN}-server += "net-snmp-server-snmpd net-snmp-server-snmptrapd"
+RDEPENDS:${PN}-client += "net-snmp-mibs net-snmp-libs"
+RDEPENDS:${PN}-libs += "libpci \
+                        ${PN}-lib-netsnmp \
+                        ${PN}-lib-agent \
+                        ${PN}-lib-helpers \
+                        ${PN}-lib-mibs \
+"
+RDEPENDS:${PN}-ptest += "perl \
+                         perl-module-test \
+                         perl-module-file-basename \
+                         perl-module-getopt-long \
+                         perl-module-file-temp \
+                         perl-module-data-dumper \
+"
+RDEPENDS:${PN}-dev = "net-snmp-client (= ${EXTENDPKGV}) net-snmp-server (= ${EXTENDPKGV})"
+RRECOMMENDS:${PN}-dbg = "net-snmp-client (= ${EXTENDPKGV}) net-snmp-server (= ${EXTENDPKGV})"
+
+RPROVIDES:${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
+RREPLACES:${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
+RCONFLICTS:${PN}-server-snmpd += "${PN}-server-snmpd-systemd"
+
+RPROVIDES:${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
+RREPLACES:${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
+RCONFLICTS:${PN}-server-snmptrapd += "${PN}-server-snmptrapd-systemd"
+
+LEAD_SONAME = "libnetsnmp.so"
+
+MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/net-snmp-config"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
deleted file mode 100644
index 7b404f5..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow.inc
+++ /dev/null
@@ -1,60 +0,0 @@
-SUMMARY = "OpenFlow communications protocol"
-DESCRIPTION = "\
-Open standard that enables researchers to run experimental protocols in \
-contained networks.  OpenFlow is a communications interface between \
-control and forwarding planes of a software-defined networking architecture.\
-"
-HOMEPAGE = "http://www.openflow.org"
-
-SECTION = "net"
-LICENSE = "GPL-2.0-only"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=e870c934e2c3d6ccf085fd7cf0a1e2e2"
-
-SRC_URI = "git://github.com/mininet/openflow;protocol=https;branch=master"
-
-CVE_STATUS[CVE-2015-1611] = "not-applicable-config: Not referred to our implementation of openflow"
-CVE_STATUS[CVE-2015-1612] = "not-applicable-config: Not referred to our implementation of openflow"
-CVE_STATUS[CVE-2018-1078] = "cpe-incorrect: This CVE is not for this product but cve-check assumes it is \
-because two CPE collides when checking the NVD database"
-
-DEPENDS = "virtual/libc"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[openssl] = "--enable-ssl,--disable-ssl, openssl openssl-native, libssl"
-
-EXTRA_OECONF += " \
-                 KARCH=${TARGET_ARCH} \
-                 ${@bb.utils.contains('PACKAGECONFIG', 'openssl', 'SSL_LIBS="-lssl -lcrypto"', '', d)} \
-                "
-
-S = "${WORKDIR}/git"
-
-inherit autotools-brokensep pkgconfig
-
-do_configure:prepend() {
-    ./boot.sh
-}
-
-do_install:append() {
-    # Remove /var/run as it is created on startup
-    rm -rf ${D}${localstatedir}/run
-
-    # /var/log/openflow needs to be created in runtime. Use rmdir to catch if
-    # upstream stops creating /var/log/openflow, or adds something else in
-    # /var/log.
-    rmdir ${D}${localstatedir}/log/${BPN} ${D}${localstatedir}/log
-    rmdir --ignore-fail-on-non-empty ${D}${localstatedir}
-
-    # Create /var/log/openflow in runtime.
-    if [ "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" ]; then
-        install -d ${D}${nonarch_libdir}/tmpfiles.d
-        echo "d ${localstatedir}/log/${BPN} - - - -" > ${D}${nonarch_libdir}/tmpfiles.d/${BPN}.conf
-    fi
-    if [ "${@bb.utils.filter('DISTRO_FEATURES', 'sysvinit', d)}" ]; then
-        install -d ${D}${sysconfdir}/default/volatiles
-        echo "d root root 0755 ${localstatedir}/log/${BPN} none" > ${D}${sysconfdir}/default/volatiles/99_${BPN}
-    fi
-}
-
-FILES:${PN} += "${nonarch_libdir}/tmpfiles.d"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_1.0.bb b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_1.0.bb
deleted file mode 100644
index a7e254d..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_1.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
-include ${BPN}.inc
-
-SRCREV = "5ccca75a69f99791659bcfbcf35353ab1921320a"
-PV = "1.0"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_git.bb b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_git.bb
index c86c811..41bedcd 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_git.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/openflow/openflow_git.bb
@@ -1,11 +1,70 @@
-include ${BPN}.inc
+SUMMARY = "OpenFlow communications protocol"
+DESCRIPTION = "\
+Open standard that enables researchers to run experimental protocols in \
+contained networks.  OpenFlow is a communications interface between \
+control and forwarding planes of a software-defined networking architecture.\
+"
+HOMEPAGE = "http://www.openflow.org"
+
+SECTION = "net"
+LICENSE = "GPL-2.0-only"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e870c934e2c3d6ccf085fd7cf0a1e2e2"
 
 SRCREV = "82ad07d997b0b2ee70e1b2c7e82fcc6d0ccf23ea"
+
 PV = "1.0+git"
 
-SRC_URI += "file://0001-Check-and-use-strlcpy-from-libc-before-defining-own.patch \
+SRC_URI = "git://github.com/mininet/openflow;protocol=https;branch=master \
+           file://0001-Check-and-use-strlcpy-from-libc-before-defining-own.patch \
            file://0002-lib-netdev-Adjust-header-include-sequence.patch \
            file://0001-generate-not-static-get_dh-functions.patch \
            file://0001-socket-util-Include-sys-stat.h-for-fchmod.patch \
            file://0001-Makefile.am-Specify-export-dynamic-directly-to-linke.patch \
-           "
+"
+CVE_STATUS[CVE-2015-1611] = "not-applicable-config: Not referred to our implementation of openflow"
+CVE_STATUS[CVE-2015-1612] = "not-applicable-config: Not referred to our implementation of openflow"
+CVE_STATUS[CVE-2018-1078] = "cpe-incorrect: This CVE is not for this product but cve-check assumes it is \
+because two CPE collides when checking the NVD database"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[openssl] = "--enable-ssl,--disable-ssl, openssl openssl-native, libssl"
+
+EXTRA_OECONF += " \
+                 KARCH=${TARGET_ARCH} \
+                 ${@bb.utils.contains('PACKAGECONFIG', 'openssl', 'SSL_LIBS="-lssl -lcrypto"', '', d)} \
+                "
+
+DEPENDS:append:libc-musl = " libexecinfo"
+LDFLAGS:append:libc-musl = " -lexecinfo"
+
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig
+
+do_configure:prepend() {
+    ./boot.sh
+}
+
+do_install:append() {
+    # Remove /var/run as it is created on startup
+    rm -rf ${D}${localstatedir}/run
+
+    # /var/log/openflow needs to be created in runtime. Use rmdir to catch if
+    # upstream stops creating /var/log/openflow, or adds something else in
+    # /var/log.
+    rmdir ${D}${localstatedir}/log/${BPN} ${D}${localstatedir}/log
+    rmdir --ignore-fail-on-non-empty ${D}${localstatedir}
+
+    # Create /var/log/openflow in runtime.
+    if [ "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" ]; then
+        install -d ${D}${nonarch_libdir}/tmpfiles.d
+        echo "d ${localstatedir}/log/${BPN} - - - -" > ${D}${nonarch_libdir}/tmpfiles.d/${BPN}.conf
+    fi
+    if [ "${@bb.utils.filter('DISTRO_FEATURES', 'sysvinit', d)}" ]; then
+        install -d ${D}${sysconfdir}/default/volatiles
+        echo "d root root 0755 ${localstatedir}/log/${BPN} none" > ${D}${sysconfdir}/default/volatiles/99_${BPN}
+    fi
+}
+
+FILES:${PN} += "${nonarch_libdir}/tmpfiles.d"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openlldp/files/0001-autotools-Add-option-to-disable-installation-of-syst.patch b/meta-openembedded/meta-networking/recipes-protocols/openlldp/files/0001-autotools-Add-option-to-disable-installation-of-syst.patch
index 98ecd38..b1d746f 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/openlldp/files/0001-autotools-Add-option-to-disable-installation-of-syst.patch
+++ b/meta-openembedded/meta-networking/recipes-protocols/openlldp/files/0001-autotools-Add-option-to-disable-installation-of-syst.patch
@@ -1,4 +1,4 @@
-From dc3f2250908587710f109c80ddf8a94f0bc40b82 Mon Sep 17 00:00:00 2001
+From 7147add9fedfb28909639ae419f995041d086266 Mon Sep 17 00:00:00 2001
 From: Jonathan Richardson <jonathan.richardson@broadcom.com>
 Date: Fri, 6 Apr 2018 10:49:04 -0700
 Subject: [PATCH] autotools: Add option to disable installation of systemd conf
@@ -23,10 +23,10 @@
  2 files changed, 11 insertions(+), 1 deletion(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index 292c0fd..0fb9bb0 100644
+index 86174e9..e90e966 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -138,8 +138,9 @@ install-data-hook:	installdirs-local
+@@ -141,8 +141,9 @@ install-data-hook:	installdirs-local
  pkgconfigdir = ${libdir}/pkgconfig
  pkgconfig_DATA = lldpad.pc liblldp_clif.pc
  
@@ -38,10 +38,10 @@
  bashcompletiondir = $(sysconfdir)/bash_completion.d
  dist_bashcompletion_DATA = contrib/bash_completion/lldpad contrib/bash_completion/lldptool
 diff --git a/configure.ac b/configure.ac
-index 0667446..f75f433 100644
+index fa2f3a0..1a038cd 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -95,6 +95,15 @@ AC_TYPE_UINT16_T
+@@ -132,6 +132,15 @@ AC_TYPE_UINT16_T
  AC_TYPE_UINT32_T
  AC_TYPE_UINT8_T
  
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.1.0.bb b/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.1.0.bb
deleted file mode 100644
index 71d738d..0000000
--- a/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.1.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Open-LLDP"
-DESCRIPTION = "Link Layer Discovery Protocol for Linux that includes support for DCBX"
-HOMEPAGE = "http://open-lldp.org/start"
-
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8c2bc283e65df398ced5f5b747e78162"
-
-S = "${WORKDIR}/git"
-
-inherit pkgconfig autotools
-inherit ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}
-
-DEPENDS = "libnl libconfig readline"
-
-SRCREV = "85e55837a81d710e5baa7da47f7ed0d205c8ede5"
-PV .= "+git"
-SRC_URI = "git://github.com/intel/openlldp.git;protocol=https;branch=branch-1.1 \
-           file://0001-Fix-musl-libc-build-issue.patch \
-           file://0001-autotools-Add-include-path-to-generated-version.h.patch \
-           file://0001-autotools-Add-option-to-disable-installation-of-syst.patch \
-           file://0004-clif-Include-string.h-for-mem-function-prototypes.patch \
-           "
-
-# Enable install of systemd conf files.
-EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_system_unitdir}', '', d)}"
-
-SYSTEMD_SERVICE:${PN} = "lldpad.service lldpad.socket"
-
-# To enable service at boot set to enable in local.conf.
-SYSTEMD_AUTO_ENABLE ?= "disable"
-
-RRECOMMENDS:${PN} = "iproute2-tc"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.1.1.bb b/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.1.1.bb
new file mode 100644
index 0000000..010cd5a
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-protocols/openlldp/openlldp_1.1.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "Open-LLDP"
+DESCRIPTION = "Link Layer Discovery Protocol for Linux that includes support for DCBX"
+HOMEPAGE = "http://open-lldp.org/start"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8c2bc283e65df398ced5f5b747e78162"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig autotools
+inherit ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}
+
+DEPENDS = "libnl libconfig readline"
+
+SRCREV = "f1dd9eb961fab06723d2bedb2f7e2b81e45ee9ab"
+PV .= "+git"
+SRC_URI = "git://github.com/intel/openlldp.git;protocol=https;branch=branch-1.1 \
+           file://0001-Fix-musl-libc-build-issue.patch \
+           file://0001-autotools-Add-include-path-to-generated-version.h.patch \
+           file://0001-autotools-Add-option-to-disable-installation-of-syst.patch \
+           file://0004-clif-Include-string.h-for-mem-function-prototypes.patch \
+           "
+
+# Enable install of systemd conf files.
+EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_system_unitdir}', '', d)}"
+
+SYSTEMD_SERVICE:${PN} = "lldpad.service lldpad.socket"
+
+# To enable service at boot set to enable in local.conf.
+SYSTEMD_AUTO_ENABLE ?= "disable"
+
+RRECOMMENDS:${PN} = "iproute2-tc"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.15.bb b/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.15.bb
index c19f7d8..4dfdb8f 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.15.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/rp-pppoe/rp-pppoe_3.15.bb
@@ -4,7 +4,6 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://doc/LICENSE;md5=a194eaefae2be54ee3221339b10d0581"
 
-PR = "r11"
 
 SRC_URI = "https://dianne.skoll.ca/projects/rp-pppoe/download/OLD/rp-pppoe-${PV}.tar.gz \
            file://top-autoconf.patch \
diff --git a/meta-openembedded/meta-networking/recipes-protocols/usrsctp/usrsctp_git.bb b/meta-openembedded/meta-networking/recipes-protocols/usrsctp/usrsctp_git.bb
index 38fb46f..4c18c6a 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/usrsctp/usrsctp_git.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/usrsctp/usrsctp_git.bb
@@ -2,7 +2,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ffcf846341f3856d79a483eafa18e2a5"
 
-SRCREV = "a0cbf4681474fab1e89d9e9e2d5c3694fce50359"
+SRCREV = "848eca82f92273af9a79687a90343a2ebcf3481d"
 SRC_URI = "git://github.com/sctplab/usrsctp;protocol=https;branch=master \
           "
 
@@ -24,4 +24,4 @@
 
 EXTRA_OECONF += "--disable-debug"
 
-CVE_VERSION = "0.9.3.0"
+CVE_VERSION = "0.9.5.0"
diff --git a/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb b/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
index c53d1b8..61f6b79 100644
--- a/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
+++ b/meta-openembedded/meta-networking/recipes-protocols/zeroconf/zeroconf_0.9.bb
@@ -13,7 +13,6 @@
                     file://zeroconf.c;beginline=1;endline=13;md5=a5bada96e1e34b08eb7446b28e2630b2"
 SECTION = "net"
 
-PR = "r1"
 
 SRC_URI = "http://www.progsoc.org/~wildfire/zeroconf/download/${BPN}-${PV}.tar.gz \
            file://compilefix.patch \
diff --git a/meta-openembedded/meta-networking/recipes-support/dropwatch/dropwatch/0001-fix-bug-build-with-sysroot-head-file-instead-of-loca.patch b/meta-openembedded/meta-networking/recipes-support/dropwatch/dropwatch/0001-fix-bug-build-with-sysroot-head-file-instead-of-loca.patch
index 33b72e0..d0baceb 100755
--- a/meta-openembedded/meta-networking/recipes-support/dropwatch/dropwatch/0001-fix-bug-build-with-sysroot-head-file-instead-of-loca.patch
+++ b/meta-openembedded/meta-networking/recipes-support/dropwatch/dropwatch/0001-fix-bug-build-with-sysroot-head-file-instead-of-loca.patch
@@ -5,6 +5,8 @@
  file:net_dropmon.h
 
 Signed-off-by: chenheyun <chen_heyun@163.com>
+
+Upstream-Status: Pending
 ---
  src/main.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.37.bb b/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.37.bb
deleted file mode 100644
index 4560ef8..0000000
--- a/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.37.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Fetchmail retrieves mail from remote mail servers and forwards it via SMTP"
-HOMEPAGE = "http://www.fetchmail.info/"
-DESCRIPTION = "Fetchmail is a full-featured, robust, well-documented remote-mail retrieval \
-and forwarding utility intended to be used over on-demand TCP/IP links (such as SLIP or PPP \
-connections). It supports every remote-mail protocol now in use on the Internet: POP2, POP3, \
-RPOP, APOP, KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6 and IPSEC."
-SECTION = "mail"
-LICENSE = "GPL-2.0-only & MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=ee6b9f41d9324434dd11bd8a38f1b044"
-
-DEPENDS = "openssl"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz \
-           "
-SRC_URI[sha256sum] = "4a182e5d893e9abe6ac37ae71e542651fce6d606234fc735c2aaae18657e69ea"
-
-inherit autotools gettext pkgconfig python3-dir python3native
-
-EXTRA_OECONF = "--with-ssl=${STAGING_DIR_HOST}${prefix}"
-
-do_install:append() {
-    sed -i 's,${RECIPE_SYSROOT_NATIVE},,g' ${D}${bindir}/fetchmailconf
-}
-
-PACKAGES =+ "fetchmail-python"
-FILES:fetchmail-python = "${libdir}/${PYTHON_DIR}/*"
diff --git a/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.38.bb b/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.38.bb
new file mode 100644
index 0000000..587a479
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/fetchmail/fetchmail_6.4.38.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Fetchmail retrieves mail from remote mail servers and forwards it via SMTP"
+HOMEPAGE = "http://www.fetchmail.info/"
+DESCRIPTION = "Fetchmail is a full-featured, robust, well-documented remote-mail retrieval \
+and forwarding utility intended to be used over on-demand TCP/IP links (such as SLIP or PPP \
+connections). It supports every remote-mail protocol now in use on the Internet: POP2, POP3, \
+RPOP, APOP, KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6 and IPSEC."
+SECTION = "mail"
+LICENSE = "GPL-2.0-only & MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ee6b9f41d9324434dd11bd8a38f1b044"
+
+DEPENDS = "openssl"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.xz \
+           "
+SRC_URI[sha256sum] = "a6cb4ea863ac61d242ffb2db564a39123761578d3e40d71ce7b6f2905be609d9"
+
+inherit autotools gettext pkgconfig python3-dir python3native
+
+EXTRA_OECONF = "--with-ssl=${STAGING_DIR_HOST}${prefix}"
+
+do_install:append() {
+    sed -i 's,${RECIPE_SYSROOT_NATIVE},,g' ${D}${bindir}/fetchmailconf
+}
+
+PACKAGES =+ "fetchmail-python"
+FILES:fetchmail-python = "${libdir}/${PYTHON_DIR}/*"
diff --git a/meta-openembedded/meta-networking/recipes-support/libcpr/libcpr_1.10.5.bb b/meta-openembedded/meta-networking/recipes-support/libcpr/libcpr_1.10.5.bb
new file mode 100644
index 0000000..93fdb78
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/libcpr/libcpr_1.10.5.bb
@@ -0,0 +1,24 @@
+SUMMARY = "Curl for People - C++ Requests"
+DESCRIPTION = "Curl for People C++ Requests is a simple wrapper around \
+    libcurl inspired by the excellent Python Requests project."
+HOMEPAGE = "https://docs.libcpr.org/"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=08beaae5deae1c43c065592da8f38095"
+
+DEPENDS = "curl openssl"
+
+SRC_URI = "git://github.com/libcpr/cpr.git;protocol=https;branch=1.10.x"
+SRCREV = "3b15fa82ea74739b574d705fea44959b58142eb8"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+# building tests is currently using FetchContent for mongoose
+EXTRA_OECMAKE += "\
+    -DCPR_USE_SYSTEM_CURL=ON \
+    -DCPR_BUILD_TESTS=OFF \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc/0001-talloc-Add-configure-options-for-packages.patch b/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc/0001-talloc-Add-configure-options-for-packages.patch
index 45d847c..6c92beb 100644
--- a/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc/0001-talloc-Add-configure-options-for-packages.patch
+++ b/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc/0001-talloc-Add-configure-options-for-packages.patch
@@ -24,13 +24,16 @@
 Rebase to 2.4.1
 Remove libaio option
 Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+
+Rebase to 2.4.2
+Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
 ---
- lib/replace/wscript | 78 +++++++++++++++++++++++++++++++++------------
- wscript             |  7 +++-
- 2 files changed, 64 insertions(+), 21 deletions(-)
+ lib/replace/wscript | 100 ++++++++++++++++++++++++++++++--------------
+ wscript             |   7 +++-
+ 2 files changed, 75 insertions(+), 32 deletions(-)
 
 diff --git a/lib/replace/wscript b/lib/replace/wscript
-index 199e636..3593eaf 100644
+index 77e655b..2fd7dfb 100644
 --- a/lib/replace/wscript
 +++ b/lib/replace/wscript
 @@ -25,6 +25,34 @@ def options(opt):
@@ -112,7 +115,7 @@
      conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h')
      conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h')
      conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h')
-@@ -443,20 +481,20 @@ def configure(conf):
+@@ -443,31 +481,31 @@ def configure(conf):
  
      strlcpy_in_bsd = False
  
@@ -121,6 +124,17 @@
 -        if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h',
 -                               checklibc=True):
 -            strlcpy_in_bsd = True
+-    elif conf.env.enable_fuzzing:
+-        # Just to complicate it more, some versions of Honggfuzz have
+-        # got strlcpy and strlcat in libc, but not in <string.h>
+-        # (unless it is there coincidentally, on a BSD). Therefore we
+-        # can't use CHECK_FUNCS alone to decide whether to add the
+-        # headers to replace.h.
+-        #
+-        # As this is only known to happen on a fuzzing compiler, we'll
+-        # skip the check when not in fuzzing mode.
+-        conf.CHECK_HEADERS('bsd/string.h')
+-
 -    if not conf.CHECK_FUNCS('getpeereid'):
 -        conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h')
 -    if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'):
@@ -136,6 +150,17 @@
 +            if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h',
 +                checklibc=True):
 +                strlcpy_in_bsd = True
++        elif conf.env.enable_fuzzing:
++            # Just to complicate it more, some versions of Honggfuzz have
++            # got strlcpy and strlcat in libc, but not in <string.h>
++            # (unless it is there coincidentally, on a BSD). Therefore we
++            # can't use CHECK_FUNCS alone to decide whether to add the
++            # headers to replace.h.
++            #
++            # As this is only known to happen on a fuzzing compiler, we'll
++            # skip the check when not in fuzzing mode.
++            conf.CHECK_HEADERS('bsd/string.h')
++
 +        if not conf.CHECK_FUNCS('getpeereid'):
 +            conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h')
 +        if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'):
@@ -148,7 +173,7 @@
      conf.CHECK_CODE('''
                  struct ucred cred;
 diff --git a/wscript b/wscript
-index 075f1ec..6b4f273 100644
+index 8b5e02d..b6e2614 100644
 --- a/wscript
 +++ b/wscript
 @@ -31,7 +31,12 @@ def options(opt):
@@ -166,5 +191,5 @@
  def configure(conf):
      conf.RECURSE('lib/replace')
 -- 
-2.25.1
+2.34.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.4.1.bb b/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.4.1.bb
deleted file mode 100644
index 92da03e..0000000
--- a/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.4.1.bb
+++ /dev/null
@@ -1,61 +0,0 @@
-SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
-HOMEPAGE = "https://talloc.samba.org"
-SECTION = "libs"
-LICENSE = "LGPL-3.0-or-later & GPL-3.0-or-later"
-LIC_FILES_CHKSUM = "file://talloc.h;beginline=3;endline=27;md5=a301712782cad6dd6d5228bfa7825249 \
-                    file://pytalloc.h;beginline=1;endline=18;md5=21ab13bd853679d7d47a1739cb3b7db6 \
-                    "
-
-export PYTHONHASHSEED="1"
-export PYTHONARCHDIR = "${PYTHON_SITEPACKAGES_DIR}"
-
-SRC_URI = "https://www.samba.org/ftp/talloc/talloc-${PV}.tar.gz \
-           file://0001-talloc-Add-configure-options-for-packages.patch \
-           file://0002-Fix-pyext_PATTERN-for-cross-compilation.patch \
-           file://run-ptest \
-"
-SRC_URI[sha256sum] = "410a547f08557007be0e88194f218868358edc0ab98c98ba8c167930db3d33f9"
-
-inherit waf-samba pkgconfig ptest
-
-PACKAGECONFIG ??= "\
-    ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
-"
-PACKAGECONFIG[acl] = "--with-acl,--without-acl,acl"
-PACKAGECONFIG[attr] = "--with-attr,--without-attr,attr"
-PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd"
-PACKAGECONFIG[libcap] = "--with-libcap,--without-libcap,libcap"
-PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
-
-SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'attr', '', 'file://avoid-attr-unless-wanted.patch', d)}"
-
-S = "${WORKDIR}/talloc-${PV}"
-
-# Cross_compile cannot use preforked process, since fork process earlier than point subproces.popen
-# to cross Popen
-export WAF_NO_PREFORK="yes"
-
-EXTRA_OECONF += "--disable-rpath \
-                 --disable-rpath-install \
-                 --bundled-libraries=NONE \
-                 --builtin-libraries=replace \
-                 --disable-silent-rules \
-                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
-                "
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    install -m 0755 ${B}/bin/*_testsuite ${D}${PTEST_PATH}/tests/
-}
-
-PACKAGES += "pytalloc pytalloc-dev"
-
-RPROVIDES:${PN}-dbg += "pytalloc-dbg"
-
-FILES:pytalloc = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/* \
-                  ${libdir}/libpytalloc-util.so.2 \
-                  ${libdir}/libpytalloc-util.so.2.1.1 \
-                 "
-FILES:pytalloc-dev = "${libdir}/libpytalloc-util.so"
-RDEPENDS:pytalloc = "python3"
diff --git a/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.4.2.bb b/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.4.2.bb
new file mode 100644
index 0000000..394c176
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/libtalloc/libtalloc_2.4.2.bb
@@ -0,0 +1,61 @@
+SUMMARY = "Hierarchical, reference counted memory pool system with destructors"
+HOMEPAGE = "https://talloc.samba.org"
+SECTION = "libs"
+LICENSE = "LGPL-3.0-or-later & GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://talloc.h;beginline=3;endline=27;md5=a301712782cad6dd6d5228bfa7825249 \
+                    file://pytalloc.h;beginline=1;endline=18;md5=21ab13bd853679d7d47a1739cb3b7db6 \
+                    "
+
+export PYTHONHASHSEED="1"
+export PYTHONARCHDIR = "${PYTHON_SITEPACKAGES_DIR}"
+
+SRC_URI = "https://www.samba.org/ftp/talloc/talloc-${PV}.tar.gz \
+           file://0001-talloc-Add-configure-options-for-packages.patch \
+           file://0002-Fix-pyext_PATTERN-for-cross-compilation.patch \
+           file://run-ptest \
+"
+SRC_URI[sha256sum] = "85ecf9e465e20f98f9950a52e9a411e14320bc555fa257d87697b7e7a9b1d8a6"
+
+inherit waf-samba pkgconfig ptest
+
+PACKAGECONFIG ??= "\
+    ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
+"
+PACKAGECONFIG[acl] = "--with-acl,--without-acl,acl"
+PACKAGECONFIG[attr] = "--with-attr,--without-attr,attr"
+PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd"
+PACKAGECONFIG[libcap] = "--with-libcap,--without-libcap,libcap"
+PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
+
+SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'attr', '', 'file://avoid-attr-unless-wanted.patch', d)}"
+
+S = "${WORKDIR}/talloc-${PV}"
+
+# Cross_compile cannot use preforked process, since fork process earlier than point subproces.popen
+# to cross Popen
+export WAF_NO_PREFORK="yes"
+
+EXTRA_OECONF += "--disable-rpath \
+                 --disable-rpath-install \
+                 --bundled-libraries=NONE \
+                 --builtin-libraries=replace \
+                 --disable-silent-rules \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
+                "
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    install -m 0755 ${B}/bin/*_testsuite ${D}${PTEST_PATH}/tests/
+}
+
+PACKAGES += "pytalloc pytalloc-dev"
+
+RPROVIDES:${PN}-dbg += "pytalloc-dbg"
+
+FILES:pytalloc = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/* \
+                  ${libdir}/libpytalloc-util.so.2 \
+                  ${libdir}/libpytalloc-util.so.2.1.1 \
+                 "
+FILES:pytalloc-dev = "${libdir}/libpytalloc-util.so"
+RDEPENDS:pytalloc = "python3"
diff --git a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb/0001-tdb-Add-configure-options-for-packages.patch b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb/0001-tdb-Add-configure-options-for-packages.patch
index 477b1ce..5c811c4 100644
--- a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb/0001-tdb-Add-configure-options-for-packages.patch
+++ b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb/0001-tdb-Add-configure-options-for-packages.patch
@@ -21,13 +21,16 @@
 Rebase to 1.4.9
 Remove libaio option
 Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+
+Rebase to 1.4.10
+Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
 ---
- lib/replace/wscript | 79 +++++++++++++++++++++++++++++++++------------
- wscript             |  6 ++++
- 2 files changed, 65 insertions(+), 20 deletions(-)
+ lib/replace/wscript | 101 ++++++++++++++++++++++++++++++--------------
+ wscript             |   6 +++
+ 2 files changed, 76 insertions(+), 31 deletions(-)
 
 diff --git a/lib/replace/wscript b/lib/replace/wscript
-index 199e636..cb13b62 100644
+index 77e655b..e6d50b3 100644
 --- a/lib/replace/wscript
 +++ b/lib/replace/wscript
 @@ -25,6 +25,34 @@ def options(opt):
@@ -103,7 +106,7 @@
      conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h')
      conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h')
      conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h')
-@@ -443,20 +481,21 @@ def configure(conf):
+@@ -443,31 +481,32 @@ def configure(conf):
  
      strlcpy_in_bsd = False
  
@@ -112,6 +115,17 @@
 -        if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h',
 -                               checklibc=True):
 -            strlcpy_in_bsd = True
+-    elif conf.env.enable_fuzzing:
+-        # Just to complicate it more, some versions of Honggfuzz have
+-        # got strlcpy and strlcat in libc, but not in <string.h>
+-        # (unless it is there coincidentally, on a BSD). Therefore we
+-        # can't use CHECK_FUNCS alone to decide whether to add the
+-        # headers to replace.h.
+-        #
+-        # As this is only known to happen on a fuzzing compiler, we'll
+-        # skip the check when not in fuzzing mode.
+-        conf.CHECK_HEADERS('bsd/string.h')
+-
 -    if not conf.CHECK_FUNCS('getpeereid'):
 -        conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h')
 -    if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'):
@@ -127,6 +141,17 @@
 +            if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h',
 +                                   checklibc=True):
 +                strlcpy_in_bsd = True
++        elif conf.env.enable_fuzzing:
++            # Just to complicate it more, some versions of Honggfuzz have
++            # got strlcpy and strlcat in libc, but not in <string.h>
++            # (unless it is there coincidentally, on a BSD). Therefore we
++            # can't use CHECK_FUNCS alone to decide whether to add the
++            # headers to replace.h.
++            #
++            # As this is only known to happen on a fuzzing compiler, we'll
++            # skip the check when not in fuzzing mode.
++            conf.CHECK_HEADERS('bsd/string.h')
++
 +        if not conf.CHECK_FUNCS('getpeereid'):
 +            conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h')
 +        if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'):
@@ -140,7 +165,7 @@
      conf.CHECK_CODE('''
                  struct ucred cred;
 diff --git a/wscript b/wscript
-index 5e6a928..5443b43 100644
+index 2c587fb..b2164b2 100644
 --- a/wscript
 +++ b/wscript
 @@ -69,6 +69,12 @@ def options(opt):
@@ -157,5 +182,5 @@
  def configure(conf):
      conf.env.disable_tdb_mutex_locking = getattr(Options.options,
 -- 
-2.25.1
+2.34.1
 
diff --git a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.10.bb b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.10.bb
new file mode 100644
index 0000000..f23b157
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.10.bb
@@ -0,0 +1,63 @@
+SUMMARY = "The tdb library"
+HOMEPAGE = "https://tdb.samba.org/"
+SECTION = "libs"
+LICENSE = "LGPL-3.0-or-later & GPL-3.0-or-later"
+
+LIC_FILES_CHKSUM = "file://tools/tdbdump.c;endline=18;md5=b59cd45aa8624578126a8c98f48018c4 \
+                    file://include/tdb.h;endline=27;md5=f5bb544641d3081821bcc1dd58310be6"
+
+export PYTHONHASHSEED="1"
+export PYTHONARCHDIR = "${PYTHON_SITEPACKAGES_DIR}"
+
+SRC_URI = "https://samba.org/ftp/tdb/tdb-${PV}.tar.gz \
+           file://0001-tdb-Add-configure-options-for-packages.patch \
+           file://0002-Fix-pyext_PATTERN-for-cross-compilation.patch \
+           file://run-ptest \
+"
+
+SRC_URI[sha256sum] = "02338e33c16c21c9e29571cef523e76b2b708636254f6f30c6cf195d48c62daf"
+
+PACKAGECONFIG ??= "\
+    ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
+"
+
+PACKAGECONFIG[acl] = "--with-acl,--without-acl,acl"
+PACKAGECONFIG[attr] = "--with-attr,--without-attr,attr"
+PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd"
+PACKAGECONFIG[libcap] = "--with-libcap,--without-libcap,libcap"
+PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
+
+S = "${WORKDIR}/tdb-${PV}"
+
+inherit waf-samba pkgconfig ptest
+
+# Cross_compile cannot use preforked process, since fork process earlier than point subproces.popen
+# to cross Popen
+export WAF_NO_PREFORK="yes"
+
+EXTRA_OECONF += "--disable-rpath \
+                 --disable-rpath-install \
+                 --bundled-libraries=NONE \
+                 --builtin-libraries=replace \
+                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
+                "
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    install -m 0755 ${B}/bin/tdb1-* ${D}${PTEST_PATH}/tests/
+    install -m 0755 ${B}/bin/replace_testsuite ${D}${PTEST_PATH}/tests/
+    install -d ${D}${PTEST_PATH}/tests/test
+    install -m 0644 ${B}/test/*.tdb ${D}${PTEST_PATH}/tests/test/
+    install -m 0644 ${B}/test/*.corrupt ${D}${PTEST_PATH}/tests/test/
+}
+
+PACKAGES += "tdb-tools python3-tdb"
+
+RPROVIDES:${PN}-dbg += "python3-tdb-dbg"
+
+FILES:${PN} = "${libdir}/*.so.*"
+FILES:tdb-tools = "${bindir}/*"
+FILES:python3-tdb = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
+RDEPENDS:python3-tdb = "python3"
+INSANE_SKIP:${MLPREFIX}python3-tdb = "dev-so"
diff --git a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.9.bb b/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.9.bb
deleted file mode 100644
index 9367600..0000000
--- a/meta-openembedded/meta-networking/recipes-support/libtdb/libtdb_1.4.9.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-SUMMARY = "The tdb library"
-HOMEPAGE = "https://tdb.samba.org/"
-SECTION = "libs"
-LICENSE = "LGPL-3.0-or-later & GPL-3.0-or-later"
-
-LIC_FILES_CHKSUM = "file://tools/tdbdump.c;endline=18;md5=b59cd45aa8624578126a8c98f48018c4 \
-                    file://include/tdb.h;endline=27;md5=f5bb544641d3081821bcc1dd58310be6"
-
-export PYTHONHASHSEED="1"
-export PYTHONARCHDIR = "${PYTHON_SITEPACKAGES_DIR}"
-
-SRC_URI = "https://samba.org/ftp/tdb/tdb-${PV}.tar.gz \
-           file://0001-tdb-Add-configure-options-for-packages.patch \
-           file://0002-Fix-pyext_PATTERN-for-cross-compilation.patch \
-           file://run-ptest \
-"
-
-SRC_URI[sha256sum] = "0ac226073e3a2db8648da7af744cb95f50766a52feeb001d558b2b321b74a765"
-
-PACKAGECONFIG ??= "\
-    ${@bb.utils.filter('DISTRO_FEATURES', 'acl', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'xattr', 'attr', '', d)} \
-"
-
-PACKAGECONFIG[acl] = "--with-acl,--without-acl,acl"
-PACKAGECONFIG[attr] = "--with-attr,--without-attr,attr"
-PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd"
-PACKAGECONFIG[libcap] = "--with-libcap,--without-libcap,libcap"
-PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind"
-
-S = "${WORKDIR}/tdb-${PV}"
-
-inherit waf-samba pkgconfig ptest
-
-# Cross_compile cannot use preforked process, since fork process earlier than point subproces.popen
-# to cross Popen
-export WAF_NO_PREFORK="yes"
-
-EXTRA_OECONF += "--disable-rpath \
-                 --disable-rpath-install \
-                 --bundled-libraries=NONE \
-                 --builtin-libraries=replace \
-                 --with-libiconv=${STAGING_DIR_HOST}${prefix}\
-                "
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    install -m 0755 ${B}/bin/tdb1-* ${D}${PTEST_PATH}/tests/
-    install -m 0755 ${B}/bin/replace_testsuite ${D}${PTEST_PATH}/tests/
-    install -d ${D}${PTEST_PATH}/tests/test
-    install -m 0644 ${B}/test/*.tdb ${D}${PTEST_PATH}/tests/test/
-    install -m 0644 ${B}/test/*.corrupt ${D}${PTEST_PATH}/tests/test/
-}
-
-PACKAGES += "tdb-tools python3-tdb"
-
-RPROVIDES:${PN}-dbg += "python3-tdb-dbg"
-
-FILES:${PN} = "${libdir}/*.so.*"
-FILES:tdb-tools = "${bindir}/*"
-FILES:python3-tdb = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
-RDEPENDS:python3-tdb = "python3"
-INSANE_SKIP:${MLPREFIX}python3-tdb = "dev-so"
diff --git a/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb b/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
index 54a4ea0..fd36aad 100644
--- a/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netcat/netcat_0.7.1.bb
@@ -2,7 +2,6 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
-PR = "r3"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/netcat/netcat-${PV}.tar.bz2 \
            file://obsolete_autoconf_macros.patch \
diff --git a/meta-openembedded/meta-networking/recipes-support/netcf/netcf/0001-Adopt-to-new-gnulib-read_file-fread_file-signature.patch b/meta-openembedded/meta-networking/recipes-support/netcf/netcf/0001-Adopt-to-new-gnulib-read_file-fread_file-signature.patch
new file mode 100644
index 0000000..b188248
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/netcf/netcf/0001-Adopt-to-new-gnulib-read_file-fread_file-signature.patch
@@ -0,0 +1,83 @@
+From af256680926e166ac21bc0f11172ea6c077a9b55 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Mar 2024 10:40:48 -0800
+Subject: [PATCH] Adopt to new gnulib read_file/fread_file signature
+
+It now expects a flag parameter in latest gnulib
+see [1]
+
+[1] https://public-inbox.org/bug-gnulib/87tv01c1z2.fsf-ueno@gnu.org/
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/dutil_linux.c  | 4 ++--
+ src/dutil_posix.c  | 2 +-
+ src/ncftool.c      | 2 +-
+ src/ncftransform.c | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/dutil_linux.c b/src/dutil_linux.c
+index 742153a..eb72eb2 100644
+--- a/src/dutil_linux.c
++++ b/src/dutil_linux.c
+@@ -1113,7 +1113,7 @@ static void add_link_info(struct netcf *ncf,
+ 
+     xasprintf(&path, "/sys/class/net/%s/operstate", ifname);
+     ERR_NOMEM(!path, ncf);
+-    state = read_file(path, &length);
++    state = read_file(path, 0, &length);
+     if (!state) {
+         /* missing operstate is *not* an error. It could be due to an
+          * alias interface, which has no entry in /sys/class/net at
+@@ -1132,7 +1132,7 @@ static void add_link_info(struct netcf *ncf,
+         FREE(path);
+         xasprintf(&path, "/sys/class/net/%s/speed", ifname);
+         ERR_NOMEM(path == NULL, ncf);
+-        speed = read_file(path, &length);
++        speed = read_file(path, 0, &length);
+         if (!speed && errno == EINVAL) {
+             /* attempts to read $ifname/speed result in EINVAL if the
+              * interface is ifconfiged down (which isn't exactly the
+diff --git a/src/dutil_posix.c b/src/dutil_posix.c
+index 1313514..b9884f0 100644
+--- a/src/dutil_posix.c
++++ b/src/dutil_posix.c
+@@ -211,7 +211,7 @@ int run_program(struct netcf *ncf, const char *const *argv, char **output)
+                        "Failed to create file stream for output while executing '%s': %s",
+                        argv_str, errbuf);
+ 
+-    *output = fread_file(outfile, &outlen);
++    *output = fread_file(outfile, 0, &outlen);
+     ERR_THROW_STRERROR(*output == NULL, ncf, EEXEC,
+                        "Error while reading output from execution of '%s': %s",
+                        argv_str, errbuf);
+diff --git a/src/ncftool.c b/src/ncftool.c
+index f1b5642..c878cb0 100644
+--- a/src/ncftool.c
++++ b/src/ncftool.c
+@@ -351,7 +351,7 @@ static int cmd_define(const struct command *cmd) {
+     struct netcf_if *nif = NULL;
+     int result = CMD_RES_ERR;
+ 
+-    xml = read_file(fname, &length);
++    xml = read_file(fname, 0, &length);
+     if (xml == NULL) {
+         fprintf(stderr, "Failed to read %s\n", fname);
+         goto done;
+diff --git a/src/ncftransform.c b/src/ncftransform.c
+index fbabfc3..4c9a56d 100644
+--- a/src/ncftransform.c
++++ b/src/ncftransform.c
+@@ -54,7 +54,7 @@ int main(int argc, char **argv) {
+     if (argc != 3 || (STRNEQ(argv[1], "get") && STRNEQ(argv[1], "put")))
+         die("Usage: ncftransform (put|get) FILE\n");
+ 
+-    in_xml = read_file(argv[2], &length);
++    in_xml = read_file(argv[2], 0, &length);
+     if (in_xml == NULL)
+         die("Failed to read %s\n", argv[2]);
+ 
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb b/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
index 59ce3e9..c68974f 100644
--- a/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
+++ b/meta-openembedded/meta-networking/recipes-support/netcf/netcf_0.2.8.bb
@@ -10,7 +10,7 @@
 PV .= "+git"
 
 SRC_URI = "git://pagure.io/netcf.git;protocol=https;branch=master \
-"
+           file://0001-Adopt-to-new-gnulib-read_file-fread_file-signature.patch"
 
 UPSTREAM_CHECK_GITTAGREGEX = "release-(?P<pver>(\d+(\.\d+)+))"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.10.bb b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.10.bb
new file mode 100644
index 0000000..f8de78f
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.10.bb
@@ -0,0 +1,76 @@
+SUMMARY = "A full-featured SSL VPN solution via tun device."
+HOMEPAGE = "https://openvpn.net/"
+SECTION = "net"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=89196bacc47ed37a5b242a535661a049"
+DEPENDS = "lzo lz4 openssl iproute2 libcap-ng ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
+
+inherit autotools systemd update-rc.d pkgconfig
+
+SRC_URI = "http://swupdate.openvpn.org/community/releases/${BP}.tar.gz \
+           file://0001-configure.ac-eliminate-build-path-from-openvpn-versi.patch \
+           file://openvpn \
+          "
+
+UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
+
+SRC_URI[sha256sum] = "1993bbb7b9edb430626eaa24573f881fd3df642f427fcb824b1aed1fca1bcc9b"
+
+CVE_STATUS[CVE-2020-27569] = "not-applicable-config: Applies only Aviatrix OpenVPN client, not openvpn"
+
+INITSCRIPT_PACKAGES = "${PN}"
+INITSCRIPT_NAME:${PN} = "openvpn"
+INITSCRIPT_PARAMS:${PN} = "start 10 2 3 4 5 . stop 70 0 1 6 ."
+
+CFLAGS += "-fno-inline"
+
+# I want openvpn to be able to read password from file (hrw)
+EXTRA_OECONF += "--enable-iproute2"
+EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '', '--disable-plugin-auth-pam', d)}"
+
+# Explicitly specify IPROUTE to bypass the configure-time check for /sbin/ip on the host.
+EXTRA_OECONF += "IPROUTE=${base_sbindir}/ip"
+
+EXTRA_OECONF += "SYSTEMD_UNIT_DIR=${systemd_system_unitdir} \
+                 TMPFILES_DIR=${nonarch_libdir}/tmpfiles.d \
+                "
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+                   ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
+                  "
+
+PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
+
+do_install:append() {
+    install -d ${D}/${sysconfdir}/init.d
+    install -m 755 ${WORKDIR}/openvpn ${D}/${sysconfdir}/init.d
+
+    install -d ${D}/${sysconfdir}/openvpn
+    install -d ${D}/${sysconfdir}/openvpn/server
+    install -d ${D}/${sysconfdir}/openvpn/client
+
+    install -d ${D}/${sysconfdir}/openvpn/sample
+    install -m 644 ${S}/sample/sample-config-files/loopback-server  ${D}${sysconfdir}/openvpn/sample/loopback-server.conf
+    install -m 644 ${S}/sample/sample-config-files/loopback-client  ${D}${sysconfdir}/openvpn/sample/loopback-client.conf
+    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-config-files
+    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-keys
+    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-scripts
+    install -m 644 ${S}/sample/sample-config-files/* ${D}${sysconfdir}/openvpn/sample/sample-config-files
+    install -m 644 ${S}/sample/sample-keys/* ${D}${sysconfdir}/openvpn/sample/sample-keys
+    install -m 644 ${S}/sample/sample-scripts/* ${D}${sysconfdir}/openvpn/sample/sample-scripts
+
+    install -d -m 710 ${D}/${localstatedir}/lib/openvpn
+}
+
+PACKAGES =+ " ${PN}-sample "
+
+RRECOMMENDS:${PN} = "kernel-module-tun"
+
+FILES:${PN}-dbg += "${libdir}/openvpn/plugins/.debug"
+FILES:${PN} += "${systemd_system_unitdir}/openvpn-server@.service \
+                ${systemd_system_unitdir}/openvpn-client@.service \
+                ${nonarch_libdir}/tmpfiles.d \
+               "
+FILES:${PN}-sample = "${sysconfdir}/openvpn/sample/ \
+                     "
diff --git a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.9.bb b/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.9.bb
deleted file mode 100644
index 3af6b30..0000000
--- a/meta-openembedded/meta-networking/recipes-support/openvpn/openvpn_2.6.9.bb
+++ /dev/null
@@ -1,76 +0,0 @@
-SUMMARY = "A full-featured SSL VPN solution via tun device."
-HOMEPAGE = "https://openvpn.net/"
-SECTION = "net"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4b34e946059f80dcfd811e8dd471b5ed"
-DEPENDS = "lzo lz4 openssl iproute2 libcap-ng ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)}"
-
-inherit autotools systemd update-rc.d pkgconfig
-
-SRC_URI = "http://swupdate.openvpn.org/community/releases/${BP}.tar.gz \
-           file://0001-configure.ac-eliminate-build-path-from-openvpn-versi.patch \
-           file://openvpn \
-          "
-
-UPSTREAM_CHECK_URI = "https://openvpn.net/community-downloads"
-
-SRC_URI[sha256sum] = "e08d147e15b4508dfcd1d6618a1f21f1495f9817a8dadc1eddf0532fa116d7e3"
-
-CVE_STATUS[CVE-2020-27569] = "not-applicable-config: Applies only Aviatrix OpenVPN client, not openvpn"
-
-INITSCRIPT_PACKAGES = "${PN}"
-INITSCRIPT_NAME:${PN} = "openvpn"
-INITSCRIPT_PARAMS:${PN} = "start 10 2 3 4 5 . stop 70 0 1 6 ."
-
-CFLAGS += "-fno-inline"
-
-# I want openvpn to be able to read password from file (hrw)
-EXTRA_OECONF += "--enable-iproute2"
-EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'pam', '', '--disable-plugin-auth-pam', d)}"
-
-# Explicitly specify IPROUTE to bypass the configure-time check for /sbin/ip on the host.
-EXTRA_OECONF += "IPROUTE=${base_sbindir}/ip"
-
-EXTRA_OECONF += "SYSTEMD_UNIT_DIR=${systemd_system_unitdir} \
-                 TMPFILES_DIR=${nonarch_libdir}/tmpfiles.d \
-                "
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-                   ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
-                  "
-
-PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
-PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux"
-
-do_install:append() {
-    install -d ${D}/${sysconfdir}/init.d
-    install -m 755 ${WORKDIR}/openvpn ${D}/${sysconfdir}/init.d
-
-    install -d ${D}/${sysconfdir}/openvpn
-    install -d ${D}/${sysconfdir}/openvpn/server
-    install -d ${D}/${sysconfdir}/openvpn/client
-
-    install -d ${D}/${sysconfdir}/openvpn/sample
-    install -m 644 ${S}/sample/sample-config-files/loopback-server  ${D}${sysconfdir}/openvpn/sample/loopback-server.conf
-    install -m 644 ${S}/sample/sample-config-files/loopback-client  ${D}${sysconfdir}/openvpn/sample/loopback-client.conf
-    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-config-files
-    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-keys
-    install -dm 755 ${D}${sysconfdir}/openvpn/sample/sample-scripts
-    install -m 644 ${S}/sample/sample-config-files/* ${D}${sysconfdir}/openvpn/sample/sample-config-files
-    install -m 644 ${S}/sample/sample-keys/* ${D}${sysconfdir}/openvpn/sample/sample-keys
-    install -m 644 ${S}/sample/sample-scripts/* ${D}${sysconfdir}/openvpn/sample/sample-scripts
-
-    install -d -m 710 ${D}/${localstatedir}/lib/openvpn
-}
-
-PACKAGES =+ " ${PN}-sample "
-
-RRECOMMENDS:${PN} = "kernel-module-tun"
-
-FILES:${PN}-dbg += "${libdir}/openvpn/plugins/.debug"
-FILES:${PN} += "${systemd_system_unitdir}/openvpn-server@.service \
-                ${systemd_system_unitdir}/openvpn-client@.service \
-                ${nonarch_libdir}/tmpfiles.d \
-               "
-FILES:${PN}-sample = "${sysconfdir}/openvpn/sample/ \
-                     "
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..a093e47
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,58 @@
+From ae6adc4c748e67919fdf8ae1d44c619ee104c271 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 11:37:41 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://github.com/linux-rdma/rdma-core/pull/1443]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ kernel-boot/rdma_rename.c  | 1 +
+ librdmacm/examples/rping.c | 1 +
+ providers/mlx5/mlx5_vfio.c | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/kernel-boot/rdma_rename.c b/kernel-boot/rdma_rename.c
+index 4af9e4a39..5193ac411 100644
+--- a/kernel-boot/rdma_rename.c
++++ b/kernel-boot/rdma_rename.c
+@@ -2,6 +2,7 @@
+ /* Copyright (c) 2019, Mellanox Technologies. All rights reserved. See COPYING file */
+ 
+ #define _GNU_SOURCE
++#include <libgen.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+diff --git a/librdmacm/examples/rping.c b/librdmacm/examples/rping.c
+index cc16ad910..0f1321458 100644
+--- a/librdmacm/examples/rping.c
++++ b/librdmacm/examples/rping.c
+@@ -33,6 +33,7 @@
+ #define _GNU_SOURCE
+ #include <endian.h>
+ #include <getopt.h>
++#include <libgen.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+diff --git a/providers/mlx5/mlx5_vfio.c b/providers/mlx5/mlx5_vfio.c
+index cd0c41462..4d064b1fc 100644
+--- a/providers/mlx5/mlx5_vfio.c
++++ b/providers/mlx5/mlx5_vfio.c
+@@ -6,6 +6,7 @@
+ #define _GNU_SOURCE
+ #include <config.h>
+ 
++#include <libgen.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_50.0.bb b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_50.0.bb
index d0f4fd4..ab4de22 100644
--- a/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_50.0.bb
+++ b/meta-openembedded/meta-networking/recipes-support/rdma-core/rdma-core_50.0.bb
@@ -6,7 +6,9 @@
 RDEPENDS:${PN} = "bash perl"
 
 SRC_URI = "git://github.com/linux-rdma/rdma-core.git;branch=master;protocol=https \
-           file://0001-cmake-Allow-SYSTEMCTL_BIN-to-be-overridden-from-envi.patch"
+           file://0001-cmake-Allow-SYSTEMCTL_BIN-to-be-overridden-from-envi.patch \
+           file://0001-include-libgen.h-for-basename.patch \
+"
 SRCREV = "bc6b4bc134532e952fe7f8efc251e1f89b912098"
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-networking/recipes-support/sngrep/sngrep_1.8.0.bb b/meta-openembedded/meta-networking/recipes-support/sngrep/sngrep_1.8.0.bb
new file mode 100644
index 0000000..2824dde
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/sngrep/sngrep_1.8.0.bb
@@ -0,0 +1,37 @@
+SUMMARY = "Ncurses SIP Messages flow viewer"
+DESCRIPTION = "Tool for displaying SIP calls message flows from terminal"
+HOMEPAGE = "https://github.com/irontec/sngrep"
+BUGTRACKER = "https://github.com/irontec/sngrep/issues"
+SECTION = "console/network"
+LICENSE = "GPL-3.0-or-later & OpenSSL"
+LIC_FILES_CHKSUM = "\
+    file://LICENSE;md5=d32239bcb673463ab874e80d47fae504 \
+    file://LICENSE.OpenSSL;md5=e39170c41c6f83de36426dbf49a03632 \
+    file://README;beginline=100;endline=124;md5=758a88cf2b27572df05996a3810066b3 \
+"
+
+DEPENDS = "\
+    libpcap \
+    ncurses \
+"
+
+SRC_URI = "git://github.com/irontec/sngrep.git;protocol=https;branch=master"
+SRCREV = "f7b36df3b79617892958b67cb4ad9313c6ce72d2"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
+
+PACKAGECONFIG ?= "\
+    openssl \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
+    unicode \
+"
+
+PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl"
+PACKAGECONFIG[gnutls] = "-DWITH_GNUTLS=ON,-DWITH_GNUTLS=OFF,gnutls libgcrypt"
+PACKAGECONFIG[pcre] = "-DWITH_PCRE=OFF,-DWITH_PCRE=OFF,libpcre"
+PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
+PACKAGECONFIG[unicode] = "-DWITH_UNICODE=ON,-DWITH_UNICODE=OFF"
+PACKAGECONFIG[ipv6] = "-DUSE_IPV6=ON,-DUSE_IPV6=OFF"
+PACKAGECONFIG[eep] = "-DUSE_EEP=ON,-DUSE_EEP=OFF"
diff --git a/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..094ba5a
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,32 @@
+From b48840952ec9a68363bed960e98dd6c7aaa3acec Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 11:55:59 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ ssmtp.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ssmtp.c b/ssmtp.c
+index 0a719ac..4dedaf8 100644
+--- a/ssmtp.c
++++ b/ssmtp.c
+@@ -23,6 +23,7 @@
+ #include <signal.h>
+ #include <setjmp.h>
+ #include <string.h>
++#include <libgen.h>
+ #include <ctype.h>
+ #include <netdb.h>
+ #ifdef HAVE_SSL
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
index 05d2bb1..499a79d 100644
--- a/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
+++ b/meta-openembedded/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
@@ -8,6 +8,7 @@
            file://build-ouside_srcdir.patch \
            file://use-DESTDIR.patch \
            file://0001-ssmtp-Correct-the-null-pointer-assignment-to-char-po.patch \
+           file://0001-include-libgen.h-for-basename.patch \
            "
 
 SRC_URI[md5sum] = "65b4e0df4934a6cd08c506cabcbe584f"
diff --git a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.13.bb b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.13.bb
deleted file mode 100644
index 4523187..0000000
--- a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.13.bb
+++ /dev/null
@@ -1,194 +0,0 @@
-DESCRIPTION = "strongSwan is an OpenSource IPsec implementation for the \
-Linux operating system."
-SUMMARY = "strongSwan is an OpenSource IPsec implementation"
-HOMEPAGE = "http://www.strongswan.org"
-SECTION = "net"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-DEPENDS = "flex-native flex bison-native"
-DEPENDS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', '  tpm2-tss', '', d)}"
-
-SRC_URI = "https://download.strongswan.org/strongswan-${PV}.tar.bz2 \
-          "
-
-SRC_URI[sha256sum] = "56e30effb578fd9426d8457e3b76c8c3728cd8a5589594b55649b2719308ba55"
-
-UPSTREAM_CHECK_REGEX = "strongswan-(?P<pver>\d+(\.\d+)+)\.tar"
-
-EXTRA_OECONF = " \
-        --without-lib-prefix \
-        --with-dev-headers=${includedir}/strongswan \
-"
-
-EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
-
-PACKAGECONFIG ?= "curl gmp openssl sqlite3 swanctl curve25519\
-        ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-charon', 'charon', d)} \
-        ${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', 'tpm2', '', d)} \
-        ${@bb.utils.contains('DISTRO_FEATURES', 'ima', 'tnc-imc imc-hcd imc-os imc-scanner imc-attestation', '', d)} \
-        ${@bb.utils.contains('DISTRO_FEATURES', 'ima', 'tnc-imv imv-hcd imv-os imv-scanner imv-attestation', '', d)} \
-"
-
-PACKAGECONFIG[aesni] = "--enable-aesni,--disable-aesni,,${PN}-plugin-aesni"
-PACKAGECONFIG[bfd] = "--enable-bfd-backtraces,--disable-bfd-backtraces,binutils"
-PACKAGECONFIG[charon] = "--enable-charon,--disable-charon,"
-PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl,${PN}-plugin-curl"
-PACKAGECONFIG[eap-identity] = "--enable-eap-identity,--disable-eap-identity,,${PN}-plugin-eap-identity"
-PACKAGECONFIG[eap-mschapv2] = "--enable-eap-mschapv2,--disable-eap-mschapv2,,${PN}-plugin-eap-mschapv2"
-PACKAGECONFIG[gmp] = "--enable-gmp,--disable-gmp,gmp,${PN}-plugin-gmp"
-PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,openldap,${PN}-plugin-ldap"
-PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,${PN}-plugin-mysql"
-PACKAGECONFIG[nm] = "--enable-nm,--disable-nm,networkmanager,${PN}-nm"
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl,${PN}-plugin-openssl"
-PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4,${PN}-plugin-soup"
-PACKAGECONFIG[sqlite3] = "--enable-sqlite,--disable-sqlite,sqlite3,${PN}-plugin-sqlite"
-PACKAGECONFIG[stroke] = "--enable-stroke,--disable-stroke,,${PN}-plugin-stroke"
-PACKAGECONFIG[swanctl] = "--enable-swanctl,--disable-swanctl,,libgcc"
-PACKAGECONFIG[curve25519] = "--enable-curve25519,--disable-curve25519,, ${PN}-plugin-curve25519"
-
-# requires swanctl
-PACKAGECONFIG[systemd-charon] = "--enable-systemd,--disable-systemd,systemd,"
-
-# tpm needs meta-tpm layer
-PACKAGECONFIG[tpm2] = "--enable-tpm,--disable-tpm,,${PN}-plugin-tpm"
-
-
-# integraty configuration needs meta-integraty
-#imc 
-PACKAGECONFIG[tnc-imc] = "--enable-tnc-imc,--disable-tnc-imc,,  ${PN}-plugin-tnc-imc ${PN}-plugin-tnc-tnccs"
-PACKAGECONFIG[imc-test] = "--enable-imc-test,--disable-imc-test,,"
-PACKAGECONFIG[imc-scanner] = "--enable-imc-scanner,--disable-imc-scanner,,"
-PACKAGECONFIG[imc-os] = "--enable-imc-os,--disable-imc-os,,"
-PACKAGECONFIG[imc-attestation] = "--enable-imc-attestation,--disable-imc-attestation,,"
-PACKAGECONFIG[imc-swima] = "--enable-imc-swima, --disable-imc-swima, json-c,"
-PACKAGECONFIG[imc-hcd] = "--enable-imc-hcd, --disable-imc-hcd,,"
-
-#imv set
-PACKAGECONFIG[tnc-imv] = "--enable-tnc-imv,--disable-tnc-imv,, ${PN}-plugin-tnc-imv ${PN}-plugin-tnc-tnccs"
-PACKAGECONFIG[imv-test] = "--enable-imv-test,--disable-imv-test,,"
-PACKAGECONFIG[imv-scanner] = "--enable-imv-scanner,--disable-imv-scanner,,"
-PACKAGECONFIG[imv-os] = "--enable-imv-os,--disable-imv-os,,"
-PACKAGECONFIG[imv-attestation] = "--enable-imv-attestation,--disable-imv-attestation,,"
-PACKAGECONFIG[imv-swima] = "--enable-imv-swima, --disable-imv-swima, json-c,"
-PACKAGECONFIG[imv-hcd] = "--enable-imv-hcd, --disable-imv-hcd,,"
-
-PACKAGECONFIG[tnc-ifmap] = "--enable-tnc-ifmap,--disable-tnc-ifmap, libxml2, ${PN}-plugin-tnc-ifmap"
-PACKAGECONFIG[tnc-pdp] = "--enable-tnc-pdp,--disable-tnc-pdp,, ${PN}-plugin-tnc-pdp"
-
-PACKAGECONFIG[tnccs-11] = "--enable-tnccs-11,--disable-tnccs-11,libxml2, ${PN}-plugin-tnccs-11"
-PACKAGECONFIG[tnccs-20] = "--enable-tnccs-20,--disable-tnccs-20,, ${PN}-plugin-tnccs-20"
-PACKAGECONFIG[tnccs-dynamic] = "--enable-tnccs-dynamic,--disable-tnccs-dynamic,,${PN}-plugin-tnccs-dynamic"
-
-inherit autotools systemd pkgconfig
-
-RRECOMMENDS:${PN} = "kernel-module-ah4 \
-                     kernel-module-esp4 \
-                     kernel-module-xfrm-user \
-                    "
-
-FILES:${PN} += "${libdir}/ipsec/lib*${SOLIBS}"
-FILES:${PN}-dbg += "${bindir}/.debug ${sbindir}/.debug ${libdir}/ipsec/.debug ${libexecdir}/ipsec/.debug"
-FILES:${PN}-dev += "${libdir}/ipsec/lib*${SOLIBSDEV} ${libdir}/ipsec/*.la ${libdir}/ipsec/include/config.h"
-FILES:${PN}-staticdev += "${libdir}/ipsec/*.a"
-
-CONFFILES:${PN} = "${sysconfdir}/*.conf ${sysconfdir}/ipsec.d/*.conf ${sysconfdir}/strongswan.d/*.conf"
-
-PACKAGES += "${PN}-plugins"
-ALLOW_EMPTY:${PN}-plugins = "1"
-
-PACKAGE_BEFORE_PN = "${PN}-imcvs ${PN}-imcvs-dbg"
-ALLOW_EMPTY:${PN}-imcvs = "1"
-
-FILES:${PN}-imcvs = "${libdir}/ipsec/imcvs/*.so"
-FILES:${PN}-imcvs-dbg += "${libdir}/ipsec/imcvs/.debug"
-
-PACKAGES =+ "${PN}-nm ${PN}-nm-dbg"
-FILES:${PN}-nm = "${libexecdir}/ipsec/charon-nm ${datadir}/dbus-1/system.d/nm-strongswan-service.conf"
-FILES:${PN}-nm-dbg = "${libexecdir}/ipsec/.debug/charon-nm"
-
-PACKAGES_DYNAMIC += "^${PN}-plugin-.*$"
-NOAUTOPACKAGEDEBUG = "1"
-
-python split_strongswan_plugins () {
-    sysconfdir = d.expand('${sysconfdir}/strongswan.d/charon')
-    libdir = d.expand('${libdir}/ipsec/plugins')
-    dbglibdir = os.path.join(libdir, '.debug')
-
-    def add_plugin_conf(f, pkg, file_regex, output_pattern, modulename):
-        dvar = d.getVar('PKGD')
-        oldfiles = d.getVar('CONFFILES:' + pkg)
-        newfile = '/' + os.path.relpath(f, dvar)
-
-        if not oldfiles:
-            d.setVar('CONFFILES:' + pkg, newfile)
-        else:
-            d.setVar('CONFFILES:' + pkg, oldfiles + " " + newfile)
-
-    split_packages = do_split_packages(d, libdir, r'libstrongswan-(.*)\.so', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True)
-    do_split_packages(d, sysconfdir, r'(.*)\.conf', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True, hook=add_plugin_conf)
-
-    split_dbg_packages = do_split_packages(d, dbglibdir, r'libstrongswan-(.*)\.so', '${PN}-plugin-%s-dbg', 'strongSwan %s plugin - Debugging files', prepend=True, extra_depends='${PN}-dbg')
-    split_dev_packages = do_split_packages(d, libdir, r'libstrongswan-(.*)\.la', '${PN}-plugin-%s-dev', 'strongSwan %s plugin - Development files', prepend=True, extra_depends='${PN}-dev')
-    split_staticdev_packages = do_split_packages(d, libdir, r'libstrongswan-(.*)\.a', '${PN}-plugin-%s-staticdev', 'strongSwan %s plugin - Development files (Static Libraries)', prepend=True, extra_depends='${PN}-staticdev')
-
-    if split_packages:
-        pn = d.getVar('PN')
-        d.setVar('RRECOMMENDS:' + pn + '-plugins', ' '.join(split_packages))
-        d.appendVar('RRECOMMENDS:' + pn + '-dbg', ' ' + ' '.join(split_dbg_packages))
-        d.appendVar('RRECOMMENDS:' + pn + '-dev', ' ' + ' '.join(split_dev_packages))
-        d.appendVar('RRECOMMENDS:' + pn + '-staticdev', ' ' + ' '.join(split_staticdev_packages))
-}
-
-PACKAGESPLITFUNCS:prepend = "split_strongswan_plugins "
-
-# Install some default plugins based on default strongSwan ./configure options
-# See https://wiki.strongswan.org/projects/strongswan/wiki/Pluginlist
-RDEPENDS:${PN} += "\
-    ${PN}-plugin-aes \
-    ${PN}-plugin-attr \
-    ${PN}-plugin-cmac \
-    ${PN}-plugin-constraints \
-    ${PN}-plugin-des \
-    ${PN}-plugin-dnskey \
-    ${PN}-plugin-drbg \
-    ${PN}-plugin-fips-prf \
-    ${PN}-plugin-gcm \
-    ${PN}-plugin-hmac \
-    ${PN}-plugin-kdf \
-    ${PN}-plugin-kernel-netlink \
-    ${PN}-plugin-md5 \
-    ${PN}-plugin-mgf1 \
-    ${PN}-plugin-nonce \
-    ${PN}-plugin-pem \
-    ${PN}-plugin-pgp \
-    ${PN}-plugin-pkcs1 \
-    ${PN}-plugin-pkcs7 \
-    ${PN}-plugin-pkcs8 \
-    ${PN}-plugin-pkcs12 \
-    ${PN}-plugin-pubkey \
-    ${PN}-plugin-random \
-    ${PN}-plugin-rc2 \
-    ${PN}-plugin-resolve \
-    ${PN}-plugin-revocation \
-    ${PN}-plugin-sha1 \
-    ${PN}-plugin-sha2 \
-    ${PN}-plugin-socket-default \
-    ${PN}-plugin-sshkey \
-    ${PN}-plugin-updown \
-    ${PN}-plugin-vici \
-    ${PN}-plugin-x509 \
-    ${PN}-plugin-xauth-generic \
-    ${PN}-plugin-xcbc \
-    "
-
-RPROVIDES:${PN} += "${PN}-systemd"
-RREPLACES:${PN} += "${PN}-systemd"
-RCONFLICTS:${PN} += "${PN}-systemd"
-
-# The deprecated legacy 'strongswan-starter' service should only be used when charon and
-# stroke are enabled. When swanctl is in use, 'strongswan.service' is needed.
-# See: https://wiki.strongswan.org/projects/strongswan/wiki/Charon-systemd
-SYSTEMD_SERVICE:${PN} = " \
-    ${@bb.utils.contains('PACKAGECONFIG', 'swanctl', '${BPN}.service', '', d)} \
-    ${@bb.utils.contains('PACKAGECONFIG', 'charon', '${BPN}-starter.service', '', d)} \
-"
diff --git a/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.14.bb b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.14.bb
new file mode 100644
index 0000000..2e2da82
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/strongswan/strongswan_5.9.14.bb
@@ -0,0 +1,194 @@
+DESCRIPTION = "strongSwan is an OpenSource IPsec implementation for the \
+Linux operating system."
+SUMMARY = "strongSwan is an OpenSource IPsec implementation"
+HOMEPAGE = "http://www.strongswan.org"
+SECTION = "net"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS = "flex-native flex bison-native"
+DEPENDS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', '  tpm2-tss', '', d)}"
+
+SRC_URI = "https://download.strongswan.org/strongswan-${PV}.tar.bz2 \
+          "
+
+SRC_URI[sha256sum] = "728027ddda4cb34c67c4cec97d3ddb8c274edfbabdaeecf7e74693b54fc33678"
+
+UPSTREAM_CHECK_REGEX = "strongswan-(?P<pver>\d+(\.\d+)+)\.tar"
+
+EXTRA_OECONF = " \
+        --without-lib-prefix \
+        --with-dev-headers=${includedir}/strongswan \
+"
+
+EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', d)}"
+
+PACKAGECONFIG ?= "curl gmp openssl sqlite3 swanctl curve25519\
+        ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-charon', 'charon', d)} \
+        ${@bb.utils.contains('DISTRO_FEATURES', 'tpm2', 'tpm2', '', d)} \
+        ${@bb.utils.contains('DISTRO_FEATURES', 'ima', 'tnc-imc imc-hcd imc-os imc-scanner imc-attestation', '', d)} \
+        ${@bb.utils.contains('DISTRO_FEATURES', 'ima', 'tnc-imv imv-hcd imv-os imv-scanner imv-attestation', '', d)} \
+"
+
+PACKAGECONFIG[aesni] = "--enable-aesni,--disable-aesni,,${PN}-plugin-aesni"
+PACKAGECONFIG[bfd] = "--enable-bfd-backtraces,--disable-bfd-backtraces,binutils"
+PACKAGECONFIG[charon] = "--enable-charon,--disable-charon,"
+PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl,${PN}-plugin-curl"
+PACKAGECONFIG[eap-identity] = "--enable-eap-identity,--disable-eap-identity,,${PN}-plugin-eap-identity"
+PACKAGECONFIG[eap-mschapv2] = "--enable-eap-mschapv2,--disable-eap-mschapv2,,${PN}-plugin-eap-mschapv2"
+PACKAGECONFIG[gmp] = "--enable-gmp,--disable-gmp,gmp,${PN}-plugin-gmp"
+PACKAGECONFIG[ldap] = "--enable-ldap,--disable-ldap,openldap,${PN}-plugin-ldap"
+PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,${PN}-plugin-mysql"
+PACKAGECONFIG[nm] = "--enable-nm,--disable-nm,networkmanager,${PN}-nm"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl,${PN}-plugin-openssl"
+PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4,${PN}-plugin-soup"
+PACKAGECONFIG[sqlite3] = "--enable-sqlite,--disable-sqlite,sqlite3,${PN}-plugin-sqlite"
+PACKAGECONFIG[stroke] = "--enable-stroke,--disable-stroke,,${PN}-plugin-stroke"
+PACKAGECONFIG[swanctl] = "--enable-swanctl,--disable-swanctl,,libgcc"
+PACKAGECONFIG[curve25519] = "--enable-curve25519,--disable-curve25519,, ${PN}-plugin-curve25519"
+
+# requires swanctl
+PACKAGECONFIG[systemd-charon] = "--enable-systemd,--disable-systemd,systemd,"
+
+# tpm needs meta-tpm layer
+PACKAGECONFIG[tpm2] = "--enable-tpm,--disable-tpm,,${PN}-plugin-tpm"
+
+
+# integraty configuration needs meta-integraty
+#imc 
+PACKAGECONFIG[tnc-imc] = "--enable-tnc-imc,--disable-tnc-imc,,  ${PN}-plugin-tnc-imc ${PN}-plugin-tnc-tnccs"
+PACKAGECONFIG[imc-test] = "--enable-imc-test,--disable-imc-test,,"
+PACKAGECONFIG[imc-scanner] = "--enable-imc-scanner,--disable-imc-scanner,,"
+PACKAGECONFIG[imc-os] = "--enable-imc-os,--disable-imc-os,,"
+PACKAGECONFIG[imc-attestation] = "--enable-imc-attestation,--disable-imc-attestation,,"
+PACKAGECONFIG[imc-swima] = "--enable-imc-swima, --disable-imc-swima, json-c,"
+PACKAGECONFIG[imc-hcd] = "--enable-imc-hcd, --disable-imc-hcd,,"
+
+#imv set
+PACKAGECONFIG[tnc-imv] = "--enable-tnc-imv,--disable-tnc-imv,, ${PN}-plugin-tnc-imv ${PN}-plugin-tnc-tnccs"
+PACKAGECONFIG[imv-test] = "--enable-imv-test,--disable-imv-test,,"
+PACKAGECONFIG[imv-scanner] = "--enable-imv-scanner,--disable-imv-scanner,,"
+PACKAGECONFIG[imv-os] = "--enable-imv-os,--disable-imv-os,,"
+PACKAGECONFIG[imv-attestation] = "--enable-imv-attestation,--disable-imv-attestation,,"
+PACKAGECONFIG[imv-swima] = "--enable-imv-swima, --disable-imv-swima, json-c,"
+PACKAGECONFIG[imv-hcd] = "--enable-imv-hcd, --disable-imv-hcd,,"
+
+PACKAGECONFIG[tnc-ifmap] = "--enable-tnc-ifmap,--disable-tnc-ifmap, libxml2, ${PN}-plugin-tnc-ifmap"
+PACKAGECONFIG[tnc-pdp] = "--enable-tnc-pdp,--disable-tnc-pdp,, ${PN}-plugin-tnc-pdp"
+
+PACKAGECONFIG[tnccs-11] = "--enable-tnccs-11,--disable-tnccs-11,libxml2, ${PN}-plugin-tnccs-11"
+PACKAGECONFIG[tnccs-20] = "--enable-tnccs-20,--disable-tnccs-20,, ${PN}-plugin-tnccs-20"
+PACKAGECONFIG[tnccs-dynamic] = "--enable-tnccs-dynamic,--disable-tnccs-dynamic,,${PN}-plugin-tnccs-dynamic"
+
+inherit autotools systemd pkgconfig
+
+RRECOMMENDS:${PN} = "kernel-module-ah4 \
+                     kernel-module-esp4 \
+                     kernel-module-xfrm-user \
+                    "
+
+FILES:${PN} += "${libdir}/ipsec/lib*${SOLIBS}"
+FILES:${PN}-dbg += "${bindir}/.debug ${sbindir}/.debug ${libdir}/ipsec/.debug ${libexecdir}/ipsec/.debug"
+FILES:${PN}-dev += "${libdir}/ipsec/lib*${SOLIBSDEV} ${libdir}/ipsec/*.la ${libdir}/ipsec/include/config.h"
+FILES:${PN}-staticdev += "${libdir}/ipsec/*.a"
+
+CONFFILES:${PN} = "${sysconfdir}/*.conf ${sysconfdir}/ipsec.d/*.conf ${sysconfdir}/strongswan.d/*.conf"
+
+PACKAGES += "${PN}-plugins"
+ALLOW_EMPTY:${PN}-plugins = "1"
+
+PACKAGE_BEFORE_PN = "${PN}-imcvs ${PN}-imcvs-dbg"
+ALLOW_EMPTY:${PN}-imcvs = "1"
+
+FILES:${PN}-imcvs = "${libdir}/ipsec/imcvs/*.so"
+FILES:${PN}-imcvs-dbg += "${libdir}/ipsec/imcvs/.debug"
+
+PACKAGES =+ "${PN}-nm ${PN}-nm-dbg"
+FILES:${PN}-nm = "${libexecdir}/ipsec/charon-nm ${datadir}/dbus-1/system.d/nm-strongswan-service.conf"
+FILES:${PN}-nm-dbg = "${libexecdir}/ipsec/.debug/charon-nm"
+
+PACKAGES_DYNAMIC += "^${PN}-plugin-.*$"
+NOAUTOPACKAGEDEBUG = "1"
+
+python split_strongswan_plugins () {
+    sysconfdir = d.expand('${sysconfdir}/strongswan.d/charon')
+    libdir = d.expand('${libdir}/ipsec/plugins')
+    dbglibdir = os.path.join(libdir, '.debug')
+
+    def add_plugin_conf(f, pkg, file_regex, output_pattern, modulename):
+        dvar = d.getVar('PKGD')
+        oldfiles = d.getVar('CONFFILES:' + pkg)
+        newfile = '/' + os.path.relpath(f, dvar)
+
+        if not oldfiles:
+            d.setVar('CONFFILES:' + pkg, newfile)
+        else:
+            d.setVar('CONFFILES:' + pkg, oldfiles + " " + newfile)
+
+    split_packages = do_split_packages(d, libdir, r'libstrongswan-(.*)\.so', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True)
+    do_split_packages(d, sysconfdir, r'(.*)\.conf', '${PN}-plugin-%s', 'strongSwan %s plugin', prepend=True, hook=add_plugin_conf)
+
+    split_dbg_packages = do_split_packages(d, dbglibdir, r'libstrongswan-(.*)\.so', '${PN}-plugin-%s-dbg', 'strongSwan %s plugin - Debugging files', prepend=True, extra_depends='${PN}-dbg')
+    split_dev_packages = do_split_packages(d, libdir, r'libstrongswan-(.*)\.la', '${PN}-plugin-%s-dev', 'strongSwan %s plugin - Development files', prepend=True, extra_depends='${PN}-dev')
+    split_staticdev_packages = do_split_packages(d, libdir, r'libstrongswan-(.*)\.a', '${PN}-plugin-%s-staticdev', 'strongSwan %s plugin - Development files (Static Libraries)', prepend=True, extra_depends='${PN}-staticdev')
+
+    if split_packages:
+        pn = d.getVar('PN')
+        d.setVar('RRECOMMENDS:' + pn + '-plugins', ' '.join(split_packages))
+        d.appendVar('RRECOMMENDS:' + pn + '-dbg', ' ' + ' '.join(split_dbg_packages))
+        d.appendVar('RRECOMMENDS:' + pn + '-dev', ' ' + ' '.join(split_dev_packages))
+        d.appendVar('RRECOMMENDS:' + pn + '-staticdev', ' ' + ' '.join(split_staticdev_packages))
+}
+
+PACKAGESPLITFUNCS:prepend = "split_strongswan_plugins "
+
+# Install some default plugins based on default strongSwan ./configure options
+# See https://wiki.strongswan.org/projects/strongswan/wiki/Pluginlist
+RDEPENDS:${PN} += "\
+    ${PN}-plugin-aes \
+    ${PN}-plugin-attr \
+    ${PN}-plugin-cmac \
+    ${PN}-plugin-constraints \
+    ${PN}-plugin-des \
+    ${PN}-plugin-dnskey \
+    ${PN}-plugin-drbg \
+    ${PN}-plugin-fips-prf \
+    ${PN}-plugin-gcm \
+    ${PN}-plugin-hmac \
+    ${PN}-plugin-kdf \
+    ${PN}-plugin-kernel-netlink \
+    ${PN}-plugin-md5 \
+    ${PN}-plugin-mgf1 \
+    ${PN}-plugin-nonce \
+    ${PN}-plugin-pem \
+    ${PN}-plugin-pgp \
+    ${PN}-plugin-pkcs1 \
+    ${PN}-plugin-pkcs7 \
+    ${PN}-plugin-pkcs8 \
+    ${PN}-plugin-pkcs12 \
+    ${PN}-plugin-pubkey \
+    ${PN}-plugin-random \
+    ${PN}-plugin-rc2 \
+    ${PN}-plugin-resolve \
+    ${PN}-plugin-revocation \
+    ${PN}-plugin-sha1 \
+    ${PN}-plugin-sha2 \
+    ${PN}-plugin-socket-default \
+    ${PN}-plugin-sshkey \
+    ${PN}-plugin-updown \
+    ${PN}-plugin-vici \
+    ${PN}-plugin-x509 \
+    ${PN}-plugin-xauth-generic \
+    ${PN}-plugin-xcbc \
+    "
+
+RPROVIDES:${PN} += "${PN}-systemd"
+RREPLACES:${PN} += "${PN}-systemd"
+RCONFLICTS:${PN} += "${PN}-systemd"
+
+# The deprecated legacy 'strongswan-starter' service should only be used when charon and
+# stroke are enabled. When swanctl is in use, 'strongswan.service' is needed.
+# See: https://wiki.strongswan.org/projects/strongswan/wiki/Charon-systemd
+SYSTEMD_SERVICE:${PN} = " \
+    ${@bb.utils.contains('PACKAGECONFIG', 'swanctl', '${BPN}.service', '', d)} \
+    ${@bb.utils.contains('PACKAGECONFIG', 'charon', '${BPN}-starter.service', '', d)} \
+"
diff --git a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel/fix-openssl-no-des.patch b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel/fix-openssl-no-des.patch
index 0840cbb..82d3551 100644
--- a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel/fix-openssl-no-des.patch
+++ b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel/fix-openssl-no-des.patch
@@ -11,17 +11,16 @@
 library conditionaly.
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
 ---
  src/common.h   | 2 ++
  src/protocol.c | 6 +++---
  2 files changed, 5 insertions(+), 3 deletions(-)
 
 diff --git a/src/common.h b/src/common.h
-index bc37eb5..03ee3e5 100644
+index 2b4869f..180d31a 100644
 --- a/src/common.h
 +++ b/src/common.h
-@@ -486,7 +486,9 @@ extern char *sys_errlist[];
+@@ -492,7 +492,9 @@ extern char *sys_errlist[];
  #ifndef OPENSSL_NO_MD4
  #include <openssl/md4.h>
  #endif /* !defined(OPENSSL_NO_MD4) */
@@ -32,29 +31,29 @@
  #include <openssl/dh.h>
  #if OPENSSL_VERSION_NUMBER<0x10100000L
 diff --git a/src/protocol.c b/src/protocol.c
-index 804f115..d9b2b50 100644
+index cfe6d3b..3936aea 100644
 --- a/src/protocol.c
 +++ b/src/protocol.c
-@@ -66,7 +66,7 @@ NOEXPORT char *nntp_client(CLI *, SERVICE_OPTIONS *, const PHASE);
- NOEXPORT char *ldap_client(CLI *, SERVICE_OPTIONS *, const PHASE);
- NOEXPORT char *connect_server(CLI *, SERVICE_OPTIONS *, const PHASE);
- NOEXPORT char *connect_client(CLI *, SERVICE_OPTIONS *, const PHASE);
+@@ -81,7 +81,7 @@ NOEXPORT void ldap_client_middle(CLI *);
+ 
+ NOEXPORT void connect_server_early(CLI *);
+ NOEXPORT void connect_client_middle(CLI *);
 -#ifndef OPENSSL_NO_MD4
 +#if !defined(OPENSSL_NO_MD4) && !defined(OPENSSL_NO_DES)
- NOEXPORT void ntlm(CLI *, SERVICE_OPTIONS *);
+ NOEXPORT void ntlm(CLI *);
  NOEXPORT char *ntlm1(void);
  NOEXPORT char *ntlm3(char *, char *, char *, char *);
-@@ -1351,7 +1351,7 @@ NOEXPORT char *connect_client(CLI *c, SERVICE_OPTIONS *opt, const PHASE phase) {
-     fd_printf(c, c->remote_fd.fd, "Host: %s", opt->protocol_host);
-     if(opt->protocol_username && opt->protocol_password) {
-         if(!strcasecmp(opt->protocol_authentication, "ntlm")) {
+@@ -1331,7 +1331,7 @@ NOEXPORT void connect_client_middle(CLI *c) {
+     fd_printf(c, c->remote_fd.fd, "Host: %s", c->opt->protocol_host);
+     if(c->opt->protocol_username && c->opt->protocol_password) {
+         if(!strcasecmp(c->opt->protocol_authentication, "ntlm")) {
 -#ifndef OPENSSL_NO_MD4
 +#if !defined(OPENSSL_NO_MD4) && !defined(OPENSSL_NO_DES)
-             ntlm(c, opt);
+             ntlm(c);
  #else
              s_log(LOG_ERR, "NTLM authentication is not available");
-@@ -1395,7 +1395,7 @@ NOEXPORT char *connect_client(CLI *c, SERVICE_OPTIONS *opt, const PHASE phase) {
-     return NULL;
+@@ -1374,7 +1374,7 @@ NOEXPORT void connect_client_middle(CLI *c) {
+     str_free(line);
  }
  
 -#ifndef OPENSSL_NO_MD4
@@ -62,3 +61,6 @@
  
  /*
   * NTLM code is based on the following documentation:
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.69.bb b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.69.bb
deleted file mode 100644
index 8161529..0000000
--- a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.69.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Program for providing universal TLS/SSL tunneling service"
-DESCRIPTION = "SSL encryption wrapper between remote client and local (inetd-startable) or remote server."
-HOMEPAGE = "https://www.stunnel.org/"
-SECTION = "net"
-LICENSE = "GPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING.md;md5=b4988f33f70b383b3011c4ede0a679ce"
-
-DEPENDS = "autoconf-archive libnsl2 openssl"
-
-SRC_URI = "https://stunnel.org/archive/5.x/${BP}.tar.gz \
-           file://fix-openssl-no-des.patch \
-"
-
-SRC_URI[sha256sum] = "1ff7d9f30884c75b98c8a0a4e1534fa79adcada2322635e6787337b4e38fdb81"
-
-inherit autotools bash-completion pkgconfig
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd', d)} libwrap"
-
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[libwrap] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
-PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
-
-EXTRA_OECONF += "--with-ssl='${STAGING_EXECPREFIXDIR}' --disable-fips"
-
-# When cross compiling, configure defaults to nobody, but provides no option to change it.
-EXTRA_OEMAKE += "DEFAULT_GROUP='nogroup'"
-
-# stunnel3 is a Perl wrapper to allow use of the legacy stunnel 3.x commandline
-# syntax with stunnel >= 4.05
-PACKAGES =+ "stunnel3"
-FILES:stunnel3 = "${bindir}/stunnel3"
-RDEPENDS:stunnel3 += "${PN} perl"
diff --git a/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.72.bb b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.72.bb
new file mode 100644
index 0000000..6d21027
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/stunnel/stunnel_5.72.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Program for providing universal TLS/SSL tunneling service"
+DESCRIPTION = "SSL encryption wrapper between remote client and local (inetd-startable) or remote server."
+HOMEPAGE = "https://www.stunnel.org/"
+SECTION = "net"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING.md;md5=906ac034adaee9d093318e51b53453ca"
+
+DEPENDS = "autoconf-archive libnsl2 openssl"
+
+SRC_URI = "https://stunnel.org/archive/5.x/${BP}.tar.gz \
+           file://fix-openssl-no-des.patch \
+"
+
+SRC_URI[sha256sum] = "3d532941281ae353319735144e4adb9ae489a10b7e309c58a48157f08f42e949"
+
+inherit autotools bash-completion pkgconfig
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd', d)} libwrap"
+
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[libwrap] = "--enable-libwrap,--disable-libwrap,tcp-wrappers"
+PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd"
+
+EXTRA_OECONF += "--with-ssl='${STAGING_EXECPREFIXDIR}' --disable-fips"
+
+# When cross compiling, configure defaults to nobody, but provides no option to change it.
+EXTRA_OEMAKE += "DEFAULT_GROUP='nogroup'"
+
+# stunnel3 is a Perl wrapper to allow use of the legacy stunnel 3.x commandline
+# syntax with stunnel >= 4.05
+PACKAGES =+ "stunnel3"
+FILES:stunnel3 = "${bindir}/stunnel3"
+RDEPENDS:stunnel3 += "${PN} perl"
diff --git a/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay/0001-configure.ac-do-not-run-conftest-in-case-of-cross-co.patch b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay/0001-configure.ac-do-not-run-conftest-in-case-of-cross-co.patch
new file mode 100644
index 0000000..08cb3b8
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay/0001-configure.ac-do-not-run-conftest-in-case-of-cross-co.patch
@@ -0,0 +1,51 @@
+From 42f7bbc1ce4913fe2c0bc76293c5445d31690f5d Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 7 Mar 2024 21:02:07 -0800
+Subject: [PATCH] configure.ac: do not run conftest in case of cross
+ compilation
+
+It'll give us nothing but error like below:
+
+  ./conftest: cannot execute binary file: Exec format error
+  ...
+  ./configure: line 23950: test: -eq: unary operator expected
+
+The version check only has effect on Apple systems. We'd better
+avoid error like above when cross compilation.
+
+Also, in case of cross compilation, instead of having the above
+Exec format error and resulting in unaligned_cv_fail to yes, set
+it directly to yes.
+
+Upstream-Status: Submitted [https://github.com/appneta/tcpreplay/pull/849]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 387219de..15201601 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -928,7 +928,7 @@ cat >conftest.c <<EOF
+ EOF
+ ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LPCAPLIB \
+     conftest.c $LIBS >/dev/null 2>&1
+-if test -x conftest ; then
++if test -x conftest -a "$cross_compiling" != "yes"; then
+     full_libpcap_version=$(LD_LIBRARY_PATH="$LPCAP_LD_LIBRARY_PATH" ./conftest)
+     libpcap_version=$(echo "$full_libpcap_version" | ${CUT} -d' ' -f3)
+     pcap_version_ok=yes
+@@ -1709,7 +1709,7 @@ case "$host_os" in
+ EOF
+         ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
+             conftest.c $LIBS >/dev/null 2>&1
+-        if test ! -x conftest ; then
++        if test ! -x conftest -o "$cross_compiling" = "yes" ; then
+             dnl failed to compile for some reason
+             unaligned_cv_fail=yes
+         else
+-- 
+2.42.0
+
diff --git a/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.4.bb b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.4.bb
index 53f17c9..26de40a 100644
--- a/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.4.bb
+++ b/meta-openembedded/meta-networking/recipes-support/tcpreplay/tcpreplay_4.4.4.bb
@@ -10,6 +10,7 @@
 SRC_URI = "https://github.com/appneta/${BPN}/releases/download/v${PV}/${BP}.tar.gz \
     file://0001-libopts.m4-set-POSIX_SHELL-to-bin-sh.patch \
     file://0001-configure.ac-unify-search-dirs-for-pcap-and-add-lib3.patch \
+    file://0001-configure.ac-do-not-run-conftest-in-case-of-cross-co.patch \
 "
 
 SRC_URI[sha256sum] = "44f18fb6d3470ecaf77a51b901a119dae16da5be4d4140ffbb2785e37ad6d4bf"
diff --git a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_4.2.3.bb b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_4.2.3.bb
deleted file mode 100644
index 28a3794..0000000
--- a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_4.2.3.bb
+++ /dev/null
@@ -1,99 +0,0 @@
-DESCRIPTION = "wireshark - a popular network protocol analyzer"
-HOMEPAGE = "http://www.wireshark.org"
-SECTION = "net"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = "pcre2 expat glib-2.0 glib-2.0-native libgcrypt libgpg-error libxml2 bison-native c-ares speexdsp"
-
-DEPENDS:append:class-target = " wireshark-native chrpath-replacement-native "
-
-SRC_URI = "https://1.eu.dl.wireshark.org/src/wireshark-${PV}.tar.xz \
-           file://0001-wireshark-src-improve-reproducibility.patch \
-           file://0002-flex-Remove-line-directives.patch \
-           file://0004-lemon-Remove-line-directives.patch \
-           file://0001-UseLemon.cmake-do-not-use-lemon-data-from-the-host.patch \
-           "
-
-UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src"
-
-SRC_URI[sha256sum] = "958bd5996f543d91779b1a4e7e952dcd7b0245fe82194202c3333a8f78795811"
-
-PE = "1"
-
-inherit cmake pkgconfig python3native python3targetconfig perlnative upstream-version-is-even mime mime-xdg
-
-PACKAGECONFIG ?= "libpcap gnutls libnl libcap sbc"
-
-PACKAGECONFIG:class-native = "libpcap gnutls ssl libssh"
-
-PACKAGECONFIG[libcap] = "-DENABLE_CAP=ON,-DENABLE_CAP=OFF -DENABLE_PCAP_NG_DEFAULT=ON, libcap"
-PACKAGECONFIG[libpcap] = "-DENABLE_PCAP=ON,-DENABLE_PCAP=OFF -DENABLE_PCAP_NG_DEFAULT=ON , libpcap"
-PACKAGECONFIG[libsmi] = "-DENABLE_SMI=ON,-DENABLE_SMI=OFF,libsmi"
-PACKAGECONFIG[libnl] = ",,libnl"
-PACKAGECONFIG[portaudio] = "-DENABLE_PORTAUDIO=ON,-DENABLE_PORTAUDIO=OFF, portaudio-v19"
-PACKAGECONFIG[gnutls] = "-DENABLE_GNUTLS=ON,-DENABLE_GNUTLS=OFF, gnutls"
-PACKAGECONFIG[ssl] = ",,openssl"
-PACKAGECONFIG[krb5] = "-DENABLE_KRB5=ON,-DENABLE_KRB5=OFF, krb5"
-PACKAGECONFIG[lua] = "-DENABLE_LUA=ON,-DENABLE_LUA=OFF, lua"
-PACKAGECONFIG[zlib] = "-DENABLE_ZLIB=ON,-DENABLE_ZLIB=OFF, zlib"
-PACKAGECONFIG[geoip] = ",, geoip"
-PACKAGECONFIG[plugins] = "-DENABLE_PLUGINS=ON,-DENABLE_PLUGINS=OFF"
-PACKAGECONFIG[sbc] = "-DENABLE_SBC=ON,-DENABLE_SBC=OFF, sbc"
-PACKAGECONFIG[libssh] = "-DENABLE_LIBSSH=ON,-DENABLE_LIBSSH=OFF, libssh2"
-PACKAGECONFIG[lz4] = "-DENABLE_LZ4=ON,-DENABLE_LZ4=OFF, lz4"
-PACKAGECONFIG[zstd] = "-DENABLE_STTD=ON,-DENABLE_ZSTD=OFF, zstd"
-PACKAGECONFIG[nghttp2] = "-DENABLE_NGHTTP2=ON,-DENABLE_NGHTTP2=OFF, nghttp2"
-
-# these next two options require addional layers
-PACKAGECONFIG[qt5] = "-DENABLE_QT5=ON -DBUILD_wireshark=ON, -DENABLE_QT5=OFF -DBUILD_wireshark=OFF, qttools-native qtmultimedia qtsvg"
-
-inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt5', 'cmake_qt5', '', d)}
-
-EXTRA_OECMAKE += "-DENABLE_NETLINK=ON \
-                  -DBUILD_mmdbresolve=OFF \
-                  -DBUILD_randpktdump=OFF \
-                  -DBUILD_androiddump=OFF \
-                  -DBUILD_dcerpcidl2wrs=OFF \
-                  -DM_INCLUDE_DIR=${includedir} \
-                  -DM_LIBRARY=${libdir} \
-                 "
-CFLAGS:append = " -lm"
-
-do_compile:append:class-target() {
-    # Fix TMPDIR, these are in the comments section
-    sed -i -e "s:** source file.*::g"  ${B}/wiretap/ascend_parser.c
-    sed -i -e "s:** source file.*::g"  ${B}/wiretap/candump_parser.c
-    sed -i -e "s:** source file.*::g"  ${B}/wiretap/busmaster_parser.c
-    sed -i -e "s:** source file.*::g"  ${B}/epan/protobuf_lang_parser.c
-    sed -i -e "s:** source file.*::g"  ${B}/epan/dtd_grammar.c
-    sed -i -e "s:** source file.*::g"  ${B}/epan/dfilter/grammar.c
-}
-
-do_install:append:class-native() {
-	install -d ${D}${bindir}
-	for f in lemon
-	do
-		install -m 0755 ${B}/run/$f ${D}${bindir}
-	done
-}
-
-do_install:append:class-target() {
-	for f in `find ${D}${libdir} ${D}${bindir} -type f -executable`
-	do
-		chrpath --delete $f
-	done
-
-    # We don't need the cmake files installed
-    rm -fr ${D}${usrlib}/${BPN}/cmake
-}
-
-PACKAGE_BEFORE_PN += "tshark"
-
-FILES:tshark = "${bindir}/tshark ${mandir}/man1/tshark.*"
-
-FILES:${PN} += "${datadir}*"
-
-RDEPENDS:tshark = "wireshark"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_4.2.4.bb b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_4.2.4.bb
new file mode 100644
index 0000000..95db2ef
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-support/wireshark/wireshark_4.2.4.bb
@@ -0,0 +1,99 @@
+DESCRIPTION = "wireshark - a popular network protocol analyzer"
+HOMEPAGE = "http://www.wireshark.org"
+SECTION = "net"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "pcre2 expat glib-2.0 glib-2.0-native libgcrypt libgpg-error libxml2 bison-native c-ares speexdsp"
+
+DEPENDS:append:class-target = " wireshark-native chrpath-replacement-native "
+
+SRC_URI = "https://1.eu.dl.wireshark.org/src/wireshark-${PV}.tar.xz \
+           file://0001-wireshark-src-improve-reproducibility.patch \
+           file://0002-flex-Remove-line-directives.patch \
+           file://0004-lemon-Remove-line-directives.patch \
+           file://0001-UseLemon.cmake-do-not-use-lemon-data-from-the-host.patch \
+           "
+
+UPSTREAM_CHECK_URI = "https://1.as.dl.wireshark.org/src"
+
+SRC_URI[sha256sum] = "46bd0f4474337144b30816fb2d8f14e72a26d0391f24fe0b7b619acdcdad8c0c"
+
+PE = "1"
+
+inherit cmake pkgconfig python3native python3targetconfig perlnative upstream-version-is-even mime mime-xdg
+
+PACKAGECONFIG ?= "libpcap gnutls libnl libcap sbc"
+
+PACKAGECONFIG:class-native = "libpcap gnutls ssl libssh"
+
+PACKAGECONFIG[libcap] = "-DENABLE_CAP=ON,-DENABLE_CAP=OFF -DENABLE_PCAP_NG_DEFAULT=ON, libcap"
+PACKAGECONFIG[libpcap] = "-DENABLE_PCAP=ON,-DENABLE_PCAP=OFF -DENABLE_PCAP_NG_DEFAULT=ON , libpcap"
+PACKAGECONFIG[libsmi] = "-DENABLE_SMI=ON,-DENABLE_SMI=OFF,libsmi"
+PACKAGECONFIG[libnl] = ",,libnl"
+PACKAGECONFIG[portaudio] = "-DENABLE_PORTAUDIO=ON,-DENABLE_PORTAUDIO=OFF, portaudio-v19"
+PACKAGECONFIG[gnutls] = "-DENABLE_GNUTLS=ON,-DENABLE_GNUTLS=OFF, gnutls"
+PACKAGECONFIG[ssl] = ",,openssl"
+PACKAGECONFIG[krb5] = "-DENABLE_KRB5=ON,-DENABLE_KRB5=OFF, krb5"
+PACKAGECONFIG[lua] = "-DENABLE_LUA=ON,-DENABLE_LUA=OFF, lua"
+PACKAGECONFIG[zlib] = "-DENABLE_ZLIB=ON,-DENABLE_ZLIB=OFF, zlib"
+PACKAGECONFIG[geoip] = ",, geoip"
+PACKAGECONFIG[plugins] = "-DENABLE_PLUGINS=ON,-DENABLE_PLUGINS=OFF"
+PACKAGECONFIG[sbc] = "-DENABLE_SBC=ON,-DENABLE_SBC=OFF, sbc"
+PACKAGECONFIG[libssh] = "-DENABLE_LIBSSH=ON,-DENABLE_LIBSSH=OFF, libssh2"
+PACKAGECONFIG[lz4] = "-DENABLE_LZ4=ON,-DENABLE_LZ4=OFF, lz4"
+PACKAGECONFIG[zstd] = "-DENABLE_STTD=ON,-DENABLE_ZSTD=OFF, zstd"
+PACKAGECONFIG[nghttp2] = "-DENABLE_NGHTTP2=ON,-DENABLE_NGHTTP2=OFF, nghttp2"
+
+# these next two options require addional layers
+PACKAGECONFIG[qt5] = "-DENABLE_QT5=ON -DBUILD_wireshark=ON, -DENABLE_QT5=OFF -DBUILD_wireshark=OFF, qttools-native qtmultimedia qtsvg"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'qt5', 'cmake_qt5', '', d)}
+
+EXTRA_OECMAKE += "-DENABLE_NETLINK=ON \
+                  -DBUILD_mmdbresolve=OFF \
+                  -DBUILD_randpktdump=OFF \
+                  -DBUILD_androiddump=OFF \
+                  -DBUILD_dcerpcidl2wrs=OFF \
+                  -DM_INCLUDE_DIR=${includedir} \
+                  -DM_LIBRARY=${libdir} \
+                 "
+CFLAGS:append = " -lm"
+
+do_compile:append:class-target() {
+    # Fix TMPDIR, these are in the comments section
+    sed -i -e "s:** source file.*::g"  ${B}/wiretap/ascend_parser.c
+    sed -i -e "s:** source file.*::g"  ${B}/wiretap/candump_parser.c
+    sed -i -e "s:** source file.*::g"  ${B}/wiretap/busmaster_parser.c
+    sed -i -e "s:** source file.*::g"  ${B}/epan/protobuf_lang_parser.c
+    sed -i -e "s:** source file.*::g"  ${B}/epan/dtd_grammar.c
+    sed -i -e "s:** source file.*::g"  ${B}/epan/dfilter/grammar.c
+}
+
+do_install:append:class-native() {
+	install -d ${D}${bindir}
+	for f in lemon
+	do
+		install -m 0755 ${B}/run/$f ${D}${bindir}
+	done
+}
+
+do_install:append:class-target() {
+	for f in `find ${D}${libdir} ${D}${bindir} -type f -executable`
+	do
+		chrpath --delete $f
+	done
+
+    # We don't need the cmake files installed
+    rm -fr ${D}${usrlib}/${BPN}/cmake
+}
+
+PACKAGE_BEFORE_PN += "tshark"
+
+FILES:tshark = "${bindir}/tshark ${mandir}/man1/tshark.*"
+
+FILES:${PN} += "${datadir}*"
+
+RDEPENDS:tshark = "wireshark"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/conf/include/ptest-packagelists-meta-oe.inc b/meta-openembedded/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
index fadec12..673b41f 100644
--- a/meta-openembedded/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
+++ b/meta-openembedded/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
@@ -10,7 +10,6 @@
     cmocka \
     cunit \
     duktape \
-    fmt \
     function2 \
     fwupd \
     gcab \
@@ -27,6 +26,7 @@
     libxml++-5.0 \
     libyang \
     lmdb \
+    microsoft-gsl \
     minicoredumper \
     neon \
     nlohmann-json \
diff --git a/meta-openembedded/meta-oe/conf/layer.conf b/meta-openembedded/meta-oe/conf/layer.conf
index 732a7e5..4d9acb8 100644
--- a/meta-openembedded/meta-oe/conf/layer.conf
+++ b/meta-openembedded/meta-oe/conf/layer.conf
@@ -44,7 +44,7 @@
 
 LAYERDEPENDS_openembedded-layer = "core"
 
-LAYERSERIES_COMPAT_openembedded-layer = "nanbield"
+LAYERSERIES_COMPAT_openembedded-layer = "scarthgap"
 
 LICENSE_PATH += "${LAYERDIR}/licenses"
 
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-Makefile-do-not-use-Werror.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-Makefile-do-not-use-Werror.patch
deleted file mode 100644
index b8c48d5..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-Makefile-do-not-use-Werror.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a06c77557ed951249d5b344441ad6ec57410e63f Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex@linutronix.de>
-Date: Sun, 3 Oct 2021 21:52:16 +0200
-Subject: [PATCH] Makefile: do not use -Werror
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- Makefile | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 97973ce..78273ff 100644
---- a/Makefile
-+++ b/Makefile
-@@ -8,7 +8,6 @@ BUILDFLAGS = \
- 	-DSBINDIR=\"$(SBINDIR)\" \
- 	-I${CURDIR}/include \
- 	-Wall \
--	-Werror \
- 	$(NULL)
- 
- TESTFLAGS =	\
--- 
-2.34.1
-
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
index 0bd7f80..cabceae 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch
@@ -1,20 +1,20 @@
-From e0df1f07d1707d5daf0358cc60b30f06121f7e60 Mon Sep 17 00:00:00 2001
+From 0ea11f520a8b4453e60eaf0679b9feb757024422 Mon Sep 17 00:00:00 2001
 From: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
 Date: Fri, 25 Dec 2020 11:41:43 +0900
 Subject: [PATCH] don't fail if GLOB_BRACE is not defined
 
-Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
----
 Upstream-Status: Pending
 
+Signed-off-by: Zang Ruochen <zangrc.fnst@cn.fujitsu.com>
+---
  src/util.c | 6 ++++++
  1 file changed, 6 insertions(+)
 
 diff --git a/src/util.c b/src/util.c
-index 841ec12..59595da 100644
+index 36eb896a..ee13ec44 100644
 --- a/src/util.c
 +++ b/src/util.c
-@@ -32,6 +32,12 @@
+@@ -35,6 +35,12 @@
  #include "names.h"
  #include "yaml-helpers.h"
  
@@ -24,7 +24,7 @@
 +#define GLOB_BRACE 0
 +#endif
 +
- NETPLAN_ABI GHashTable*
+ GHashTable*
  wifi_frequency_24;
  
 -- 
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-meson.build-drop-unnecessary-build-dependencies.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-meson.build-drop-unnecessary-build-dependencies.patch
new file mode 100644
index 0000000..4f385e9
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-meson.build-drop-unnecessary-build-dependencies.patch
@@ -0,0 +1,58 @@
+From d3aa30f5cd7ba375e006a755752acbcfcd619452 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Wed, 6 Mar 2024 19:27:15 +0800
+Subject: [PATCH] meson.build: drop unnecessary build dependencies
+
+The pytest and pycoverage are required by meson test but not for
+building. Mark them as 'required: false' to get rid of unnecessary
+build dependencies.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ meson.build | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 9556836a..30f33fe2 100644
+--- a/meson.build
++++ b/meson.build
+@@ -25,8 +25,8 @@ bash_completions_dir = completions.get_variable(pkgconfig: 'completionsdir', def
+ # Order: Fedora/Mageia/openSUSE || Debian/Ubuntu
+ pyflakes = find_program('pyflakes-3', 'pyflakes3', required: false)
+ pycodestyle = find_program('pycodestyle-3', 'pycodestyle', 'pep8', required: false)
+-pytest = find_program('pytest-3', 'pytest3')  # also requires the pytest-cov plugin
+-pycoverage = find_program('coverage-3', 'python3-coverage')
++pytest = find_program('pytest-3', 'pytest3', required: false)  # also requires the pytest-cov plugin
++pycoverage = find_program('coverage-3', 'python3-coverage', required: false)
+ pandoc = find_program('pandoc', required: false)
+ find = find_program('find')
+ 
+@@ -75,6 +75,7 @@ if get_option('unit_testing')
+ endif
+ 
+ #FIXME: exclude doc/env/
++if pyflakes.found() and pycodestyle.found()
+ test('linting',
+      pyflakes,
+      timeout: 100,
+@@ -91,7 +92,9 @@ test('legacy-tests',
+      find_program('tests/cli_legacy.py'),
+      timeout: 600,
+      env: test_env)
++endif
+ #TODO: split out dbus tests into own test() instance, to run in parallel
++if pycoverage.found()
+ test('unit-tests',
+      pycoverage,
+      args: ['run', '-a', '-m', 'pytest', '-s', '-v', '--cov-append', meson.current_source_dir()],
+@@ -143,4 +146,5 @@ if get_option('b_coverage')
+          priority: -99, # run last
+          is_parallel: false)
+ endif
++endif
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-networkd.c-define-scope-specific-to-case-statement.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-networkd.c-define-scope-specific-to-case-statement.patch
new file mode 100644
index 0000000..9f01108
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0001-networkd.c-define-scope-specific-to-case-statement.patch
@@ -0,0 +1,47 @@
+From 6e3dd61bf90a7ca8c36c5b95943cbff7c1ad3c2d Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Wed, 6 Mar 2024 16:12:31 +0800
+Subject: [PATCH] networkd.c: define scope specific to case statement
+
+Per [1], define a scope specific to case statement to fix build with
+clang.
+
+Fixes:
+../git/src/networkd.c:544:13: error: expected expression
+  544 |             gchar* first = g_strcmp0(def->id, def->veth_peer_link->id) < 0 ? def->id : def->veth_peer_link->id;
+      |             ^
+../git/src/networkd.c:545:17: error: use of undeclared identifier 'first'
+  545 |             if (first != def->id) {
+      |                 ^
+
+[1] https://stackoverflow.com/questions/92396/why-cant-variables-be-declared-in-a-switch-statement
+
+Upstream-Status: Pending
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ src/networkd.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/networkd.c b/src/networkd.c
+index 25121c48..5eb9c0fe 100644
+--- a/src/networkd.c
++++ b/src/networkd.c
+@@ -541,12 +541,14 @@ write_netdev_file(const NetplanNetDefinition* def, const char* rootdir, const ch
+              * and, if the selected name is the name of the netdef being written, we generate
+              * the .netdev file. Otherwise we skip the netdef.
+              */
++        {
+             gchar* first = g_strcmp0(def->id, def->veth_peer_link->id) < 0 ? def->id : def->veth_peer_link->id;
+             if (first != def->id) {
+                 g_string_free(s, TRUE);
+                 return;
+             }
+             g_string_append_printf(s, "Kind=veth\n\n[Peer]\nName=%s\n", def->veth_peer_link->id);
++        }
+             break;
+ 
+         case NETPLAN_DEF_TYPE_TUNNEL:
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0002-meson.build-do-not-use-Werror.patch b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0002-meson.build-do-not-use-Werror.patch
new file mode 100644
index 0000000..663a80e
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan/0002-meson.build-do-not-use-Werror.patch
@@ -0,0 +1,29 @@
+From 668ee79f39614ad758edd44c42b8b0eff57877cf Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Sun, 3 Oct 2021 21:52:16 +0200
+Subject: [PATCH] meson.build: do not use -Werror
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 30f33fe2..0b214795 100644
+--- a/meson.build
++++ b/meson.build
+@@ -4,7 +4,7 @@ project('netplan', 'c',
+         default_options: [
+             'c_std=c99',
+             'warning_level=2',
+-            'werror=true',
++            'werror=false',
+         ],
+         meson_version: '>= 0.61.0',
+ )
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan_0.106.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan_0.106.bb
deleted file mode 100644
index 8c1eaa5..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan_0.106.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-SUMMARY = "The network configuration abstraction renderer"
-DESCRIPTION = "Netplan is a utility for easily configuring networking on a \
-linux system. You simply create a YAML description of the required network \
-interfaces and what each should be configured to do. From this description \
-Netplan will generate all the necessary configuration for your chosen renderer \
-tool."
-HOMEPAGE = "https://netplan.io"
-SECTION = "net/misc"
-
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-S = "${WORKDIR}/git"
-SRCREV = "15ce044d1df27b5057556d84d0d14beef8dd4e4d"
-PV = "0.106"
-
-SRC_URI = "git://github.com/CanonicalLtd/netplan.git;branch=main;protocol=https \
-           file://0001-Makefile-do-not-use-Werror.patch \
-           "
-
-SRC_URI:append:libc-musl = " file://0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch"
-
-DEPENDS = "glib-2.0 libyaml ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
-
-PACKAGECONFIG ?= ""
-
-PACKAGECONFIG[tests] = ",,,python3-nose python3-coverage python3-netifaces python3-pycodestyle python3-pyflakes python3-pyyaml"
-
-RDEPENDS:${PN} = "python3 python3-core python3-netifaces python3-pyyaml util-linux-libuuid libnetplan python3-dbus python3-rich"
-
-inherit pkgconfig systemd
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-EXTRA_OEMAKE = "generate netplan/_features.py"
-EXTRA_OEMAKE =+ "${@bb.utils.contains('DISTRO_FEATURES','systemd','netplan-dbus dbus/io.netplan.Netplan.service','',d)}"
-
-do_install() {
-	install -d ${D}${sbindir} ${D}${libdir} ${D}${base_libdir}/netplan ${D}${datadir}/netplan/netplan/cli/commands ${D}${sysconfdir}/netplan
-	install -m 755 ${S}/generate ${D}${base_libdir}/netplan/
-	install -m 644 ${S}/netplan/*.py ${D}${datadir}/netplan/netplan
-	install -m 644 ${S}/netplan/cli/*.py ${D}${datadir}/netplan/netplan/cli
-	install -m 644 ${S}/netplan/cli/commands/*.py ${D}${datadir}/netplan/netplan/cli/commands
-	install -m 755 ${S}/src/netplan.script ${D}${datadir}/netplan/
-	ln -srf ${D}${datadir}/netplan/netplan.script ${D}${sbindir}/netplan
-	sed -i -e "s#/lib/netplan/generate#${base_libdir}/netplan/generate#" ${D}${datadir}/netplan/netplan/cli/utils.py
-
-	install -d ${D}/${systemd_unitdir}/system ${D}${systemd_unitdir}/system-generators
-	ln -srf ${D}/${base_libdir}/netplan/generate ${D}${systemd_unitdir}/system-generators
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${datadir}/dbus-1/system.d ${D}${datadir}/dbus-1/system-services
-		install -m 755 ${S}/netplan-dbus ${D}${base_libdir}/netplan
-		install -m 644 ${S}/dbus/io.netplan.Netplan.conf ${D}${datadir}/dbus-1/system.d
-		install -m 644 ${S}/dbus/io.netplan.Netplan.service ${D}${datadir}/dbus-1/system-services
-		sed -i -e "s#^Exec=/lib/#Exec=${base_libdir}/#" ${D}${datadir}/dbus-1/system-services/io.netplan.Netplan.service
-	fi
-
-	install -m 755 ${S}/libnetplan.so.0.0 ${D}${libdir}
-        ln -rfs ${D}${libdir}/libnetplan.so.0.0 ${D}${libdir}/libnetplan.so
-}
-
-PACKAGES += "${PN}-dbus libnetplan"
-
-FILES:libnetplan = "${libdir}/libnetplan.so.0.0"
-FILES:${PN} = "${sbindir} ${base_libdir}/netplan/generate ${datadir}/netplan ${sysconfdir}/netplan ${systemd_unitdir}"
-FILES:${PN}-dbus = "${base_libdir}/netplan/netplan-dbus ${datadir}/dbus-1"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan_1.0.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan_1.0.bb
new file mode 100644
index 0000000..2294147
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/netplan/netplan_1.0.bb
@@ -0,0 +1,52 @@
+SUMMARY = "The network configuration abstraction renderer"
+DESCRIPTION = "Netplan is a utility for easily configuring networking on a \
+linux system. You simply create a YAML description of the required network \
+interfaces and what each should be configured to do. From this description \
+Netplan will generate all the necessary configuration for your chosen renderer \
+tool."
+HOMEPAGE = "https://netplan.io"
+SECTION = "net/misc"
+
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+inherit meson pkgconfig systemd python3targetconfig features_check
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+SRC_URI = "git://github.com/CanonicalLtd/netplan.git;branch=main;protocol=https \
+           file://0001-meson.build-drop-unnecessary-build-dependencies.patch \
+           file://0002-meson.build-do-not-use-Werror.patch \
+          "
+
+SRC_URI:append:libc-musl = " file://0001-don-t-fail-if-GLOB_BRACE-is-not-defined.patch"
+SRC_URI:append:toolchain-clang = " file://0001-networkd.c-define-scope-specific-to-case-statement.patch"
+
+SRCREV = "45f7cd1569896d9e316c130bf5c60b7ccfc8211d"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "glib-2.0 libyaml util-linux-libuuid \
+           systemd python3-cffi-native \
+          "
+
+EXTRA_OEMESON = "-Dunit_testing=false"
+
+RDEPENDS:${PN} = "python3-core python3-netifaces python3-pyyaml \
+                  python3-dbus python3-rich python3-cffi \
+                  util-linux-libuuid libnetplan \
+                 "
+
+do_install:append() {
+    install -d -m 755 ${D}${sysconfdir}/netplan
+}
+
+PACKAGES += "${PN}-dbus libnetplan"
+
+FILES:libnetplan = "${libdir}/libnetplan.so.*"
+FILES:${PN} = "${sbindir} ${libexecdir}/netplan/generate \
+               ${datadir}/netplan ${datadir}/bash-completion \
+               ${systemd_unitdir} ${PYTHON_SITEPACKAGES_DIR} \
+               ${sysconfdir}/netplan \
+              "
+FILES:${PN}-dbus = "${libexecdir}/netplan/netplan-dbus ${datadir}/dbus-1"
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_3.4.4.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_3.4.4.bb
deleted file mode 100644
index e141798..0000000
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_3.4.4.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-SUMMARY = "Open-source IoT platform for data collection, processing, visualization, and device management"
-DESCRIPTION = "\
-The Thingsboard IoT Gateway is an open-source solution that allows you \
-to integrate devices connected to legacy and third-party systems with Thingsboard."
-HOMEPAGE = "https://thingsboard.io/"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI[sha256sum] = "94ee246ced4aa1f31d992f1571baae3282cc73eee76336fa9e9791adfeca13bc"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "thingsboard-gateway"
-
-RDEPENDS:${PN} += " python3-jsonpath-rw \
-                    python3-regex \
-                    python3-paho-mqtt \
-                    python3-pyyaml \
-                    python3-simplejson \
-                    python3-requests \
-                    python3-pip \
-                    python3-pyrsistent \
-"
-
-SRC_URI += "file://bacnet.json \
-            file://ble.json \
-            file://can.json \
-            file://custom_serial.json \
-            file://modbus.json \
-            file://modbus_serial.json \
-            file://mqtt.json \
-            file://opcua.json \
-            file://odbc.json \
-            file://request.json \
-            file://rest.json \
-            file://snmp.json \
-            file://tb_gateway.yaml \
-            file://logs.conf \
-            file://thingsboard-gateway.service \
-            "
-
-
-inherit systemd
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE:${PN} = "thingsboard-gateway.service"
-
-FILES:${PN} += "/etc \
-                /lib \
-                /usr \
-"
-
-do_install:append(){
-
-    install -d ${D}${sysconfdir}/thingsboard-gateway/config
-
-    for file in $(find ${WORKDIR} -maxdepth 1 -type f -name *.json); do
-        install -m 0644 "$file" ${D}${sysconfdir}/thingsboard-gateway/config
-    done
-
-    install -m 0644 ${WORKDIR}/tb_gateway.yaml ${D}${sysconfdir}/thingsboard-gateway/config
-    install -m 0644 ${WORKDIR}/logs.conf ${D}${sysconfdir}/thingsboard-gateway/config
-
-    install -d ${D}${systemd_unitdir}/system/
-    install -m 0644 ${WORKDIR}/thingsboard-gateway.service     ${D}${systemd_system_unitdir}/thingsboard-gateway.service
-}
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_3.4.6.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_3.4.6.bb
new file mode 100644
index 0000000..0d0f6fe
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_3.4.6.bb
@@ -0,0 +1,67 @@
+SUMMARY = "Open-source IoT platform for data collection, processing, visualization, and device management"
+DESCRIPTION = "\
+The Thingsboard IoT Gateway is an open-source solution that allows you \
+to integrate devices connected to legacy and third-party systems with Thingsboard."
+HOMEPAGE = "https://thingsboard.io/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SRC_URI[sha256sum] = "fc24bb674308f05d963a1dbed8d0b38ead77424ad7cf032a2652732af48f1336"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "thingsboard-gateway"
+
+RDEPENDS:${PN} += " python3-jsonpath-rw \
+                    python3-regex \
+                    python3-paho-mqtt \
+                    python3-pyyaml \
+                    python3-simplejson \
+                    python3-requests \
+                    python3-pip \
+                    python3-pyrsistent \
+"
+
+SRC_URI += "file://bacnet.json \
+            file://ble.json \
+            file://can.json \
+            file://custom_serial.json \
+            file://modbus.json \
+            file://modbus_serial.json \
+            file://mqtt.json \
+            file://opcua.json \
+            file://odbc.json \
+            file://request.json \
+            file://rest.json \
+            file://snmp.json \
+            file://tb_gateway.yaml \
+            file://logs.conf \
+            file://thingsboard-gateway.service \
+            "
+
+
+inherit systemd
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "thingsboard-gateway.service"
+
+FILES:${PN} += "/etc \
+                /lib \
+                /usr \
+"
+
+do_install:append(){
+
+    install -d ${D}${sysconfdir}/thingsboard-gateway/config
+
+    for file in $(find ${WORKDIR} -maxdepth 1 -type f -name *.json); do
+        install -m 0644 "$file" ${D}${sysconfdir}/thingsboard-gateway/config
+    done
+
+    install -m 0644 ${WORKDIR}/tb_gateway.yaml ${D}${sysconfdir}/thingsboard-gateway/config
+    install -m 0644 ${WORKDIR}/logs.conf ${D}${sysconfdir}/thingsboard-gateway/config
+
+    install -d ${D}${systemd_unitdir}/system/
+    install -m 0644 ${WORKDIR}/thingsboard-gateway.service     ${D}${systemd_system_unitdir}/thingsboard-gateway.service
+}
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-devtools/nanopb/nanopb.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-devtools/nanopb/nanopb.bb
index 7ad6a32..d4ab31a 100644
--- a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-devtools/nanopb/nanopb.bb
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-devtools/nanopb/nanopb.bb
@@ -1,6 +1,5 @@
 SUMMARY = "Combined nanopb package"
 PV = "1.0"
-PR = "r1"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.32.bb b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.32.bb
deleted file mode 100644
index 90e2834..0000000
--- a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.32.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Filesystem and hardware benchmark and stress tool"
-DESCRIPTION = "fio is an I/O tool meant to be used both for benchmark and \
-stress/hardware verification. It has support for a number of I/O engines, \
-I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs, \
-and much more. It can work on block devices as well as files. fio accepts \
-job descriptions in a simple-to-understand text format. Several example job \
-files are included. fio displays all sorts of I/O performance information."
-HOMEPAGE = "http://freecode.com/projects/fio"
-SECTION = "console/tests"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-DEPENDS = "libaio zlib coreutils-native"
-DEPENDS += "${@bb.utils.contains('MACHINE_FEATURES', 'pmem', 'pmdk', '', d)}"
-RDEPENDS:${PN} = "python3-core bash"
-
-PACKAGECONFIG_NUMA = "numa"
-# ARM does not currently support NUMA
-PACKAGECONFIG_NUMA:arm = ""
-PACKAGECONFIG_NUMA:armeb = ""
-
-PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}"
-PACKAGECONFIG[numa] = ",--disable-numa,numactl"
-
-SRCREV = "db7fc8d864dc4fb607a0379333a0db60431bd649"
-SRC_URI = "git://git.kernel.dk/fio.git;branch=master"
-
-S = "${WORKDIR}/git"
-
-# avoids build breaks when using no-static-libs.inc
-DISABLE_STATIC = ""
-
-EXTRA_OEMAKE = "CC='${CC}' LDFLAGS='${LDFLAGS}'"
-EXTRA_OECONF = "${@bb.utils.contains('MACHINE_FEATURES', 'x86', '--disable-optimizations', '', d)}"
-
-do_configure() {
-    ./configure ${EXTRA_OECONF}
-}
-
-do_install() {
-    oe_runmake install DESTDIR=${D} prefix=${prefix} mandir=${mandir}
-    install -d ${D}/${docdir}/${PN}
-    cp -R --no-dereference --preserve=mode,links -v ${S}/examples ${D}/${docdir}/${PN}/
-}
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.36.bb b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.36.bb
new file mode 100644
index 0000000..a871ed8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-benchmark/fio/fio_3.36.bb
@@ -0,0 +1,45 @@
+SUMMARY = "Filesystem and hardware benchmark and stress tool"
+DESCRIPTION = "fio is an I/O tool meant to be used both for benchmark and \
+stress/hardware verification. It has support for a number of I/O engines, \
+I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs, \
+and much more. It can work on block devices as well as files. fio accepts \
+job descriptions in a simple-to-understand text format. Several example job \
+files are included. fio displays all sorts of I/O performance information."
+HOMEPAGE = "http://freecode.com/projects/fio"
+SECTION = "console/tests"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+DEPENDS = "libaio zlib coreutils-native"
+DEPENDS += "${@bb.utils.contains('MACHINE_FEATURES', 'pmem', 'pmdk', '', d)}"
+RDEPENDS:${PN} = "python3-core bash"
+
+PACKAGECONFIG_NUMA = "numa"
+# ARM does not currently support NUMA
+PACKAGECONFIG_NUMA:arm = ""
+PACKAGECONFIG_NUMA:armeb = ""
+
+PACKAGECONFIG ??= "${PACKAGECONFIG_NUMA}"
+PACKAGECONFIG[numa] = ",--disable-numa,numactl"
+
+PV .= "+git"
+SRCREV = "b2403d413ee734e8835539319d8bc3429a0777ac"
+SRC_URI = "git://git.kernel.dk/fio.git;branch=master"
+
+S = "${WORKDIR}/git"
+
+# avoids build breaks when using no-static-libs.inc
+DISABLE_STATIC = ""
+
+EXTRA_OEMAKE = "CC='${CC}' LDFLAGS='${LDFLAGS}'"
+EXTRA_OECONF = "${@bb.utils.contains('MACHINE_FEATURES', 'x86', '--disable-optimizations', '', d)}"
+
+do_configure() {
+    ./configure ${EXTRA_OECONF}
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D} prefix=${prefix} mandir=${mandir}
+    install -d ${D}/${docdir}/${PN}
+    cp -R --no-dereference --preserve=mode,links -v ${S}/examples ${D}/${docdir}/${PN}/
+}
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
index 03018bb..57f73ee 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/lmbench/lmbench_3.0-a9.bb
@@ -10,7 +10,6 @@
 DEPENDS += "libtirpc"
 CFLAGS += "-I${STAGING_INCDIR}/tirpc"
 
-PR = "r2"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/lmbench/lmbench-${PV}.tgz \
            file://lmbench-run \
diff --git a/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb b/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
index 5efddfc..0769715 100644
--- a/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
+++ b/meta-openembedded/meta-oe/recipes-benchmark/tiobench/tiobench_0.3.3.bb
@@ -3,7 +3,6 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b"
 
-PR = "r1"
 
 SRC_URI = "\
     http://sourceforge.net/projects/tiobench/files/tiobench/${PV}/${BP}.tar.gz \
diff --git a/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb b/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb
index 1304ba9..cb62ee4 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/cpufrequtils/cpufrequtils_008.bb
@@ -16,7 +16,6 @@
 
 EXTRA_OEMAKE:append = " ${@['', 'NLS=false']['${USE_NLS}' == 'no']} "
 
-PR = "r5"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-bsp/i2cdev/i2cdev/fix-musl.patch b/meta-openembedded/meta-oe/recipes-bsp/i2cdev/i2cdev/fix-musl.patch
index 59fd379..a15514b 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/i2cdev/i2cdev/fix-musl.patch
+++ b/meta-openembedded/meta-oe/recipes-bsp/i2cdev/i2cdev/fix-musl.patch
@@ -20,8 +20,6 @@
  lsi2c/lsi2c.c              | 4 ++--
  7 files changed, 2 insertions(+), 9 deletions(-)
 
-diff --git a/libi2cdev/access.c b/libi2cdev/access.c
-index 62a3f59..2e77659 100644
 --- a/libi2cdev/access.c
 +++ b/libi2cdev/access.c
 @@ -16,7 +16,6 @@
@@ -32,20 +30,19 @@
  #include "sysfs.h"
  
  #include "i2cdiscov.h"
-diff --git a/libi2cdev/i2c-bus-parser.c b/libi2cdev/i2c-bus-parser.c
-index c4b8688..8c760e0 100644
 --- a/libi2cdev/i2c-bus-parser.c
 +++ b/libi2cdev/i2c-bus-parser.c
-@@ -27,7 +27,6 @@
+@@ -27,9 +27,9 @@
  #include <dirent.h>
  #include <fcntl.h>
  #include <errno.h>
 -#include <error.h>
  #include <alloca.h>
  #include <search.h>
++#include <libgen.h>
  
-diff --git a/libi2cdev/i2c-dev-path.c b/libi2cdev/i2c-dev-path.c
-index b156db7..361761c 100644
+ #include "common.h"
+ #include "sysfs.h"
 --- a/libi2cdev/i2c-dev-path.c
 +++ b/libi2cdev/i2c-dev-path.c
 @@ -11,7 +11,6 @@
@@ -56,8 +53,6 @@
  
  #include <linux/limits.h>
  
-diff --git a/libi2cdev/i2c-error.c b/libi2cdev/i2c-error.c
-index f92fb6b..540c112 100644
 --- a/libi2cdev/i2c-error.c
 +++ b/libi2cdev/i2c-error.c
 @@ -9,7 +9,6 @@
@@ -68,8 +63,6 @@
  #include <errno.h>
  #include <stdbool.h>
  #include <stdarg.h>
-diff --git a/libi2cdev/init.c b/libi2cdev/init.c
-index 99a7edd..dfc4090 100644
 --- a/libi2cdev/init.c
 +++ b/libi2cdev/init.c
 @@ -16,10 +16,8 @@
@@ -83,20 +76,18 @@
  #include <fcntl.h>
  #include <assert.h>
  
-diff --git a/libi2cdev/sysfs.c b/libi2cdev/sysfs.c
-index 2811500..a7e13a8 100644
 --- a/libi2cdev/sysfs.c
 +++ b/libi2cdev/sysfs.c
-@@ -17,7 +17,6 @@
+@@ -17,8 +17,8 @@
  #include <assert.h>
  #include <string.h>
  #include <fcntl.h>
 -#include <error.h>
  #include <errno.h>
++#include <libgen.h>
  
  #include <sys/types.h>
-diff --git a/lsi2c/lsi2c.c b/lsi2c/lsi2c.c
-index 7af5313..34c6225 100644
+ #include <sys/stat.h>
 --- a/lsi2c/lsi2c.c
 +++ b/lsi2c/lsi2c.c
 @@ -38,7 +38,6 @@
@@ -107,7 +98,7 @@
  #include <getopt.h>
  #include <stdbool.h>
  
-@@ -205,7 +204,8 @@ static int read_config_file(const char *config_file_name)
+@@ -205,7 +204,8 @@ static int read_config_file(const char *
          if (err < 0) {
              err = -err;
          }
@@ -117,6 +108,3 @@
          if (config_file) {
              fclose(config_file);
          }
--- 
-2.34.1
-
diff --git a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
index 52e9b13..2a73671 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/pcmciautils/pcmciautils_018.bb
@@ -8,7 +8,6 @@
 DEPENDS = "udev sysfsutils flex-native bison-native"
 RDEPENDS:${PN} = "udev module-init-tools"
 
-PR = "r1"
 
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/kernel/pcmcia/${BP}.tar.xz \
            file://makefile_fix.patch \
diff --git a/meta-openembedded/meta-oe/recipes-bsp/pointercal/pointercal_0.0.bb b/meta-openembedded/meta-oe/recipes-bsp/pointercal/pointercal_0.0.bb
index 9b72ffe..61be5b2 100644
--- a/meta-openembedded/meta-oe/recipes-bsp/pointercal/pointercal_0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-bsp/pointercal/pointercal_0.0.bb
@@ -1,6 +1,5 @@
 SUMMARY = "Touchscreen calibration data"
 SECTION = "base"
-PR = "r11"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://COPYING;md5=4b5fcfc87fb615860d398b5e38685edf"
 
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_2.14.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_2.14.bb
deleted file mode 100644
index f190ef1..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_2.14.bb
+++ /dev/null
@@ -1,55 +0,0 @@
-SUMMARY = "Wireless daemon for Linux"
-HOMEPAGE = "https://iwd.wiki.kernel.org/"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
-
-DEPENDS = "ell"
-
-SRC_URI = "https://www.kernel.org/pub/linux/network/wireless/${BP}.tar.xz \
-           file://0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch \
-           "
-SRC_URI[sha256sum] = "830184db5d3885ac68701cd8bb1c04d0bd8c8d3ab1c82b893b5e2bdf23329f28"
-
-inherit autotools manpages pkgconfig python3native systemd
-
-PACKAGECONFIG ??= " \
-    client \
-    monitor \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
-"
-PACKAGECONFIG[client] = "--enable-client,--disable-client,readline"
-PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor"
-PACKAGECONFIG[manpages] = "--enable-manual-pages,--disable-manual-pages,python3-docutils-native"
-PACKAGECONFIG[wired] = "--enable-wired,--disable-wired"
-PACKAGECONFIG[ofono] = "--enable-ofono,--disable-ofono"
-PACKAGECONFIG[systemd] = "--with-systemd-unitdir=${systemd_system_unitdir},--disable-systemd-service,systemd"
-
-EXTRA_OECONF = "--enable-external-ell"
-
-SYSTEMD_SERVICE:${PN} = " \
-    iwd.service \
-    ${@bb.utils.contains('PACKAGECONFIG', 'wired', 'ead.service', '', d)} \
-"
-
-do_configure:prepend() {
-    install -d ${S}/build-aux
-}
-
-do_install:append() {
-    # If client and monitor are disabled, bindir is empty, causing a QA error
-    rmdir --ignore-fail-on-non-empty ${D}/${bindir}
-}
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1 \
-    ${nonarch_libdir}/modules-load.d \
-    ${systemd_unitdir}/network \
-"
-
-RDEPENDS:${PN} = "dbus"
-
-RRECOMMENDS:${PN} = "\
-    kernel-module-pkcs7-message \
-    kernel-module-pkcs8-key-parser \
-    kernel-module-x509-key-parser \
-"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_2.16.bb b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_2.16.bb
new file mode 100644
index 0000000..a6bb7085
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/iwd/iwd_2.16.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Wireless daemon for Linux"
+HOMEPAGE = "https://iwd.wiki.kernel.org/"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fb504b67c50331fc78734fed90fb0e09"
+
+DEPENDS = "ell"
+
+SRC_URI = "https://www.kernel.org/pub/linux/network/wireless/${BP}.tar.xz \
+           file://0001-build-Use-abs_top_srcdir-instead-of-abs_srcdir-for-e.patch \
+           "
+SRC_URI[sha256sum] = "c1a82032e994861e794cf3b5a16d07ae1aa03a6674f716c73408ffeae2a233ba"
+
+inherit autotools manpages pkgconfig python3native systemd
+
+PACKAGECONFIG ??= " \
+    client \
+    monitor \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+PACKAGECONFIG[client] = "--enable-client,--disable-client,readline"
+PACKAGECONFIG[monitor] = "--enable-monitor,--disable-monitor"
+PACKAGECONFIG[manpages] = "--enable-manual-pages,--disable-manual-pages,python3-docutils-native"
+PACKAGECONFIG[wired] = "--enable-wired,--disable-wired"
+PACKAGECONFIG[ofono] = "--enable-ofono,--disable-ofono"
+PACKAGECONFIG[systemd] = "--with-systemd-unitdir=${systemd_system_unitdir},--disable-systemd-service,systemd"
+
+EXTRA_OECONF = "--enable-external-ell"
+
+SYSTEMD_SERVICE:${PN} = " \
+    iwd.service \
+    ${@bb.utils.contains('PACKAGECONFIG', 'wired', 'ead.service', '', d)} \
+"
+
+do_configure:prepend() {
+    install -d ${S}/build-aux
+}
+
+do_install:append() {
+    # If client and monitor are disabled, bindir is empty, causing a QA error
+    rmdir --ignore-fail-on-non-empty ${D}/${bindir}
+}
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1 \
+    ${nonarch_libdir}/modules-load.d \
+    ${systemd_unitdir}/network \
+"
+
+RDEPENDS:${PN} = "dbus"
+
+RRECOMMENDS:${PN} = "\
+    kernel-module-pkcs7-message \
+    kernel-module-pkcs8-key-parser \
+    kernel-module-x509-key-parser \
+"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.31.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.31.2.bb
index b7bb399..a386e44 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.31.2.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libmbim/libmbim_1.31.2.bb
@@ -9,7 +9,7 @@
 
 DEPENDS = "glib-2.0 glib-2.0-native libgudev"
 
-inherit meson pkgconfig bash-completion gobject-introspection
+inherit meson pkgconfig bash-completion gobject-introspection upstream-version-is-even
 
 SRCREV = "9c0309fcd3142411c921c14f7dd675cac086bab6"
 SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/libmbim.git;protocol=https;branch=main"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.35.2-dev.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.35.2-dev.bb
deleted file mode 100644
index 5587333..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.35.2-dev.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol"
-DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems and \
-               devices which speak the Qualcomm MSM Interface (QMI) protocol"
-HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
-LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
-"
-
-DEPENDS = "glib-2.0 glib-2.0-native"
-
-inherit meson pkgconfig bash-completion gobject-introspection
-
-SRCREV = "72d92e75a430900c00aeb1a471965d53eb307708"
-SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/libqmi.git;protocol=https;branch=main"
-
-S = "${WORKDIR}/git"
-
-PACKAGECONFIG ??= "udev mbim"
-PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,libgudev"
-PACKAGECONFIG[mbim] = "-Dmbim_qmux=true,-Dmbim_qmux=false,libmbim"
-PACKAGECONFIG[qrtr] = "-Dqrtr=true,-Dqrtr=false,libqrtr-glib"
-
-EXTRA_OEMESON = " \
-    -Dgtk_doc=false \
-    -Dman=false \
-"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.35.2.bb b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.35.2.bb
new file mode 100644
index 0000000..aec90ae
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/libqmi/libqmi_1.35.2.bb
@@ -0,0 +1,28 @@
+SUMMARY = "libqmi is a library for talking to WWAN devices by QMI protocol"
+DESCRIPTION = "libqmi is a glib-based library for talking to WWAN modems and \
+               devices which speak the Qualcomm MSM Interface (QMI) protocol"
+HOMEPAGE = "http://www.freedesktop.org/wiki/Software/libqmi"
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c \
+"
+
+DEPENDS = "glib-2.0 glib-2.0-native"
+
+inherit meson pkgconfig bash-completion gobject-introspection upstream-version-is-even
+
+SRCREV = "72d92e75a430900c00aeb1a471965d53eb307708"
+SRC_URI = "git://gitlab.freedesktop.org/mobile-broadband/libqmi.git;protocol=https;branch=main"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "udev mbim"
+PACKAGECONFIG[udev] = "-Dudev=true,-Dudev=false,libgudev"
+PACKAGECONFIG[mbim] = "-Dmbim_qmux=true,-Dmbim_qmux=false,libmbim"
+PACKAGECONFIG[qrtr] = "-Dqrtr=true,-Dqrtr=false,libqrtr-glib"
+
+EXTRA_OEMESON = " \
+    -Dgtk_doc=false \
+    -Dman=false \
+"
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/files/ser2net.service b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/files/ser2net.service
new file mode 100644
index 0000000..13d8ee4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/files/ser2net.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Serial port to network proxy
+Documentation=man:ser2net(8)
+After=network.target
+Wants=network.target
+ConditionFileNotEmpty=@SYSCONFDIR@/ser2net/ser2net.yaml
+
+[Service]
+Type=exec
+ExecStart=@SBINDIR@/ser2net -n
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.6.1.bb b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.6.1.bb
index 108647b..e5ebafa 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/ser2net/ser2net_4.6.1.bb
@@ -7,10 +7,24 @@
 
 DEPENDS = "gensio libyaml"
 
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/project/ser2net/ser2net/ser2net-${PV}.tar.gz \
+    file://ser2net.service \
+"
 
 SRC_URI[sha256sum] = "78ffee19d9b97e93ae65b5cec072da2b7b947fc484e9ccb3f535702f36f6ed19"
 
 UPSTREAM_CHECK_URI = "http://sourceforge.net/projects/ser2net/files/ser2net"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig systemd
+
+SYSTEMD_SERVICE:${PN} = "ser2net.service"
+
+CONFFILES:${PN} += "${sysconfdir}/ser2net/ser2net.yaml"
+
+do_install:append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_unitdir}/system
+        install -m 0644 ${WORKDIR}/ser2net.service ${D}${systemd_unitdir}/system/
+        sed -i -e 's,@SBINDIR@,${sbindir},g' -e 's,@SYSCONFDIR@,${sysconfdir},g' ${D}${systemd_unitdir}/system/ser2net.service
+    fi
+}
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.19.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.19.0.bb
deleted file mode 100644
index 70c9a7a..0000000
--- a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.19.0.bb
+++ /dev/null
@@ -1,71 +0,0 @@
-SUMMARY = "Apache Thrift"
-DESCRIPTION =  "A software framework, for scalable cross-language services development"
-HOMEPAGE = "https://thrift.apache.org/"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c40a383cb3f747e0c7abbf1482f194f0 \
-                    file://NOTICE;md5=2659b43daca219f99a2f2626ea128f73"
-
-DEPENDS = "thrift-native boost flex-native bison-native openssl zlib"
-
-SRC_URI = "https://downloads.apache.org/${BPN}/${PV}/${BP}.tar.gz \
-           file://0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch"
-SRC_URI[sha256sum] = "d49c896c2724a78701e05cfccf6cf70b5db312d82a17efe951b441d300ccf275"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CVE_PRODUCT = "apache:thrift"
-
-inherit pkgconfig cmake python3native
-
-export STAGING_INCDIR
-export STAGING_LIBDIR
-export BUILD_SYS
-export HOST_SYS
-
-EXTRA_OECMAKE = " \
-    -DBUILD_LIBRARIES=ON \
-    -DBUILD_SHARED_LIBS=ON \
-    -DBUILD_COMPILER=ON \
-    -DBUILD_TESTING=OFF \
-    -DBUILD_TUTORIALS=OFF \
-    -DWITH_AS3=OFF \
-    -DWITH_CPP=ON \
-    -DWITH_JAVA=OFF \
-    -DWITH_OPENSSL=ON \
-    -DWITH_QT5=OFF \
-    -DWITH_ZLIB=ON \
-    -DFLEX_TARGET_ARG_COMPILE_FLAGS='--noline' \
-    -DBISON_TARGET_ARG_COMPILE_FLAGS='--no-lines' \
-"
-
-PACKAGECONFIG ??= "glib libevent"
-PACKAGECONFIG[glib] = "-DWITH_C_GLIB=ON,-DWITH_C_GLIB=OFF,glib-2.0"
-PACKAGECONFIG[libevent] = "-DWITH_LIBEVENT=ON,-DWITH_LIBEVENT=OFF,libevent"
-PACKAGECONFIG[javascript] = "-DWITH_JAVASCRIPT=ON,-DWITH_JAVASCRIPT=OFF,nodejs"
-PACKAGECONFIG[nodejs] = "-DWITH_NODEJS=ON,-DWITH_NODEJS=OFF,nodejs"
-PACKAGECONFIG[python] = "-DWITH_PYTHON=ON,-DWITH_PYTHON=OFF,python"
-
-do_install:append () {
-    ln -sf thrift ${D}/${bindir}/thrift-compiler
-    # remove absolute paths
-    sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thriftnbTargets.cmake
-    sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thrift_c_glibTargets.cmake
-    sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thrift_c_glib_zlibTargets.cmake
-}
-
-LEAD_SONAME = "libthrift.so.${PV}"
-
-# thrift packages
-PACKAGE_BEFORE_PN = "${PN}-compiler lib${BPN} lib${BPN}z lib${BPN}nb lib${BPN}-c-glib"
-FILES:lib${BPN} = "${libdir}/libthrift.so.*"
-FILES:lib${BPN}z = "${libdir}/libthriftz.so.*"
-FILES:lib${BPN}nb = "${libdir}/libthriftnb.so.*"
-FILES:lib${BPN}-c-glib = "${libdir}/libthrift_c_glib.so.*"
-FILES:${PN}-compiler = "${bindir}/*"
-
-# The thrift packages just pulls in some default dependencies but is otherwise empty
-RRECOMMENDS:${PN} = "${PN}-compiler lib${BPN}"
-ALLOW_EMPTY:${PN} = "1"
-RRECOMMENDS:${PN}:class-native = ""
-RRECOMMENDS:${PN}:class-nativesdk = ""
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.20.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.20.0.bb
new file mode 100644
index 0000000..23db052
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/thrift/thrift_0.20.0.bb
@@ -0,0 +1,71 @@
+SUMMARY = "Apache Thrift"
+DESCRIPTION =  "A software framework, for scalable cross-language services development"
+HOMEPAGE = "https://thrift.apache.org/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c40a383cb3f747e0c7abbf1482f194f0 \
+                    file://NOTICE;md5=2659b43daca219f99a2f2626ea128f73"
+
+DEPENDS = "thrift-native boost flex-native bison-native openssl zlib"
+
+SRC_URI = "https://downloads.apache.org/${BPN}/${PV}/${BP}.tar.gz \
+           file://0001-DefineInstallationPaths.cmake-Define-libdir-in-terms.patch"
+SRC_URI[sha256sum] = "b5d8311a779470e1502c027f428a1db542f5c051c8e1280ccd2163fa935ff2d6"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CVE_PRODUCT = "apache:thrift"
+
+inherit pkgconfig cmake python3native
+
+export STAGING_INCDIR
+export STAGING_LIBDIR
+export BUILD_SYS
+export HOST_SYS
+
+EXTRA_OECMAKE = " \
+    -DBUILD_LIBRARIES=ON \
+    -DBUILD_SHARED_LIBS=ON \
+    -DBUILD_COMPILER=ON \
+    -DBUILD_TESTING=OFF \
+    -DBUILD_TUTORIALS=OFF \
+    -DWITH_AS3=OFF \
+    -DWITH_CPP=ON \
+    -DWITH_JAVA=OFF \
+    -DWITH_OPENSSL=ON \
+    -DWITH_QT5=OFF \
+    -DWITH_ZLIB=ON \
+    -DFLEX_TARGET_ARG_COMPILE_FLAGS='--noline' \
+    -DBISON_TARGET_ARG_COMPILE_FLAGS='--no-lines' \
+"
+
+PACKAGECONFIG ??= "glib libevent"
+PACKAGECONFIG[glib] = "-DWITH_C_GLIB=ON,-DWITH_C_GLIB=OFF,glib-2.0"
+PACKAGECONFIG[libevent] = "-DWITH_LIBEVENT=ON,-DWITH_LIBEVENT=OFF,libevent"
+PACKAGECONFIG[javascript] = "-DWITH_JAVASCRIPT=ON,-DWITH_JAVASCRIPT=OFF,nodejs"
+PACKAGECONFIG[nodejs] = "-DWITH_NODEJS=ON,-DWITH_NODEJS=OFF,nodejs"
+PACKAGECONFIG[python] = "-DWITH_PYTHON=ON,-DWITH_PYTHON=OFF,python"
+
+do_install:append () {
+    ln -sf thrift ${D}/${bindir}/thrift-compiler
+    # remove absolute paths
+    sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thriftnbTargets.cmake
+    sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thrift_c_glibTargets.cmake
+    sed -i -e 's|${RECIPE_SYSROOT}||g' ${D}${libdir}/cmake/thrift/thrift_c_glib_zlibTargets.cmake
+}
+
+LEAD_SONAME = "libthrift.so.${PV}"
+
+# thrift packages
+PACKAGE_BEFORE_PN = "${PN}-compiler lib${BPN} lib${BPN}z lib${BPN}nb lib${BPN}-c-glib"
+FILES:lib${BPN} = "${libdir}/libthrift.so.*"
+FILES:lib${BPN}z = "${libdir}/libthriftz.so.*"
+FILES:lib${BPN}nb = "${libdir}/libthriftnb.so.*"
+FILES:lib${BPN}-c-glib = "${libdir}/libthrift_c_glib.so.*"
+FILES:${PN}-compiler = "${bindir}/*"
+
+# The thrift packages just pulls in some default dependencies but is otherwise empty
+RRECOMMENDS:${PN} = "${PN}-compiler lib${BPN}"
+ALLOW_EMPTY:${PN} = "1"
+RRECOMMENDS:${PN}:class-native = ""
+RRECOMMENDS:${PN}:class-nativesdk = ""
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb
index 948d312..dcea339 100644
--- a/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb
+++ b/meta-openembedded/meta-oe/recipes-connectivity/zeromq/cppzmq_4.10.0.bb
@@ -16,5 +16,5 @@
 
 PACKAGES = "${PN}-dev"
 
-RDEPENDS:${PN}-dev = "zeromq-dev"
+RDEPENDS:${PN}-dev = "zeromq-dev zeromq-staticdev"
 DEV_PKG_DEPENDENCY = ""
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.5.0.bb b/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.5.0.bb
deleted file mode 100644
index fa81472..0000000
--- a/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.5.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "D-Bus wrapper in C++ for dbus"
-HOMEPAGE = "https://dbus-cxx.github.io/"
-BUGTRACKER = "https://github.com/libsigcplusplus/libsigcplusplus/issues"
-SECTION = "base"
-LICENSE = "LGPL-3.0-or-later | BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=24594f493407a4cd401ce9794e0b9308"
-
-SRC_URI = "git://github.com/dbus-cxx/dbus-cxx.git;branch=master;protocol=https"
-SRCREV = "2c3b3a767a5898ea8e51159e8122ddbb3aaeeb94"
-
-DEPENDS = "\
-	dbus \
-	libsigc++-3 \
-"
-
-RDEPENDS:${PN} = "\
-	dbus \
-	libsigc++-3 \
-"
-
-S = "${WORKDIR}/git"
-
-inherit pkgconfig cmake
-
-OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.5.1.bb b/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.5.1.bb
new file mode 100644
index 0000000..e89d132
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/dbus-cxx/dbus-cxx_2.5.1.bb
@@ -0,0 +1,25 @@
+SUMMARY = "D-Bus wrapper in C++ for dbus"
+HOMEPAGE = "https://dbus-cxx.github.io/"
+BUGTRACKER = "https://github.com/libsigcplusplus/libsigcplusplus/issues"
+SECTION = "base"
+LICENSE = "LGPL-3.0-or-later | BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=24594f493407a4cd401ce9794e0b9308"
+
+SRC_URI = "git://github.com/dbus-cxx/dbus-cxx.git;branch=master;protocol=https"
+SRCREV = "732a5becb4349e02ffce407a3fd4d75cc3d82421"
+
+DEPENDS = "\
+	dbus \
+	libsigc++-3 \
+"
+
+RDEPENDS:${PN} = "\
+	dbus \
+	libsigc++-3 \
+"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig cmake
+
+OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
index 424d31a..cbe82d4 100644
--- a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
+++ b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-daemon-proxy_git.bb
@@ -4,7 +4,6 @@
 DEPENDS = "dbus dbus-glib"
 SRCREV = "1226a0a1374628ff191f6d8a56000be5e53e7608"
 PV = "0.0.0+git"
-PR = "r1.59"
 
 SRC_URI = "git://github.com/alban/dbus-daemon-proxy;branch=master;protocol=https \
            file://0001-dbus-daemon-proxy-Return-DBUS_HANDLER_RESULT_NOT_YET.patch \
diff --git a/meta-openembedded/meta-oe/recipes-core/meta/buildtools-imagemagick.bb b/meta-openembedded/meta-oe/recipes-core/meta/buildtools-imagemagick.bb
new file mode 100644
index 0000000..d59f7a7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/meta/buildtools-imagemagick.bb
@@ -0,0 +1,10 @@
+require recipes-core/meta/buildtools-tarball.bb
+
+SUMMARY = "Standalone tarball of imagemagick binaries"
+LICENSE = "MIT"
+
+# Add nativesdk equivalent of build-essentials
+TOOLCHAIN_HOST_TASK = "nativesdk-imagemagick nativesdk-sdk-provides-dummy"
+TOOLCHAIN_OUTPUTNAME = "${SDK_ARCH}-buildtools-imagemagick-nativesdk-standalone-${DISTRO_VERSION}"
+
+SDK_TITLE = "Imagemagick tools"
diff --git a/meta-openembedded/meta-oe/recipes-core/meta/distro-feed-configs.bb b/meta-openembedded/meta-oe/recipes-core/meta/distro-feed-configs.bb
index a87de45..fd6053c 100644
--- a/meta-openembedded/meta-oe/recipes-core/meta/distro-feed-configs.bb
+++ b/meta-openembedded/meta-oe/recipes-core/meta/distro-feed-configs.bb
@@ -1,5 +1,4 @@
 SUMMARY = "Configuration files for online package repositories aka feeds"
-PR = "r6"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..9de0a71
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,32 @@
+From d7f01c310b74e3579a6474362922f173ac656d7b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 15:41:29 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://github.com/pmem/ndctl/pull/263]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ daxctl/device.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/daxctl/device.c b/daxctl/device.c
+index d2d206b..e607a19 100644
+--- a/daxctl/device.c
++++ b/daxctl/device.c
+@@ -2,6 +2,7 @@
+ /* Copyright (C) 2019-2020 Intel Corporation. All rights reserved. */
+ #include <stdio.h>
+ #include <errno.h>
++#include <libgen.h>
+ #include <stdlib.h>
+ #include <syslog.h>
+ #include <unistd.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v78.bb b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v78.bb
index 2974a7d..907c02c 100644
--- a/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v78.bb
+++ b/meta-openembedded/meta-oe/recipes-core/ndctl/ndctl_v78.bb
@@ -11,7 +11,8 @@
 inherit meson pkgconfig bash-completion systemd
 
 SRCREV = "a871e6153b11fe63780b37cdcb1eb347b296095c"
-SRC_URI = "git://github.com/pmem/ndctl.git;branch=main;protocol=https"
+SRC_URI = "git://github.com/pmem/ndctl.git;branch=main;protocol=https \
+           file://0001-include-libgen.h-for-basename.patch"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>v\d+(\.\d+)*)"
 
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
index 422b4d4..324406c 100644
--- a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-basic.bb
@@ -3,7 +3,6 @@
 
 SUMMARY = "Basic task to get a device online"
 
-PR = "r13"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 inherit packagegroup
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
index 7e2873c..f6ddb1a 100644
--- a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-boot.bb
@@ -1,6 +1,5 @@
 SUMMARY = "Basic task to get a device booting"
 
-PR = "r58"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 inherit packagegroup
diff --git a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
index 6e2012d..bc15373 100644
--- a/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
+++ b/meta-openembedded/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
@@ -310,6 +310,7 @@
     yasm \
     json-schema-validator \
     poke \
+    microsoft-gsl \
 "
 RDEPENDS:packagegroup-meta-oe-devtools:append:x86 = " cpuid msr-tools pahole pmtools"
 RDEPENDS:packagegroup-meta-oe-devtools:append:x86-64 = " cpuid msr-tools pahole pcimem pmtools"
diff --git a/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb b/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
index 00b87bb..247cc42 100644
--- a/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
+++ b/meta-openembedded/meta-oe/recipes-core/proxy-libintl/proxy-libintl_20100902.bb
@@ -4,7 +4,6 @@
 LICENSE = "LGPL-2.0-only"
 LIC_FILES_CHKSUM = "file://src/proxy-libintl/COPYING.LIB.txt;md5=bc400bc21422f9a92e76ec2c5167ca2e"
 
-PR = "r1"
 PROVIDES = "virtual/libintl"
 
 SRC_URI = " \
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-1.4.0/run-ptest b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-1.5.0/run-ptest
similarity index 100%
rename from meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-1.4.0/run-ptest
rename to meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-1.5.0/run-ptest
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0001-Adjust-for-musl-headers.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0001-Adjust-for-musl-headers.patch
deleted file mode 100644
index 5e9646c..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0001-Adjust-for-musl-headers.patch
+++ /dev/null
@@ -1,556 +0,0 @@
-From e5f067cb3dc845dd865e450f4e64077b28feb4c0 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 21 Jan 2022 22:19:37 -0800
-Subject: [PATCH] Adjust for musl headers
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/libsystemd-network/sd-dhcp6-client.c      | 2 +-
- src/network/netdev/bareudp.c                  | 2 +-
- src/network/netdev/batadv.c                   | 2 +-
- src/network/netdev/bond.c                     | 2 +-
- src/network/netdev/bridge.c                   | 2 +-
- src/network/netdev/dummy.c                    | 2 +-
- src/network/netdev/geneve.c                   | 2 +-
- src/network/netdev/ifb.c                      | 2 +-
- src/network/netdev/ipoib.c                    | 2 +-
- src/network/netdev/ipvlan.c                   | 2 +-
- src/network/netdev/macsec.c                   | 2 +-
- src/network/netdev/macvlan.c                  | 2 +-
- src/network/netdev/netdev.c                   | 2 +-
- src/network/netdev/netdevsim.c                | 2 +-
- src/network/netdev/nlmon.c                    | 2 +-
- src/network/netdev/tunnel.c                   | 2 +-
- src/network/netdev/vcan.c                     | 2 +-
- src/network/netdev/veth.c                     | 2 +-
- src/network/netdev/vlan.c                     | 2 +-
- src/network/netdev/vrf.c                      | 2 +-
- src/network/netdev/vxcan.c                    | 2 +-
- src/network/netdev/vxlan.c                    | 2 +-
- src/network/netdev/wireguard.c                | 2 +-
- src/network/netdev/xfrm.c                     | 2 +-
- src/network/networkd-bridge-mdb.c             | 4 ++--
- src/network/networkd-dhcp-common.c            | 3 ++-
- src/network/networkd-dhcp-prefix-delegation.c | 4 ++--
- src/network/networkd-dhcp-server.c            | 2 +-
- src/network/networkd-dhcp4.c                  | 2 +-
- src/network/networkd-ipv6ll.c                 | 2 +-
- src/network/networkd-link.c                   | 2 +-
- src/network/networkd-ndisc.c                  | 2 +-
- src/network/networkd-route.c                  | 8 ++++----
- src/network/networkd-setlink.c                | 2 +-
- src/shared/linux/ethtool.h                    | 3 ++-
- src/shared/netif-util.c                       | 2 +-
- src/udev/udev-builtin-net_id.c                | 2 +-
- 37 files changed, 44 insertions(+), 42 deletions(-)
-
-diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
-index 57dd91f81f..2b7f4fa3a7 100644
---- a/src/libsystemd-network/sd-dhcp6-client.c
-+++ b/src/libsystemd-network/sd-dhcp6-client.c
-@@ -5,7 +5,7 @@
- 
- #include <errno.h>
- #include <sys/ioctl.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_infiniband.h>
- 
- #include "sd-dhcp6-client.h"
-diff --git a/src/network/netdev/bareudp.c b/src/network/netdev/bareudp.c
-index 24d3afb877..f6241b41ee 100644
---- a/src/network/netdev/bareudp.c
-+++ b/src/network/netdev/bareudp.c
-@@ -2,7 +2,7 @@
-  * Copyright © 2020 VMware, Inc. */
- 
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "bareudp.h"
- #include "netlink-util.h"
-diff --git a/src/network/netdev/batadv.c b/src/network/netdev/batadv.c
-index 7e97619657..50fcffcfdf 100644
---- a/src/network/netdev/batadv.c
-+++ b/src/network/netdev/batadv.c
-@@ -3,7 +3,7 @@
- #include <inttypes.h>
- #include <netinet/in.h>
- #include <linux/genetlink.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "batadv.h"
- #include "fileio.h"
-diff --git a/src/network/netdev/bond.c b/src/network/netdev/bond.c
-index 601bff0a9c..dfed8d9e54 100644
---- a/src/network/netdev/bond.c
-+++ b/src/network/netdev/bond.c
-@@ -1,7 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "alloc-util.h"
- #include "bond.h"
-diff --git a/src/network/netdev/bridge.c b/src/network/netdev/bridge.c
-index b65c3b49fc..6875b4fbdb 100644
---- a/src/network/netdev/bridge.c
-+++ b/src/network/netdev/bridge.c
-@@ -2,7 +2,7 @@
- 
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_bridge.h>
- 
- #include "bridge.h"
-diff --git a/src/network/netdev/dummy.c b/src/network/netdev/dummy.c
-index 00df1d2787..77b506b422 100644
---- a/src/network/netdev/dummy.c
-+++ b/src/network/netdev/dummy.c
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "dummy.h"
- 
-diff --git a/src/network/netdev/geneve.c b/src/network/netdev/geneve.c
-index 777a32d75c..73bfa2b5c1 100644
---- a/src/network/netdev/geneve.c
-+++ b/src/network/netdev/geneve.c
-@@ -2,7 +2,7 @@
- 
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "alloc-util.h"
- #include "conf-parser.h"
-diff --git a/src/network/netdev/ifb.c b/src/network/netdev/ifb.c
-index d7ff44cb9e..e037629ae4 100644
---- a/src/network/netdev/ifb.c
-+++ b/src/network/netdev/ifb.c
-@@ -1,7 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later
-  * Copyright © 2019 VMware, Inc. */
- 
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "ifb.h"
- 
-diff --git a/src/network/netdev/ipoib.c b/src/network/netdev/ipoib.c
-index 5dd9286d57..4036d66dad 100644
---- a/src/network/netdev/ipoib.c
-+++ b/src/network/netdev/ipoib.c
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_link.h>
- 
- #include "ipoib.h"
-diff --git a/src/network/netdev/ipvlan.c b/src/network/netdev/ipvlan.c
-index 058eadebd7..c470ebb6d7 100644
---- a/src/network/netdev/ipvlan.c
-+++ b/src/network/netdev/ipvlan.c
-@@ -2,7 +2,7 @@
- 
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "conf-parser.h"
- #include "ipvlan.h"
-diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
-index 0da3dd4bd2..eb20f04469 100644
---- a/src/network/netdev/macsec.c
-+++ b/src/network/netdev/macsec.c
-@@ -1,7 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_ether.h>
- #include <linux/if_macsec.h>
- #include <linux/genetlink.h>
-diff --git a/src/network/netdev/macvlan.c b/src/network/netdev/macvlan.c
-index 1114bb0cb1..6c79a219a4 100644
---- a/src/network/netdev/macvlan.c
-+++ b/src/network/netdev/macvlan.c
-@@ -2,7 +2,7 @@
- 
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "conf-parser.h"
- #include "macvlan.h"
-diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
-index 038a27c118..67155f0db7 100644
---- a/src/network/netdev/netdev.c
-+++ b/src/network/netdev/netdev.c
-@@ -2,7 +2,7 @@
- 
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <unistd.h>
- 
- #include "alloc-util.h"
-diff --git a/src/network/netdev/netdevsim.c b/src/network/netdev/netdevsim.c
-index 15d5c132f9..a3ffa48b15 100644
---- a/src/network/netdev/netdevsim.c
-+++ b/src/network/netdev/netdevsim.c
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "netdevsim.h"
- 
-diff --git a/src/network/netdev/nlmon.c b/src/network/netdev/nlmon.c
-index ff372092e6..eef66811f4 100644
---- a/src/network/netdev/nlmon.c
-+++ b/src/network/netdev/nlmon.c
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "nlmon.h"
- 
-diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c
-index 2addfeecaa..954987f26d 100644
---- a/src/network/netdev/tunnel.c
-+++ b/src/network/netdev/tunnel.c
-@@ -2,7 +2,7 @@
- 
- #include <netinet/in.h>
- #include <linux/fou.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_tunnel.h>
- #include <linux/ip.h>
- #include <linux/ip6_tunnel.h>
-diff --git a/src/network/netdev/vcan.c b/src/network/netdev/vcan.c
-index 380547ee1e..137c1adf8a 100644
---- a/src/network/netdev/vcan.c
-+++ b/src/network/netdev/vcan.c
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "vcan.h"
- 
-diff --git a/src/network/netdev/veth.c b/src/network/netdev/veth.c
-index fb00e6667f..f52d9ee89a 100644
---- a/src/network/netdev/veth.c
-+++ b/src/network/netdev/veth.c
-@@ -3,7 +3,7 @@
- #include <errno.h>
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/veth.h>
- 
- #include "netlink-util.h"
-diff --git a/src/network/netdev/vlan.c b/src/network/netdev/vlan.c
-index a3d961dac3..386b567a42 100644
---- a/src/network/netdev/vlan.c
-+++ b/src/network/netdev/vlan.c
-@@ -2,7 +2,7 @@
- 
- #include <errno.h>
- #include <net/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_vlan.h>
- 
- #include "parse-util.h"
-diff --git a/src/network/netdev/vrf.c b/src/network/netdev/vrf.c
-index 05ef3ff13d..825fc4a398 100644
---- a/src/network/netdev/vrf.c
-+++ b/src/network/netdev/vrf.c
-@@ -2,7 +2,7 @@
- 
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "vrf.h"
- 
-diff --git a/src/network/netdev/vxcan.c b/src/network/netdev/vxcan.c
-index 83269b0707..39c6dbe29c 100644
---- a/src/network/netdev/vxcan.c
-+++ b/src/network/netdev/vxcan.c
-@@ -1,7 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
- #include <linux/can/vxcan.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "vxcan.h"
- 
-diff --git a/src/network/netdev/vxlan.c b/src/network/netdev/vxlan.c
-index 589161938a..0ec9625b7a 100644
---- a/src/network/netdev/vxlan.c
-+++ b/src/network/netdev/vxlan.c
-@@ -2,7 +2,7 @@
- 
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "conf-parser.h"
- #include "alloc-util.h"
-diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c
-index 51e7e02990..fc36c0623a 100644
---- a/src/network/netdev/wireguard.c
-+++ b/src/network/netdev/wireguard.c
-@@ -6,7 +6,7 @@
- #include <sys/ioctl.h>
- #include <net/if.h>
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/ipv6_route.h>
- 
- #include "sd-resolve.h"
-diff --git a/src/network/netdev/xfrm.c b/src/network/netdev/xfrm.c
-index a961d8fef2..6c1815b257 100644
---- a/src/network/netdev/xfrm.c
-+++ b/src/network/netdev/xfrm.c
-@@ -1,6 +1,6 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "missing_network.h"
- #include "xfrm.h"
-diff --git a/src/network/networkd-bridge-mdb.c b/src/network/networkd-bridge-mdb.c
-index bd1a9745dc..949d3da029 100644
---- a/src/network/networkd-bridge-mdb.c
-+++ b/src/network/networkd-bridge-mdb.c
-@@ -1,7 +1,5 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <net/if.h>
--#include <linux/if_bridge.h>
- 
- #include "netlink-util.h"
- #include "networkd-bridge-mdb.h"
-@@ -11,6 +9,8 @@
- #include "networkd-queue.h"
- #include "string-util.h"
- #include "vlan-util.h"
-+#include <net/if.h>
-+#include <linux/if_bridge.h>
- 
- #define STATIC_BRIDGE_MDB_ENTRIES_PER_NETWORK_MAX 1024U
- 
-diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
-index ca9a825e7b..8735e261ad 100644
---- a/src/network/networkd-dhcp-common.c
-+++ b/src/network/networkd-dhcp-common.c
-@@ -1,7 +1,8 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
-+#include <net/if.h>
- 
- #include "bus-error.h"
- #include "bus-locator.h"
-diff --git a/src/network/networkd-dhcp-prefix-delegation.c b/src/network/networkd-dhcp-prefix-delegation.c
-index 66c5e979d9..581b6b8c29 100644
---- a/src/network/networkd-dhcp-prefix-delegation.c
-+++ b/src/network/networkd-dhcp-prefix-delegation.c
-@@ -1,7 +1,5 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/ipv6_route.h>
--
- #include "sd-dhcp6-client.h"
- 
- #include "hashmap.h"
-@@ -21,6 +19,8 @@
- #include "strv.h"
- #include "tunnel.h"
- 
-+#include <linux/ipv6_route.h>
-+
- bool link_dhcp_pd_is_enabled(Link *link) {
-         assert(link);
- 
-diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c
-index 620fbbddc7..c8af20fb34 100644
---- a/src/network/networkd-dhcp-server.c
-+++ b/src/network/networkd-dhcp-server.c
-@@ -1,7 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
- #include <netinet/in.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if.h>
- 
- #include "sd-dhcp-server.h"
-diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
-index d4b4942173..3d78da5609 100644
---- a/src/network/networkd-dhcp4.c
-+++ b/src/network/networkd-dhcp4.c
-@@ -3,7 +3,7 @@
- #include <netinet/in.h>
- #include <netinet/ip.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "alloc-util.h"
- #include "dhcp-client-internal.h"
-diff --git a/src/network/networkd-ipv6ll.c b/src/network/networkd-ipv6ll.c
-index 32229a3fc7..662a345d6e 100644
---- a/src/network/networkd-ipv6ll.c
-+++ b/src/network/networkd-ipv6ll.c
-@@ -1,7 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
- #include <linux/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "in-addr-util.h"
- #include "networkd-address.h"
-diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
-index 019bef0590..657fc41ae6 100644
---- a/src/network/networkd-link.c
-+++ b/src/network/networkd-link.c
-@@ -3,7 +3,7 @@
- #include <net/if.h>
- #include <netinet/in.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_link.h>
- #include <linux/netdevice.h>
- #include <sys/socket.h>
-diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c
-index 99a07e16fc..e51cd81d96 100644
---- a/src/network/networkd-ndisc.c
-+++ b/src/network/networkd-ndisc.c
-@@ -6,7 +6,7 @@
- #include <arpa/inet.h>
- #include <netinet/icmp6.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "sd-ndisc.h"
- 
-diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
-index 5214a8ad2c..9dd758daae 100644
---- a/src/network/networkd-route.c
-+++ b/src/network/networkd-route.c
-@@ -1,9 +1,5 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <linux/icmpv6.h>
--#include <linux/ipv6_route.h>
--#include <linux/nexthop.h>
--
- #include "alloc-util.h"
- #include "event-util.h"
- #include "netlink-util.h"
-@@ -21,6 +17,10 @@
- #include "vrf.h"
- #include "wireguard.h"
- 
-+#include <linux/icmpv6.h>
-+#include <linux/ipv6_route.h>
-+#include <linux/nexthop.h>
-+
- int route_new(Route **ret) {
-         _cleanup_(route_freep) Route *route = NULL;
- 
-diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c
-index 541c4b8a72..06ebda8f0f 100644
---- a/src/network/networkd-setlink.c
-+++ b/src/network/networkd-setlink.c
-@@ -2,7 +2,7 @@
- 
- #include <netinet/in.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/if_bridge.h>
- 
- #include "missing_network.h"
-diff --git a/src/shared/linux/ethtool.h b/src/shared/linux/ethtool.h
-index 1458de3627..d5c2d2e0ac 100644
---- a/src/shared/linux/ethtool.h
-+++ b/src/shared/linux/ethtool.h
-@@ -16,7 +16,8 @@
- 
- #include <linux/const.h>
- #include <linux/types.h>
--#include <linux/if_ether.h>
-+#include <netinet/if_ether.h>
-+//#include <linux/if_ether.h>
- 
- #include <limits.h> /* for INT_MAX */
- 
-diff --git a/src/shared/netif-util.c b/src/shared/netif-util.c
-index f56c5646c1..5af28ff119 100644
---- a/src/shared/netif-util.c
-+++ b/src/shared/netif-util.c
-@@ -1,7 +1,7 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
- #include <linux/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- 
- #include "arphrd-util.h"
- #include "device-util.h"
-diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
-index a48d5dedf8..31a8bc1b3c 100644
---- a/src/udev/udev-builtin-net_id.c
-+++ b/src/udev/udev-builtin-net_id.c
-@@ -18,7 +18,7 @@
- #include <stdarg.h>
- #include <unistd.h>
- #include <linux/if.h>
--#include <linux/if_arp.h>
-+//#include <linux/if_arp.h>
- #include <linux/netdevice.h>
- #include <linux/pci_regs.h>
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0001-missing_type.h-add-comparison_fn_t.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0001-missing_type.h-add-comparison_fn_t.patch
new file mode 100644
index 0000000..2aa5dee
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0001-missing_type.h-add-comparison_fn_t.patch
@@ -0,0 +1,61 @@
+From 01195eb9f7d59139fb45df506ac6b3968c14a57f Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 13:55:12 +0800
+Subject: [PATCH 01/22] missing_type.h: add comparison_fn_t
+
+Make it work with musl where comparison_fn_t and is not provided.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+[Rebased for v244]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[Rebased for v250, Drop __compare_fn_t]
+Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
+---
+ src/basic/missing_type.h            | 4 ++++
+ src/basic/sort-util.h               | 1 +
+ src/libsystemd/sd-journal/catalog.c | 1 +
+ 3 files changed, 6 insertions(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index f6233090a9..6c0456349d 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -10,3 +10,7 @@
+ #if !HAVE_CHAR16_T
+ #define char16_t uint16_t
+ #endif
++
++#ifndef __GLIBC__
++typedef int (*comparison_fn_t)(const void *, const void *);
++#endif
+diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
+index 9c818bd747..ef10c8be2c 100644
+--- a/src/basic/sort-util.h
++++ b/src/basic/sort-util.h
+@@ -4,6 +4,7 @@
+ #include <stdlib.h>
+ 
+ #include "macro.h"
++#include "missing_type.h"
+ 
+ /* This is the same as glibc's internal __compar_d_fn_t type. glibc exports a public comparison_fn_t, for the
+  * external type __compar_fn_t, but doesn't do anything similar for __compar_d_fn_t. Let's hence do that
+diff --git a/src/libsystemd/sd-journal/catalog.c b/src/libsystemd/sd-journal/catalog.c
+index ae91534198..7f67eea38b 100644
+--- a/src/libsystemd/sd-journal/catalog.c
++++ b/src/libsystemd/sd-journal/catalog.c
+@@ -28,6 +28,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "tmpfile-util.h"
++#include "missing_type.h"
+ 
+ const char * const catalog_file_dirs[] = {
+         "/usr/local/lib/systemd/catalog/",
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0002-add-fallback-parse_printf_format-implementation.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0002-add-fallback-parse_printf_format-implementation.patch
new file mode 100644
index 0000000..900a931
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0002-add-fallback-parse_printf_format-implementation.patch
@@ -0,0 +1,434 @@
+From 872b72739e62123867ce6c4f82aa37de24cc3f75 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sat, 22 May 2021 20:26:24 +0200
+Subject: [PATCH 02/22] add fallback parse_printf_format implementation
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Emil Renner Berthing <systemd@esmil.dk>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ meson.build                              |   1 +
+ src/basic/meson.build                    |   5 +
+ src/basic/parse-printf-format.c          | 273 +++++++++++++++++++++++
+ src/basic/parse-printf-format.h          |  57 +++++
+ src/basic/stdio-util.h                   |   2 +-
+ src/libsystemd/sd-journal/journal-send.c |   2 +-
+ 6 files changed, 338 insertions(+), 2 deletions(-)
+ create mode 100644 src/basic/parse-printf-format.c
+ create mode 100644 src/basic/parse-printf-format.h
+
+diff --git a/meson.build b/meson.build
+index 7419e2b0b0..01fd3ffc19 100644
+--- a/meson.build
++++ b/meson.build
+@@ -725,6 +725,7 @@ endif
+ foreach header : ['crypt.h',
+                   'linux/memfd.h',
+                   'linux/vm_sockets.h',
++                  'printf.h',
+                   'sys/auxv.h',
+                   'threads.h',
+                   'valgrind/memcheck.h',
+diff --git a/src/basic/meson.build b/src/basic/meson.build
+index d7450d8b44..c3e3daf4bd 100644
+--- a/src/basic/meson.build
++++ b/src/basic/meson.build
+@@ -183,6 +183,11 @@ endforeach
+ 
+ basic_sources += generated_gperf_headers
+ 
++if conf.get('HAVE_PRINTF_H') != 1
++        basic_sources += [files('parse-printf-format.c')]
++endif
++
++
+ ############################################################
+ 
+ arch_list = [
+diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c
+new file mode 100644
+index 0000000000..49437e5445
+--- /dev/null
++++ b/src/basic/parse-printf-format.c
+@@ -0,0 +1,273 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++  With parts from the musl C library
++  Copyright 2005-2014 Rich Felker, et al.
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <stddef.h>
++#include <string.h>
++
++#include "parse-printf-format.h"
++
++static const char *consume_nonarg(const char *fmt)
++{
++        do {
++                if (*fmt == '\0')
++                        return fmt;
++        } while (*fmt++ != '%');
++        return fmt;
++}
++
++static const char *consume_num(const char *fmt)
++{
++        for (;*fmt >= '0' && *fmt <= '9'; fmt++)
++                /* do nothing */;
++        return fmt;
++}
++
++static const char *consume_argn(const char *fmt, size_t *arg)
++{
++        const char *p = fmt;
++        size_t val = 0;
++
++        if (*p < '1' || *p > '9')
++                return fmt;
++        do {
++                val = 10*val + (*p++ - '0');
++        } while (*p >= '0' && *p <= '9');
++
++        if (*p != '$')
++                return fmt;
++        *arg = val;
++        return p+1;
++}
++
++static const char *consume_flags(const char *fmt)
++{
++        while (1) {
++                switch (*fmt) {
++                case '#':
++                case '0':
++                case '-':
++                case ' ':
++                case '+':
++                case '\'':
++                case 'I':
++                        fmt++;
++                        continue;
++                }
++                return fmt;
++        }
++}
++
++enum state {
++        BARE,
++        LPRE,
++        LLPRE,
++        HPRE,
++        HHPRE,
++        BIGLPRE,
++        ZTPRE,
++        JPRE,
++        STOP
++};
++
++enum type {
++        NONE,
++        PTR,
++        INT,
++        UINT,
++        ULLONG,
++        LONG,
++        ULONG,
++        SHORT,
++        USHORT,
++        CHAR,
++        UCHAR,
++        LLONG,
++        SIZET,
++        IMAX,
++        UMAX,
++        PDIFF,
++        UIPTR,
++        DBL,
++        LDBL,
++        MAXTYPE
++};
++
++static const short pa_types[MAXTYPE] = {
++        [NONE]   = PA_INT,
++        [PTR]    = PA_POINTER,
++        [INT]    = PA_INT,
++        [UINT]   = PA_INT,
++        [ULLONG] = PA_INT | PA_FLAG_LONG_LONG,
++        [LONG]   = PA_INT | PA_FLAG_LONG,
++        [ULONG]  = PA_INT | PA_FLAG_LONG,
++        [SHORT]  = PA_INT | PA_FLAG_SHORT,
++        [USHORT] = PA_INT | PA_FLAG_SHORT,
++        [CHAR]   = PA_CHAR,
++        [UCHAR]  = PA_CHAR,
++        [LLONG]  = PA_INT | PA_FLAG_LONG_LONG,
++        [SIZET]  = PA_INT | PA_FLAG_LONG,
++        [IMAX]   = PA_INT | PA_FLAG_LONG_LONG,
++        [UMAX]   = PA_INT | PA_FLAG_LONG_LONG,
++        [PDIFF]  = PA_INT | PA_FLAG_LONG_LONG,
++        [UIPTR]  = PA_INT | PA_FLAG_LONG,
++        [DBL]    = PA_DOUBLE,
++        [LDBL]   = PA_DOUBLE | PA_FLAG_LONG_DOUBLE
++};
++
++#define S(x) [(x)-'A']
++#define E(x) (STOP + (x))
++
++static const unsigned char states[]['z'-'A'+1] = {
++        { /* 0: bare types */
++                S('d') = E(INT), S('i') = E(INT),
++                S('o') = E(UINT),S('u') = E(UINT),S('x') = E(UINT), S('X') = E(UINT),
++                S('e') = E(DBL), S('f') = E(DBL), S('g') = E(DBL),  S('a') = E(DBL),
++                S('E') = E(DBL), S('F') = E(DBL), S('G') = E(DBL),  S('A') = E(DBL),
++                S('c') = E(CHAR),S('C') = E(INT),
++                S('s') = E(PTR), S('S') = E(PTR), S('p') = E(UIPTR),S('n') = E(PTR),
++                S('m') = E(NONE),
++                S('l') = LPRE,   S('h') = HPRE, S('L') = BIGLPRE,
++                S('z') = ZTPRE,  S('j') = JPRE, S('t') = ZTPRE
++        }, { /* 1: l-prefixed */
++                S('d') = E(LONG), S('i') = E(LONG),
++                S('o') = E(ULONG),S('u') = E(ULONG),S('x') = E(ULONG),S('X') = E(ULONG),
++                S('e') = E(DBL),  S('f') = E(DBL),  S('g') = E(DBL),  S('a') = E(DBL),
++                S('E') = E(DBL),  S('F') = E(DBL),  S('G') = E(DBL),  S('A') = E(DBL),
++                S('c') = E(INT),  S('s') = E(PTR),  S('n') = E(PTR),
++                S('l') = LLPRE
++        }, { /* 2: ll-prefixed */
++                S('d') = E(LLONG), S('i') = E(LLONG),
++                S('o') = E(ULLONG),S('u') = E(ULLONG),
++                S('x') = E(ULLONG),S('X') = E(ULLONG),
++                S('n') = E(PTR)
++        }, { /* 3: h-prefixed */
++                S('d') = E(SHORT), S('i') = E(SHORT),
++                S('o') = E(USHORT),S('u') = E(USHORT),
++                S('x') = E(USHORT),S('X') = E(USHORT),
++                S('n') = E(PTR),
++                S('h') = HHPRE
++        }, { /* 4: hh-prefixed */
++                S('d') = E(CHAR), S('i') = E(CHAR),
++                S('o') = E(UCHAR),S('u') = E(UCHAR),
++                S('x') = E(UCHAR),S('X') = E(UCHAR),
++                S('n') = E(PTR)
++        }, { /* 5: L-prefixed */
++                S('e') = E(LDBL),S('f') = E(LDBL),S('g') = E(LDBL), S('a') = E(LDBL),
++                S('E') = E(LDBL),S('F') = E(LDBL),S('G') = E(LDBL), S('A') = E(LDBL),
++                S('n') = E(PTR)
++        }, { /* 6: z- or t-prefixed (assumed to be same size) */
++                S('d') = E(PDIFF),S('i') = E(PDIFF),
++                S('o') = E(SIZET),S('u') = E(SIZET),
++                S('x') = E(SIZET),S('X') = E(SIZET),
++                S('n') = E(PTR)
++        }, { /* 7: j-prefixed */
++                S('d') = E(IMAX), S('i') = E(IMAX),
++                S('o') = E(UMAX), S('u') = E(UMAX),
++                S('x') = E(UMAX), S('X') = E(UMAX),
++                S('n') = E(PTR)
++        }
++};
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types)
++{
++        size_t i = 0;
++        size_t last = 0;
++
++        memset(types, 0, n);
++
++        while (1) {
++                size_t arg;
++                unsigned int state;
++
++                fmt = consume_nonarg(fmt);
++                if (*fmt == '\0')
++                        break;
++                if (*fmt == '%') {
++                        fmt++;
++                        continue;
++                }
++                arg = 0;
++                fmt = consume_argn(fmt, &arg);
++                /* flags */
++                fmt = consume_flags(fmt);
++                /* width */
++                if (*fmt == '*') {
++                        size_t warg = 0;
++                        fmt = consume_argn(fmt+1, &warg);
++                        if (warg == 0)
++                                warg = ++i;
++                        if (warg > last)
++                                last = warg;
++                        if (warg <= n && types[warg-1] == NONE)
++                                types[warg-1] = INT;
++                } else
++                        fmt = consume_num(fmt);
++                /* precision */
++                if (*fmt == '.') {
++                        fmt++;
++                        if (*fmt == '*') {
++                                size_t parg = 0;
++                                fmt = consume_argn(fmt+1, &parg);
++                                if (parg == 0)
++                                        parg = ++i;
++                                if (parg > last)
++                                        last = parg;
++                                if (parg <= n && types[parg-1] == NONE)
++                                        types[parg-1] = INT;
++                        } else {
++                                if (*fmt == '-')
++                                        fmt++;
++                                fmt = consume_num(fmt);
++                        }
++                }
++                /* length modifier and conversion specifier */
++                state = BARE;
++                do {
++                        unsigned char c = *fmt++;
++
++                        if (c < 'A' || c > 'z')
++                                continue;
++                        state = states[state]S(c);
++                        if (state == 0)
++                                continue;
++                } while (state < STOP);
++
++                if (state == E(NONE))
++                        continue;
++
++                if (arg == 0)
++                        arg = ++i;
++                if (arg > last)
++                        last = arg;
++                if (arg <= n)
++                        types[arg-1] = state - STOP;
++        }
++
++        if (last > n)
++                last = n;
++        for (i = 0; i < last; i++)
++                types[i] = pa_types[types[i]];
++
++        return last;
++}
+diff --git a/src/basic/parse-printf-format.h b/src/basic/parse-printf-format.h
+new file mode 100644
+index 0000000000..47be7522d7
+--- /dev/null
++++ b/src/basic/parse-printf-format.h
+@@ -0,0 +1,57 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
++
++  With parts from the GNU C Library
++  Copyright 1991-2014 Free Software Foundation, Inc.
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#pragma once
++
++#include "config.h"
++
++#if HAVE_PRINTF_H
++#include <printf.h>
++#else
++
++#include <stddef.h>
++
++enum {				/* C type: */
++  PA_INT,			/* int */
++  PA_CHAR,			/* int, cast to char */
++  PA_WCHAR,			/* wide char */
++  PA_STRING,			/* const char *, a '\0'-terminated string */
++  PA_WSTRING,			/* const wchar_t *, wide character string */
++  PA_POINTER,			/* void * */
++  PA_FLOAT,			/* float */
++  PA_DOUBLE,			/* double */
++  PA_LAST
++};
++
++/* Flag bits that can be set in a type returned by `parse_printf_format'.  */
++#define	PA_FLAG_MASK		0xff00
++#define	PA_FLAG_LONG_LONG	(1 << 8)
++#define	PA_FLAG_LONG_DOUBLE	PA_FLAG_LONG_LONG
++#define	PA_FLAG_LONG		(1 << 9)
++#define	PA_FLAG_SHORT		(1 << 10)
++#define	PA_FLAG_PTR		(1 << 11)
++
++size_t parse_printf_format(const char *fmt, size_t n, int *types);
++
++#endif /* HAVE_PRINTF_H */
+diff --git a/src/basic/stdio-util.h b/src/basic/stdio-util.h
+index 4e93ac90c9..f9deb6f662 100644
+--- a/src/basic/stdio-util.h
++++ b/src/basic/stdio-util.h
+@@ -1,12 +1,12 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ #pragma once
+ 
+-#include <printf.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+ 
+ #include "macro.h"
++#include "parse-printf-format.h"
+ 
+ _printf_(3, 4)
+ static inline char *snprintf_ok(char *buf, size_t len, const char *format, ...) {
+diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c
+index be23b2fe75..69a2eb6404 100644
+--- a/src/libsystemd/sd-journal/journal-send.c
++++ b/src/libsystemd/sd-journal/journal-send.c
+@@ -2,7 +2,6 @@
+ 
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <printf.h>
+ #include <stddef.h>
+ #include <sys/un.h>
+ #include <unistd.h>
+@@ -28,6 +27,7 @@
+ #include "stdio-util.h"
+ #include "string-util.h"
+ #include "tmpfile-util.h"
++#include "parse-printf-format.h"
+ 
+ #define SNDBUF_SIZE (8*1024*1024)
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
new file mode 100644
index 0000000..be231cf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
@@ -0,0 +1,79 @@
+From 29a58009a172e369ad7166e16dab2f4945c6b0d2 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 21 Feb 2019 16:23:24 +0800
+Subject: [PATCH 1/2] binfmt: Don't install dependency links at install time
+ for the binfmt services
+
+use [Install] blocks so that they get created when the service is enabled
+like a traditional service.
+
+The [Install] blocks were rejected upstream as they don't have a way to
+"enable" it on install without static symlinks which can't be disabled,
+only masked. We however can do that in a postinst.
+
+Upstream-Status: Denied
+
+Signed-off-by: Ross Burton <ross.burton@intel.com>
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ units/meson.build                       | 2 --
+ units/proc-sys-fs-binfmt_misc.automount | 3 +++
+ units/systemd-binfmt.service.in         | 4 ++++
+ 3 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/units/meson.build b/units/meson.build
+index e7bfb7f838..1d5ec4b178 100644
+--- a/units/meson.build
++++ b/units/meson.build
+@@ -154,7 +154,6 @@ units = [
+         {
+           'file' : 'proc-sys-fs-binfmt_misc.automount',
+           'conditions' : ['ENABLE_BINFMT'],
+-          'symlinks' : ['sysinit.target.wants/'],
+         },
+         {
+           'file' : 'proc-sys-fs-binfmt_misc.mount',
+@@ -251,7 +250,6 @@ units = [
+         {
+           'file' : 'systemd-binfmt.service.in',
+           'conditions' : ['ENABLE_BINFMT'],
+-          'symlinks' : ['sysinit.target.wants/'],
+         },
+         {
+           'file' : 'systemd-bless-boot.service.in',
+diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount
+index 5d212015a5..6c2900ca77 100644
+--- a/units/proc-sys-fs-binfmt_misc.automount
++++ b/units/proc-sys-fs-binfmt_misc.automount
+@@ -22,3 +22,6 @@ Before=shutdown.target
+ 
+ [Automount]
+ Where=/proc/sys/fs/binfmt_misc
++
++[Install]
++WantedBy=sysinit.target
+diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
+index 6861c76674..531e9fbd90 100644
+--- a/units/systemd-binfmt.service.in
++++ b/units/systemd-binfmt.service.in
+@@ -14,6 +14,7 @@ Documentation=https://docs.kernel.org/admin-guide/binfmt-misc.html
+ Documentation=https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
+ DefaultDependencies=no
+ Conflicts=shutdown.target
++Wants=proc-sys-fs-binfmt_misc.automount
+ After=proc-sys-fs-binfmt_misc.automount
+ After=proc-sys-fs-binfmt_misc.mount
+ After=local-fs.target
+@@ -31,3 +32,6 @@ RemainAfterExit=yes
+ ExecStart={{LIBEXECDIR}}/systemd-binfmt
+ ExecStop={{LIBEXECDIR}}/systemd-binfmt --unregister
+ TimeoutSec=90s
++
++[Install]
++WantedBy=sysinit.target
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0003-errno-util-Make-STRERROR-portable-for-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0003-errno-util-Make-STRERROR-portable-for-musl.patch
deleted file mode 100644
index fcc56a2..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0003-errno-util-Make-STRERROR-portable-for-musl.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f629a76e0fba300a9d511614160fee38dd4a5e57 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 23 Jan 2023 23:39:46 -0800
-Subject: [PATCH] errno-util: Make STRERROR portable for musl
-
-Sadly, systemd has decided to use yet another GNU extention in a macro
-lets make this such that we can use XSI compliant strerror_r() for
-non-glibc hosts
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/basic/errno-util.h | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h
-index 091f99c590..eb5c1f9961 100644
---- a/src/basic/errno-util.h
-+++ b/src/basic/errno-util.h
-@@ -14,8 +14,16 @@
-  * https://stackoverflow.com/questions/34880638/compound-literal-lifetime-and-if-blocks
-  *
-  * Note that we use the GNU variant of strerror_r() here. */
--#define STRERROR(errnum) strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN)
-+static inline const char * STRERROR(int errnum);
- 
-+static inline const char * STRERROR(int errnum) {
-+#ifdef __GLIBC__
-+        return strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN);
-+#else
-+        static __thread char buf[ERRNO_BUF_LEN];
-+        return strerror_r(abs(errnum), buf, ERRNO_BUF_LEN) ? "unknown error" : buf;
-+#endif
-+}
- /* A helper to print an error message or message for functions that return 0 on EOF.
-  * Note that we can't use ({ … }) to define a temporary variable, so errnum is
-  * evaluated twice. */
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
new file mode 100644
index 0000000..5595b5b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0003-src-basic-missing.h-check-for-missing-strndupa.patch
@@ -0,0 +1,699 @@
+From 87f1d38f40c5fe9cadf2b2de442473e4e5605788 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:18:21 +0800
+Subject: [PATCH 03/22] src/basic/missing.h: check for missing strndupa
+
+include missing.h  for definition of strndupa
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+[rebased for systemd 244]
+[Rebased for v247]
+Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
+[Rebased for v254]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v255.1]
+---
+ meson.build                                |  1 +
+ src/backlight/backlight.c                  |  1 +
+ src/basic/cgroup-util.c                    |  1 +
+ src/basic/env-util.c                       |  1 +
+ src/basic/log.c                            |  1 +
+ src/basic/missing_stdlib.h                 | 12 ++++++++++++
+ src/basic/mkdir.c                          |  1 +
+ src/basic/mountpoint-util.c                |  1 +
+ src/basic/parse-util.c                     |  1 +
+ src/basic/path-lookup.c                    |  1 +
+ src/basic/percent-util.c                   |  1 +
+ src/basic/proc-cmdline.c                   |  1 +
+ src/basic/procfs-util.c                    |  1 +
+ src/basic/time-util.c                      |  1 +
+ src/boot/bless-boot.c                      |  1 +
+ src/core/dbus-cgroup.c                     |  1 +
+ src/core/dbus-execute.c                    |  1 +
+ src/core/dbus-util.c                       |  1 +
+ src/core/execute.c                         |  1 +
+ src/core/kmod-setup.c                      |  1 +
+ src/core/service.c                         |  1 +
+ src/coredump/coredump-vacuum.c             |  1 +
+ src/fstab-generator/fstab-generator.c      |  1 +
+ src/journal-remote/journal-remote-main.c   |  1 +
+ src/journal/journalctl.c                   |  1 +
+ src/libsystemd/sd-bus/bus-message.c        |  1 +
+ src/libsystemd/sd-bus/bus-objects.c        |  1 +
+ src/libsystemd/sd-bus/bus-socket.c         |  1 +
+ src/libsystemd/sd-bus/sd-bus.c             |  1 +
+ src/libsystemd/sd-bus/test-bus-benchmark.c |  1 +
+ src/libsystemd/sd-journal/sd-journal.c     |  1 +
+ src/login/pam_systemd.c                    |  1 +
+ src/network/generator/network-generator.c  |  1 +
+ src/nspawn/nspawn-settings.c               |  1 +
+ src/nss-mymachines/nss-mymachines.c        |  1 +
+ src/portable/portable.c                    |  1 +
+ src/resolve/resolvectl.c                   |  1 +
+ src/shared/bus-get-properties.c            |  1 +
+ src/shared/bus-unit-procs.c                |  1 +
+ src/shared/bus-unit-util.c                 |  1 +
+ src/shared/bus-util.c                      |  1 +
+ src/shared/dns-domain.c                    |  1 +
+ src/shared/journal-importer.c              |  1 +
+ src/shared/logs-show.c                     |  1 +
+ src/shared/pager.c                         |  1 +
+ src/socket-proxy/socket-proxyd.c           |  1 +
+ src/test/test-hexdecoct.c                  |  1 +
+ src/udev/udev-builtin-net_id.c             |  1 +
+ src/udev/udev-builtin-path_id.c            |  1 +
+ src/udev/udev-event.c                      |  1 +
+ src/udev/udev-rules.c                      |  1 +
+ 51 files changed, 62 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index 01fd3ffc19..61a872b753 100644
+--- a/meson.build
++++ b/meson.build
+@@ -567,6 +567,7 @@ foreach ident : ['secure_getenv', '__secure_getenv']
+ endforeach
+ 
+ foreach ident : [
++        ['strndupa' ,         '''#include <string.h>'''],
+         ['memfd_create',      '''#include <sys/mman.h>'''],
+         ['gettid',            '''#include <sys/types.h>
+                                  #include <unistd.h>'''],
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 5ac9f904a9..99d5122dd7 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -20,6 +20,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "terminal-util.h"
++#include "missing_stdlib.h"
+ 
+ #define PCI_CLASS_GRAPHICS_CARD 0x30000
+ 
+diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
+index 18b16ecc0e..d2be79622f 100644
+--- a/src/basic/cgroup-util.c
++++ b/src/basic/cgroup-util.c
+@@ -38,6 +38,7 @@
+ #include "unit-name.h"
+ #include "user-util.h"
+ #include "xattr-util.h"
++#include "missing_stdlib.h"
+ 
+ static int cg_enumerate_items(const char *controller, const char *path, FILE **ret, const char *item) {
+         _cleanup_free_ char *fs = NULL;
+diff --git a/src/basic/env-util.c b/src/basic/env-util.c
+index d3bf73385f..16b17358ca 100644
+--- a/src/basic/env-util.c
++++ b/src/basic/env-util.c
+@@ -19,6 +19,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ /* We follow bash for the character set. Different shells have different rules. */
+ #define VALID_BASH_ENV_NAME_CHARS               \
+diff --git a/src/basic/log.c b/src/basic/log.c
+index 1470611a75..9924ec2b9a 100644
+--- a/src/basic/log.c
++++ b/src/basic/log.c
+@@ -40,6 +40,7 @@
+ #include "terminal-util.h"
+ #include "time-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ #define SNDBUF_SIZE (8*1024*1024)
+ #define IOVEC_MAX 256U
+diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
+index 8c76f93eb2..9068bfb4f0 100644
+--- a/src/basic/missing_stdlib.h
++++ b/src/basic/missing_stdlib.h
+@@ -11,3 +11,15 @@
+ #    error "neither secure_getenv nor __secure_getenv are available"
+ #  endif
+ #endif
++
++/* string.h */
++#if ! HAVE_STRNDUPA
++#define strndupa(s, n) \
++  ({ \
++    const char *__old = (s); \
++    size_t __len = strnlen(__old, (n)); \
++    char *__new = (char *)alloca(__len + 1); \
++    __new[__len] = '\0'; \
++    (char *)memcpy(__new, __old, __len); \
++  })
++#endif
+diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
+index c770e5ed32..1fd8816cd0 100644
+--- a/src/basic/mkdir.c
++++ b/src/basic/mkdir.c
+@@ -16,6 +16,7 @@
+ #include "stat-util.h"
+ #include "stdio-util.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+ 
+ int mkdirat_safe_internal(
+                 int dir_fd,
+diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
+index bf67f7e01a..409f8d8a73 100644
+--- a/src/basic/mountpoint-util.c
++++ b/src/basic/mountpoint-util.c
+@@ -18,6 +18,7 @@
+ #include "missing_stat.h"
+ #include "missing_syscall.h"
+ #include "mkdir.h"
++#include "missing_stdlib.h"
+ #include "mountpoint-util.h"
+ #include "nulstr-util.h"
+ #include "parse-util.h"
+diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
+index 0430e33e40..f3728de026 100644
+--- a/src/basic/parse-util.c
++++ b/src/basic/parse-util.c
+@@ -18,6 +18,7 @@
+ #include "stat-util.h"
+ #include "string-util.h"
+ #include "strv.h"
++#include "missing_stdlib.h"
+ 
+ int parse_boolean(const char *v) {
+         if (!v)
+diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c
+index 4e3d59fc56..726e240df0 100644
+--- a/src/basic/path-lookup.c
++++ b/src/basic/path-lookup.c
+@@ -16,6 +16,7 @@
+ #include "strv.h"
+ #include "tmpfile-util.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+ 
+ int xdg_user_runtime_dir(char **ret, const char *suffix) {
+         const char *e;
+diff --git a/src/basic/percent-util.c b/src/basic/percent-util.c
+index cab9d0eaea..5f6ca258e9 100644
+--- a/src/basic/percent-util.c
++++ b/src/basic/percent-util.c
+@@ -3,6 +3,7 @@
+ #include "percent-util.h"
+ #include "string-util.h"
+ #include "parse-util.h"
++#include "missing_stdlib.h"
+ 
+ static int parse_parts_value_whole(const char *p, const char *symbol) {
+         const char *pc, *n;
+diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
+index 522d8de1f4..7c129dc0fc 100644
+--- a/src/basic/proc-cmdline.c
++++ b/src/basic/proc-cmdline.c
+@@ -16,6 +16,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "virt.h"
++#include "missing_stdlib.h"
+ 
+ int proc_cmdline_filter_pid1_args(char **argv, char ***ret) {
+         enum {
+diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
+index d7cfcd9105..6cb0ddf575 100644
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -12,6 +12,7 @@
+ #include "procfs-util.h"
+ #include "stdio-util.h"
+ #include "string-util.h"
++#include "missing_stdlib.h"
+ 
+ int procfs_get_pid_max(uint64_t *ret) {
+         _cleanup_free_ char *value = NULL;
+diff --git a/src/basic/time-util.c b/src/basic/time-util.c
+index f9014dc560..1d7840a5b5 100644
+--- a/src/basic/time-util.c
++++ b/src/basic/time-util.c
+@@ -27,6 +27,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "time-util.h"
++#include "missing_stdlib.h"
+ 
+ static clockid_t map_clock_id(clockid_t c) {
+ 
+diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c
+index 0c0b4f23c7..68fe5ca509 100644
+--- a/src/boot/bless-boot.c
++++ b/src/boot/bless-boot.c
+@@ -22,6 +22,7 @@
+ #include "terminal-util.h"
+ #include "verbs.h"
+ #include "virt.h"
++#include "missing_stdlib.h"
+ 
+ static char **arg_path = NULL;
+ 
+diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
+index 4237e694c0..05f9d9d9a9 100644
+--- a/src/core/dbus-cgroup.c
++++ b/src/core/dbus-cgroup.c
+@@ -25,6 +25,7 @@
+ #include "parse-util.h"
+ #include "path-util.h"
+ #include "percent-util.h"
++#include "missing_stdlib.h"
+ #include "socket-util.h"
+ 
+ BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", CGroupTasksMax, cgroup_tasks_max_resolve);
+diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
+index 4daa1cefd3..2c77901471 100644
+--- a/src/core/dbus-execute.c
++++ b/src/core/dbus-execute.c
+@@ -42,6 +42,7 @@
+ #include "unit-printf.h"
+ #include "user-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput);
+ static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput);
+diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
+index d680a64268..e59f48103e 100644
+--- a/src/core/dbus-util.c
++++ b/src/core/dbus-util.c
+@@ -9,6 +9,7 @@
+ #include "unit-printf.h"
+ #include "user-util.h"
+ #include "unit.h"
++#include "missing_stdlib.h"
+ 
+ int bus_property_get_triggered_unit(
+                 sd_bus *bus,
+diff --git a/src/core/execute.c b/src/core/execute.c
+index ef0bf88687..bd3da0c401 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -72,6 +72,7 @@
+ #include "unit-serialize.h"
+ #include "user-util.h"
+ #include "utmp-wtmp.h"
++#include "missing_stdlib.h"
+ 
+ static bool is_terminal_input(ExecInput i) {
+         return IN_SET(i,
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index b8e3f7aadd..8ce8ca68d8 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -13,6 +13,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "virt.h"
++#include "missing_stdlib.h"
+ 
+ #if HAVE_KMOD
+ #include "module-util.h"
+diff --git a/src/core/service.c b/src/core/service.c
+index b9eb40c555..268fe7573b 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -45,6 +45,7 @@
+ #include "unit-name.h"
+ #include "unit.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ #define service_spawn(...) service_spawn_internal(__func__, __VA_ARGS__)
+ 
+diff --git a/src/coredump/coredump-vacuum.c b/src/coredump/coredump-vacuum.c
+index 7e0c98cb7d..978a7f5874 100644
+--- a/src/coredump/coredump-vacuum.c
++++ b/src/coredump/coredump-vacuum.c
+@@ -17,6 +17,7 @@
+ #include "string-util.h"
+ #include "time-util.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+ 
+ #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL)           /* 1 MiB */
+ #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL)   /* 4 GiB */
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 016f3baa7f..b1def81313 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -37,6 +37,7 @@
+ #include "unit-name.h"
+ #include "virt.h"
+ #include "volatile-util.h"
++#include "missing_stdlib.h"
+ 
+ typedef enum MountPointFlags {
+         MOUNT_NOAUTO    = 1 << 0,
+diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c
+index da0f20d3ce..f22ce41908 100644
+--- a/src/journal-remote/journal-remote-main.c
++++ b/src/journal-remote/journal-remote-main.c
+@@ -27,6 +27,7 @@
+ #include "stat-util.h"
+ #include "string-table.h"
+ #include "strv.h"
++#include "missing_stdlib.h"
+ 
+ #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem"
+ #define CERT_FILE     CERTIFICATE_ROOT "/certs/journal-remote.pem"
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 7f3dcd56a4..41b7cbaaf1 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -77,6 +77,7 @@
+ #include "unit-name.h"
+ #include "user-util.h"
+ #include "varlink.h"
++#include "missing_stdlib.h"
+ 
+ #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
+ #define PROCESS_INOTIFY_INTERVAL 1024   /* Every 1,024 messages processed */
+diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
+index ff0228081f..9066fcb133 100644
+--- a/src/libsystemd/sd-bus/bus-message.c
++++ b/src/libsystemd/sd-bus/bus-message.c
+@@ -19,6 +19,7 @@
+ #include "strv.h"
+ #include "time-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
+ static int message_parse_fields(sd_bus_message *m);
+diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
+index c25c40ff37..57a5da704f 100644
+--- a/src/libsystemd/sd-bus/bus-objects.c
++++ b/src/libsystemd/sd-bus/bus-objects.c
+@@ -11,6 +11,7 @@
+ #include "missing_capability.h"
+ #include "string-util.h"
+ #include "strv.h"
++#include "missing_stdlib.h"
+ 
+ static int node_vtable_get_userdata(
+                 sd_bus *bus,
+diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
+index 3c59d0d615..746922d46f 100644
+--- a/src/libsystemd/sd-bus/bus-socket.c
++++ b/src/libsystemd/sd-bus/bus-socket.c
+@@ -29,6 +29,7 @@
+ #include "string-util.h"
+ #include "user-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ #define SNDBUF_SIZE (8*1024*1024)
+ 
+diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
+index 4a0259f8bb..aaa90d2223 100644
+--- a/src/libsystemd/sd-bus/sd-bus.c
++++ b/src/libsystemd/sd-bus/sd-bus.c
+@@ -46,6 +46,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+ 
+ #define log_debug_bus_message(m)                                         \
+         do {                                                             \
+diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
+index d988588de0..458df8df9a 100644
+--- a/src/libsystemd/sd-bus/test-bus-benchmark.c
++++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
+@@ -14,6 +14,7 @@
+ #include "string-util.h"
+ #include "tests.h"
+ #include "time-util.h"
++#include "missing_stdlib.h"
+ 
+ #define MAX_SIZE (2*1024*1024)
+ 
+diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c
+index 6b9ff0a4ed..4a5027ad0f 100644
+--- a/src/libsystemd/sd-journal/sd-journal.c
++++ b/src/libsystemd/sd-journal/sd-journal.c
+@@ -44,6 +44,7 @@
+ #include "strv.h"
+ #include "syslog-util.h"
+ #include "uid-alloc-range.h"
++#include "missing_stdlib.h"
+ 
+ #define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC)
+ 
+diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
+index b8da266e27..4bb8dd9496 100644
+--- a/src/login/pam_systemd.c
++++ b/src/login/pam_systemd.c
+@@ -35,6 +35,7 @@
+ #include "login-util.h"
+ #include "macro.h"
+ #include "missing_syscall.h"
++#include "missing_stdlib.h"
+ #include "pam-util.h"
+ #include "parse-util.h"
+ #include "path-util.h"
+diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
+index 48527a2c73..9777fe0561 100644
+--- a/src/network/generator/network-generator.c
++++ b/src/network/generator/network-generator.c
+@@ -14,6 +14,7 @@
+ #include "string-table.h"
+ #include "string-util.h"
+ #include "strv.h"
++#include "missing_stdlib.h"
+ 
+ /*
+   # .network
+diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
+index 161b1c1c70..ba1c459f78 100644
+--- a/src/nspawn/nspawn-settings.c
++++ b/src/nspawn/nspawn-settings.c
+@@ -16,6 +16,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+ 
+ Settings *settings_new(void) {
+         Settings *s;
+diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c
+index c64e79bdff..eda26b0b9a 100644
+--- a/src/nss-mymachines/nss-mymachines.c
++++ b/src/nss-mymachines/nss-mymachines.c
+@@ -21,6 +21,7 @@
+ #include "nss-util.h"
+ #include "signal-util.h"
+ #include "string-util.h"
++#include "missing_stdlib.h"
+ 
+ static void setup_logging_once(void) {
+         static pthread_once_t once = PTHREAD_ONCE_INIT;
+diff --git a/src/portable/portable.c b/src/portable/portable.c
+index d4b448a627..bb26623565 100644
+--- a/src/portable/portable.c
++++ b/src/portable/portable.c
+@@ -40,6 +40,7 @@
+ #include "strv.h"
+ #include "tmpfile-util.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+ 
+ /* Markers used in the first line of our 20-portable.conf unit file drop-in to determine, that a) the unit file was
+  * dropped there by the portable service logic and b) for which image it was dropped there. */
+diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c
+index afa537f160..32ccee4ae5 100644
+--- a/src/resolve/resolvectl.c
++++ b/src/resolve/resolvectl.c
+@@ -48,6 +48,7 @@
+ #include "varlink.h"
+ #include "verb-log-control.h"
+ #include "verbs.h"
++#include "missing_stdlib.h"
+ 
+ static int arg_family = AF_UNSPEC;
+ static int arg_ifindex = 0;
+diff --git a/src/shared/bus-get-properties.c b/src/shared/bus-get-properties.c
+index 53e5d6b99f..851ecd5644 100644
+--- a/src/shared/bus-get-properties.c
++++ b/src/shared/bus-get-properties.c
+@@ -4,6 +4,7 @@
+ #include "rlimit-util.h"
+ #include "stdio-util.h"
+ #include "string-util.h"
++#include "missing_stdlib.h"
+ 
+ int bus_property_get_bool(
+                 sd_bus *bus,
+diff --git a/src/shared/bus-unit-procs.c b/src/shared/bus-unit-procs.c
+index 8b462b5627..183ce1c18e 100644
+--- a/src/shared/bus-unit-procs.c
++++ b/src/shared/bus-unit-procs.c
+@@ -11,6 +11,7 @@
+ #include "sort-util.h"
+ #include "string-util.h"
+ #include "terminal-util.h"
++#include "missing_stdlib.h"
+ 
+ struct CGroupInfo {
+         char *cgroup_path;
+diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
+index 4ee9706847..30c8084847 100644
+--- a/src/shared/bus-unit-util.c
++++ b/src/shared/bus-unit-util.c
+@@ -50,6 +50,7 @@
+ #include "unit-def.h"
+ #include "user-util.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) {
+         assert(message);
+diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
+index 4123152d93..74f148c8b4 100644
+--- a/src/shared/bus-util.c
++++ b/src/shared/bus-util.c
+@@ -24,6 +24,7 @@
+ #include "path-util.h"
+ #include "socket-util.h"
+ #include "stdio-util.h"
++#include "missing_stdlib.h"
+ 
+ static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
+         sd_event *e = ASSERT_PTR(userdata);
+diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
+index b41c9b06ca..e69050a507 100644
+--- a/src/shared/dns-domain.c
++++ b/src/shared/dns-domain.c
+@@ -18,6 +18,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "utf8.h"
++#include "missing_stdlib.h"
+ 
+ int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
+         const char *n;
+diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
+index 83e9834bbf..74eaae6f5e 100644
+--- a/src/shared/journal-importer.c
++++ b/src/shared/journal-importer.c
+@@ -16,6 +16,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "unaligned.h"
++#include "missing_stdlib.h"
+ 
+ enum {
+         IMPORTER_STATE_LINE = 0,    /* waiting to read, or reading line */
+diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
+index a5d04003bd..10392c132d 100644
+--- a/src/shared/logs-show.c
++++ b/src/shared/logs-show.c
+@@ -41,6 +41,7 @@
+ #include "time-util.h"
+ #include "utf8.h"
+ #include "web-util.h"
++#include "missing_stdlib.h"
+ 
+ /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
+ #define PRINT_LINE_THRESHOLD 3
+diff --git a/src/shared/pager.c b/src/shared/pager.c
+index 19deefab56..6b6d0af1a0 100644
+--- a/src/shared/pager.c
++++ b/src/shared/pager.c
+@@ -25,6 +25,7 @@
+ #include "string-util.h"
+ #include "strv.h"
+ #include "terminal-util.h"
++#include "missing_stdlib.h"
+ 
+ static pid_t pager_pid = 0;
+ 
+diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
+index 287fd6c181..8f8d5493da 100644
+--- a/src/socket-proxy/socket-proxyd.c
++++ b/src/socket-proxy/socket-proxyd.c
+@@ -27,6 +27,7 @@
+ #include "set.h"
+ #include "socket-util.h"
+ #include "string-util.h"
++#include "missing_stdlib.h"
+ 
+ #define BUFFER_SIZE (256 * 1024)
+ 
+diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
+index f884008660..987e180697 100644
+--- a/src/test/test-hexdecoct.c
++++ b/src/test/test-hexdecoct.c
+@@ -7,6 +7,7 @@
+ #include "macro.h"
+ #include "random-util.h"
+ #include "string-util.h"
++#include "missing_stdlib.h"
+ #include "tests.h"
+ 
+ TEST(hexchar) {
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 91b40088f4..f528a46b8e 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -39,6 +39,7 @@
+ #include "strv.h"
+ #include "strxcpyx.h"
+ #include "udev-builtin.h"
++#include "missing_stdlib.h"
+ 
+ #define ONBOARD_14BIT_INDEX_MAX ((1U << 14) - 1)
+ #define ONBOARD_16BIT_INDEX_MAX ((1U << 16) - 1)
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index 467c9a6ad3..f74dae60af 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -24,6 +24,7 @@
+ #include "sysexits.h"
+ #include "udev-builtin.h"
+ #include "udev-util.h"
++#include "missing_stdlib.h"
+ 
+ _printf_(2,3)
+ static void path_prepend(char **path, const char *fmt, ...) {
+diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
+index ed22c8b679..19ebe20237 100644
+--- a/src/udev/udev-event.c
++++ b/src/udev/udev-event.c
+@@ -16,6 +16,7 @@
+ #include "udev-util.h"
+ #include "udev-watch.h"
+ #include "user-util.h"
++#include "missing_stdlib.h"
+ 
+ UdevEvent *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_netlink *rtnl, int log_level) {
+         UdevEvent *event;
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index 5f12002394..febe345b4c 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -41,6 +41,7 @@
+ #include "udev-util.h"
+ #include "user-util.h"
+ #include "virt.h"
++#include "missing_stdlib.h"
+ 
+ #define RULES_DIRS ((const char* const*) CONF_PATHS_STRV("udev/rules.d"))
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
new file mode 100644
index 0000000..15877be
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
@@ -0,0 +1,156 @@
+From 5325ab5813617f35f03806ec420829dde7104387 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 14:56:21 +0800
+Subject: [PATCH 04/22] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not
+ defined
+
+If the standard library doesn't provide brace
+expansion users just won't get it.
+
+Dont use GNU GLOB extentions on non-glibc systems
+
+Conditionalize use of GLOB_ALTDIRFUNC
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/glob-util.c     | 12 ++++++++++++
+ src/test/test-glob-util.c | 16 ++++++++++++++++
+ src/tmpfiles/tmpfiles.c   | 10 ++++++++++
+ 3 files changed, 38 insertions(+)
+
+diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
+index 802ca8c655..23818a67c6 100644
+--- a/src/basic/glob-util.c
++++ b/src/basic/glob-util.c
+@@ -12,6 +12,12 @@
+ #include "path-util.h"
+ #include "strv.h"
+ 
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ static void closedir_wrapper(void* v) {
+         (void) closedir(v);
+ }
+@@ -19,6 +25,7 @@ static void closedir_wrapper(void* v) {
+ int safe_glob(const char *path, int flags, glob_t *pglob) {
+         int k;
+ 
++#ifdef GLOB_ALTDIRFUNC
+         /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */
+         assert(!(flags & GLOB_ALTDIRFUNC));
+ 
+@@ -32,9 +39,14 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
+                 pglob->gl_lstat = lstat;
+         if (!pglob->gl_stat)
+                 pglob->gl_stat = stat;
++#endif
+ 
+         errno = 0;
++#ifdef GLOB_ALTDIRFUNC
+         k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob);
++#else
++        k = glob(path, flags, NULL, pglob);
++#endif
+         if (k == GLOB_NOMATCH)
+                 return -ENOENT;
+         if (k == GLOB_NOSPACE)
+diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
+index 9b3e73cce0..3790ba3be5 100644
+--- a/src/test/test-glob-util.c
++++ b/src/test/test-glob-util.c
+@@ -34,6 +34,12 @@ TEST(glob_first) {
+         assert_se(first == NULL);
+ }
+ 
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ TEST(glob_exists) {
+         char name[] = "/tmp/test-glob_exists.XXXXXX";
+         int fd = -EBADF;
+@@ -61,11 +67,13 @@ TEST(glob_no_dot) {
+         const char *fn;
+ 
+         _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+                 .gl_closedir = closedir_wrapper,
+                 .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
+                 .gl_opendir = (void *(*)(const char *)) opendir,
+                 .gl_lstat = lstat,
+                 .gl_stat = stat,
++#endif
+         };
+ 
+         int r;
+@@ -73,11 +81,19 @@ TEST(glob_no_dot) {
+         assert_se(mkdtemp(template));
+ 
+         fn = strjoina(template, "/*");
++#ifdef GLOB_ALTDIRFUNC
+         r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++        r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+         assert_se(r == GLOB_NOMATCH);
+ 
+         fn = strjoina(template, "/.*");
++#ifdef GLOB_ALTDIRFUNC
+         r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
++#else
++        r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++#endif
+         assert_se(r == GLOB_NOMATCH);
+ 
+         (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 230ec09b97..2cc5f391d7 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -73,6 +73,12 @@
+ #include "user-util.h"
+ #include "virt.h"
+ 
++/* Don't fail if the standard library
++ * doesn't provide brace expansion */
++#ifndef GLOB_BRACE
++#define GLOB_BRACE 0
++#endif
++
+ /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
+  * them in the file system. This is intended to be used to create
+  * properly owned directories beneath /tmp, /var/tmp, /run, which are
+@@ -2434,7 +2440,9 @@ finish:
+ 
+ static int glob_item(Context *c, Item *i, action_t action) {
+         _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+                 .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+         };
+         int r = 0, k;
+ 
+@@ -2461,7 +2469,9 @@ static int glob_item_recursively(
+                 fdaction_t action) {
+ 
+         _cleanup_globfree_ glob_t g = {
++#ifdef GLOB_ALTDIRFUNC
+                 .gl_opendir = (void *(*)(const char *)) opendir_nomod,
++#endif
+         };
+         int r = 0, k;
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0005-add-missing-FTW_-macros-for-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0005-add-missing-FTW_-macros-for-musl.patch
new file mode 100644
index 0000000..a1dfca2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0005-add-missing-FTW_-macros-for-musl.patch
@@ -0,0 +1,44 @@
+From dad7f897c0de654fa5592fda3e90f874639849f9 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:00:06 +0800
+Subject: [PATCH 05/22] add missing FTW_ macros for musl
+
+This is to avoid build failures like below for musl.
+
+  locale-util.c:296:24: error: 'FTW_STOP' undeclared
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_type.h    | 4 ++++
+ src/test/test-recurse-dir.c | 1 +
+ 2 files changed, 5 insertions(+)
+
+diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
+index 6c0456349d..73a5b90e3c 100644
+--- a/src/basic/missing_type.h
++++ b/src/basic/missing_type.h
+@@ -14,3 +14,7 @@
+ #ifndef __GLIBC__
+ typedef int (*comparison_fn_t)(const void *, const void *);
+ #endif
++
++#ifndef FTW_CONTINUE
++#define FTW_CONTINUE 0
++#endif
+diff --git a/src/test/test-recurse-dir.c b/src/test/test-recurse-dir.c
+index 8684d064ec..70fc2b5376 100644
+--- a/src/test/test-recurse-dir.c
++++ b/src/test/test-recurse-dir.c
+@@ -8,6 +8,7 @@
+ #include "recurse-dir.h"
+ #include "strv.h"
+ #include "tests.h"
++#include "missing_type.h"
+ 
+ static char **list_nftw = NULL;
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0005-pass-correct-parameters-to-getdents64.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0005-pass-correct-parameters-to-getdents64.patch
deleted file mode 100644
index c634d8e..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0005-pass-correct-parameters-to-getdents64.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 17766c64ecc7dedf09ed2d361690fc4eda77bf42 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 21 Jan 2022 15:15:11 -0800
-Subject: [PATCH] pass correct parameters to getdents64
-
-Fixes
-../git/src/basic/recurse-dir.c:57:40: error: incompatible pointer types passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
-                n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
-                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-../git/src/basic/stat-util.c:102:28: error: incompatible pointer types passing 'union (unnamed union at ../git/src/basic/stat-util.c:78:9) *' to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
-        n = getdents64(fd, &buffer, sizeof(buffer));
-                           ^~~~~~~
-
-Upstream-Status: Inappropriate [musl specific]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
----
- src/basic/recurse-dir.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c
-index 5e98b7a5d8..aef065047b 100644
---- a/src/basic/recurse-dir.c
-+++ b/src/basic/recurse-dir.c
-@@ -55,7 +55,7 @@ int readdir_all(int dir_fd,
-                 bs = MIN(MALLOC_SIZEOF_SAFE(de) - offsetof(DirectoryEntries, buffer), (size_t) SSIZE_MAX);
-                 assert(bs > de->buffer_size);
- 
--                n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
-+                n = getdents64(dir_fd, (struct dirent*)((uint8_t*) de->buffer + de->buffer_size), bs - de->buffer_size);
-                 if (n < 0)
-                         return -errno;
-                 if (n == 0)
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0006-Use-uintmax_t-for-handling-rlim_t.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
new file mode 100644
index 0000000..4be14b7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0006-Use-uintmax_t-for-handling-rlim_t.patch
@@ -0,0 +1,106 @@
+From 96e975a2412a20e5f80bd3ab144057d275eb8597 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:12:41 +0800
+Subject: [PATCH 06/22] Use uintmax_t for handling rlim_t
+
+PRIu{32,64} is not right format to represent rlim_t type
+therefore use %ju and typecast the rlim_t variables to
+uintmax_t.
+
+Fixes portablility errors like
+
+execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'rlim_t {aka long long unsigned int}' [-Werror=format=]
+|                          fprintf(f, "%s%s: " RLIM_FMT "\n",
+|                                     ^~~~~~~~
+|                                  prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
+|                                                               ~~~~~~~~~~~~~~~~~~~~~~
+
+Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+[Rebased for v241]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/format-util.h |  8 +-------
+ src/basic/rlimit-util.c | 12 ++++++------
+ src/core/execute.c      |  4 ++--
+ 3 files changed, 9 insertions(+), 15 deletions(-)
+
+diff --git a/src/basic/format-util.h b/src/basic/format-util.h
+index 8719df3e29..9becc96066 100644
+--- a/src/basic/format-util.h
++++ b/src/basic/format-util.h
+@@ -34,13 +34,7 @@ assert_cc(sizeof(gid_t) == sizeof(uint32_t));
+ #  error Unknown timex member size
+ #endif
+ 
+-#if SIZEOF_RLIM_T == 8
+-#  define RLIM_FMT "%" PRIu64
+-#elif SIZEOF_RLIM_T == 4
+-#  define RLIM_FMT "%" PRIu32
+-#else
+-#  error Unknown rlim_t size
+-#endif
++#define RLIM_FMT "%ju"
+ 
+ #if SIZEOF_DEV_T == 8
+ #  define DEV_FMT "%" PRIu64
+diff --git a/src/basic/rlimit-util.c b/src/basic/rlimit-util.c
+index c1f0b2b974..61c5412582 100644
+--- a/src/basic/rlimit-util.c
++++ b/src/basic/rlimit-util.c
+@@ -44,7 +44,7 @@ int setrlimit_closest(int resource, const struct rlimit *rlim) {
+             fixed.rlim_max == highest.rlim_max)
+                 return 0;
+ 
+-        log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", rlim->rlim_max, rlimit_to_string(resource), fixed.rlim_max);
++        log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", (uintmax_t)rlim->rlim_max, rlimit_to_string(resource), (uintmax_t)fixed.rlim_max);
+ 
+         return RET_NERRNO(setrlimit(resource, &fixed));
+ }
+@@ -307,13 +307,13 @@ int rlimit_format(const struct rlimit *rl, char **ret) {
+         if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
+                 r = free_and_strdup(&s, "infinity");
+         else if (rl->rlim_cur >= RLIM_INFINITY)
+-                r = asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
++                r = asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
+         else if (rl->rlim_max >= RLIM_INFINITY)
+-                r = asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
++                r = asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
+         else if (rl->rlim_cur == rl->rlim_max)
+-                r = asprintf(&s, RLIM_FMT, rl->rlim_cur);
++                r = asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
+         else
+-                r = asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
++                r = asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
+         if (r < 0)
+                 return -ENOMEM;
+ 
+@@ -422,7 +422,7 @@ int rlimit_nofile_safe(void) {
+         rl.rlim_max = MIN(rl.rlim_max, (rlim_t) read_nr_open());
+         rl.rlim_cur = MIN((rlim_t) FD_SETSIZE, rl.rlim_max);
+         if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
+-                return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
++                return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
+ 
+         return 1;
+ }
+diff --git a/src/core/execute.c b/src/core/execute.c
+index bd3da0c401..df1870fd2f 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -1045,9 +1045,9 @@ void exec_context_dump(const ExecContext *c, FILE* f, const char *prefix) {
+         for (unsigned i = 0; i < RLIM_NLIMITS; i++)
+                 if (c->rlimit[i]) {
+                         fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
+-                                prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
++                                prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
+                         fprintf(f, "%sLimit%sSoft: " RLIM_FMT "\n",
+-                                prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
++                                prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
+                 }
+ 
+         if (c->ioprio_set) {
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0006-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0006-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
deleted file mode 100644
index 96322e5..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0006-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From fa598869cca684c001f3dc23ce2198f5a6169e2a Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 8 Nov 2022 13:31:34 -0800
-Subject: [PATCH] test-bus-error: strerror() is assumed to be GNU specific
- version mark it so
-
-Upstream-Status: Inappropriate [Upstream systemd only supports glibc]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/libsystemd/sd-bus/test-bus-error.c | 2 ++
- src/test/test-errno-util.c             | 3 ++-
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/libsystemd/sd-bus/test-bus-error.c b/src/libsystemd/sd-bus/test-bus-error.c
-index a55f3f9856..4123bf3da0 100644
---- a/src/libsystemd/sd-bus/test-bus-error.c
-+++ b/src/libsystemd/sd-bus/test-bus-error.c
-@@ -99,7 +99,9 @@ TEST(error) {
-         assert_se(!sd_bus_error_is_set(&error));
-         assert_se(sd_bus_error_set_errno(&error, EBUSY) == -EBUSY);
-         assert_se(streq(error.name, "System.Error.EBUSY"));
-+#ifdef __GLIBC__
-         assert_se(streq(error.message, STRERROR(EBUSY)));
-+#endif
-         assert_se(sd_bus_error_has_name(&error, "System.Error.EBUSY"));
-         assert_se(sd_bus_error_get_errno(&error) == EBUSY);
-         assert_se(sd_bus_error_is_set(&error));
-diff --git a/src/test/test-errno-util.c b/src/test/test-errno-util.c
-index d3d022c33f..74e95c804d 100644
---- a/src/test/test-errno-util.c
-+++ b/src/test/test-errno-util.c
-@@ -4,7 +4,7 @@
- #include "stdio-util.h"
- #include "string-util.h"
- #include "tests.h"
--
-+#ifdef __GLIBC__
- TEST(strerror_not_threadsafe) {
-         /* Just check that strerror really is not thread-safe. */
-         log_info("strerror(%d) → %s", 200, strerror(200));
-@@ -46,6 +46,7 @@ TEST(STRERROR_OR_ELSE) {
-         log_info("STRERROR_OR_ELSE(EPERM, \"EOF\") → %s", STRERROR_OR_EOF(EPERM));
-         log_info("STRERROR_OR_ELSE(-EPERM, \"EOF\") → %s", STRERROR_OR_EOF(-EPERM));
- }
-+#endif /* __GLIBC__ */
- 
- TEST(PROTECT_ERRNO) {
-         errno = 12;
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
new file mode 100644
index 0000000..8d60842
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
@@ -0,0 +1,99 @@
+From 4842cff4f1329f0b5034b529d56f8ad1f234ac4c Mon Sep 17 00:00:00 2001
+From: Andre McCurdy <armccurdy@gmail.com>
+Date: Tue, 10 Oct 2017 14:33:30 -0700
+Subject: [PATCH 07/22] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
+
+Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
+thing to do and it's not portable (not supported by musl). See:
+
+  http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
+  http://www.openwall.com/lists/musl/2015/02/05/2
+
+Note that laccess() is never passing AT_EACCESS so a lot of the
+discussion in the links above doesn't apply. Note also that
+(currently) all systemd callers of laccess() pass mode as F_OK, so
+only check for existence of a file, not access permissions.
+Therefore, in this case, the only distiction between faccessat()
+with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the behaviour
+for broken symlinks; laccess() on a broken symlink will succeed with
+(flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
+
+The laccess() macros was added to systemd some time ago and it's not
+clear if or why it needs to return success for broken symlinks. Maybe
+just historical and not actually necessary or desired behaviour?
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
+---
+ src/basic/fs-util.h          | 21 ++++++++++++++++++++-
+ src/shared/base-filesystem.c |  6 +++---
+ 2 files changed, 23 insertions(+), 4 deletions(-)
+
+diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
+index 1023ab73ca..c78ff6f27f 100644
+--- a/src/basic/fs-util.h
++++ b/src/basic/fs-util.h
+@@ -49,8 +49,27 @@ int futimens_opath(int fd, const struct timespec ts[2]);
+ int fd_warn_permissions(const char *path, int fd);
+ int stat_warn_permissions(const char *path, const struct stat *st);
+ 
++/*
++   Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to
++   do and it's not portable (not supported by musl). See:
++
++     http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
++     http://www.openwall.com/lists/musl/2015/02/05/2
++
++   Note that laccess() is never passing AT_EACCESS so a lot of the discussion in
++   the links above doesn't apply. Note also that (currently) all systemd callers
++   of laccess() pass mode as F_OK, so only check for existence of a file, not
++   access permissions. Therefore, in this case, the only distiction between
++   faccessat() with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the
++   behaviour for broken symlinks; laccess() on a broken symlink will succeed
++   with (flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
++
++   The laccess() macros was added to systemd some time ago and it's not clear if
++   or why it needs to return success for broken symlinks. Maybe just historical
++   and not actually necessary or desired behaviour?
++*/
+ #define laccess(path, mode)                                             \
+-        RET_NERRNO(faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW))
++        RET_NERRNO(faccessat(AT_FDCWD, (path), (mode), 0))
+ 
+ int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
+ 
+diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
+index 569ef466c3..7ae921a113 100644
+--- a/src/shared/base-filesystem.c
++++ b/src/shared/base-filesystem.c
+@@ -145,7 +145,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
+         /* The "root" parameter is decoration only – it's only used as part of log messages */
+ 
+         for (size_t i = 0; i < ELEMENTSOF(table); i++) {
+-                if (faccessat(fd, table[i].dir, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
++                if (faccessat(fd, table[i].dir, F_OK, 0) >= 0)
+                         continue;
+ 
+                 if (table[i].target) { /* Create as symlink? */
+@@ -153,7 +153,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
+ 
+                         /* check if one of the targets exists */
+                         NULSTR_FOREACH(s, table[i].target) {
+-                                if (faccessat(fd, s, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++                                if (faccessat(fd, s, F_OK, 0) < 0)
+                                         continue;
+ 
+                                 /* check if a specific file exists at the target path */
+@@ -164,7 +164,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
+                                         if (!p)
+                                                 return log_oom();
+ 
+-                                        if (faccessat(fd, p, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
++                                        if (faccessat(fd, p, F_OK, 0) < 0)
+                                                 continue;
+                                 }
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
new file mode 100644
index 0000000..c1a8bb1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch
@@ -0,0 +1,34 @@
+From bab07e779ff23d5593bb118efaaa31b60a6dce87 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 27 May 2018 08:36:44 -0700
+Subject: [PATCH 08/22] Define glibc compatible basename() for non-glibc
+ systems
+
+Fixes builds with musl, even though systemd is adamant about
+using non-posix basename implementation, we have a way out
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/basic/string-util.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/basic/string-util.h b/src/basic/string-util.h
+index b6d8be3083..0a29036c4c 100644
+--- a/src/basic/string-util.h
++++ b/src/basic/string-util.h
+@@ -26,6 +26,10 @@
+ #define URI_UNRESERVED      ALPHANUMERICAL "-._~"       /* [RFC3986] */
+ #define URI_VALID           URI_RESERVED URI_UNRESERVED /* [RFC3986] */
+ 
++#if !defined(__GLIBC__)
++#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
++#endif
++
+ static inline char* strstr_ptr(const char *haystack, const char *needle) {
+         if (!haystack || !needle)
+                 return NULL;
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0008-implment-systemd-sysv-install-for-OE.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0008-implment-systemd-sysv-install-for-OE.patch
new file mode 100644
index 0000000..acff18d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0008-implment-systemd-sysv-install-for-OE.patch
@@ -0,0 +1,43 @@
+From 5712d56f1cd654d2e5d2e9117ff77fe4c299f76b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 5 Sep 2015 06:31:47 +0000
+Subject: [PATCH] implment systemd-sysv-install for OE
+
+Use update-rc.d for enabling/disabling and status command
+to check the status of the sysv service
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/systemctl/systemd-sysv-install.SKELETON | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/systemctl/systemd-sysv-install.SKELETON b/src/systemctl/systemd-sysv-install.SKELETON
+index cb58d8243b..000bdf6165 100755
+--- a/src/systemctl/systemd-sysv-install.SKELETON
++++ b/src/systemctl/systemd-sysv-install.SKELETON
+@@ -34,17 +34,17 @@ case "$1" in
+     enable)
+         # call the command to enable SysV init script $NAME here
+         # (consider optional $ROOT)
+-        echo "IMPLEMENT ME: enabling SysV init.d script $NAME"
++        update-rc.d -f $NAME defaults
+         ;;
+     disable)
+         # call the command to disable SysV init script $NAME here
+         # (consider optional $ROOT)
+-        echo "IMPLEMENT ME: disabling SysV init.d script $NAME"
++        update-rc.d -f $NAME remove
+         ;;
+     is-enabled)
+         # exit with 0 if $NAME is enabled, non-zero if it is disabled
+         # (consider optional $ROOT)
+-        echo "IMPLEMENT ME: checking SysV init.d script $NAME"
++        /etc/init.d/$NAME status
+         ;;
+     *)
+         usage ;;
+-- 
+2.39.2
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
new file mode 100644
index 0000000..3ff0177
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
@@ -0,0 +1,41 @@
+From 25093c5017725b8577c444dfea0f42ad85b43522 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 4 Jul 2018 15:00:44 +0800
+Subject: [PATCH 09/22] Do not disable buffering when writing to oom_score_adj
+
+On musl, disabling buffering when writing to oom_score_adj will
+cause the following error.
+
+  Failed to adjust OOM setting: Invalid argument
+
+This error appears for systemd-udevd.service and dbus.service.
+This is because kernel receives '-' instead of the whole '-900'
+if buffering is disabled.
+
+This is libc implementation specific, as glibc does not have this issue.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/basic/process-util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index 201c5596ae..ea51595b6c 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -1716,7 +1716,7 @@ int set_oom_score_adjust(int value) {
+         xsprintf(t, "%i", value);
+ 
+         return write_string_file("/proc/self/oom_score_adj", t,
+-                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
++                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE);
+ }
+ 
+ int get_oom_score_adjust(int *ret) {
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0009-missing_type.h-add-comparison_fn_t.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0009-missing_type.h-add-comparison_fn_t.patch
deleted file mode 100644
index e50b47a..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0009-missing_type.h-add-comparison_fn_t.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 542f999a846dfd49d9373d30fffb2a44168d7b5e Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 13:55:12 +0800
-Subject: [PATCH] missing_type.h: add comparison_fn_t
-
-Make it work with musl where comparison_fn_t and is not provided.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-[Rebased for v244]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[Rebased for v242]
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-[Rebased for v250, Drop __compare_fn_t]
-Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
----
- src/basic/missing_type.h            | 4 ++++
- src/basic/sort-util.h               | 1 +
- src/libsystemd/sd-journal/catalog.c | 1 +
- 3 files changed, 6 insertions(+)
-
-diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
-index f6233090a9..6c0456349d 100644
---- a/src/basic/missing_type.h
-+++ b/src/basic/missing_type.h
-@@ -10,3 +10,7 @@
- #if !HAVE_CHAR16_T
- #define char16_t uint16_t
- #endif
-+
-+#ifndef __GLIBC__
-+typedef int (*comparison_fn_t)(const void *, const void *);
-+#endif
-diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
-index f0bf246aa3..33669c7a75 100644
---- a/src/basic/sort-util.h
-+++ b/src/basic/sort-util.h
-@@ -4,6 +4,7 @@
- #include <stdlib.h>
- 
- #include "macro.h"
-+#include "missing_type.h"
- 
- /* This is the same as glibc's internal __compar_d_fn_t type. glibc exports a public comparison_fn_t, for the
-  * external type __compar_fn_t, but doesn't do anything similar for __compar_d_fn_t. Let's hence do that
-diff --git a/src/libsystemd/sd-journal/catalog.c b/src/libsystemd/sd-journal/catalog.c
-index 7527abf636..f33383e57f 100644
---- a/src/libsystemd/sd-journal/catalog.c
-+++ b/src/libsystemd/sd-journal/catalog.c
-@@ -28,6 +28,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "tmpfile-util.h"
-+#include "missing_type.h"
- 
- const char * const catalog_file_dirs[] = {
-         "/usr/local/lib/systemd/catalog/",
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0010-add-fallback-parse_printf_format-implementation.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0010-add-fallback-parse_printf_format-implementation.patch
deleted file mode 100644
index 4143ab4..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0010-add-fallback-parse_printf_format-implementation.patch
+++ /dev/null
@@ -1,417 +0,0 @@
-From 383e85e15f16a46aac925aa439b8b60f58b40aa6 Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Sat, 22 May 2021 20:26:24 +0200
-Subject: [PATCH] add fallback parse_printf_format implementation
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Emil Renner Berthing <systemd@esmil.dk>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- meson.build                              |   1 +
- src/basic/meson.build                    |   5 +
- src/basic/parse-printf-format.c          | 273 +++++++++++++++++++++++
- src/basic/parse-printf-format.h          |  57 +++++
- src/basic/stdio-util.h                   |   2 +-
- src/libsystemd/sd-journal/journal-send.c |   2 +-
- 6 files changed, 338 insertions(+), 2 deletions(-)
- create mode 100644 src/basic/parse-printf-format.c
- create mode 100644 src/basic/parse-printf-format.h
-
---- a/meson.build
-+++ b/meson.build
-@@ -781,6 +781,7 @@ endif
- foreach header : ['crypt.h',
-                   'linux/memfd.h',
-                   'linux/vm_sockets.h',
-+                  'printf.h',
-                   'sys/auxv.h',
-                   'threads.h',
-                   'valgrind/memcheck.h',
---- a/src/basic/meson.build
-+++ b/src/basic/meson.build
-@@ -179,6 +179,11 @@ endforeach
- 
- basic_sources += generated_gperf_headers
- 
-+if conf.get('HAVE_PRINTF_H') != 1
-+        basic_sources += [files('parse-printf-format.c')]
-+endif
-+
-+
- ############################################################
- 
- arch_list = [
---- /dev/null
-+++ b/src/basic/parse-printf-format.c
-@@ -0,0 +1,273 @@
-+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-+
-+/***
-+  This file is part of systemd.
-+
-+  Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
-+
-+  With parts from the musl C library
-+  Copyright 2005-2014 Rich Felker, et al.
-+
-+  systemd is free software; you can redistribute it and/or modify it
-+  under the terms of the GNU Lesser General Public License as published by
-+  the Free Software Foundation; either version 2.1 of the License, or
-+  (at your option) any later version.
-+
-+  systemd is distributed in the hope that it will be useful, but
-+  WITHOUT ANY WARRANTY; without even the implied warranty of
-+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  Lesser General Public License for more details.
-+
-+  You should have received a copy of the GNU Lesser General Public License
-+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-+***/
-+
-+#include <stddef.h>
-+#include <string.h>
-+
-+#include "parse-printf-format.h"
-+
-+static const char *consume_nonarg(const char *fmt)
-+{
-+        do {
-+                if (*fmt == '\0')
-+                        return fmt;
-+        } while (*fmt++ != '%');
-+        return fmt;
-+}
-+
-+static const char *consume_num(const char *fmt)
-+{
-+        for (;*fmt >= '0' && *fmt <= '9'; fmt++)
-+                /* do nothing */;
-+        return fmt;
-+}
-+
-+static const char *consume_argn(const char *fmt, size_t *arg)
-+{
-+        const char *p = fmt;
-+        size_t val = 0;
-+
-+        if (*p < '1' || *p > '9')
-+                return fmt;
-+        do {
-+                val = 10*val + (*p++ - '0');
-+        } while (*p >= '0' && *p <= '9');
-+
-+        if (*p != '$')
-+                return fmt;
-+        *arg = val;
-+        return p+1;
-+}
-+
-+static const char *consume_flags(const char *fmt)
-+{
-+        while (1) {
-+                switch (*fmt) {
-+                case '#':
-+                case '0':
-+                case '-':
-+                case ' ':
-+                case '+':
-+                case '\'':
-+                case 'I':
-+                        fmt++;
-+                        continue;
-+                }
-+                return fmt;
-+        }
-+}
-+
-+enum state {
-+        BARE,
-+        LPRE,
-+        LLPRE,
-+        HPRE,
-+        HHPRE,
-+        BIGLPRE,
-+        ZTPRE,
-+        JPRE,
-+        STOP
-+};
-+
-+enum type {
-+        NONE,
-+        PTR,
-+        INT,
-+        UINT,
-+        ULLONG,
-+        LONG,
-+        ULONG,
-+        SHORT,
-+        USHORT,
-+        CHAR,
-+        UCHAR,
-+        LLONG,
-+        SIZET,
-+        IMAX,
-+        UMAX,
-+        PDIFF,
-+        UIPTR,
-+        DBL,
-+        LDBL,
-+        MAXTYPE
-+};
-+
-+static const short pa_types[MAXTYPE] = {
-+        [NONE]   = PA_INT,
-+        [PTR]    = PA_POINTER,
-+        [INT]    = PA_INT,
-+        [UINT]   = PA_INT,
-+        [ULLONG] = PA_INT | PA_FLAG_LONG_LONG,
-+        [LONG]   = PA_INT | PA_FLAG_LONG,
-+        [ULONG]  = PA_INT | PA_FLAG_LONG,
-+        [SHORT]  = PA_INT | PA_FLAG_SHORT,
-+        [USHORT] = PA_INT | PA_FLAG_SHORT,
-+        [CHAR]   = PA_CHAR,
-+        [UCHAR]  = PA_CHAR,
-+        [LLONG]  = PA_INT | PA_FLAG_LONG_LONG,
-+        [SIZET]  = PA_INT | PA_FLAG_LONG,
-+        [IMAX]   = PA_INT | PA_FLAG_LONG_LONG,
-+        [UMAX]   = PA_INT | PA_FLAG_LONG_LONG,
-+        [PDIFF]  = PA_INT | PA_FLAG_LONG_LONG,
-+        [UIPTR]  = PA_INT | PA_FLAG_LONG,
-+        [DBL]    = PA_DOUBLE,
-+        [LDBL]   = PA_DOUBLE | PA_FLAG_LONG_DOUBLE
-+};
-+
-+#define S(x) [(x)-'A']
-+#define E(x) (STOP + (x))
-+
-+static const unsigned char states[]['z'-'A'+1] = {
-+        { /* 0: bare types */
-+                S('d') = E(INT), S('i') = E(INT),
-+                S('o') = E(UINT),S('u') = E(UINT),S('x') = E(UINT), S('X') = E(UINT),
-+                S('e') = E(DBL), S('f') = E(DBL), S('g') = E(DBL),  S('a') = E(DBL),
-+                S('E') = E(DBL), S('F') = E(DBL), S('G') = E(DBL),  S('A') = E(DBL),
-+                S('c') = E(CHAR),S('C') = E(INT),
-+                S('s') = E(PTR), S('S') = E(PTR), S('p') = E(UIPTR),S('n') = E(PTR),
-+                S('m') = E(NONE),
-+                S('l') = LPRE,   S('h') = HPRE, S('L') = BIGLPRE,
-+                S('z') = ZTPRE,  S('j') = JPRE, S('t') = ZTPRE
-+        }, { /* 1: l-prefixed */
-+                S('d') = E(LONG), S('i') = E(LONG),
-+                S('o') = E(ULONG),S('u') = E(ULONG),S('x') = E(ULONG),S('X') = E(ULONG),
-+                S('e') = E(DBL),  S('f') = E(DBL),  S('g') = E(DBL),  S('a') = E(DBL),
-+                S('E') = E(DBL),  S('F') = E(DBL),  S('G') = E(DBL),  S('A') = E(DBL),
-+                S('c') = E(INT),  S('s') = E(PTR),  S('n') = E(PTR),
-+                S('l') = LLPRE
-+        }, { /* 2: ll-prefixed */
-+                S('d') = E(LLONG), S('i') = E(LLONG),
-+                S('o') = E(ULLONG),S('u') = E(ULLONG),
-+                S('x') = E(ULLONG),S('X') = E(ULLONG),
-+                S('n') = E(PTR)
-+        }, { /* 3: h-prefixed */
-+                S('d') = E(SHORT), S('i') = E(SHORT),
-+                S('o') = E(USHORT),S('u') = E(USHORT),
-+                S('x') = E(USHORT),S('X') = E(USHORT),
-+                S('n') = E(PTR),
-+                S('h') = HHPRE
-+        }, { /* 4: hh-prefixed */
-+                S('d') = E(CHAR), S('i') = E(CHAR),
-+                S('o') = E(UCHAR),S('u') = E(UCHAR),
-+                S('x') = E(UCHAR),S('X') = E(UCHAR),
-+                S('n') = E(PTR)
-+        }, { /* 5: L-prefixed */
-+                S('e') = E(LDBL),S('f') = E(LDBL),S('g') = E(LDBL), S('a') = E(LDBL),
-+                S('E') = E(LDBL),S('F') = E(LDBL),S('G') = E(LDBL), S('A') = E(LDBL),
-+                S('n') = E(PTR)
-+        }, { /* 6: z- or t-prefixed (assumed to be same size) */
-+                S('d') = E(PDIFF),S('i') = E(PDIFF),
-+                S('o') = E(SIZET),S('u') = E(SIZET),
-+                S('x') = E(SIZET),S('X') = E(SIZET),
-+                S('n') = E(PTR)
-+        }, { /* 7: j-prefixed */
-+                S('d') = E(IMAX), S('i') = E(IMAX),
-+                S('o') = E(UMAX), S('u') = E(UMAX),
-+                S('x') = E(UMAX), S('X') = E(UMAX),
-+                S('n') = E(PTR)
-+        }
-+};
-+
-+size_t parse_printf_format(const char *fmt, size_t n, int *types)
-+{
-+        size_t i = 0;
-+        size_t last = 0;
-+
-+        memset(types, 0, n);
-+
-+        while (1) {
-+                size_t arg;
-+                unsigned int state;
-+
-+                fmt = consume_nonarg(fmt);
-+                if (*fmt == '\0')
-+                        break;
-+                if (*fmt == '%') {
-+                        fmt++;
-+                        continue;
-+                }
-+                arg = 0;
-+                fmt = consume_argn(fmt, &arg);
-+                /* flags */
-+                fmt = consume_flags(fmt);
-+                /* width */
-+                if (*fmt == '*') {
-+                        size_t warg = 0;
-+                        fmt = consume_argn(fmt+1, &warg);
-+                        if (warg == 0)
-+                                warg = ++i;
-+                        if (warg > last)
-+                                last = warg;
-+                        if (warg <= n && types[warg-1] == NONE)
-+                                types[warg-1] = INT;
-+                } else
-+                        fmt = consume_num(fmt);
-+                /* precision */
-+                if (*fmt == '.') {
-+                        fmt++;
-+                        if (*fmt == '*') {
-+                                size_t parg = 0;
-+                                fmt = consume_argn(fmt+1, &parg);
-+                                if (parg == 0)
-+                                        parg = ++i;
-+                                if (parg > last)
-+                                        last = parg;
-+                                if (parg <= n && types[parg-1] == NONE)
-+                                        types[parg-1] = INT;
-+                        } else {
-+                                if (*fmt == '-')
-+                                        fmt++;
-+                                fmt = consume_num(fmt);
-+                        }
-+                }
-+                /* length modifier and conversion specifier */
-+                state = BARE;
-+                do {
-+                        unsigned char c = *fmt++;
-+
-+                        if (c < 'A' || c > 'z')
-+                                continue;
-+                        state = states[state]S(c);
-+                        if (state == 0)
-+                                continue;
-+                } while (state < STOP);
-+
-+                if (state == E(NONE))
-+                        continue;
-+
-+                if (arg == 0)
-+                        arg = ++i;
-+                if (arg > last)
-+                        last = arg;
-+                if (arg <= n)
-+                        types[arg-1] = state - STOP;
-+        }
-+
-+        if (last > n)
-+                last = n;
-+        for (i = 0; i < last; i++)
-+                types[i] = pa_types[types[i]];
-+
-+        return last;
-+}
---- /dev/null
-+++ b/src/basic/parse-printf-format.h
-@@ -0,0 +1,57 @@
-+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-+
-+/***
-+  This file is part of systemd.
-+
-+  Copyright 2014 Emil Renner Berthing <systemd@esmil.dk>
-+
-+  With parts from the GNU C Library
-+  Copyright 1991-2014 Free Software Foundation, Inc.
-+
-+  systemd is free software; you can redistribute it and/or modify it
-+  under the terms of the GNU Lesser General Public License as published by
-+  the Free Software Foundation; either version 2.1 of the License, or
-+  (at your option) any later version.
-+
-+  systemd is distributed in the hope that it will be useful, but
-+  WITHOUT ANY WARRANTY; without even the implied warranty of
-+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  Lesser General Public License for more details.
-+
-+  You should have received a copy of the GNU Lesser General Public License
-+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-+***/
-+
-+#pragma once
-+
-+#include "config.h"
-+
-+#if HAVE_PRINTF_H
-+#include <printf.h>
-+#else
-+
-+#include <stddef.h>
-+
-+enum {				/* C type: */
-+  PA_INT,			/* int */
-+  PA_CHAR,			/* int, cast to char */
-+  PA_WCHAR,			/* wide char */
-+  PA_STRING,			/* const char *, a '\0'-terminated string */
-+  PA_WSTRING,			/* const wchar_t *, wide character string */
-+  PA_POINTER,			/* void * */
-+  PA_FLOAT,			/* float */
-+  PA_DOUBLE,			/* double */
-+  PA_LAST
-+};
-+
-+/* Flag bits that can be set in a type returned by `parse_printf_format'.  */
-+#define	PA_FLAG_MASK		0xff00
-+#define	PA_FLAG_LONG_LONG	(1 << 8)
-+#define	PA_FLAG_LONG_DOUBLE	PA_FLAG_LONG_LONG
-+#define	PA_FLAG_LONG		(1 << 9)
-+#define	PA_FLAG_SHORT		(1 << 10)
-+#define	PA_FLAG_PTR		(1 << 11)
-+
-+size_t parse_printf_format(const char *fmt, size_t n, int *types);
-+
-+#endif /* HAVE_PRINTF_H */
---- a/src/basic/stdio-util.h
-+++ b/src/basic/stdio-util.h
-@@ -1,12 +1,12 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- #pragma once
- 
--#include <printf.h>
- #include <stdarg.h>
- #include <stdio.h>
- #include <sys/types.h>
- 
- #include "macro.h"
-+#include "parse-printf-format.h"
- 
- _printf_(3, 4)
- static inline char *snprintf_ok(char *buf, size_t len, const char *format, ...) {
---- a/src/libsystemd/sd-journal/journal-send.c
-+++ b/src/libsystemd/sd-journal/journal-send.c
-@@ -2,7 +2,6 @@
- 
- #include <errno.h>
- #include <fcntl.h>
--#include <printf.h>
- #include <stddef.h>
- #include <sys/un.h>
- #include <unistd.h>
-@@ -27,6 +26,7 @@
- #include "stdio-util.h"
- #include "string-util.h"
- #include "tmpfile-util.h"
-+#include "parse-printf-format.h"
- 
- #define SNDBUF_SIZE (8*1024*1024)
- 
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
new file mode 100644
index 0000000..cf59ac7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
@@ -0,0 +1,76 @@
+From 2adbe9773cd65c48eec9df96868d4a738927c8d9 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 10 Jul 2018 15:40:17 +0800
+Subject: [PATCH 10/22] distinguish XSI-compliant strerror_r from GNU-specifi
+ strerror_r
+
+XSI-compliant strerror_r and GNU-specifi strerror_r are different.
+
+       int strerror_r(int errnum, char *buf, size_t buflen);
+                   /* XSI-compliant */
+
+       char *strerror_r(int errnum, char *buf, size_t buflen);
+                   /* GNU-specific */
+
+We need to distinguish between them. Otherwise, we'll get an int value
+assigned to (char *) variable, resulting in segment fault.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/libsystemd/sd-bus/bus-error.c        | 11 ++++++++++-
+ src/libsystemd/sd-journal/journal-send.c |  5 +++++
+ 2 files changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
+index 77b2e1a0fd..fdba0e0142 100644
+--- a/src/libsystemd/sd-bus/bus-error.c
++++ b/src/libsystemd/sd-bus/bus-error.c
+@@ -408,7 +408,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
+                         return;
+ 
+                 errno = 0;
++#ifndef __GLIBC__
++                strerror_r(error, m, k);
++                x = m;
++#else
+                 x = strerror_r(error, m, k);
++#endif
+                 if (errno == ERANGE || strlen(x) >= k - 1) {
+                         free(m);
+                         k *= 2;
+@@ -593,8 +598,12 @@ const char* _bus_error_message(const sd_bus_error *e, int error, char buf[static
+ 
+         if (e && e->message)
+                 return e->message;
+-
++#ifndef __GLIBC__
++        strerror_r(abs(error), buf, ERRNO_BUF_LEN);
++        return buf;
++#else
+         return strerror_r(abs(error), buf, ERRNO_BUF_LEN);
++#endif
+ }
+ 
+ static bool map_ok(const sd_bus_error_map *map) {
+diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c
+index 69a2eb6404..1561859650 100644
+--- a/src/libsystemd/sd-journal/journal-send.c
++++ b/src/libsystemd/sd-journal/journal-send.c
+@@ -361,7 +361,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove
+                 char* j;
+ 
+                 errno = 0;
++#ifndef __GLIBC__
++                strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++                j = buffer + 8 + k;
++#else
+                 j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
++#endif
+                 if (errno == 0) {
+                         char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
new file mode 100644
index 0000000..e481b2e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0011-avoid-redefinition-of-prctl_mm_map-structure.patch
@@ -0,0 +1,32 @@
+From 49c446cfb78cf74a909bed8c3798b77a5469866a Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 25 Feb 2019 15:44:54 +0800
+Subject: [PATCH 11/22] avoid redefinition of prctl_mm_map structure
+
+Fix the following compile failure:
+error: redefinition of 'struct prctl_mm_map'
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/basic/missing_prctl.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
+index 7d9e395c92..88c2d7dfac 100644
+--- a/src/basic/missing_prctl.h
++++ b/src/basic/missing_prctl.h
+@@ -1,7 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ #pragma once
+ 
++#ifdef __GLIBC__
+ #include <linux/prctl.h>
++#endif
+ 
+ /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
+ #ifndef PR_CAP_AMBIENT
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0011-src-basic-missing.h-check-for-missing-strndupa.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0011-src-basic-missing.h-check-for-missing-strndupa.patch
deleted file mode 100644
index ec451cd..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0011-src-basic-missing.h-check-for-missing-strndupa.patch
+++ /dev/null
@@ -1,684 +0,0 @@
-From ee5c8b494a3269edd154a0b799a03b39dba2ceb0 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 14:18:21 +0800
-Subject: [PATCH] src/basic/missing.h: check for missing strndupa
-
-include missing.h  for definition of strndupa
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[Rebased for v242]
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-[rebased for systemd 244]
-[Rebased for v247]
-Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
-[Rebased for v254]
----
- meson.build                                |  1 +
- src/backlight/backlight.c                  |  1 +
- src/basic/cgroup-util.c                    |  1 +
- src/basic/env-util.c                       |  1 +
- src/basic/log.c                            |  1 +
- src/basic/missing_stdlib.h                 | 12 ++++++++++++
- src/basic/mkdir.c                          |  1 +
- src/basic/mountpoint-util.c                |  1 +
- src/basic/parse-util.c                     |  1 +
- src/basic/path-lookup.c                    |  1 +
- src/basic/percent-util.c                   |  1 +
- src/basic/proc-cmdline.c                   |  1 +
- src/basic/procfs-util.c                    |  1 +
- src/basic/time-util.c                      |  1 +
- src/boot/bless-boot.c                      |  1 +
- src/core/dbus-cgroup.c                     |  1 +
- src/core/dbus-execute.c                    |  1 +
- src/core/dbus-util.c                       |  1 +
- src/core/execute.c                         |  1 +
- src/core/kmod-setup.c                      |  1 +
- src/core/service.c                         |  1 +
- src/coredump/coredump-vacuum.c             |  1 +
- src/fstab-generator/fstab-generator.c      |  1 +
- src/journal-remote/journal-remote-main.c   |  1 +
- src/journal/journalctl.c                   |  1 +
- src/libsystemd/sd-bus/bus-message.c        |  1 +
- src/libsystemd/sd-bus/bus-objects.c        |  1 +
- src/libsystemd/sd-bus/bus-socket.c         |  1 +
- src/libsystemd/sd-bus/sd-bus.c             |  1 +
- src/libsystemd/sd-bus/test-bus-benchmark.c |  1 +
- src/libsystemd/sd-journal/sd-journal.c     |  1 +
- src/login/pam_systemd.c                    |  1 +
- src/network/generator/network-generator.c  |  1 +
- src/nspawn/nspawn-settings.c               |  1 +
- src/nss-mymachines/nss-mymachines.c        |  1 +
- src/portable/portable.c                    |  1 +
- src/resolve/resolvectl.c                   |  1 +
- src/shared/bus-get-properties.c            |  1 +
- src/shared/bus-unit-procs.c                |  1 +
- src/shared/bus-unit-util.c                 |  1 +
- src/shared/bus-util.c                      |  1 +
- src/shared/dns-domain.c                    |  1 +
- src/shared/journal-importer.c              |  1 +
- src/shared/logs-show.c                     |  1 +
- src/shared/pager.c                         |  1 +
- src/socket-proxy/socket-proxyd.c           |  1 +
- src/test/test-hexdecoct.c                  |  1 +
- src/udev/udev-builtin-path_id.c            |  1 +
- src/udev/udev-event.c                      |  1 +
- src/udev/udev-rules.c                      |  1 +
- 50 files changed, 61 insertions(+)
-
-diff --git a/meson.build b/meson.build
-index fb96143c37..739b2f7f72 100644
---- a/meson.build
-+++ b/meson.build
-@@ -595,6 +595,7 @@ foreach ident : ['secure_getenv', '__secure_getenv']
- endforeach
- 
- foreach ident : [
-+        ['strndupa' ,         '''#include <string.h>'''],
-         ['memfd_create',      '''#include <sys/mman.h>'''],
-         ['gettid',            '''#include <sys/types.h>
-                                  #include <unistd.h>'''],
-diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
-index e66477f328..2613d1e3f9 100644
---- a/src/backlight/backlight.c
-+++ b/src/backlight/backlight.c
-@@ -19,6 +19,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "terminal-util.h"
-+#include "missing_stdlib.h"
- 
- #define PCI_CLASS_GRAPHICS_CARD 0x30000
- 
-diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
-index feda596939..11b4375ed5 100644
---- a/src/basic/cgroup-util.c
-+++ b/src/basic/cgroup-util.c
-@@ -38,6 +38,7 @@
- #include "unit-name.h"
- #include "user-util.h"
- #include "xattr-util.h"
-+#include "missing_stdlib.h"
- 
- static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) {
-         _cleanup_free_ char *fs = NULL;
-diff --git a/src/basic/env-util.c b/src/basic/env-util.c
-index 55ac11a512..7ccb1d7887 100644
---- a/src/basic/env-util.c
-+++ b/src/basic/env-util.c
-@@ -19,6 +19,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- /* We follow bash for the character set. Different shells have different rules. */
- #define VALID_BASH_ENV_NAME_CHARS               \
-diff --git a/src/basic/log.c b/src/basic/log.c
-index fc5793139e..515218fca8 100644
---- a/src/basic/log.c
-+++ b/src/basic/log.c
-@@ -40,6 +40,7 @@
- #include "terminal-util.h"
- #include "time-util.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- #define SNDBUF_SIZE (8*1024*1024)
- #define IOVEC_MAX 256U
-diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
-index 8c76f93eb2..9068bfb4f0 100644
---- a/src/basic/missing_stdlib.h
-+++ b/src/basic/missing_stdlib.h
-@@ -11,3 +11,15 @@
- #    error "neither secure_getenv nor __secure_getenv are available"
- #  endif
- #endif
-+
-+/* string.h */
-+#if ! HAVE_STRNDUPA
-+#define strndupa(s, n) \
-+  ({ \
-+    const char *__old = (s); \
-+    size_t __len = strnlen(__old, (n)); \
-+    char *__new = (char *)alloca(__len + 1); \
-+    __new[__len] = '\0'; \
-+    (char *)memcpy(__new, __old, __len); \
-+  })
-+#endif
-diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
-index 7ad19ee33b..cc1d5e1e5b 100644
---- a/src/basic/mkdir.c
-+++ b/src/basic/mkdir.c
-@@ -15,6 +15,7 @@
- #include "stat-util.h"
- #include "stdio-util.h"
- #include "user-util.h"
-+#include "missing_stdlib.h"
- 
- int mkdirat_safe_internal(
-                 int dir_fd,
-diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
-index bc74fbef8f..cdb609bb84 100644
---- a/src/basic/mountpoint-util.c
-+++ b/src/basic/mountpoint-util.c
-@@ -18,6 +18,7 @@
- #include "missing_stat.h"
- #include "missing_syscall.h"
- #include "mkdir.h"
-+#include "missing_stdlib.h"
- #include "mountpoint-util.h"
- #include "nulstr-util.h"
- #include "parse-util.h"
-diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
-index 3445d31307..d82b4415d9 100644
---- a/src/basic/parse-util.c
-+++ b/src/basic/parse-util.c
-@@ -18,6 +18,7 @@
- #include "stat-util.h"
- #include "string-util.h"
- #include "strv.h"
-+#include "missing_stdlib.h"
- 
- int parse_boolean(const char *v) {
-         if (!v)
-diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c
-index c99e9d8786..71a917a0b0 100644
---- a/src/basic/path-lookup.c
-+++ b/src/basic/path-lookup.c
-@@ -16,6 +16,7 @@
- #include "strv.h"
- #include "tmpfile-util.h"
- #include "user-util.h"
-+#include "missing_stdlib.h"
- 
- int xdg_user_runtime_dir(char **ret, const char *suffix) {
-         const char *e;
-diff --git a/src/basic/percent-util.c b/src/basic/percent-util.c
-index cab9d0eaea..5f6ca258e9 100644
---- a/src/basic/percent-util.c
-+++ b/src/basic/percent-util.c
-@@ -3,6 +3,7 @@
- #include "percent-util.h"
- #include "string-util.h"
- #include "parse-util.h"
-+#include "missing_stdlib.h"
- 
- static int parse_parts_value_whole(const char *p, const char *symbol) {
-         const char *pc, *n;
-diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
-index eea70d8606..ae3abd8402 100644
---- a/src/basic/proc-cmdline.c
-+++ b/src/basic/proc-cmdline.c
-@@ -16,6 +16,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "virt.h"
-+#include "missing_stdlib.h"
- 
- int proc_cmdline_filter_pid1_args(char **argv, char ***ret) {
-         enum {
-diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
-index bcba5a5208..64a95dd866 100644
---- a/src/basic/procfs-util.c
-+++ b/src/basic/procfs-util.c
-@@ -12,6 +12,7 @@
- #include "procfs-util.h"
- #include "stdio-util.h"
- #include "string-util.h"
-+#include "missing_stdlib.h"
- 
- int procfs_get_pid_max(uint64_t *ret) {
-         _cleanup_free_ char *value = NULL;
-diff --git a/src/basic/time-util.c b/src/basic/time-util.c
-index b700f364ef..48a26bcec9 100644
---- a/src/basic/time-util.c
-+++ b/src/basic/time-util.c
-@@ -27,6 +27,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "time-util.h"
-+#include "missing_stdlib.h"
- 
- static clockid_t map_clock_id(clockid_t c) {
- 
-diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c
-index 59f02b761a..7496646350 100644
---- a/src/boot/bless-boot.c
-+++ b/src/boot/bless-boot.c
-@@ -22,6 +22,7 @@
- #include "terminal-util.h"
- #include "verbs.h"
- #include "virt.h"
-+#include "missing_stdlib.h"
- 
- static char **arg_path = NULL;
- 
-diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
-index b5484eda78..54ed62c790 100644
---- a/src/core/dbus-cgroup.c
-+++ b/src/core/dbus-cgroup.c
-@@ -23,6 +23,7 @@
- #include "parse-util.h"
- #include "path-util.h"
- #include "percent-util.h"
-+#include "missing_stdlib.h"
- #include "socket-util.h"
- 
- BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", TasksMax, tasks_max_resolve);
-diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
-index f514b8fd12..4febd0d496 100644
---- a/src/core/dbus-execute.c
-+++ b/src/core/dbus-execute.c
-@@ -48,6 +48,7 @@
- #include "unit-printf.h"
- #include "user-util.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput);
- static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput);
-diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
-index edfa0eb69a..6fd2ec9062 100644
---- a/src/core/dbus-util.c
-+++ b/src/core/dbus-util.c
-@@ -9,6 +9,7 @@
- #include "unit-printf.h"
- #include "user-util.h"
- #include "unit.h"
-+#include "missing_stdlib.h"
- 
- int bus_property_get_triggered_unit(
-                 sd_bus *bus,
-diff --git a/src/core/execute.c b/src/core/execute.c
-index 853e87450f..8ef76de9ab 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -113,6 +113,7 @@
- #include "unit-serialize.h"
- #include "user-util.h"
- #include "utmp-wtmp.h"
-+#include "missing_stdlib.h"
- 
- #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC)
- #define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC)
-diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
-index e843743777..e149807492 100644
---- a/src/core/kmod-setup.c
-+++ b/src/core/kmod-setup.c
-@@ -13,6 +13,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "virt.h"
-+#include "missing_stdlib.h"
- 
- #if HAVE_KMOD
- #include "module-util.h"
-diff --git a/src/core/service.c b/src/core/service.c
-index 9ad3c3d995..b112d64919 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -45,6 +45,7 @@
- #include "unit-name.h"
- #include "unit.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- #define service_spawn(...) service_spawn_internal(__func__, __VA_ARGS__)
- 
-diff --git a/src/coredump/coredump-vacuum.c b/src/coredump/coredump-vacuum.c
-index c6e201ecf2..ab034475e2 100644
---- a/src/coredump/coredump-vacuum.c
-+++ b/src/coredump/coredump-vacuum.c
-@@ -17,6 +17,7 @@
- #include "string-util.h"
- #include "time-util.h"
- #include "user-util.h"
-+#include "missing_stdlib.h"
- 
- #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL)           /* 1 MiB */
- #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL)   /* 4 GiB */
-diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
-index efc553b698..acea922311 100644
---- a/src/fstab-generator/fstab-generator.c
-+++ b/src/fstab-generator/fstab-generator.c
-@@ -37,6 +37,7 @@
- #include "unit-name.h"
- #include "virt.h"
- #include "volatile-util.h"
-+#include "missing_stdlib.h"
- 
- typedef enum MountPointFlags {
-         MOUNT_NOAUTO    = 1 << 0,
-diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c
-index 7df264fb53..9463a0e9fb 100644
---- a/src/journal-remote/journal-remote-main.c
-+++ b/src/journal-remote/journal-remote-main.c
-@@ -26,6 +26,7 @@
- #include "stat-util.h"
- #include "string-table.h"
- #include "strv.h"
-+#include "missing_stdlib.h"
- 
- #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem"
- #define CERT_FILE     CERTIFICATE_ROOT "/certs/journal-remote.pem"
-diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
-index da0fac548e..c1c043e0e0 100644
---- a/src/journal/journalctl.c
-+++ b/src/journal/journalctl.c
-@@ -77,6 +77,7 @@
- #include "unit-name.h"
- #include "user-util.h"
- #include "varlink.h"
-+#include "missing_stdlib.h"
- 
- #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
- #define PROCESS_INOTIFY_INTERVAL 1024   /* Every 1,024 messages processed */
-diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
-index 9719f97c02..75decd9834 100644
---- a/src/libsystemd/sd-bus/bus-message.c
-+++ b/src/libsystemd/sd-bus/bus-message.c
-@@ -19,6 +19,7 @@
- #include "strv.h"
- #include "time-util.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
- static int message_parse_fields(sd_bus_message *m);
-diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
-index 2ad7a9993d..bba72f99f4 100644
---- a/src/libsystemd/sd-bus/bus-objects.c
-+++ b/src/libsystemd/sd-bus/bus-objects.c
-@@ -11,6 +11,7 @@
- #include "missing_capability.h"
- #include "string-util.h"
- #include "strv.h"
-+#include "missing_stdlib.h"
- 
- static int node_vtable_get_userdata(
-                 sd_bus *bus,
-diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
-index 64037e4fe0..9b9ce0aaa9 100644
---- a/src/libsystemd/sd-bus/bus-socket.c
-+++ b/src/libsystemd/sd-bus/bus-socket.c
-@@ -28,6 +28,7 @@
- #include "string-util.h"
- #include "user-util.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- #define SNDBUF_SIZE (8*1024*1024)
- 
-diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
-index f6a5e4aa06..b36faa79a3 100644
---- a/src/libsystemd/sd-bus/sd-bus.c
-+++ b/src/libsystemd/sd-bus/sd-bus.c
-@@ -46,6 +46,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "user-util.h"
-+#include "missing_stdlib.h"
- 
- #define log_debug_bus_message(m)                                         \
-         do {                                                             \
-diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
-index 1eb6edd329..d434a3c178 100644
---- a/src/libsystemd/sd-bus/test-bus-benchmark.c
-+++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
-@@ -13,6 +13,7 @@
- #include "missing_resource.h"
- #include "string-util.h"
- #include "time-util.h"
-+#include "missing_stdlib.h"
- 
- #define MAX_SIZE (2*1024*1024)
- 
-diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c
-index 9947947ef2..8dc6f93159 100644
---- a/src/libsystemd/sd-journal/sd-journal.c
-+++ b/src/libsystemd/sd-journal/sd-journal.c
-@@ -44,6 +44,7 @@
- #include "strv.h"
- #include "syslog-util.h"
- #include "uid-alloc-range.h"
-+#include "missing_stdlib.h"
- 
- #define JOURNAL_FILES_RECHECK_USEC (2 * USEC_PER_SEC)
- 
-diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
-index ba2fca32c6..e1f9caa13b 100644
---- a/src/login/pam_systemd.c
-+++ b/src/login/pam_systemd.c
-@@ -34,6 +34,7 @@
- #include "locale-util.h"
- #include "login-util.h"
- #include "macro.h"
-+#include "missing_stdlib.h"
- #include "pam-util.h"
- #include "parse-util.h"
- #include "path-util.h"
-diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
-index 1090934bfc..69a77f66e2 100644
---- a/src/network/generator/network-generator.c
-+++ b/src/network/generator/network-generator.c
-@@ -14,6 +14,7 @@
- #include "string-table.h"
- #include "string-util.h"
- #include "strv.h"
-+#include "missing_stdlib.h"
- 
- /*
-   # .network
-diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
-index 05bde1c756..aa29587868 100644
---- a/src/nspawn/nspawn-settings.c
-+++ b/src/nspawn/nspawn-settings.c
-@@ -16,6 +16,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "user-util.h"
-+#include "missing_stdlib.h"
- 
- Settings *settings_new(void) {
-         Settings *s;
-diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c
-index c64e79bdff..eda26b0b9a 100644
---- a/src/nss-mymachines/nss-mymachines.c
-+++ b/src/nss-mymachines/nss-mymachines.c
-@@ -21,6 +21,7 @@
- #include "nss-util.h"
- #include "signal-util.h"
- #include "string-util.h"
-+#include "missing_stdlib.h"
- 
- static void setup_logging_once(void) {
-         static pthread_once_t once = PTHREAD_ONCE_INIT;
-diff --git a/src/portable/portable.c b/src/portable/portable.c
-index 7811833fac..c6414da91c 100644
---- a/src/portable/portable.c
-+++ b/src/portable/portable.c
-@@ -40,6 +40,7 @@
- #include "strv.h"
- #include "tmpfile-util.h"
- #include "user-util.h"
-+#include "missing_stdlib.h"
- 
- /* Markers used in the first line of our 20-portable.conf unit file drop-in to determine, that a) the unit file was
-  * dropped there by the portable service logic and b) for which image it was dropped there. */
-diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c
-index 2638e985fb..82c903fd66 100644
---- a/src/resolve/resolvectl.c
-+++ b/src/resolve/resolvectl.c
-@@ -48,6 +48,7 @@
- #include "varlink.h"
- #include "verb-log-control.h"
- #include "verbs.h"
-+#include "missing_stdlib.h"
- 
- static int arg_family = AF_UNSPEC;
- static int arg_ifindex = 0;
-diff --git a/src/shared/bus-get-properties.c b/src/shared/bus-get-properties.c
-index 8b4f66b22e..5926e4c61b 100644
---- a/src/shared/bus-get-properties.c
-+++ b/src/shared/bus-get-properties.c
-@@ -4,6 +4,7 @@
- #include "rlimit-util.h"
- #include "stdio-util.h"
- #include "string-util.h"
-+#include "missing_stdlib.h"
- 
- int bus_property_get_bool(
-                 sd_bus *bus,
-diff --git a/src/shared/bus-unit-procs.c b/src/shared/bus-unit-procs.c
-index 8b462b5627..183ce1c18e 100644
---- a/src/shared/bus-unit-procs.c
-+++ b/src/shared/bus-unit-procs.c
-@@ -11,6 +11,7 @@
- #include "sort-util.h"
- #include "string-util.h"
- #include "terminal-util.h"
-+#include "missing_stdlib.h"
- 
- struct CGroupInfo {
-         char *cgroup_path;
-diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
-index 1e95e36678..640ee031d5 100644
---- a/src/shared/bus-unit-util.c
-+++ b/src/shared/bus-unit-util.c
-@@ -51,6 +51,7 @@
- #include "unit-def.h"
- #include "user-util.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) {
-         assert(message);
-diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
-index d09ec5148d..f38a8f7cc1 100644
---- a/src/shared/bus-util.c
-+++ b/src/shared/bus-util.c
-@@ -24,6 +24,7 @@
- #include "path-util.h"
- #include "socket-util.h"
- #include "stdio-util.h"
-+#include "missing_stdlib.h"
- 
- static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
-         sd_event *e = ASSERT_PTR(userdata);
-diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
-index 620b156563..5ee5b09186 100644
---- a/src/shared/dns-domain.c
-+++ b/src/shared/dns-domain.c
-@@ -18,6 +18,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "utf8.h"
-+#include "missing_stdlib.h"
- 
- int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
-         const char *n;
-diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
-index d9eabec886..534c6cf7e3 100644
---- a/src/shared/journal-importer.c
-+++ b/src/shared/journal-importer.c
-@@ -16,6 +16,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "unaligned.h"
-+#include "missing_stdlib.h"
- 
- enum {
-         IMPORTER_STATE_LINE = 0,    /* waiting to read, or reading line */
-diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
-index b72e516c8d..6e832b74c3 100644
---- a/src/shared/logs-show.c
-+++ b/src/shared/logs-show.c
-@@ -41,6 +41,7 @@
- #include "time-util.h"
- #include "utf8.h"
- #include "web-util.h"
-+#include "missing_stdlib.h"
- 
- /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
- #define PRINT_LINE_THRESHOLD 3
-diff --git a/src/shared/pager.c b/src/shared/pager.c
-index 6ed35a3ca9..99d9d36140 100644
---- a/src/shared/pager.c
-+++ b/src/shared/pager.c
-@@ -25,6 +25,7 @@
- #include "string-util.h"
- #include "strv.h"
- #include "terminal-util.h"
-+#include "missing_stdlib.h"
- 
- static pid_t pager_pid = 0;
- 
-diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
-index 821049e667..08a5bdae3d 100644
---- a/src/socket-proxy/socket-proxyd.c
-+++ b/src/socket-proxy/socket-proxyd.c
-@@ -27,6 +27,7 @@
- #include "set.h"
- #include "socket-util.h"
- #include "string-util.h"
-+#include "missing_stdlib.h"
- 
- #define BUFFER_SIZE (256 * 1024)
- 
-diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
-index 9d71db6ae1..a9938c1e6e 100644
---- a/src/test/test-hexdecoct.c
-+++ b/src/test/test-hexdecoct.c
-@@ -7,6 +7,7 @@
- #include "macro.h"
- #include "random-util.h"
- #include "string-util.h"
-+#include "missing_stdlib.h"
- #include "tests.h"
- 
- TEST(hexchar) {
-diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
-index 8e4d57ee72..6b4555b4d5 100644
---- a/src/udev/udev-builtin-path_id.c
-+++ b/src/udev/udev-builtin-path_id.c
-@@ -24,6 +24,7 @@
- #include "sysexits.h"
- #include "udev-builtin.h"
- #include "udev-util.h"
-+#include "missing_stdlib.h"
- 
- _printf_(2,3)
- static void path_prepend(char **path, const char *fmt, ...) {
-diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
-index ec4ad30824..bc40303a46 100644
---- a/src/udev/udev-event.c
-+++ b/src/udev/udev-event.c
-@@ -34,6 +34,7 @@
- #include "udev-util.h"
- #include "udev-watch.h"
- #include "user-util.h"
-+#include "missing_stdlib.h"
- 
- typedef struct Spawn {
-         sd_device *device;
-diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
-index 5bd09a64d1..0ce79f815c 100644
---- a/src/udev/udev-rules.c
-+++ b/src/udev/udev-rules.c
-@@ -35,6 +35,7 @@
- #include "udev-util.h"
- #include "user-util.h"
- #include "virt.h"
-+#include "missing_stdlib.h"
- 
- #define RULES_DIRS ((const char* const*) CONF_PATHS_STRV("udev/rules.d"))
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0012-do-not-disable-buffer-in-writing-files.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0012-do-not-disable-buffer-in-writing-files.patch
new file mode 100644
index 0000000..66be790
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0012-do-not-disable-buffer-in-writing-files.patch
@@ -0,0 +1,562 @@
+From e4885a8e60f883d9217e26e1db3754c2906aca31 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Fri, 1 Mar 2019 15:22:15 +0800
+Subject: [PATCH 12/22] do not disable buffer in writing files
+
+Do not disable buffer in writing files, otherwise we get
+failure at boot for musl like below.
+
+  [!!!!!!] Failed to allocate manager object.
+
+And there will be other failures, critical or not critical.
+This is specific to musl.
+
+Upstream-Status: Inappropriate [musl]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[Rebased for v242]
+Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
+[rebased for systemd 243]
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+[rebased for systemd 254]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[rebased for systemd 255.1]
+---
+ src/basic/cgroup-util.c              | 12 ++++++------
+ src/basic/namespace-util.c           |  4 ++--
+ src/basic/procfs-util.c              |  4 ++--
+ src/basic/sysctl-util.c              |  2 +-
+ src/binfmt/binfmt.c                  |  6 +++---
+ src/core/cgroup.c                    |  2 +-
+ src/core/main.c                      |  2 +-
+ src/core/smack-setup.c               |  8 ++++----
+ src/home/homework.c                  |  2 +-
+ src/libsystemd/sd-device/sd-device.c |  2 +-
+ src/nspawn/nspawn-cgroup.c           |  2 +-
+ src/nspawn/nspawn.c                  |  6 +++---
+ src/shared/binfmt-util.c             |  2 +-
+ src/shared/cgroup-setup.c            |  4 ++--
+ src/shared/coredump-util.c           |  4 ++--
+ src/shared/hibernate-util.c          |  4 ++--
+ src/shared/smack-util.c              |  2 +-
+ src/shared/watchdog.c                |  2 +-
+ src/sleep/sleep.c                    |  4 ++--
+ src/storagetm/storagetm.c            | 24 ++++++++++++------------
+ src/udev/udev-rules.c                |  1 -
+ src/vconsole/vconsole-setup.c        |  2 +-
+ 22 files changed, 50 insertions(+), 51 deletions(-)
+
+diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
+index d2be79622f..e65fecb68d 100644
+--- a/src/basic/cgroup-util.c
++++ b/src/basic/cgroup-util.c
+@@ -417,7 +417,7 @@ int cg_kill_kernel_sigkill(const char *path) {
+         if (r < 0)
+                 return r;
+ 
+-        r = write_string_file(killfile, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(killfile, "1", 0);
+         if (r < 0)
+                 return r;
+ 
+@@ -843,7 +843,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+ 
+         sc = strstrip(contents);
+         if (isempty(sc)) {
+-                r = write_string_file(fs, agent, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file(fs, agent, 0);
+                 if (r < 0)
+                         return r;
+         } else if (!path_equal(sc, agent))
+@@ -861,7 +861,7 @@ int cg_install_release_agent(const char *controller, const char *agent) {
+ 
+         sc = strstrip(contents);
+         if (streq(sc, "0")) {
+-                r = write_string_file(fs, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file(fs, "1", 0);
+                 if (r < 0)
+                         return r;
+ 
+@@ -888,7 +888,7 @@ int cg_uninstall_release_agent(const char *controller) {
+         if (r < 0)
+                 return r;
+ 
+-        r = write_string_file(fs, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(fs, "0", 0);
+         if (r < 0)
+                 return r;
+ 
+@@ -898,7 +898,7 @@ int cg_uninstall_release_agent(const char *controller) {
+         if (r < 0)
+                 return r;
+ 
+-        r = write_string_file(fs, "", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(fs, "", 0);
+         if (r < 0)
+                 return r;
+ 
+@@ -1814,7 +1814,7 @@ int cg_set_attribute(const char *controller, const char *path, const char *attri
+         if (r < 0)
+                 return r;
+ 
+-        return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
++        return write_string_file(p, value, 0);
+ }
+ 
+ int cg_get_attribute(const char *controller, const char *path, const char *attribute, char **ret) {
+diff --git a/src/basic/namespace-util.c b/src/basic/namespace-util.c
+index 2101f617ad..63817bae17 100644
+--- a/src/basic/namespace-util.c
++++ b/src/basic/namespace-util.c
+@@ -227,12 +227,12 @@ int userns_acquire(const char *uid_map, const char *gid_map) {
+                 freeze();
+ 
+         xsprintf(path, "/proc/" PID_FMT "/uid_map", pid);
+-        r = write_string_file(path, uid_map, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(path, uid_map, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write UID map: %m");
+ 
+         xsprintf(path, "/proc/" PID_FMT "/gid_map", pid);
+-        r = write_string_file(path, gid_map, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(path, gid_map, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write GID map: %m");
+ 
+diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
+index 6cb0ddf575..247cf9e1d1 100644
+--- a/src/basic/procfs-util.c
++++ b/src/basic/procfs-util.c
+@@ -64,13 +64,13 @@ int procfs_tasks_set_limit(uint64_t limit) {
+          * decrease it, as threads-max is the much more relevant sysctl. */
+         if (limit > pid_max-1) {
+                 sprintf(buffer, "%" PRIu64, limit+1); /* Add one, since PID 0 is not a valid PID */
+-                r = write_string_file("/proc/sys/kernel/pid_max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file("/proc/sys/kernel/pid_max", buffer, 0);
+                 if (r < 0)
+                         return r;
+         }
+ 
+         sprintf(buffer, "%" PRIu64, limit);
+-        r = write_string_file("/proc/sys/kernel/threads-max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/kernel/threads-max", buffer, 0);
+         if (r < 0) {
+                 uint64_t threads_max;
+ 
+diff --git a/src/basic/sysctl-util.c b/src/basic/sysctl-util.c
+index b66a6622ae..8d1c93008a 100644
+--- a/src/basic/sysctl-util.c
++++ b/src/basic/sysctl-util.c
+@@ -58,7 +58,7 @@ int sysctl_write(const char *property, const char *value) {
+ 
+         log_debug("Setting '%s' to '%s'", p, value);
+ 
+-        return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_SUPPRESS_REDUNDANT_VIRTUAL);
++        return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_SUPPRESS_REDUNDANT_VIRTUAL);
+ }
+ 
+ int sysctl_writef(const char *property, const char *format, ...) {
+diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
+index d21f3f79ff..258607cc7e 100644
+--- a/src/binfmt/binfmt.c
++++ b/src/binfmt/binfmt.c
+@@ -30,7 +30,7 @@ static bool arg_unregister = false;
+ 
+ static int delete_rule(const char *rulename) {
+         const char *fn = strjoina("/proc/sys/fs/binfmt_misc/", rulename);
+-        return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++        return write_string_file(fn, "-1", 0);
+ }
+ 
+ static int apply_rule(const char *filename, unsigned line, const char *rule) {
+@@ -58,7 +58,7 @@ static int apply_rule(const char *filename, unsigned line, const char *rule) {
+         if (r >= 0)
+                 log_debug("%s:%u: Rule '%s' deleted.", filename, line, rulename);
+ 
+-        r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, 0);
+         if (r < 0)
+                 return log_error_errno(r, "%s:%u: Failed to add binary format '%s': %m",
+                                        filename, line, rulename);
+@@ -248,7 +248,7 @@ static int run(int argc, char *argv[]) {
+                         return r;
+ 
+                 /* Flush out all rules */
+-                r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
+                 if (r < 0)
+                         log_warning_errno(r, "Failed to flush binfmt_misc rules, ignoring: %m");
+                 else
+diff --git a/src/core/cgroup.c b/src/core/cgroup.c
+index 61ac4df1a6..ea18970196 100644
+--- a/src/core/cgroup.c
++++ b/src/core/cgroup.c
+@@ -4578,7 +4578,7 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) {
+                         u->freezer_state = FREEZER_THAWING;
+         }
+ 
+-        r = write_string_file(path, one_zero(action == FREEZER_FREEZE), WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(path, one_zero(action == FREEZER_FREEZE), 0);
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/core/main.c b/src/core/main.c
+index 3f71cc0947..0e5aec3e9e 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1678,7 +1678,7 @@ static void initialize_core_pattern(bool skip_setup) {
+         if (getpid_cached() != 1)
+                 return;
+ 
+-        r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m",
+                                   arg_early_core_pattern);
+diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
+index 7ea902b6f9..1aef2988d0 100644
+--- a/src/core/smack-setup.c
++++ b/src/core/smack-setup.c
+@@ -321,17 +321,17 @@ int mac_smack_setup(bool *loaded_policy) {
+         }
+ 
+ #if HAVE_SMACK_RUN_LABEL
+-        r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK label \"" SMACK_RUN_LABEL "\" on self: %m");
+-        r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK ambient label \"" SMACK_RUN_LABEL "\": %m");
+         r = write_string_file("/sys/fs/smackfs/netlabel",
+-                              "0.0.0.0/0 " SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
++                              "0.0.0.0/0 " SMACK_RUN_LABEL, 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK netlabel rule \"0.0.0.0/0 " SMACK_RUN_LABEL "\": %m");
+-        r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
+ #endif
+diff --git a/src/home/homework.c b/src/home/homework.c
+index 066483e342..5f92dd7064 100644
+--- a/src/home/homework.c
++++ b/src/home/homework.c
+@@ -278,7 +278,7 @@ static void drop_caches_now(void) {
+          * for details. We write "2" into /proc/sys/vm/drop_caches to ensure dentries/inodes are flushed, but
+          * not more. */
+ 
+-        r = write_string_file("/proc/sys/vm/drop_caches", "2\n", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/vm/drop_caches", "2\n", 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to drop caches, ignoring: %m");
+         else
+diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
+index 2fbc619a34..09d9591e37 100644
+--- a/src/libsystemd/sd-device/sd-device.c
++++ b/src/libsystemd/sd-device/sd-device.c
+@@ -2516,7 +2516,7 @@ _public_ int sd_device_set_sysattr_value(sd_device *device, const char *sysattr,
+         if (!value)
+                 return -ENOMEM;
+ 
+-        r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW);
++        r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW);
+         if (r < 0) {
+                 /* On failure, clear cache entry, as we do not know how it fails. */
+                 device_remove_cached_sysattr_value(device, sysattr);
+diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c
+index a5002437c6..b12e6cd9c9 100644
+--- a/src/nspawn/nspawn-cgroup.c
++++ b/src/nspawn/nspawn-cgroup.c
+@@ -124,7 +124,7 @@ int sync_cgroup(pid_t pid, CGroupUnified unified_requested, uid_t uid_shift) {
+         fn = strjoina(tree, cgroup, "/cgroup.procs");
+ 
+         sprintf(pid_string, PID_FMT, pid);
+-        r = write_string_file(fn, pid_string, WRITE_STRING_FILE_DISABLE_BUFFER|WRITE_STRING_FILE_MKDIR_0755);
++        r = write_string_file(fn, pid_string, WRITE_STRING_FILE_MKDIR_0755);
+         if (r < 0) {
+                 log_error_errno(r, "Failed to move process: %m");
+                 goto finish;
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 6ab604d3dc..bbec6b686c 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -2688,7 +2688,7 @@ static int reset_audit_loginuid(void) {
+         if (streq(p, "4294967295"))
+                 return 0;
+ 
+-        r = write_string_file("/proc/self/loginuid", "4294967295", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/self/loginuid", "4294967295", 0);
+         if (r < 0) {
+                 log_error_errno(r,
+                                 "Failed to reset audit login UID. This probably means that your kernel is too\n"
+@@ -4141,7 +4141,7 @@ static int setup_uid_map(
+                 return log_oom();
+ 
+         xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
+-        r = write_string_file(uid_map, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(uid_map, s, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write UID map: %m");
+ 
+@@ -4151,7 +4151,7 @@ static int setup_uid_map(
+                 return log_oom();
+ 
+         xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
+-        r = write_string_file(uid_map, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(uid_map, s, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write GID map: %m");
+ 
+diff --git a/src/shared/binfmt-util.c b/src/shared/binfmt-util.c
+index a26175474b..1413a9c72c 100644
+--- a/src/shared/binfmt-util.c
++++ b/src/shared/binfmt-util.c
+@@ -46,7 +46,7 @@ int disable_binfmt(void) {
+                 return 0;
+         }
+ 
+-        r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
+         if (r < 0)
+                 return log_warning_errno(r, "Failed to unregister binfmt_misc entries: %m");
+ 
+diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c
+index 934a16eaf3..c921ced861 100644
+--- a/src/shared/cgroup-setup.c
++++ b/src/shared/cgroup-setup.c
+@@ -351,7 +351,7 @@ int cg_attach(const char *controller, const char *path, pid_t pid) {
+ 
+         xsprintf(c, PID_FMT "\n", pid);
+ 
+-        r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(fs, c, 0);
+         if (r == -EOPNOTSUPP && cg_is_threaded(path) > 0)
+                 /* When the threaded mode is used, we cannot read/write the file. Let's return recognizable error. */
+                 return -EUCLEAN;
+@@ -966,7 +966,7 @@ int cg_enable_everywhere(
+                                         return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
+                         }
+ 
+-                        r = write_string_stream(f, s, WRITE_STRING_FILE_DISABLE_BUFFER);
++                        r = write_string_stream(f, s, 0);
+                         if (r < 0) {
+                                 log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m",
+                                                 FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs);
+diff --git a/src/shared/coredump-util.c b/src/shared/coredump-util.c
+index 805503f366..01a7ccb291 100644
+--- a/src/shared/coredump-util.c
++++ b/src/shared/coredump-util.c
+@@ -163,7 +163,7 @@ int set_coredump_filter(uint64_t value) {
+         xsprintf(t, "0x%"PRIx64, value);
+ 
+         return write_string_file("/proc/self/coredump_filter", t,
+-                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
++                                 0);
+ }
+ 
+ /* Turn off core dumps but only if we're running outside of a container. */
+@@ -173,7 +173,7 @@ void disable_coredumps(void) {
+         if (detect_container() > 0)
+                 return;
+ 
+-        r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/proc/sys/kernel/core_pattern", "|/bin/false", 0);
+         if (r < 0)
+                 log_debug_errno(r, "Failed to turn off coredumps, ignoring: %m");
+ }
+diff --git a/src/shared/hibernate-util.c b/src/shared/hibernate-util.c
+index 3eb13d48f6..d09b901be1 100644
+--- a/src/shared/hibernate-util.c
++++ b/src/shared/hibernate-util.c
+@@ -481,7 +481,7 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) {
+ 
+         /* We write the offset first since it's safer. Note that this file is only available in 4.17+, so
+          * fail gracefully if it doesn't exist and we're only overwriting it with 0. */
+-        r = write_string_file("/sys/power/resume_offset", offset_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/power/resume_offset", offset_str, 0);
+         if (r == -ENOENT) {
+                 if (offset != 0)
+                         return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
+@@ -497,7 +497,7 @@ int write_resume_config(dev_t devno, uint64_t offset, const char *device) {
+                 log_debug("Wrote resume_offset=%s for device '%s' to /sys/power/resume_offset.",
+                           offset_str, device);
+ 
+-        r = write_string_file("/sys/power/resume", devno_str, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/power/resume", devno_str, 0);
+         if (r < 0)
+                 return log_error_errno(r,
+                                        "Failed to write device '%s' (%s) to /sys/power/resume: %m",
+diff --git a/src/shared/smack-util.c b/src/shared/smack-util.c
+index 1f88e724d0..feb18b320a 100644
+--- a/src/shared/smack-util.c
++++ b/src/shared/smack-util.c
+@@ -113,7 +113,7 @@ int mac_smack_apply_pid(pid_t pid, const char *label) {
+                 return 0;
+ 
+         p = procfs_file_alloca(pid, "attr/current");
+-        r = write_string_file(p, label, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file(p, label, 0);
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c
+index 4c1a968718..6faf6806a5 100644
+--- a/src/shared/watchdog.c
++++ b/src/shared/watchdog.c
+@@ -93,7 +93,7 @@ static int set_pretimeout_governor(const char *governor) {
+ 
+         r = write_string_file(sys_fn,
+                               governor,
+-                              WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE);
++                              WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to set pretimeout_governor to '%s': %m", governor);
+ 
+diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
+index 21af3e9e52..6d4b84b5d5 100644
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -137,7 +137,7 @@ static int write_state(int fd, char * const *states) {
+                 if (k < 0)
+                         return RET_GATHER(r, k);
+ 
+-                k = write_string_stream(f, *state, WRITE_STRING_FILE_DISABLE_BUFFER);
++                k = write_string_stream(f, *state, 0);
+                 if (k >= 0) {
+                         log_debug("Using sleep state '%s'.", *state);
+                         return 0;
+@@ -155,7 +155,7 @@ static int write_mode(char * const *modes) {
+         STRV_FOREACH(mode, modes) {
+                 int k;
+ 
+-                k = write_string_file("/sys/power/disk", *mode, WRITE_STRING_FILE_DISABLE_BUFFER);
++                k = write_string_file("/sys/power/disk", *mode, 0);
+                 if (k >= 0) {
+                         log_debug("Using sleep disk mode '%s'.", *mode);
+                         return 0;
+diff --git a/src/storagetm/storagetm.c b/src/storagetm/storagetm.c
+index ae63baaf79..82eeca479a 100644
+--- a/src/storagetm/storagetm.c
++++ b/src/storagetm/storagetm.c
+@@ -186,7 +186,7 @@ static int nvme_subsystem_unlink(NvmeSubsystem *s) {
+                                         if (!enable_fn)
+                                                 return log_oom();
+ 
+-                                        r = write_string_file_at(namespaces_fd, enable_fn, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
++                                        r = write_string_file_at(namespaces_fd, enable_fn, "0", 0);
+                                         if (r < 0)
+                                                 log_warning_errno(r, "Failed to disable namespace '%s' of NVME subsystem '%s', ignoring: %m", e->d_name, s->name);
+ 
+@@ -254,7 +254,7 @@ static int nvme_subsystem_write_metadata(int subsystem_fd, sd_device *device) {
+                 _cleanup_free_ char *truncated = strndup(w, 40); /* kernel refuses more than 40 chars (as per nvme spec) */
+ 
+                 /* The default string stored in 'attr_model' is "Linux" btw. */
+-                r = write_string_file_at(subsystem_fd, "attr_model", truncated, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file_at(subsystem_fd, "attr_model", truncated, 0);
+                 if (r < 0)
+                         log_warning_errno(r, "Failed to set model of subsystem to '%s', ignoring: %m", w);
+         }
+@@ -268,7 +268,7 @@ static int nvme_subsystem_write_metadata(int subsystem_fd, sd_device *device) {
+                         return log_oom();
+ 
+                  /* The default string stored in 'attr_firmware' is `uname -r` btw, but truncated to 8 chars. */
+-                r = write_string_file_at(subsystem_fd, "attr_firmware", truncated, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file_at(subsystem_fd, "attr_firmware", truncated, 0);
+                 if (r < 0)
+                         log_warning_errno(r, "Failed to set model of subsystem to '%s', ignoring: %m", truncated);
+         }
+@@ -295,7 +295,7 @@ static int nvme_subsystem_write_metadata(int subsystem_fd, sd_device *device) {
+                 if (!truncated)
+                         return log_oom();
+ 
+-                r = write_string_file_at(subsystem_fd, "attr_serial", truncated, WRITE_STRING_FILE_DISABLE_BUFFER);
++                r = write_string_file_at(subsystem_fd, "attr_serial", truncated, 0);
+                 if (r < 0)
+                         log_warning_errno(r, "Failed to set serial of subsystem to '%s', ignoring: %m", truncated);
+         }
+@@ -345,7 +345,7 @@ static int nvme_namespace_write_metadata(int namespace_fd, sd_device *device, co
+                 id = id128_digest(j, l);
+         }
+ 
+-        r = write_string_file_at(namespace_fd, "device_uuid", SD_ID128_TO_UUID_STRING(id), WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(namespace_fd, "device_uuid", SD_ID128_TO_UUID_STRING(id), 0);
+         if (r < 0)
+                 log_warning_errno(r, "Failed to set uuid of namespace to '%s', ignoring: %m", SD_ID128_TO_UUID_STRING(id));
+ 
+@@ -408,7 +408,7 @@ static int nvme_subsystem_add(const char *node, int consumed_fd, sd_device *devi
+         if (subsystem_fd < 0)
+                 return log_error_errno(subsystem_fd, "Failed to create NVME subsystem '%s': %m", j);
+ 
+-        r = write_string_file_at(subsystem_fd, "attr_allow_any_host", "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(subsystem_fd, "attr_allow_any_host", "1", 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to set 'attr_allow_any_host' flag: %m");
+ 
+@@ -423,11 +423,11 @@ static int nvme_subsystem_add(const char *node, int consumed_fd, sd_device *devi
+ 
+         /* We use /proc/$PID/fd/$FD rather than /proc/self/fd/$FD, because this string is visible to others
+          * via configfs, and by including the PID it's clear to who the stuff belongs. */
+-        r = write_string_file_at(namespace_fd, "device_path", FORMAT_PROC_PID_FD_PATH(0, fd), WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(namespace_fd, "device_path", FORMAT_PROC_PID_FD_PATH(0, fd), 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write 'device_path' attribute: %m");
+ 
+-        r = write_string_file_at(namespace_fd, "enable", "1", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(namespace_fd, "enable", "1", 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write 'enable' attribute: %m");
+ 
+@@ -557,19 +557,19 @@ static int nvme_port_add_portnr(
+                 return 0;
+         }
+ 
+-        r = write_string_file_at(port_fd, "addr_adrfam", af_to_ipv4_ipv6(ip_family), WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(port_fd, "addr_adrfam", af_to_ipv4_ipv6(ip_family), 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to set address family on NVME port %" PRIu16 ": %m", portnr);
+ 
+-        r = write_string_file_at(port_fd, "addr_trtype", "tcp", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(port_fd, "addr_trtype", "tcp", 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to set transport type on NVME port %" PRIu16 ": %m", portnr);
+ 
+-        r = write_string_file_at(port_fd, "addr_trsvcid", fname, WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(port_fd, "addr_trsvcid", fname, 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to set IP port on NVME port %" PRIu16 ": %m", portnr);
+ 
+-        r = write_string_file_at(port_fd, "addr_traddr", ip_family == AF_INET6 ? "::" : "0.0.0.0", WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file_at(port_fd, "addr_traddr", ip_family == AF_INET6 ? "::" : "0.0.0.0", 0);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to set IP address on NVME port %" PRIu16 ": %m", portnr);
+ 
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index febe345b4c..a90b610ba1 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -2711,7 +2711,6 @@ static int udev_rule_apply_token_to_event(
+                 log_event_debug(dev, token, "ATTR '%s' writing '%s'", buf, value);
+                 r = write_string_file(buf, value,
+                                       WRITE_STRING_FILE_VERIFY_ON_FAILURE |
+-                                      WRITE_STRING_FILE_DISABLE_BUFFER |
+                                       WRITE_STRING_FILE_AVOID_NEWLINE |
+                                       WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE);
+                 if (r < 0)
+diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
+index 4d82c65f0a..3a3d861b83 100644
+--- a/src/vconsole/vconsole-setup.c
++++ b/src/vconsole/vconsole-setup.c
+@@ -261,7 +261,7 @@ static int toggle_utf8_vc(const char *name, int fd, bool utf8) {
+ static int toggle_utf8_sysfs(bool utf8) {
+         int r;
+ 
+-        r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), WRITE_STRING_FILE_DISABLE_BUFFER);
++        r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), 0);
+         if (r < 0)
+                 return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0012-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0012-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
deleted file mode 100644
index 0d69e8e..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0012-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 747ff78ecda6afe01c7eab4d7c27aea6af810c86 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 14:56:21 +0800
-Subject: [PATCH] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not defined
-
-If the standard library doesn't provide brace
-expansion users just won't get it.
-
-Dont use GNU GLOB extentions on non-glibc systems
-
-Conditionalize use of GLOB_ALTDIRFUNC
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/basic/glob-util.c     | 12 ++++++++++++
- src/test/test-glob-util.c | 16 ++++++++++++++++
- src/tmpfiles/tmpfiles.c   | 10 ++++++++++
- 3 files changed, 38 insertions(+)
-
-diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c
-index fd60a6eda2..c73edc41ea 100644
---- a/src/basic/glob-util.c
-+++ b/src/basic/glob-util.c
-@@ -12,6 +12,12 @@
- #include "path-util.h"
- #include "strv.h"
- 
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- static void closedir_wrapper(void* v) {
-         (void) closedir(v);
- }
-@@ -19,6 +25,7 @@ static void closedir_wrapper(void* v) {
- int safe_glob(const char *path, int flags, glob_t *pglob) {
-         int k;
- 
-+#ifdef GLOB_ALTDIRFUNC
-         /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */
-         assert(!(flags & GLOB_ALTDIRFUNC));
- 
-@@ -32,9 +39,14 @@ int safe_glob(const char *path, int flags, glob_t *pglob) {
-                 pglob->gl_lstat = lstat;
-         if (!pglob->gl_stat)
-                 pglob->gl_stat = stat;
-+#endif
- 
-         errno = 0;
-+#ifdef GLOB_ALTDIRFUNC
-         k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob);
-+#else
-+        k = glob(path, flags, NULL, pglob);
-+#endif
-         if (k == GLOB_NOMATCH)
-                 return -ENOENT;
-         if (k == GLOB_NOSPACE)
-diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c
-index 9b3e73cce0..3790ba3be5 100644
---- a/src/test/test-glob-util.c
-+++ b/src/test/test-glob-util.c
-@@ -34,6 +34,12 @@ TEST(glob_first) {
-         assert_se(first == NULL);
- }
- 
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- TEST(glob_exists) {
-         char name[] = "/tmp/test-glob_exists.XXXXXX";
-         int fd = -EBADF;
-@@ -61,11 +67,13 @@ TEST(glob_no_dot) {
-         const char *fn;
- 
-         _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
-                 .gl_closedir = closedir_wrapper,
-                 .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot,
-                 .gl_opendir = (void *(*)(const char *)) opendir,
-                 .gl_lstat = lstat,
-                 .gl_stat = stat,
-+#endif
-         };
- 
-         int r;
-@@ -73,11 +81,19 @@ TEST(glob_no_dot) {
-         assert_se(mkdtemp(template));
- 
-         fn = strjoina(template, "/*");
-+#ifdef GLOB_ALTDIRFUNC
-         r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
-+#else
-+        r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
-+#endif
-         assert_se(r == GLOB_NOMATCH);
- 
-         fn = strjoina(template, "/.*");
-+#ifdef GLOB_ALTDIRFUNC
-         r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g);
-+#else
-+        r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
-+#endif
-         assert_se(r == GLOB_NOMATCH);
- 
-         (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL);
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 458aed7054..2cf24b38c0 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -73,6 +73,12 @@
- #include "user-util.h"
- #include "virt.h"
- 
-+/* Don't fail if the standard library
-+ * doesn't provide brace expansion */
-+#ifndef GLOB_BRACE
-+#define GLOB_BRACE 0
-+#endif
-+
- /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
-  * them in the file system. This is intended to be used to create
-  * properly owned directories beneath /tmp, /var/tmp, /run, which are
-@@ -2355,7 +2361,9 @@ finish:
- 
- static int glob_item(Item *i, action_t action) {
-         _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
-                 .gl_opendir = (void *(*)(const char *)) opendir_nomod,
-+#endif
-         };
-         int r = 0, k;
- 
-@@ -2375,7 +2383,9 @@ static int glob_item(Item *i, action_t action) {
- 
- static int glob_item_recursively(Item *i, fdaction_t action) {
-         _cleanup_globfree_ glob_t g = {
-+#ifdef GLOB_ALTDIRFUNC
-                 .gl_opendir = (void *(*)(const char *)) opendir_nomod,
-+#endif
-         };
-         int r = 0, k;
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0013-Handle-__cpu_mask-usage.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0013-Handle-__cpu_mask-usage.patch
new file mode 100644
index 0000000..43f7537
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0013-Handle-__cpu_mask-usage.patch
@@ -0,0 +1,60 @@
+From 2f90f8463423cfbb7e83fcef42f1071018c3b56e Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+Date: Fri, 13 Sep 2019 19:26:27 -0400
+Subject: [PATCH 13/22] Handle __cpu_mask usage
+
+Fixes errors:
+
+src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
+src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)
+
+__cpu_mask is an internal type of glibc's cpu_set implementation, not
+part of the POSIX definition, which is problematic when building with
+musl, which does not define a matching type.  From inspection of musl's
+sched.h, however, it is clear that the corresponding type would be
+unsigned long, which does match glibc's actual __CPU_MASK_TYPE.  So,
+add a typedef to cpu-set-util.h defining __cpu_mask appropriately.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ src/shared/cpu-set-util.h | 2 ++
+ src/test/test-sizeof.c    | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h
+index 3c63a58826..4c2d4347fc 100644
+--- a/src/shared/cpu-set-util.h
++++ b/src/shared/cpu-set-util.h
+@@ -6,6 +6,8 @@
+ #include "macro.h"
+ #include "missing_syscall.h"
+ 
++typedef unsigned long __cpu_mask;
++
+ /* This wraps the libc interface with a variable to keep the allocated size. */
+ typedef struct CPUSet {
+         cpu_set_t *set;
+diff --git a/src/test/test-sizeof.c b/src/test/test-sizeof.c
+index ea0c58770e..b65c0bd370 100644
+--- a/src/test/test-sizeof.c
++++ b/src/test/test-sizeof.c
+@@ -1,6 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <sched.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <sys/resource.h>
+@@ -12,6 +11,7 @@
+ #include <float.h>
+ 
+ #include "time-util.h"
++#include "cpu-set-util.h"
+ 
+ /* Print information about various types. Useful when diagnosing
+  * gcc diagnostics on an unfamiliar architecture. */
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0013-add-missing-FTW_-macros-for-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0013-add-missing-FTW_-macros-for-musl.patch
deleted file mode 100644
index d6aaadc..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0013-add-missing-FTW_-macros-for-musl.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From efd7b41cf270c7b07ee3b9aec0fedd8e52dd422f Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:00:06 +0800
-Subject: [PATCH] add missing FTW_ macros for musl
-
-This is to avoid build failures like below for musl.
-
-  locale-util.c:296:24: error: 'FTW_STOP' undeclared
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/basic/missing_type.h    | 4 ++++
- src/test/test-recurse-dir.c | 1 +
- 2 files changed, 5 insertions(+)
-
-diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
-index 6c0456349d..73a5b90e3c 100644
---- a/src/basic/missing_type.h
-+++ b/src/basic/missing_type.h
-@@ -14,3 +14,7 @@
- #ifndef __GLIBC__
- typedef int (*comparison_fn_t)(const void *, const void *);
- #endif
-+
-+#ifndef FTW_CONTINUE
-+#define FTW_CONTINUE 0
-+#endif
-diff --git a/src/test/test-recurse-dir.c b/src/test/test-recurse-dir.c
-index 2c2120b136..bc60a178a2 100644
---- a/src/test/test-recurse-dir.c
-+++ b/src/test/test-recurse-dir.c
-@@ -6,6 +6,7 @@
- #include "recurse-dir.h"
- #include "strv.h"
- #include "tests.h"
-+#include "missing_type.h"
- 
- static char **list_nftw = NULL;
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0014-Handle-missing-gshadow.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0014-Handle-missing-gshadow.patch
new file mode 100644
index 0000000..a751e1b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0014-Handle-missing-gshadow.patch
@@ -0,0 +1,173 @@
+From b7c827bb44edbb6251c9fcdb80aa03982c0e7bf3 Mon Sep 17 00:00:00 2001
+From: Alex Kiernan <alex.kiernan@gmail.com>
+Date: Tue, 10 Mar 2020 11:05:20 +0000
+Subject: [PATCH 14/22] Handle missing gshadow
+
+gshadow usage is now present in the userdb code. Mask all uses of it to
+allow compilation on musl
+
+Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
+[Rebased for v247]
+Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
+---
+ src/shared/user-record-nss.c | 20 ++++++++++++++++++++
+ src/shared/user-record-nss.h |  4 ++++
+ src/shared/userdb.c          |  7 ++++++-
+ 3 files changed, 30 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/user-record-nss.c b/src/shared/user-record-nss.c
+index 414a49331b..1a4e1b628c 100644
+--- a/src/shared/user-record-nss.c
++++ b/src/shared/user-record-nss.c
+@@ -329,8 +329,10 @@ int nss_group_to_group_record(
+         if (isempty(grp->gr_name))
+                 return -EINVAL;
+ 
++#if ENABLE_GSHADOW
+         if (sgrp && !streq_ptr(sgrp->sg_namp, grp->gr_name))
+                 return -EINVAL;
++#endif
+ 
+         g = group_record_new();
+         if (!g)
+@@ -346,6 +348,7 @@ int nss_group_to_group_record(
+ 
+         g->gid = grp->gr_gid;
+ 
++#if ENABLE_GSHADOW
+         if (sgrp) {
+                 if (looks_like_hashed_password(utf8_only(sgrp->sg_passwd))) {
+                         g->hashed_password = strv_new(sgrp->sg_passwd);
+@@ -361,6 +364,7 @@ int nss_group_to_group_record(
+                 if (r < 0)
+                         return r;
+         }
++#endif
+ 
+         r = json_build(&g->json, JSON_BUILD_OBJECT(
+                                        JSON_BUILD_PAIR("groupName", JSON_BUILD_STRING(g->group_name)),
+@@ -387,6 +391,7 @@ int nss_sgrp_for_group(const struct group *grp, struct sgrp *ret_sgrp, char **re
+         assert(ret_sgrp);
+         assert(ret_buffer);
+ 
++#if ENABLE_GSHADOW
+         for (;;) {
+                 _cleanup_free_ char *buf = NULL;
+                 struct sgrp sgrp, *result;
+@@ -415,6 +420,9 @@ int nss_sgrp_for_group(const struct group *grp, struct sgrp *ret_sgrp, char **re
+                 buflen *= 2;
+                 buf = mfree(buf);
+         }
++#else
++        return -ESRCH;
++#endif
+ }
+ 
+ int nss_group_record_by_name(
+@@ -426,7 +434,9 @@ int nss_group_record_by_name(
+         struct group grp, *result;
+         bool incomplete = false;
+         size_t buflen = 4096;
++#if ENABLE_GSHADOW
+         struct sgrp sgrp, *sresult = NULL;
++#endif
+         int r;
+ 
+         assert(name);
+@@ -455,6 +465,7 @@ int nss_group_record_by_name(
+                 buf = mfree(buf);
+         }
+ 
++#if ENABLE_GSHADOW
+         if (with_shadow) {
+                 r = nss_sgrp_for_group(result, &sgrp, &sbuf);
+                 if (r < 0) {
+@@ -466,6 +477,9 @@ int nss_group_record_by_name(
+                 incomplete = true;
+ 
+         r = nss_group_to_group_record(result, sresult, ret);
++#else
++        r = nss_group_to_group_record(result, NULL, ret);
++#endif
+         if (r < 0)
+                 return r;
+ 
+@@ -483,7 +497,9 @@ int nss_group_record_by_gid(
+         struct group grp, *result;
+         bool incomplete = false;
+         size_t buflen = 4096;
++#if ENABLE_GSHADOW
+         struct sgrp sgrp, *sresult = NULL;
++#endif
+         int r;
+ 
+         for (;;) {
+@@ -509,6 +525,7 @@ int nss_group_record_by_gid(
+                 buf = mfree(buf);
+         }
+ 
++#if ENABLE_GSHADOW
+         if (with_shadow) {
+                 r = nss_sgrp_for_group(result, &sgrp, &sbuf);
+                 if (r < 0) {
+@@ -520,6 +537,9 @@ int nss_group_record_by_gid(
+                 incomplete = true;
+ 
+         r = nss_group_to_group_record(result, sresult, ret);
++#else
++        r = nss_group_to_group_record(result, NULL, ret);
++#endif
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/shared/user-record-nss.h b/src/shared/user-record-nss.h
+index 22ab04d6ee..4e52e7a911 100644
+--- a/src/shared/user-record-nss.h
++++ b/src/shared/user-record-nss.h
+@@ -2,7 +2,11 @@
+ #pragma once
+ 
+ #include <grp.h>
++#if ENABLE_GSHADOW
+ #include <gshadow.h>
++#else
++struct sgrp;
++#endif
+ #include <pwd.h>
+ #include <shadow.h>
+ 
+diff --git a/src/shared/userdb.c b/src/shared/userdb.c
+index f60d48ace4..e878199a28 100644
+--- a/src/shared/userdb.c
++++ b/src/shared/userdb.c
+@@ -1038,13 +1038,15 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
+                 if (gr) {
+                         _cleanup_free_ char *buffer = NULL;
+                         bool incomplete = false;
++#if ENABLE_GSHADOW
+                         struct sgrp sgrp;
+-
++#endif
+                         if (streq_ptr(gr->gr_name, "root"))
+                                 iterator->synthesize_root = false;
+                         if (gr->gr_gid == GID_NOBODY)
+                                 iterator->synthesize_nobody = false;
+ 
++#if ENABLE_GSHADOW
+                         if (!FLAGS_SET(iterator->flags, USERDB_SUPPRESS_SHADOW)) {
+                                 r = nss_sgrp_for_group(gr, &sgrp, &buffer);
+                                 if (r < 0) {
+@@ -1057,6 +1059,9 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
+                         }
+ 
+                         r = nss_group_to_group_record(gr, r >= 0 ? &sgrp : NULL, ret);
++#else
++                        r = nss_group_to_group_record(gr, NULL, ret);
++#endif
+                         if (r < 0)
+                                 return r;
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0014-Use-uintmax_t-for-handling-rlim_t.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0014-Use-uintmax_t-for-handling-rlim_t.patch
deleted file mode 100644
index 2071f4f..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0014-Use-uintmax_t-for-handling-rlim_t.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 60f7d2c62bc3718023df93c01688d3ee1625d64d Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:12:41 +0800
-Subject: [PATCH] Use uintmax_t for handling rlim_t
-
-PRIu{32,64} is not right format to represent rlim_t type
-therefore use %ju and typecast the rlim_t variables to
-uintmax_t.
-
-Fixes portablility errors like
-
-execute.c:3446:36: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'rlim_t {aka long long unsigned int}' [-Werror=format=]
-|                          fprintf(f, "%s%s: " RLIM_FMT "\n",
-|                                     ^~~~~~~~
-|                                  prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
-|                                                               ~~~~~~~~~~~~~~~~~~~~~~
-
-Upstream-Status: Denied [https://github.com/systemd/systemd/pull/7199]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-[Rebased for v241]
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/basic/format-util.h |  8 +-------
- src/basic/rlimit-util.c | 12 ++++++------
- src/core/execute.c      |  4 ++--
- 3 files changed, 9 insertions(+), 15 deletions(-)
-
---- a/src/basic/format-util.h
-+++ b/src/basic/format-util.h
-@@ -34,13 +34,7 @@ assert_cc(sizeof(gid_t) == sizeof(uint32
- #  error Unknown timex member size
- #endif
- 
--#if SIZEOF_RLIM_T == 8
--#  define RLIM_FMT "%" PRIu64
--#elif SIZEOF_RLIM_T == 4
--#  define RLIM_FMT "%" PRIu32
--#else
--#  error Unknown rlim_t size
--#endif
-+#define RLIM_FMT "%ju"
- 
- #if SIZEOF_DEV_T == 8
- #  define DEV_FMT "%" PRIu64
---- a/src/basic/rlimit-util.c
-+++ b/src/basic/rlimit-util.c
-@@ -44,7 +44,7 @@ int setrlimit_closest(int resource, cons
-             fixed.rlim_max == highest.rlim_max)
-                 return 0;
- 
--        log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", rlim->rlim_max, rlimit_to_string(resource), fixed.rlim_max);
-+        log_debug("Failed at setting rlimit " RLIM_FMT " for resource RLIMIT_%s. Will attempt setting value " RLIM_FMT " instead.", (uintmax_t)rlim->rlim_max, rlimit_to_string(resource), (uintmax_t)fixed.rlim_max);
- 
-         return RET_NERRNO(setrlimit(resource, &fixed));
- }
-@@ -307,13 +307,13 @@ int rlimit_format(const struct rlimit *r
-         if (rl->rlim_cur >= RLIM_INFINITY && rl->rlim_max >= RLIM_INFINITY)
-                 r = free_and_strdup(&s, "infinity");
-         else if (rl->rlim_cur >= RLIM_INFINITY)
--                r = asprintf(&s, "infinity:" RLIM_FMT, rl->rlim_max);
-+                r = asprintf(&s, "infinity:" RLIM_FMT, (uintmax_t)rl->rlim_max);
-         else if (rl->rlim_max >= RLIM_INFINITY)
--                r = asprintf(&s, RLIM_FMT ":infinity", rl->rlim_cur);
-+                r = asprintf(&s, RLIM_FMT ":infinity", (uintmax_t)rl->rlim_cur);
-         else if (rl->rlim_cur == rl->rlim_max)
--                r = asprintf(&s, RLIM_FMT, rl->rlim_cur);
-+                r = asprintf(&s, RLIM_FMT, (uintmax_t)rl->rlim_cur);
-         else
--                r = asprintf(&s, RLIM_FMT ":" RLIM_FMT, rl->rlim_cur, rl->rlim_max);
-+                r = asprintf(&s, RLIM_FMT ":" RLIM_FMT, (uintmax_t)rl->rlim_cur, (uintmax_t)rl->rlim_max);
-         if (r < 0)
-                 return -ENOMEM;
- 
-@@ -407,7 +407,7 @@ int rlimit_nofile_safe(void) {
-         rl.rlim_max = MIN(rl.rlim_max, (rlim_t) read_nr_open());
-         rl.rlim_cur = MIN((rlim_t) FD_SETSIZE, rl.rlim_max);
-         if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
--                return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
-+                return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
- 
-         return 1;
- }
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -6707,9 +6707,9 @@ void exec_context_dump(const ExecContext
-         for (unsigned i = 0; i < RLIM_NLIMITS; i++)
-                 if (c->rlimit[i]) {
-                         fprintf(f, "%sLimit%s: " RLIM_FMT "\n",
--                                prefix, rlimit_to_string(i), c->rlimit[i]->rlim_max);
-+                                prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_max);
-                         fprintf(f, "%sLimit%sSoft: " RLIM_FMT "\n",
--                                prefix, rlimit_to_string(i), c->rlimit[i]->rlim_cur);
-+                                prefix, rlimit_to_string(i), (uintmax_t)c->rlimit[i]->rlim_cur);
-                 }
- 
-         if (c->ioprio_set) {
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
new file mode 100644
index 0000000..e112766
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
@@ -0,0 +1,49 @@
+From 3dc9d9d410bcce54fddfd94f43f7f77f3aa8e281 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 12 Apr 2021 23:44:53 -0700
+Subject: [PATCH 15/22] missing_syscall.h: Define MIPS ABI defines for musl
+
+musl does not define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32, _MIPS_SIM_ABI64
+unlike glibc where these are provided by libc headers, therefore define
+them here in case they are undefined
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/basic/missing_syscall.h  | 6 ++++++
+ src/shared/base-filesystem.c | 1 +
+ 2 files changed, 7 insertions(+)
+
+diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
+index d795efd8f2..d6729d3c1d 100644
+--- a/src/basic/missing_syscall.h
++++ b/src/basic/missing_syscall.h
+@@ -20,6 +20,12 @@
+ #include <asm/sgidefs.h>
+ #endif
+ 
++#ifndef _MIPS_SIM_ABI32
++#define _MIPS_SIM_ABI32	1
++#define _MIPS_SIM_NABI32 2
++#define _MIPS_SIM_ABI64	3
++#endif
++
+ #include "macro.h"
+ #include "missing_keyctl.h"
+ #include "missing_stat.h"
+diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
+index 7ae921a113..0ef9d1fd39 100644
+--- a/src/shared/base-filesystem.c
++++ b/src/shared/base-filesystem.c
+@@ -20,6 +20,7 @@
+ #include "string-util.h"
+ #include "umask-util.h"
+ #include "user-util.h"
++#include "missing_syscall.h"
+ 
+ typedef struct BaseFilesystem {
+         const char *dir;      /* directory or symlink to create */
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0016-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0016-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
deleted file mode 100644
index 543fba7..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0016-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 26b02348e39fe72b73dd61bba8a0cefb0352717d Mon Sep 17 00:00:00 2001
-From: Andre McCurdy <armccurdy@gmail.com>
-Date: Tue, 10 Oct 2017 14:33:30 -0700
-Subject: [PATCH] don't pass AT_SYMLINK_NOFOLLOW flag to faccessat()
-
-Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right
-thing to do and it's not portable (not supported by musl). See:
-
-  http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
-  http://www.openwall.com/lists/musl/2015/02/05/2
-
-Note that laccess() is never passing AT_EACCESS so a lot of the
-discussion in the links above doesn't apply. Note also that
-(currently) all systemd callers of laccess() pass mode as F_OK, so
-only check for existence of a file, not access permissions.
-Therefore, in this case, the only distiction between faccessat()
-with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the behaviour
-for broken symlinks; laccess() on a broken symlink will succeed with
-(flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
-
-The laccess() macros was added to systemd some time ago and it's not
-clear if or why it needs to return success for broken symlinks. Maybe
-just historical and not actually necessary or desired behaviour?
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
----
- src/basic/fs-util.h          | 21 ++++++++++++++++++++-
- src/shared/base-filesystem.c |  6 +++---
- 2 files changed, 23 insertions(+), 4 deletions(-)
-
-diff --git a/src/basic/fs-util.h b/src/basic/fs-util.h
-index 932d003f19..33215dbf5f 100644
---- a/src/basic/fs-util.h
-+++ b/src/basic/fs-util.h
-@@ -49,8 +49,27 @@ int futimens_opath(int fd, const struct timespec ts[2]);
- int fd_warn_permissions(const char *path, int fd);
- int stat_warn_permissions(const char *path, const struct stat *st);
- 
-+/*
-+   Avoid using AT_SYMLINK_NOFOLLOW flag. It doesn't seem like the right thing to
-+   do and it's not portable (not supported by musl). See:
-+
-+     http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003610.html
-+     http://www.openwall.com/lists/musl/2015/02/05/2
-+
-+   Note that laccess() is never passing AT_EACCESS so a lot of the discussion in
-+   the links above doesn't apply. Note also that (currently) all systemd callers
-+   of laccess() pass mode as F_OK, so only check for existence of a file, not
-+   access permissions. Therefore, in this case, the only distiction between
-+   faccessat() with (flag == 0) and (flag == AT_SYMLINK_NOFOLLOW) is the
-+   behaviour for broken symlinks; laccess() on a broken symlink will succeed
-+   with (flag == AT_SYMLINK_NOFOLLOW) and fail (flag == 0).
-+
-+   The laccess() macros was added to systemd some time ago and it's not clear if
-+   or why it needs to return success for broken symlinks. Maybe just historical
-+   and not actually necessary or desired behaviour?
-+*/
- #define laccess(path, mode)                                             \
--        RET_NERRNO(faccessat(AT_FDCWD, (path), (mode), AT_SYMLINK_NOFOLLOW))
-+        RET_NERRNO(faccessat(AT_FDCWD, (path), (mode), 0))
- 
- int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
- 
-diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
-index be6dd1654a..2726dc946a 100644
---- a/src/shared/base-filesystem.c
-+++ b/src/shared/base-filesystem.c
-@@ -145,7 +145,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
-         /* The "root" parameter is decoration only – it's only used as part of log messages */
- 
-         for (size_t i = 0; i < ELEMENTSOF(table); i++) {
--                if (faccessat(fd, table[i].dir, F_OK, AT_SYMLINK_NOFOLLOW) >= 0)
-+                if (faccessat(fd, table[i].dir, F_OK, 0) >= 0)
-                         continue;
- 
-                 if (table[i].target) { /* Create as symlink? */
-@@ -153,7 +153,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
- 
-                         /* check if one of the targets exists */
-                         NULSTR_FOREACH(s, table[i].target) {
--                                if (faccessat(fd, s, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
-+                                if (faccessat(fd, s, F_OK, 0) < 0)
-                                         continue;
- 
-                                 /* check if a specific file exists at the target path */
-@@ -164,7 +164,7 @@ int base_filesystem_create_fd(int fd, const char *root, uid_t uid, gid_t gid) {
-                                         if (!p)
-                                                 return log_oom();
- 
--                                        if (faccessat(fd, p, F_OK, AT_SYMLINK_NOFOLLOW) < 0)
-+                                        if (faccessat(fd, p, F_OK, 0) < 0)
-                                                 continue;
-                                 }
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0016-pass-correct-parameters-to-getdents64.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0016-pass-correct-parameters-to-getdents64.patch
new file mode 100644
index 0000000..0be817e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0016-pass-correct-parameters-to-getdents64.patch
@@ -0,0 +1,37 @@
+From 0994b59dba9f248ad31cb7087046dc00b72cb4ea Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Jan 2022 15:15:11 -0800
+Subject: [PATCH 16/22] pass correct parameters to getdents64
+
+Fixes
+../git/src/basic/recurse-dir.c:57:40: error: incompatible pointer types passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+                n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
+                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+../git/src/basic/stat-util.c:102:28: error: incompatible pointer types passing 'union (unnamed union at ../git/src/basic/stat-util.c:78:9) *' to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+        n = getdents64(fd, &buffer, sizeof(buffer));
+                           ^~~~~~~
+
+Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
+---
+ src/basic/recurse-dir.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c
+index 5e98b7a5d8..aef065047b 100644
+--- a/src/basic/recurse-dir.c
++++ b/src/basic/recurse-dir.c
+@@ -55,7 +55,7 @@ int readdir_all(int dir_fd,
+                 bs = MIN(MALLOC_SIZEOF_SAFE(de) - offsetof(DirectoryEntries, buffer), (size_t) SSIZE_MAX);
+                 assert(bs > de->buffer_size);
+ 
+-                n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
++                n = getdents64(dir_fd, (struct dirent*)((uint8_t*) de->buffer + de->buffer_size), bs - de->buffer_size);
+                 if (n < 0)
+                         return -errno;
+                 if (n == 0)
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0017-Adjust-for-musl-headers.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0017-Adjust-for-musl-headers.patch
new file mode 100644
index 0000000..4176522
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0017-Adjust-for-musl-headers.patch
@@ -0,0 +1,572 @@
+From 3c094d443ca30f19114392fd8ef274af6eabc12d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Jan 2022 22:19:37 -0800
+Subject: [PATCH 17/22] Adjust for musl headers
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+[Rebased for v255.1]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/libsystemd-network/sd-dhcp6-client.c      | 2 +-
+ src/network/netdev/bareudp.c                  | 2 +-
+ src/network/netdev/batadv.c                   | 2 +-
+ src/network/netdev/bond.c                     | 2 +-
+ src/network/netdev/bridge.c                   | 2 +-
+ src/network/netdev/dummy.c                    | 2 +-
+ src/network/netdev/geneve.c                   | 2 +-
+ src/network/netdev/ifb.c                      | 2 +-
+ src/network/netdev/ipoib.c                    | 2 +-
+ src/network/netdev/ipvlan.c                   | 2 +-
+ src/network/netdev/macsec.c                   | 2 +-
+ src/network/netdev/macvlan.c                  | 2 +-
+ src/network/netdev/netdev.c                   | 2 +-
+ src/network/netdev/netdevsim.c                | 2 +-
+ src/network/netdev/nlmon.c                    | 2 +-
+ src/network/netdev/tunnel.c                   | 2 +-
+ src/network/netdev/vcan.c                     | 2 +-
+ src/network/netdev/veth.c                     | 2 +-
+ src/network/netdev/vlan.c                     | 2 +-
+ src/network/netdev/vrf.c                      | 2 +-
+ src/network/netdev/vxcan.c                    | 2 +-
+ src/network/netdev/vxlan.c                    | 2 +-
+ src/network/netdev/wireguard.c                | 2 +-
+ src/network/netdev/xfrm.c                     | 2 +-
+ src/network/networkd-bridge-mdb.c             | 4 ++--
+ src/network/networkd-dhcp-common.c            | 3 ++-
+ src/network/networkd-dhcp-prefix-delegation.c | 3 ++-
+ src/network/networkd-dhcp-server.c            | 2 +-
+ src/network/networkd-dhcp4.c                  | 2 +-
+ src/network/networkd-ipv6ll.c                 | 2 +-
+ src/network/networkd-link.c                   | 2 +-
+ src/network/networkd-ndisc.c                  | 2 +-
+ src/network/networkd-route.c                  | 8 ++++----
+ src/network/networkd-setlink.c                | 2 +-
+ src/network/networkd-sysctl.c                 | 2 +-
+ src/shared/linux/ethtool.h                    | 3 ++-
+ src/shared/netif-util.c                       | 2 +-
+ src/udev/udev-builtin-net_id.c                | 2 +-
+ 38 files changed, 45 insertions(+), 42 deletions(-)
+
+diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
+index c20367dfc9..b8d4cd8c2a 100644
+--- a/src/libsystemd-network/sd-dhcp6-client.c
++++ b/src/libsystemd-network/sd-dhcp6-client.c
+@@ -5,7 +5,7 @@
+ 
+ #include <errno.h>
+ #include <sys/ioctl.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_infiniband.h>
+ 
+ #include "sd-dhcp6-client.h"
+diff --git a/src/network/netdev/bareudp.c b/src/network/netdev/bareudp.c
+index 1df886573b..c8b6714726 100644
+--- a/src/network/netdev/bareudp.c
++++ b/src/network/netdev/bareudp.c
+@@ -2,7 +2,7 @@
+  * Copyright © 2020 VMware, Inc. */
+ 
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "bareudp.h"
+ #include "netlink-util.h"
+diff --git a/src/network/netdev/batadv.c b/src/network/netdev/batadv.c
+index 26da0231d4..2e8002af8c 100644
+--- a/src/network/netdev/batadv.c
++++ b/src/network/netdev/batadv.c
+@@ -3,7 +3,7 @@
+ #include <inttypes.h>
+ #include <netinet/in.h>
+ #include <linux/genetlink.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "batadv.h"
+ #include "fileio.h"
+diff --git a/src/network/netdev/bond.c b/src/network/netdev/bond.c
+index 4d75a0d6bf..985b3197e0 100644
+--- a/src/network/netdev/bond.c
++++ b/src/network/netdev/bond.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "alloc-util.h"
+ #include "bond.h"
+diff --git a/src/network/netdev/bridge.c b/src/network/netdev/bridge.c
+index 3e394edadf..f12f667687 100644
+--- a/src/network/netdev/bridge.c
++++ b/src/network/netdev/bridge.c
+@@ -2,7 +2,7 @@
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_bridge.h>
+ 
+ #include "bridge.h"
+diff --git a/src/network/netdev/dummy.c b/src/network/netdev/dummy.c
+index 00df1d2787..77b506b422 100644
+--- a/src/network/netdev/dummy.c
++++ b/src/network/netdev/dummy.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "dummy.h"
+ 
+diff --git a/src/network/netdev/geneve.c b/src/network/netdev/geneve.c
+index bc655ec7ff..a77e8e17e4 100644
+--- a/src/network/netdev/geneve.c
++++ b/src/network/netdev/geneve.c
+@@ -2,7 +2,7 @@
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "alloc-util.h"
+ #include "conf-parser.h"
+diff --git a/src/network/netdev/ifb.c b/src/network/netdev/ifb.c
+index d7ff44cb9e..e037629ae4 100644
+--- a/src/network/netdev/ifb.c
++++ b/src/network/netdev/ifb.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later
+  * Copyright © 2019 VMware, Inc. */
+ 
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "ifb.h"
+ 
+diff --git a/src/network/netdev/ipoib.c b/src/network/netdev/ipoib.c
+index d5fe299b7b..c9c8002eac 100644
+--- a/src/network/netdev/ipoib.c
++++ b/src/network/netdev/ipoib.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_link.h>
+ 
+ #include "ipoib.h"
+diff --git a/src/network/netdev/ipvlan.c b/src/network/netdev/ipvlan.c
+index 05d5d010f6..d440f49537 100644
+--- a/src/network/netdev/ipvlan.c
++++ b/src/network/netdev/ipvlan.c
+@@ -2,7 +2,7 @@
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "conf-parser.h"
+ #include "ipvlan.h"
+diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
+index 17d6acefb6..679d0984f9 100644
+--- a/src/network/netdev/macsec.c
++++ b/src/network/netdev/macsec.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_ether.h>
+ #include <linux/if_macsec.h>
+ #include <linux/genetlink.h>
+diff --git a/src/network/netdev/macvlan.c b/src/network/netdev/macvlan.c
+index 203807e3a5..8ab09a387e 100644
+--- a/src/network/netdev/macvlan.c
++++ b/src/network/netdev/macvlan.c
+@@ -2,7 +2,7 @@
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "conf-parser.h"
+ #include "macvlan.h"
+diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
+index 57127a861a..7f787d0b9f 100644
+--- a/src/network/netdev/netdev.c
++++ b/src/network/netdev/netdev.c
+@@ -2,7 +2,7 @@
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <unistd.h>
+ 
+ #include "alloc-util.h"
+diff --git a/src/network/netdev/netdevsim.c b/src/network/netdev/netdevsim.c
+index 15d5c132f9..a3ffa48b15 100644
+--- a/src/network/netdev/netdevsim.c
++++ b/src/network/netdev/netdevsim.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "netdevsim.h"
+ 
+diff --git a/src/network/netdev/nlmon.c b/src/network/netdev/nlmon.c
+index ff372092e6..eef66811f4 100644
+--- a/src/network/netdev/nlmon.c
++++ b/src/network/netdev/nlmon.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "nlmon.h"
+ 
+diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c
+index db84e7cf6e..93d5642962 100644
+--- a/src/network/netdev/tunnel.c
++++ b/src/network/netdev/tunnel.c
+@@ -2,7 +2,7 @@
+ 
+ #include <netinet/in.h>
+ #include <linux/fou.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_tunnel.h>
+ #include <linux/ip.h>
+ #include <linux/ip6_tunnel.h>
+diff --git a/src/network/netdev/vcan.c b/src/network/netdev/vcan.c
+index 380547ee1e..137c1adf8a 100644
+--- a/src/network/netdev/vcan.c
++++ b/src/network/netdev/vcan.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "vcan.h"
+ 
+diff --git a/src/network/netdev/veth.c b/src/network/netdev/veth.c
+index e0f5b4ebb1..8a424ed03d 100644
+--- a/src/network/netdev/veth.c
++++ b/src/network/netdev/veth.c
+@@ -3,7 +3,7 @@
+ #include <errno.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/veth.h>
+ 
+ #include "netlink-util.h"
+diff --git a/src/network/netdev/vlan.c b/src/network/netdev/vlan.c
+index 2390206993..efec630e30 100644
+--- a/src/network/netdev/vlan.c
++++ b/src/network/netdev/vlan.c
+@@ -2,7 +2,7 @@
+ 
+ #include <errno.h>
+ #include <net/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_vlan.h>
+ 
+ #include "parse-util.h"
+diff --git a/src/network/netdev/vrf.c b/src/network/netdev/vrf.c
+index b75ec2bcc6..6aeeea640b 100644
+--- a/src/network/netdev/vrf.c
++++ b/src/network/netdev/vrf.c
+@@ -2,7 +2,7 @@
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "vrf.h"
+ 
+diff --git a/src/network/netdev/vxcan.c b/src/network/netdev/vxcan.c
+index c0343f45b6..f9e718f40b 100644
+--- a/src/network/netdev/vxcan.c
++++ b/src/network/netdev/vxcan.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+ #include <linux/can/vxcan.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "vxcan.h"
+ 
+diff --git a/src/network/netdev/vxlan.c b/src/network/netdev/vxlan.c
+index b11fdbbd0d..a971a917f0 100644
+--- a/src/network/netdev/vxlan.c
++++ b/src/network/netdev/vxlan.c
+@@ -2,7 +2,7 @@
+ 
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "conf-parser.h"
+ #include "alloc-util.h"
+diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c
+index 4c7d837c41..6df6dfb816 100644
+--- a/src/network/netdev/wireguard.c
++++ b/src/network/netdev/wireguard.c
+@@ -6,7 +6,7 @@
+ #include <sys/ioctl.h>
+ #include <net/if.h>
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/ipv6_route.h>
+ 
+ #include "sd-resolve.h"
+diff --git a/src/network/netdev/xfrm.c b/src/network/netdev/xfrm.c
+index 905bfc0bdf..39e34dbb3b 100644
+--- a/src/network/netdev/xfrm.c
++++ b/src/network/netdev/xfrm.c
+@@ -1,6 +1,6 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "missing_network.h"
+ #include "xfrm.h"
+diff --git a/src/network/networkd-bridge-mdb.c b/src/network/networkd-bridge-mdb.c
+index bd1a9745dc..949d3da029 100644
+--- a/src/network/networkd-bridge-mdb.c
++++ b/src/network/networkd-bridge-mdb.c
+@@ -1,7 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <net/if.h>
+-#include <linux/if_bridge.h>
+ 
+ #include "netlink-util.h"
+ #include "networkd-bridge-mdb.h"
+@@ -11,6 +9,8 @@
+ #include "networkd-queue.h"
+ #include "string-util.h"
+ #include "vlan-util.h"
++#include <net/if.h>
++#include <linux/if_bridge.h>
+ 
+ #define STATIC_BRIDGE_MDB_ENTRIES_PER_NETWORK_MAX 1024U
+ 
+diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
+index 080b15387c..efe8283957 100644
+--- a/src/network/networkd-dhcp-common.c
++++ b/src/network/networkd-dhcp-common.c
+@@ -1,7 +1,8 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
++#include <net/if.h>
+ 
+ #include "bus-error.h"
+ #include "bus-locator.h"
+diff --git a/src/network/networkd-dhcp-prefix-delegation.c b/src/network/networkd-dhcp-prefix-delegation.c
+index af2fe9efcd..511565700f 100644
+--- a/src/network/networkd-dhcp-prefix-delegation.c
++++ b/src/network/networkd-dhcp-prefix-delegation.c
+@@ -1,6 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/ipv6_route.h>
+ 
+ #include "dhcp6-lease-internal.h"
+ #include "hashmap.h"
+@@ -20,6 +19,8 @@
+ #include "strv.h"
+ #include "tunnel.h"
+ 
++#include <linux/ipv6_route.h>
++
+ bool link_dhcp_pd_is_enabled(Link *link) {
+         assert(link);
+ 
+diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c
+index 607fe0053c..9ce4005874 100644
+--- a/src/network/networkd-dhcp-server.c
++++ b/src/network/networkd-dhcp-server.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+ #include <netinet/in.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if.h>
+ 
+ #include "sd-dhcp-server.h"
+diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
+index efbae6d868..1ea2151d50 100644
+--- a/src/network/networkd-dhcp4.c
++++ b/src/network/networkd-dhcp4.c
+@@ -3,7 +3,7 @@
+ #include <netinet/in.h>
+ #include <netinet/ip.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "alloc-util.h"
+ #include "dhcp-client-internal.h"
+diff --git a/src/network/networkd-ipv6ll.c b/src/network/networkd-ipv6ll.c
+index 32229a3fc7..662a345d6e 100644
+--- a/src/network/networkd-ipv6ll.c
++++ b/src/network/networkd-ipv6ll.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "in-addr-util.h"
+ #include "networkd-address.h"
+diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
+index ee5f0f2c0a..ea5269a2de 100644
+--- a/src/network/networkd-link.c
++++ b/src/network/networkd-link.c
+@@ -3,7 +3,7 @@
+ #include <net/if.h>
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_link.h>
+ #include <linux/netdevice.h>
+ #include <sys/socket.h>
+diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c
+index ab9eeb13a5..dd96fe7483 100644
+--- a/src/network/networkd-ndisc.c
++++ b/src/network/networkd-ndisc.c
+@@ -6,7 +6,7 @@
+ #include <arpa/inet.h>
+ #include <netinet/icmp6.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "sd-ndisc.h"
+ 
+diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c
+index 7218d799fc..30d5574eae 100644
+--- a/src/network/networkd-route.c
++++ b/src/network/networkd-route.c
+@@ -1,9 +1,5 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+-#include <linux/icmpv6.h>
+-#include <linux/ipv6_route.h>
+-#include <linux/nexthop.h>
+-
+ #include "alloc-util.h"
+ #include "event-util.h"
+ #include "netlink-util.h"
+@@ -21,6 +17,10 @@
+ #include "vrf.h"
+ #include "wireguard.h"
+ 
++#include <linux/icmpv6.h>
++#include <linux/ipv6_route.h>
++#include <linux/nexthop.h>
++
+ int route_new(Route **ret) {
+         _cleanup_(route_freep) Route *route = NULL;
+ 
+diff --git a/src/network/networkd-setlink.c b/src/network/networkd-setlink.c
+index 2298f9ea3a..7d5f87de53 100644
+--- a/src/network/networkd-setlink.c
++++ b/src/network/networkd-setlink.c
+@@ -2,7 +2,7 @@
+ 
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/if_bridge.h>
+ 
+ #include "missing_network.h"
+diff --git a/src/network/networkd-sysctl.c b/src/network/networkd-sysctl.c
+index 2b226b2e2a..f12a474e2f 100644
+--- a/src/network/networkd-sysctl.c
++++ b/src/network/networkd-sysctl.c
+@@ -2,7 +2,7 @@
+ 
+ #include <netinet/in.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "missing_network.h"
+ #include "networkd-link.h"
+diff --git a/src/shared/linux/ethtool.h b/src/shared/linux/ethtool.h
+index 3d1da515c0..3fca9a4faf 100644
+--- a/src/shared/linux/ethtool.h
++++ b/src/shared/linux/ethtool.h
+@@ -16,7 +16,8 @@
+ 
+ #include <linux/const.h>
+ #include <linux/types.h>
+-#include <linux/if_ether.h>
++#include <netinet/if_ether.h>
++//#include <linux/if_ether.h>
+ 
+ #include <limits.h> /* for INT_MAX */
+ 
+diff --git a/src/shared/netif-util.c b/src/shared/netif-util.c
+index f56c5646c1..5af28ff119 100644
+--- a/src/shared/netif-util.c
++++ b/src/shared/netif-util.c
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: LGPL-2.1-or-later */
+ 
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ 
+ #include "arphrd-util.h"
+ #include "device-util.h"
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index f528a46b8e..830318cda5 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -18,7 +18,7 @@
+ #include <stdarg.h>
+ #include <unistd.h>
+ #include <linux/if.h>
+-#include <linux/if_arp.h>
++//#include <linux/if_arp.h>
+ #include <linux/netdevice.h>
+ #include <linux/pci_regs.h>
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0017-Define-glibc-compatible-basename-for-non-glibc-syste.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0017-Define-glibc-compatible-basename-for-non-glibc-syste.patch
deleted file mode 100644
index 7d74cfc..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0017-Define-glibc-compatible-basename-for-non-glibc-syste.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From fdc7fb940bb41020271b9db41d5608004efdbde5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 27 May 2018 08:36:44 -0700
-Subject: [PATCH] Define glibc compatible basename() for non-glibc systems
-
-Fixes builds with musl, even though systemd is adamant about
-using non-posix basename implementation, we have a way out
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/machine/machine-dbus.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
-index 45bc056326..aee51d5da5 100644
---- a/src/machine/machine-dbus.c
-+++ b/src/machine/machine-dbus.c
-@@ -4,6 +4,11 @@
- #include <sys/mount.h>
- #include <sys/wait.h>
- 
-+#if !defined(__GLIBC__)
-+#include <string.h>
-+#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
-+#endif
-+
- #include "alloc-util.h"
- #include "bus-common-errors.h"
- #include "bus-get-properties.h"
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0018-Do-not-disable-buffering-when-writing-to-oom_score_a.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0018-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
deleted file mode 100644
index 8162bc2..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0018-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 32fd0dc67b6df531f0769dbb099dbe8f30c28514 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Wed, 4 Jul 2018 15:00:44 +0800
-Subject: [PATCH] Do not disable buffering when writing to oom_score_adj
-
-On musl, disabling buffering when writing to oom_score_adj will
-cause the following error.
-
-  Failed to adjust OOM setting: Invalid argument
-
-This error appears for systemd-udevd.service and dbus.service.
-This is because kernel receives '-' instead of the whole '-900'
-if buffering is disabled.
-
-This is libc implementation specific, as glibc does not have this issue.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/basic/process-util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/basic/process-util.c b/src/basic/process-util.c
-index 0747c14c1c..8d0c5aae92 100644
---- a/src/basic/process-util.c
-+++ b/src/basic/process-util.c
-@@ -1516,7 +1516,7 @@ int set_oom_score_adjust(int value) {
-         xsprintf(t, "%i", value);
- 
-         return write_string_file("/proc/self/oom_score_adj", t,
--                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
-+                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE);
- }
- 
- int get_oom_score_adjust(int *ret) {
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
new file mode 100644
index 0000000..75f6b90
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch
@@ -0,0 +1,52 @@
+From be02bd0876a061728661535a709d313e39fe1ac3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 8 Nov 2022 13:31:34 -0800
+Subject: [PATCH 18/22] test-bus-error: strerror() is assumed to be GNU
+ specific version mark it so
+
+Upstream-Status: Inappropriate [Upstream systemd only supports glibc]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libsystemd/sd-bus/test-bus-error.c | 2 ++
+ src/test/test-errno-util.c             | 3 ++-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/libsystemd/sd-bus/test-bus-error.c b/src/libsystemd/sd-bus/test-bus-error.c
+index a55f3f9856..4123bf3da0 100644
+--- a/src/libsystemd/sd-bus/test-bus-error.c
++++ b/src/libsystemd/sd-bus/test-bus-error.c
+@@ -99,7 +99,9 @@ TEST(error) {
+         assert_se(!sd_bus_error_is_set(&error));
+         assert_se(sd_bus_error_set_errno(&error, EBUSY) == -EBUSY);
+         assert_se(streq(error.name, "System.Error.EBUSY"));
++#ifdef __GLIBC__
+         assert_se(streq(error.message, STRERROR(EBUSY)));
++#endif
+         assert_se(sd_bus_error_has_name(&error, "System.Error.EBUSY"));
+         assert_se(sd_bus_error_get_errno(&error) == EBUSY);
+         assert_se(sd_bus_error_is_set(&error));
+diff --git a/src/test/test-errno-util.c b/src/test/test-errno-util.c
+index 376d532281..967cfd4d67 100644
+--- a/src/test/test-errno-util.c
++++ b/src/test/test-errno-util.c
+@@ -4,7 +4,7 @@
+ #include "stdio-util.h"
+ #include "string-util.h"
+ #include "tests.h"
+-
++#ifdef __GLIBC__
+ TEST(strerror_not_threadsafe) {
+         /* Just check that strerror really is not thread-safe. */
+         log_info("strerror(%d) → %s", 200, strerror(200));
+@@ -46,6 +46,7 @@ TEST(STRERROR_OR_ELSE) {
+         log_info("STRERROR_OR_ELSE(EPERM, \"EOF\") → %s", STRERROR_OR_EOF(EPERM));
+         log_info("STRERROR_OR_ELSE(-EPERM, \"EOF\") → %s", STRERROR_OR_EOF(-EPERM));
+ }
++#endif /* __GLIBC__ */
+ 
+ TEST(PROTECT_ERRNO) {
+         errno = 12;
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0019-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0019-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
deleted file mode 100644
index f6d908f..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0019-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From ed46afcbc6bc1f6277a0a54c3db8cf1b056bca1e Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 10 Jul 2018 15:40:17 +0800
-Subject: [PATCH] distinguish XSI-compliant strerror_r from GNU-specifi
- strerror_r
-
-XSI-compliant strerror_r and GNU-specifi strerror_r are different.
-
-       int strerror_r(int errnum, char *buf, size_t buflen);
-                   /* XSI-compliant */
-
-       char *strerror_r(int errnum, char *buf, size_t buflen);
-                   /* GNU-specific */
-
-We need to distinguish between them. Otherwise, we'll get an int value
-assigned to (char *) variable, resulting in segment fault.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/libsystemd/sd-bus/bus-error.c        | 11 ++++++++++-
- src/libsystemd/sd-journal/journal-send.c |  5 +++++
- 2 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/src/libsystemd/sd-bus/bus-error.c b/src/libsystemd/sd-bus/bus-error.c
-index 413e2dd43f..805e5da0c0 100644
---- a/src/libsystemd/sd-bus/bus-error.c
-+++ b/src/libsystemd/sd-bus/bus-error.c
-@@ -408,7 +408,12 @@ static void bus_error_strerror(sd_bus_error *e, int error) {
-                         return;
- 
-                 errno = 0;
-+#ifndef __GLIBC__
-+                strerror_r(error, m, k);
-+                x = m;
-+#else
-                 x = strerror_r(error, m, k);
-+#endif
-                 if (errno == ERANGE || strlen(x) >= k - 1) {
-                         free(m);
-                         k *= 2;
-@@ -593,8 +598,12 @@ const char* _bus_error_message(const sd_bus_error *e, int error, char buf[static
- 
-         if (e && e->message)
-                 return e->message;
--
-+#ifndef __GLIBC__
-+        strerror_r(abs(error), buf, ERRNO_BUF_LEN);
-+        return buf;
-+#else
-         return strerror_r(abs(error), buf, ERRNO_BUF_LEN);
-+#endif
- }
- 
- static bool map_ok(const sd_bus_error_map *map) {
-diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c
-index 136ebcb153..8a75ba4ecd 100644
---- a/src/libsystemd/sd-journal/journal-send.c
-+++ b/src/libsystemd/sd-journal/journal-send.c
-@@ -360,7 +360,12 @@ static int fill_iovec_perror_and_send(const char *message, int skip, struct iove
-                 char* j;
- 
-                 errno = 0;
-+#ifndef __GLIBC__
-+                strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
-+                j = buffer + 8 + k;
-+#else
-                 j = strerror_r(_saved_errno_, buffer + 8 + k, n - 8 - k);
-+#endif
-                 if (errno == 0) {
-                         char error[STRLEN("ERRNO=") + DECIMAL_STR_MAX(int) + 1];
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
new file mode 100644
index 0000000..e038b73
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0019-errno-util-Make-STRERROR-portable-for-musl.patch
@@ -0,0 +1,42 @@
+From 46d80840bfe37e67d4f18c37a77751ea1fe63a07 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Jan 2023 23:39:46 -0800
+Subject: [PATCH 19/22] errno-util: Make STRERROR portable for musl
+
+Sadly, systemd has decided to use yet another GNU extention in a macro
+lets make this such that we can use XSI compliant strerror_r() for
+non-glibc hosts
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/basic/errno-util.h | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h
+index 27804e6382..274c1c6ef1 100644
+--- a/src/basic/errno-util.h
++++ b/src/basic/errno-util.h
+@@ -15,8 +15,16 @@
+  * https://stackoverflow.com/questions/34880638/compound-literal-lifetime-and-if-blocks
+  *
+  * Note that we use the GNU variant of strerror_r() here. */
+-#define STRERROR(errnum) strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN)
+-
++static inline const char * STRERROR(int errnum);
++
++static inline const char * STRERROR(int errnum) {
++#ifdef __GLIBC__
++        return strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN);
++#else
++        static __thread char buf[ERRNO_BUF_LEN];
++        return strerror_r(abs(errnum), buf, ERRNO_BUF_LEN) ? "unknown error" : buf;
++#endif
++}
+ /* A helper to print an error message or message for functions that return 0 on EOF.
+  * Note that we can't use ({ … }) to define a temporary variable, so errnum is
+  * evaluated twice. */
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0020-avoid-redefinition-of-prctl_mm_map-structure.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0020-avoid-redefinition-of-prctl_mm_map-structure.patch
deleted file mode 100644
index e5f0173..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0020-avoid-redefinition-of-prctl_mm_map-structure.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 277b680d07a178b8278862b60417052d05c1376f Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Mon, 25 Feb 2019 15:44:54 +0800
-Subject: [PATCH] avoid redefinition of prctl_mm_map structure
-
-Fix the following compile failure:
-error: redefinition of 'struct prctl_mm_map'
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- src/basic/missing_prctl.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
-index ab851306ba..5547cad875 100644
---- a/src/basic/missing_prctl.h
-+++ b/src/basic/missing_prctl.h
-@@ -1,7 +1,9 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- #pragma once
- 
-+#ifdef __GLIBC__
- #include <linux/prctl.h>
-+#endif
- 
- /* 58319057b7847667f0c9585b9de0e8932b0fdb08 (4.3) */
- #ifndef PR_CAP_AMBIENT
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
new file mode 100644
index 0000000..b83fffe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch
@@ -0,0 +1,39 @@
+From 9eb4867b4e2dbdb2484ae854022aff97e2f0feb3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 2 Aug 2023 12:06:27 -0700
+Subject: [PATCH 20/22] sd-event: Make malloc_trim() conditional on glibc
+
+musl does not have this API
+
+Upstream-Status: Inappropriate [musl-specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/libsystemd/sd-event/sd-event.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
+index 288798a0dc..6419a7f216 100644
+--- a/src/libsystemd/sd-event/sd-event.c
++++ b/src/libsystemd/sd-event/sd-event.c
+@@ -1874,7 +1874,7 @@ _public_ int sd_event_add_exit(
+ }
+ 
+ _public_ int sd_event_trim_memory(void) {
+-        int r;
++        int r = 0;
+ 
+         /* A default implementation of a memory pressure callback. Simply releases our own allocation caches
+          * and glibc's. This is automatically used when people call sd_event_add_memory_pressure() with a
+@@ -1888,7 +1888,9 @@ _public_ int sd_event_trim_memory(void) {
+ 
+         usec_t before_timestamp = now(CLOCK_MONOTONIC);
+         hashmap_trim_pools();
++#ifdef __GLIBC__
+         r = malloc_trim(0);
++#endif
+         usec_t after_timestamp = now(CLOCK_MONOTONIC);
+ 
+         if (r > 0)
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0021-do-not-disable-buffer-in-writing-files.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0021-do-not-disable-buffer-in-writing-files.patch
deleted file mode 100644
index c850872..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0021-do-not-disable-buffer-in-writing-files.patch
+++ /dev/null
@@ -1,397 +0,0 @@
-From aa6e5588e6d01c12e2f101d140cc710ab199df16 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Fri, 1 Mar 2019 15:22:15 +0800
-Subject: [PATCH] do not disable buffer in writing files
-
-Do not disable buffer in writing files, otherwise we get
-failure at boot for musl like below.
-
-  [!!!!!!] Failed to allocate manager object.
-
-And there will be other failures, critical or not critical.
-This is specific to musl.
-
-Upstream-Status: Inappropriate [musl]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-[Rebased for v242]
-Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
-[rebased for systemd 243]
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-[rebased for systemd 254]
----
- src/basic/cgroup-util.c              | 12 ++++++------
- src/basic/namespace-util.c           |  4 ++--
- src/basic/procfs-util.c              |  4 ++--
- src/basic/sysctl-util.c              |  2 +-
- src/binfmt/binfmt.c                  |  6 +++---
- src/core/cgroup.c                    |  2 +-
- src/core/main.c                      |  2 +-
- src/core/smack-setup.c               |  8 ++++----
- src/home/homework.c                  |  2 +-
- src/libsystemd/sd-device/sd-device.c |  2 +-
- src/nspawn/nspawn-cgroup.c           |  2 +-
- src/nspawn/nspawn.c                  |  6 +++---
- src/shared/binfmt-util.c             |  2 +-
- src/shared/cgroup-setup.c            |  4 ++--
- src/shared/coredump-util.c           |  2 +-
- src/shared/sleep-util.c              |  4 ++--
- src/shared/smack-util.c              |  2 +-
- src/sleep/sleep.c                    |  4 ++--
- src/udev/udev-rules.c                |  1 -
- src/vconsole/vconsole-setup.c        |  2 +-
- 20 files changed, 36 insertions(+), 37 deletions(-)
-
---- a/src/basic/cgroup-util.c
-+++ b/src/basic/cgroup-util.c
-@@ -400,7 +400,7 @@ int cg_kill_kernel_sigkill(const char *c
-         if (r < 0)
-                 return r;
- 
--        r = write_string_file(killfile, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(killfile, "1", 0);
-         if (r < 0)
-                 return r;
- 
-@@ -806,7 +806,7 @@ int cg_install_release_agent(const char
- 
-         sc = strstrip(contents);
-         if (isempty(sc)) {
--                r = write_string_file(fs, agent, WRITE_STRING_FILE_DISABLE_BUFFER);
-+                r = write_string_file(fs, agent, 0);
-                 if (r < 0)
-                         return r;
-         } else if (!path_equal(sc, agent))
-@@ -824,7 +824,7 @@ int cg_install_release_agent(const char
- 
-         sc = strstrip(contents);
-         if (streq(sc, "0")) {
--                r = write_string_file(fs, "1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+                r = write_string_file(fs, "1", 0);
-                 if (r < 0)
-                         return r;
- 
-@@ -851,7 +851,7 @@ int cg_uninstall_release_agent(const cha
-         if (r < 0)
-                 return r;
- 
--        r = write_string_file(fs, "0", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(fs, "0", 0);
-         if (r < 0)
-                 return r;
- 
-@@ -861,7 +861,7 @@ int cg_uninstall_release_agent(const cha
-         if (r < 0)
-                 return r;
- 
--        r = write_string_file(fs, "", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(fs, "", 0);
-         if (r < 0)
-                 return r;
- 
-@@ -1764,7 +1764,7 @@ int cg_set_attribute(const char *control
-         if (r < 0)
-                 return r;
- 
--        return write_string_file(p, value, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        return write_string_file(p, value, 0);
- }
- 
- int cg_get_attribute(const char *controller, const char *path, const char *attribute, char **ret) {
---- a/src/basic/namespace-util.c
-+++ b/src/basic/namespace-util.c
-@@ -227,12 +227,12 @@ int userns_acquire(const char *uid_map,
-                 freeze();
- 
-         xsprintf(path, "/proc/" PID_FMT "/uid_map", pid);
--        r = write_string_file(path, uid_map, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(path, uid_map, 0);
-         if (r < 0)
-                 return log_error_errno(r, "Failed to write UID map: %m");
- 
-         xsprintf(path, "/proc/" PID_FMT "/gid_map", pid);
--        r = write_string_file(path, gid_map, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(path, gid_map, 0);
-         if (r < 0)
-                 return log_error_errno(r, "Failed to write GID map: %m");
- 
---- a/src/basic/procfs-util.c
-+++ b/src/basic/procfs-util.c
-@@ -64,13 +64,13 @@ int procfs_tasks_set_limit(uint64_t limi
-          * decrease it, as threads-max is the much more relevant sysctl. */
-         if (limit > pid_max-1) {
-                 sprintf(buffer, "%" PRIu64, limit+1); /* Add one, since PID 0 is not a valid PID */
--                r = write_string_file("/proc/sys/kernel/pid_max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
-+                r = write_string_file("/proc/sys/kernel/pid_max", buffer, 0);
-                 if (r < 0)
-                         return r;
-         }
- 
-         sprintf(buffer, "%" PRIu64, limit);
--        r = write_string_file("/proc/sys/kernel/threads-max", buffer, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/proc/sys/kernel/threads-max", buffer, 0);
-         if (r < 0) {
-                 uint64_t threads_max;
- 
---- a/src/basic/sysctl-util.c
-+++ b/src/basic/sysctl-util.c
-@@ -58,7 +58,7 @@ int sysctl_write(const char *property, c
- 
-         log_debug("Setting '%s' to '%s'", p, value);
- 
--        return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_SUPPRESS_REDUNDANT_VIRTUAL);
-+        return write_string_file(p, value, WRITE_STRING_FILE_VERIFY_ON_FAILURE | WRITE_STRING_FILE_SUPPRESS_REDUNDANT_VIRTUAL);
- }
- 
- int sysctl_writef(const char *property, const char *format, ...) {
---- a/src/binfmt/binfmt.c
-+++ b/src/binfmt/binfmt.c
-@@ -30,7 +30,7 @@ static bool arg_unregister = false;
- 
- static int delete_rule(const char *rulename) {
-         const char *fn = strjoina("/proc/sys/fs/binfmt_misc/", rulename);
--        return write_string_file(fn, "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        return write_string_file(fn, "-1", 0);
- }
- 
- static int apply_rule(const char *filename, unsigned line, const char *rule) {
-@@ -58,7 +58,7 @@ static int apply_rule(const char *filena
-         if (r >= 0)
-                 log_debug("%s:%u: Rule '%s' deleted.", filename, line, rulename);
- 
--        r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/proc/sys/fs/binfmt_misc/register", rule, 0);
-         if (r < 0)
-                 return log_error_errno(r, "%s:%u: Failed to add binary format '%s': %m",
-                                        filename, line, rulename);
-@@ -244,7 +244,7 @@ static int run(int argc, char *argv[]) {
-                         return r;
- 
-                 /* Flush out all rules */
--                r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+                r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
-                 if (r < 0)
-                         log_warning_errno(r, "Failed to flush binfmt_misc rules, ignoring: %m");
-                 else
---- a/src/core/cgroup.c
-+++ b/src/core/cgroup.c
-@@ -4349,7 +4349,7 @@ int unit_cgroup_freezer_action(Unit *u,
-                         u->freezer_state = FREEZER_THAWING;
-         }
- 
--        r = write_string_file(path, one_zero(action == FREEZER_FREEZE), WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(path, one_zero(action == FREEZER_FREEZE), 0);
-         if (r < 0)
-                 return r;
- 
---- a/src/core/main.c
-+++ b/src/core/main.c
-@@ -1737,7 +1737,7 @@ static void initialize_core_pattern(bool
-         if (getpid_cached() != 1)
-                 return;
- 
--        r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/proc/sys/kernel/core_pattern", arg_early_core_pattern, 0);
-         if (r < 0)
-                 log_warning_errno(r, "Failed to write '%s' to /proc/sys/kernel/core_pattern, ignoring: %m",
-                                   arg_early_core_pattern);
---- a/src/core/smack-setup.c
-+++ b/src/core/smack-setup.c
-@@ -319,17 +319,17 @@ int mac_smack_setup(bool *loaded_policy)
-         }
- 
- #if HAVE_SMACK_RUN_LABEL
--        r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/proc/self/attr/current", SMACK_RUN_LABEL, 0);
-         if (r < 0)
-                 log_warning_errno(r, "Failed to set SMACK label \"" SMACK_RUN_LABEL "\" on self: %m");
--        r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/sys/fs/smackfs/ambient", SMACK_RUN_LABEL, 0);
-         if (r < 0)
-                 log_warning_errno(r, "Failed to set SMACK ambient label \"" SMACK_RUN_LABEL "\": %m");
-         r = write_string_file("/sys/fs/smackfs/netlabel",
--                              "0.0.0.0/0 " SMACK_RUN_LABEL, WRITE_STRING_FILE_DISABLE_BUFFER);
-+                              "0.0.0.0/0 " SMACK_RUN_LABEL, 0);
-         if (r < 0)
-                 log_warning_errno(r, "Failed to set SMACK netlabel rule \"0.0.0.0/0 " SMACK_RUN_LABEL "\": %m");
--        r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/sys/fs/smackfs/netlabel", "127.0.0.1 -CIPSO", 0);
-         if (r < 0)
-                 log_warning_errno(r, "Failed to set SMACK netlabel rule \"127.0.0.1 -CIPSO\": %m");
- #endif
---- a/src/home/homework.c
-+++ b/src/home/homework.c
-@@ -278,7 +278,7 @@ static void drop_caches_now(void) {
-          * for details. We write "2" into /proc/sys/vm/drop_caches to ensure dentries/inodes are flushed, but
-          * not more. */
- 
--        r = write_string_file("/proc/sys/vm/drop_caches", "2\n", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/proc/sys/vm/drop_caches", "2\n", 0);
-         if (r < 0)
-                 log_warning_errno(r, "Failed to drop caches, ignoring: %m");
-         else
---- a/src/libsystemd/sd-device/sd-device.c
-+++ b/src/libsystemd/sd-device/sd-device.c
-@@ -2515,7 +2515,7 @@ _public_ int sd_device_set_sysattr_value
-         if (!value)
-                 return -ENOMEM;
- 
--        r = write_string_file(path, value, WRITE_STRING_FILE_DISABLE_BUFFER | WRITE_STRING_FILE_NOFOLLOW);
-+        r = write_string_file(path, value, 0 | WRITE_STRING_FILE_NOFOLLOW);
-         if (r < 0) {
-                 /* On failure, clear cache entry, as we do not know how it fails. */
-                 device_remove_cached_sysattr_value(device, sysattr);
---- a/src/nspawn/nspawn-cgroup.c
-+++ b/src/nspawn/nspawn-cgroup.c
-@@ -122,7 +122,7 @@ int sync_cgroup(pid_t pid, CGroupUnified
-         fn = strjoina(tree, cgroup, "/cgroup.procs");
- 
-         sprintf(pid_string, PID_FMT, pid);
--        r = write_string_file(fn, pid_string, WRITE_STRING_FILE_DISABLE_BUFFER|WRITE_STRING_FILE_MKDIR_0755);
-+        r = write_string_file(fn, pid_string, WRITE_STRING_FILE_MKDIR_0755);
-         if (r < 0) {
-                 log_error_errno(r, "Failed to move process: %m");
-                 goto finish;
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -2774,7 +2774,7 @@ static int reset_audit_loginuid(void) {
-         if (streq(p, "4294967295"))
-                 return 0;
- 
--        r = write_string_file("/proc/self/loginuid", "4294967295", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/proc/self/loginuid", "4294967295", 0);
-         if (r < 0) {
-                 log_error_errno(r,
-                                 "Failed to reset audit login UID. This probably means that your kernel is too\n"
-@@ -4214,7 +4214,7 @@ static int setup_uid_map(
-                 return log_oom();
- 
-         xsprintf(uid_map, "/proc/" PID_FMT "/uid_map", pid);
--        r = write_string_file(uid_map, s, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(uid_map, s, 0);
-         if (r < 0)
-                 return log_error_errno(r, "Failed to write UID map: %m");
- 
-@@ -4224,7 +4224,7 @@ static int setup_uid_map(
-                 return log_oom();
- 
-         xsprintf(uid_map, "/proc/" PID_FMT "/gid_map", pid);
--        r = write_string_file(uid_map, s, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(uid_map, s, 0);
-         if (r < 0)
-                 return log_error_errno(r, "Failed to write GID map: %m");
- 
---- a/src/shared/binfmt-util.c
-+++ b/src/shared/binfmt-util.c
-@@ -46,7 +46,7 @@ int disable_binfmt(void) {
-                 return 0;
-         }
- 
--        r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", 0);
-         if (r < 0)
-                 return log_warning_errno(r, "Failed to unregister binfmt_misc entries: %m");
- 
---- a/src/shared/cgroup-setup.c
-+++ b/src/shared/cgroup-setup.c
-@@ -351,7 +351,7 @@ int cg_attach(const char *controller, co
- 
-         xsprintf(c, PID_FMT "\n", pid);
- 
--        r = write_string_file(fs, c, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(fs, c, 0);
-         if (r == -EOPNOTSUPP && cg_is_threaded(controller, path) > 0)
-                 /* When the threaded mode is used, we cannot read/write the file. Let's return recognizable error. */
-                 return -EUCLEAN;
-@@ -964,7 +964,7 @@ int cg_enable_everywhere(
-                                         return log_debug_errno(errno, "Failed to open cgroup.subtree_control file of %s: %m", p);
-                         }
- 
--                        r = write_string_stream(f, s, WRITE_STRING_FILE_DISABLE_BUFFER);
-+                        r = write_string_stream(f, s, 0);
-                         if (r < 0) {
-                                 log_debug_errno(r, "Failed to %s controller %s for %s (%s): %m",
-                                                 FLAGS_SET(mask, bit) ? "enable" : "disable", n, p, fs);
---- a/src/shared/coredump-util.c
-+++ b/src/shared/coredump-util.c
-@@ -163,7 +163,7 @@ int set_coredump_filter(uint64_t value)
-         xsprintf(t, "0x%"PRIx64, value);
- 
-         return write_string_file("/proc/self/coredump_filter", t,
--                                 WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER);
-+                                 0);
- }
- 
- /* Turn off core dumps but only if we're running outside of a container. */
---- a/src/shared/sleep-util.c
-+++ b/src/shared/sleep-util.c
-@@ -1044,7 +1044,7 @@ int write_resume_config(dev_t devno, uin
- 
-         /* We write the offset first since it's safer. Note that this file is only available in 4.17+, so
-          * fail gracefully if it doesn't exist and we're only overwriting it with 0. */
--        r = write_string_file("/sys/power/resume_offset", offset_str, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/sys/power/resume_offset", offset_str, 0);
-         if (r == -ENOENT) {
-                 if (offset != 0)
-                         return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP),
-@@ -1060,7 +1060,7 @@ int write_resume_config(dev_t devno, uin
-                 log_debug("Wrote resume_offset=%s for device '%s' to /sys/power/resume_offset.",
-                           offset_str, device);
- 
--        r = write_string_file("/sys/power/resume", devno_str, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/sys/power/resume", devno_str, 0);
-         if (r < 0)
-                 return log_error_errno(r,
-                                        "Failed to write device '%s' (%s) to /sys/power/resume: %m",
---- a/src/shared/smack-util.c
-+++ b/src/shared/smack-util.c
-@@ -113,7 +113,7 @@ int mac_smack_apply_pid(pid_t pid, const
-                 return 0;
- 
-         p = procfs_file_alloca(pid, "attr/current");
--        r = write_string_file(p, label, WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file(p, label, 0);
-         if (r < 0)
-                 return r;
- 
---- a/src/sleep/sleep.c
-+++ b/src/sleep/sleep.c
-@@ -139,7 +139,7 @@ static int write_mode(char **modes) {
-         STRV_FOREACH(mode, modes) {
-                 int k;
- 
--                k = write_string_file("/sys/power/disk", *mode, WRITE_STRING_FILE_DISABLE_BUFFER);
-+                k = write_string_file("/sys/power/disk", *mode, 0);
-                 if (k >= 0)
-                         return 0;
- 
-@@ -160,7 +160,7 @@ static int write_state(FILE **f, char **
-         STRV_FOREACH(state, states) {
-                 int k;
- 
--                k = write_string_stream(*f, *state, WRITE_STRING_FILE_DISABLE_BUFFER);
-+                k = write_string_stream(*f, *state, 0);
-                 if (k >= 0)
-                         return 0;
-                 log_debug_errno(k, "Failed to write '%s' to /sys/power/state: %m", *state);
---- a/src/udev/udev-rules.c
-+++ b/src/udev/udev-rules.c
-@@ -2634,7 +2634,6 @@ static int udev_rule_apply_token_to_even
-                 log_event_debug(dev, token, "ATTR '%s' writing '%s'", buf, value);
-                 r = write_string_file(buf, value,
-                                       WRITE_STRING_FILE_VERIFY_ON_FAILURE |
--                                      WRITE_STRING_FILE_DISABLE_BUFFER |
-                                       WRITE_STRING_FILE_AVOID_NEWLINE |
-                                       WRITE_STRING_FILE_VERIFY_IGNORE_NEWLINE);
-                 if (r < 0)
---- a/src/vconsole/vconsole-setup.c
-+++ b/src/vconsole/vconsole-setup.c
-@@ -260,7 +260,7 @@ static int toggle_utf8_vc(const char *na
- static int toggle_utf8_sysfs(bool utf8) {
-         int r;
- 
--        r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), WRITE_STRING_FILE_DISABLE_BUFFER);
-+        r = write_string_file("/sys/module/vt/parameters/default_utf8", one_zero(utf8), 0);
-         if (r < 0)
-                 return log_warning_errno(r, "Failed to %s sysfs UTF-8 flag: %m", enable_disable(utf8));
- 
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0021-shared-Do-not-use-malloc_info-on-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
new file mode 100644
index 0000000..7eff069
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0021-shared-Do-not-use-malloc_info-on-musl.patch
@@ -0,0 +1,57 @@
+From 502597b9ddd6b145541b23fadca0b1d3ca9f6367 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 2 Aug 2023 12:20:40 -0700
+Subject: [PATCH 21/22] shared: Do not use malloc_info on musl
+
+Upstream-Status: Inappropriate [musl-specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/shared/bus-util.c      | 5 +++--
+ src/shared/common-signal.c | 4 ++--
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
+index 74f148c8b4..2d862a123d 100644
+--- a/src/shared/bus-util.c
++++ b/src/shared/bus-util.c
+@@ -611,15 +611,16 @@ static int method_dump_memory_state_by_fd(sd_bus_message *message, void *userdat
+         _cleanup_close_ int fd = -EBADF;
+         size_t dump_size;
+         FILE *f;
+-        int r;
++        int r = 0;
+ 
+         assert(message);
+ 
+         f = memstream_init(&m);
+         if (!f)
+                 return -ENOMEM;
+-
++#ifdef __GLIBC__
+         r = RET_NERRNO(malloc_info(/* options= */ 0, f));
++#endif
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/shared/common-signal.c b/src/shared/common-signal.c
+index 8e70e365dd..9e782caec9 100644
+--- a/src/shared/common-signal.c
++++ b/src/shared/common-signal.c
+@@ -65,12 +65,12 @@ int sigrtmin18_handler(sd_event_source *s, const struct signalfd_siginfo *si, vo
+                         log_oom();
+                         break;
+                 }
+-
++#ifdef __GLIBC__
+                 if (malloc_info(0, f) < 0) {
+                         log_error_errno(errno, "Failed to invoke malloc_info(): %m");
+                         break;
+                 }
+-
++#endif
+                 (void) memstream_dump(LOG_INFO, &m);
+                 break;
+         }
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0022-Handle-__cpu_mask-usage.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0022-Handle-__cpu_mask-usage.patch
deleted file mode 100644
index 580aff3..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0022-Handle-__cpu_mask-usage.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From a50ec65dbe660421052656dda7499c925005f486 Mon Sep 17 00:00:00 2001
-From: Scott Murray <scott.murray@konsulko.com>
-Date: Fri, 13 Sep 2019 19:26:27 -0400
-Subject: [PATCH] Handle __cpu_mask usage
-
-Fixes errors:
-
-src/test/test-cpu-set-util.c:18:54: error: '__cpu_mask' undeclared (first use in this function)
-src/test/test-sizeof.c:73:14: error: '__cpu_mask' undeclared (first use in this function)
-
-__cpu_mask is an internal type of glibc's cpu_set implementation, not
-part of the POSIX definition, which is problematic when building with
-musl, which does not define a matching type.  From inspection of musl's
-sched.h, however, it is clear that the corresponding type would be
-unsigned long, which does match glibc's actual __CPU_MASK_TYPE.  So,
-add a typedef to cpu-set-util.h defining __cpu_mask appropriately.
-
-Upstream-Status: Inappropriate [musl specific]
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
----
- src/shared/cpu-set-util.h | 2 ++
- src/test/test-sizeof.c    | 2 +-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
---- a/src/shared/cpu-set-util.h
-+++ b/src/shared/cpu-set-util.h
-@@ -6,6 +6,8 @@
- #include "macro.h"
- #include "missing_syscall.h"
- 
-+typedef unsigned long __cpu_mask;
-+
- /* This wraps the libc interface with a variable to keep the allocated size. */
- typedef struct CPUSet {
-         cpu_set_t *set;
---- a/src/test/test-sizeof.c
-+++ b/src/test/test-sizeof.c
-@@ -1,6 +1,5 @@
- /* SPDX-License-Identifier: LGPL-2.1-or-later */
- 
--#include <sched.h>
- #include <stdio.h>
- #include <string.h>
- #include <sys/resource.h>
-@@ -12,6 +11,7 @@
- #include <float.h>
- 
- #include "time-util.h"
-+#include "cpu-set-util.h"
- 
- /* Print information about various types. Useful when diagnosing
-  * gcc diagnostics on an unfamiliar architecture. */
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0022-avoid-missing-LOCK_EX-declaration.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0022-avoid-missing-LOCK_EX-declaration.patch
new file mode 100644
index 0000000..24f3bf7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0022-avoid-missing-LOCK_EX-declaration.patch
@@ -0,0 +1,43 @@
+From fd52f1764647e03a35e8f0ed0ef952049073ccbd Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Tue, 2 Jan 2024 11:03:27 +0800
+Subject: [PATCH 22/22] avoid missing LOCK_EX declaration
+
+This only happens on MUSL. Include sys/file.h to avoid compilation
+error about missing LOCK_EX declaration.
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/core/exec-invoke.c | 1 +
+ src/shared/dev-setup.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c
+index 70d963e269..7084811439 100644
+--- a/src/core/exec-invoke.c
++++ b/src/core/exec-invoke.c
+@@ -4,6 +4,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/mount.h>
+ #include <sys/prctl.h>
++#include <sys/file.h>
+ 
+ #if HAVE_PAM
+ #include <security/pam_appl.h>
+diff --git a/src/shared/dev-setup.h b/src/shared/dev-setup.h
+index 5339bc4e5e..0697495f23 100644
+--- a/src/shared/dev-setup.h
++++ b/src/shared/dev-setup.h
+@@ -2,6 +2,7 @@
+ #pragma once
+ 
+ #include <sys/types.h>
++#include <sys/file.h>
+ 
+ int lock_dev_console(void);
+ 
+-- 
+2.34.1
+
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0023-Handle-missing-gshadow.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0023-Handle-missing-gshadow.patch
deleted file mode 100644
index 19ee3ff..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0023-Handle-missing-gshadow.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From ebf0f69d8614b8d86a971b97ff0d847d1e5d47c9 Mon Sep 17 00:00:00 2001
-From: Alex Kiernan <alex.kiernan@gmail.com>
-Date: Tue, 10 Mar 2020 11:05:20 +0000
-Subject: [PATCH] Handle missing gshadow
-
-gshadow usage is now present in the userdb code. Mask all uses of it to
-allow compilation on musl
-
-Upstream-Status: Inappropriate [musl specific]
-Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
-[Rebased for v247]
-Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
----
- src/shared/user-record-nss.c | 20 ++++++++++++++++++++
- src/shared/user-record-nss.h |  4 ++++
- src/shared/userdb.c          |  7 ++++++-
- 3 files changed, 30 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/user-record-nss.c b/src/shared/user-record-nss.c
-index 88b8fc2f8f..a819d41bac 100644
---- a/src/shared/user-record-nss.c
-+++ b/src/shared/user-record-nss.c
-@@ -329,8 +329,10 @@ int nss_group_to_group_record(
-         if (isempty(grp->gr_name))
-                 return -EINVAL;
- 
-+#if ENABLE_GSHADOW
-         if (sgrp && !streq_ptr(sgrp->sg_namp, grp->gr_name))
-                 return -EINVAL;
-+#endif
- 
-         g = group_record_new();
-         if (!g)
-@@ -346,6 +348,7 @@ int nss_group_to_group_record(
- 
-         g->gid = grp->gr_gid;
- 
-+#if ENABLE_GSHADOW
-         if (sgrp) {
-                 if (looks_like_hashed_password(utf8_only(sgrp->sg_passwd))) {
-                         g->hashed_password = strv_new(sgrp->sg_passwd);
-@@ -361,6 +364,7 @@ int nss_group_to_group_record(
-                 if (r < 0)
-                         return r;
-         }
-+#endif
- 
-         r = json_build(&g->json, JSON_BUILD_OBJECT(
-                                        JSON_BUILD_PAIR("groupName", JSON_BUILD_STRING(g->group_name)),
-@@ -387,6 +391,7 @@ int nss_sgrp_for_group(const struct group *grp, struct sgrp *ret_sgrp, char **re
-         assert(ret_sgrp);
-         assert(ret_buffer);
- 
-+#if ENABLE_GSHADOW
-         for (;;) {
-                 _cleanup_free_ char *buf = NULL;
-                 struct sgrp sgrp, *result;
-@@ -415,6 +420,9 @@ int nss_sgrp_for_group(const struct group *grp, struct sgrp *ret_sgrp, char **re
-                 buflen *= 2;
-                 buf = mfree(buf);
-         }
-+#else
-+        return -ESRCH;
-+#endif
- }
- 
- int nss_group_record_by_name(
-@@ -426,7 +434,9 @@ int nss_group_record_by_name(
-         struct group grp, *result;
-         bool incomplete = false;
-         size_t buflen = 4096;
-+#if ENABLE_GSHADOW
-         struct sgrp sgrp, *sresult = NULL;
-+#endif
-         int r;
- 
-         assert(name);
-@@ -455,6 +465,7 @@ int nss_group_record_by_name(
-                 buf = mfree(buf);
-         }
- 
-+#if ENABLE_GSHADOW
-         if (with_shadow) {
-                 r = nss_sgrp_for_group(result, &sgrp, &sbuf);
-                 if (r < 0) {
-@@ -466,6 +477,9 @@ int nss_group_record_by_name(
-                 incomplete = true;
- 
-         r = nss_group_to_group_record(result, sresult, ret);
-+#else
-+        r = nss_group_to_group_record(result, NULL, ret);
-+#endif
-         if (r < 0)
-                 return r;
- 
-@@ -483,7 +497,9 @@ int nss_group_record_by_gid(
-         struct group grp, *result;
-         bool incomplete = false;
-         size_t buflen = 4096;
-+#if ENABLE_GSHADOW
-         struct sgrp sgrp, *sresult = NULL;
-+#endif
-         int r;
- 
-         for (;;) {
-@@ -509,6 +525,7 @@ int nss_group_record_by_gid(
-                 buf = mfree(buf);
-         }
- 
-+#if ENABLE_GSHADOW
-         if (with_shadow) {
-                 r = nss_sgrp_for_group(result, &sgrp, &sbuf);
-                 if (r < 0) {
-@@ -520,6 +537,9 @@ int nss_group_record_by_gid(
-                 incomplete = true;
- 
-         r = nss_group_to_group_record(result, sresult, ret);
-+#else
-+        r = nss_group_to_group_record(result, NULL, ret);
-+#endif
-         if (r < 0)
-                 return r;
- 
-diff --git a/src/shared/user-record-nss.h b/src/shared/user-record-nss.h
-index 22ab04d6ee..4e52e7a911 100644
---- a/src/shared/user-record-nss.h
-+++ b/src/shared/user-record-nss.h
-@@ -2,7 +2,11 @@
- #pragma once
- 
- #include <grp.h>
-+#if ENABLE_GSHADOW
- #include <gshadow.h>
-+#else
-+struct sgrp;
-+#endif
- #include <pwd.h>
- #include <shadow.h>
- 
-diff --git a/src/shared/userdb.c b/src/shared/userdb.c
-index a77eff4407..955e361d3a 100644
---- a/src/shared/userdb.c
-+++ b/src/shared/userdb.c
-@@ -1038,13 +1038,15 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
-                 if (gr) {
-                         _cleanup_free_ char *buffer = NULL;
-                         bool incomplete = false;
-+#if ENABLE_GSHADOW
-                         struct sgrp sgrp;
--
-+#endif
-                         if (streq_ptr(gr->gr_name, "root"))
-                                 iterator->synthesize_root = false;
-                         if (gr->gr_gid == GID_NOBODY)
-                                 iterator->synthesize_nobody = false;
- 
-+#if ENABLE_GSHADOW
-                         if (!FLAGS_SET(iterator->flags, USERDB_SUPPRESS_SHADOW)) {
-                                 r = nss_sgrp_for_group(gr, &sgrp, &buffer);
-                                 if (r < 0) {
-@@ -1057,6 +1059,9 @@ int groupdb_iterator_get(UserDBIterator *iterator, GroupRecord **ret) {
-                         }
- 
-                         r = nss_group_to_group_record(gr, r >= 0 ? &sgrp : NULL, ret);
-+#else
-+                        r = nss_group_to_group_record(gr, NULL, ret);
-+#endif
-                         if (r < 0)
-                                 return r;
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0024-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0024-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
deleted file mode 100644
index d64cec1..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0024-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From a2f56a2a6cdd5137bb1e680aa9f6c40540107166 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 12 Apr 2021 23:44:53 -0700
-Subject: [PATCH] missing_syscall.h: Define MIPS ABI defines for musl
-
-musl does not define _MIPS_SIM_ABI32, _MIPS_SIM_NABI32, _MIPS_SIM_ABI64
-unlike glibc where these are provided by libc headers, therefore define
-them here in case they are undefined
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/basic/missing_syscall.h  | 6 ++++++
- src/shared/base-filesystem.c | 1 +
- 2 files changed, 7 insertions(+)
-
-diff --git a/src/basic/missing_syscall.h b/src/basic/missing_syscall.h
-index 98cd037962..ea6a76c2e2 100644
---- a/src/basic/missing_syscall.h
-+++ b/src/basic/missing_syscall.h
-@@ -20,6 +20,12 @@
- #include <asm/sgidefs.h>
- #endif
- 
-+#ifndef _MIPS_SIM_ABI32
-+#define _MIPS_SIM_ABI32	1
-+#define _MIPS_SIM_NABI32 2
-+#define _MIPS_SIM_ABI64	3
-+#endif
-+
- #include "macro.h"
- #include "missing_keyctl.h"
- #include "missing_stat.h"
-diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
-index 2726dc946a..484f63e0b4 100644
---- a/src/shared/base-filesystem.c
-+++ b/src/shared/base-filesystem.c
-@@ -20,6 +20,7 @@
- #include "string-util.h"
- #include "umask-util.h"
- #include "user-util.h"
-+#include "missing_syscall.h"
- 
- typedef struct BaseFilesystem {
-         const char *dir;      /* directory or symlink to create */
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0028-sd-event-Make-malloc_trim-conditional-on-glibc.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0028-sd-event-Make-malloc_trim-conditional-on-glibc.patch
deleted file mode 100644
index c9ec000..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0028-sd-event-Make-malloc_trim-conditional-on-glibc.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 148645ba8b62f04c7c5ff5907378663f97880f22 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 2 Aug 2023 12:06:27 -0700
-Subject: [PATCH 1/4] sd-event: Make malloc_trim() conditional on glibc
-
-musl does not have this API
-
-Upstream-Status: Inappropriate [musl-specific]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/libsystemd/sd-event/sd-event.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
-index aba458185b..48c94a7672 100644
---- a/src/libsystemd/sd-event/sd-event.c
-+++ b/src/libsystemd/sd-event/sd-event.c
-@@ -1874,7 +1874,7 @@ _public_ int sd_event_add_exit(
- }
-
- _public_ int sd_event_trim_memory(void) {
--        int r;
-+        int r = 0;
-
-         /* A default implementation of a memory pressure callback. Simply releases our own allocation caches
-          * and glibc's. This is automatically used when people call sd_event_add_memory_pressure() with a
-@@ -1888,7 +1888,9 @@ _public_ int sd_event_trim_memory(void) {
-
-         usec_t before_timestamp = now(CLOCK_MONOTONIC);
-         hashmap_trim_pools();
-+#ifdef __GLIBC__
-         r = malloc_trim(0);
-+#endif
-         usec_t after_timestamp = now(CLOCK_MONOTONIC);
-
-         if (r > 0)
---
-2.41.0
-
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0029-shared-Do-not-use-malloc_info-on-musl.patch b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0029-shared-Do-not-use-malloc_info-on-musl.patch
deleted file mode 100644
index 8e38655..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd/0029-shared-Do-not-use-malloc_info-on-musl.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 9430646e72ea5d260ade300038a6d976fecf7da5 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 2 Aug 2023 12:20:40 -0700
-Subject: [PATCH 4/4] shared: Do not use malloc_info on musl
-
-Upstream-Status: Inappropriate [musl-specific]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/shared/bus-util.c      | 5 +++--
- src/shared/common-signal.c | 4 ++--
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
---- a/src/shared/bus-util.c
-+++ b/src/shared/bus-util.c
-@@ -617,15 +617,16 @@ static int method_dump_memory_state_by_f
-         _cleanup_close_ int fd = -EBADF;
-         size_t dump_size;
-         FILE *f;
--        int r;
-+        int r = 0;
- 
-         assert(message);
- 
-         f = memstream_init(&m);
-         if (!f)
-                 return -ENOMEM;
--
-+#ifdef __GLIBC__
-         r = RET_NERRNO(malloc_info(/* options= */ 0, f));
-+#endif
-         if (r < 0)
-                 return r;
- 
---- a/src/shared/common-signal.c
-+++ b/src/shared/common-signal.c
-@@ -65,12 +65,12 @@ int sigrtmin18_handler(sd_event_source *
-                         log_oom();
-                         break;
-                 }
--
-+#ifdef __GLIBC__
-                 if (malloc_info(0, f) < 0) {
-                         log_error_errno(errno, "Failed to invoke malloc_info(): %m");
-                         break;
-                 }
--
-+#endif
-                 (void) memstream_dump(LOG_INFO, &m);
-                 break;
-         }
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_254.4.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_254.4.bb
deleted file mode 100644
index 0b21194..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_254.4.bb
+++ /dev/null
@@ -1,74 +0,0 @@
-SUMMARY = "libsystemd static library"
-DESCRIPTION = "libsystemd static library built specifically as an integral component of sdbus-c++"
-
-SECTION = "libs"
-
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
-
-inherit meson pkgconfig
-
-DEPENDS += "gperf-native gettext-native util-linux libcap util-linux python3-jinja2-native"
-
-SRCREV = "2e7504449a51fb38db9cd2da391c6434f82def51"
-SRCBRANCH = "v254-stable"
-SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH} \
-           file://static-libsystemd-pkgconfig.patch \
-           "
-
-# patches needed by musl
-SRC_URI:append:libc-musl = " ${SRC_URI_MUSL}"
-
-SRC_URI_MUSL = "\
-               file://0009-missing_type.h-add-comparison_fn_t.patch \
-               file://0010-add-fallback-parse_printf_format-implementation.patch \
-               file://0011-src-basic-missing.h-check-for-missing-strndupa.patch \
-               file://0012-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
-               file://0013-add-missing-FTW_-macros-for-musl.patch \
-               file://0014-Use-uintmax_t-for-handling-rlim_t.patch \
-               file://0016-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
-               file://0017-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
-               file://0018-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
-               file://0019-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
-               file://0020-avoid-redefinition-of-prctl_mm_map-structure.patch \
-               file://0021-do-not-disable-buffer-in-writing-files.patch \
-               file://0022-Handle-__cpu_mask-usage.patch \
-               file://0023-Handle-missing-gshadow.patch \
-               file://0024-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch \
-               file://0005-pass-correct-parameters-to-getdents64.patch \
-               file://0001-Adjust-for-musl-headers.patch \
-               file://0006-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch \
-               file://0003-errno-util-Make-STRERROR-portable-for-musl.patch \
-               file://0028-sd-event-Make-malloc_trim-conditional-on-glibc.patch \
-               file://0029-shared-Do-not-use-malloc_info-on-musl.patch \
-               "
-
-PACKAGECONFIG ??= "gshadow idn"
-PACKAGECONFIG:remove:libc-musl = " gshadow idn"
-PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
-PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
-
-CFLAGS:append:libc-musl = " -D__UAPI_DEF_ETHHDR=0 "
-
-EXTRA_OEMESON += "-Dstatic-libsystemd=pic"
-
-S = "${WORKDIR}/git"
-
-RDEPENDS:${PN}-dev = ""
-
-do_compile() {
-    ninja -v ${PARALLEL_MAKE} version.h
-    ninja -v ${PARALLEL_MAKE} libsystemd.a
-    ninja -v ${PARALLEL_MAKE} src/libsystemd/libsystemd.pc
-}
-
-do_install () {
-    install -d ${D}${libdir}
-    install ${B}/libsystemd.a ${D}${libdir}
-
-    install -d ${D}${includedir}/systemd
-    install ${S}/src/systemd/*.h ${D}${includedir}/systemd
-
-    install -d ${D}${libdir}/pkgconfig
-    install ${B}/src/libsystemd/libsystemd.pc ${D}${libdir}/pkgconfig
-}
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_255.4.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_255.4.bb
new file mode 100644
index 0000000..3b44e02
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-libsystemd_255.4.bb
@@ -0,0 +1,77 @@
+SUMMARY = "libsystemd static library"
+DESCRIPTION = "libsystemd static library built specifically as an integral component of sdbus-c++"
+
+SECTION = "libs"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
+
+inherit meson pkgconfig
+
+DEPENDS += "gperf-native gettext-native util-linux libcap util-linux python3-jinja2-native"
+
+SRCREV = "387a14a7b67b8b76adaed4175e14bb7e39b2f738"
+SRCBRANCH = "v255-stable"
+SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=https;branch=${SRCBRANCH} \
+           file://static-libsystemd-pkgconfig.patch \
+           "
+
+# patches needed by musl
+SRC_URI:append:libc-musl = " ${SRC_URI_MUSL}"
+
+SRC_URI_MUSL = "\
+    file://0001-missing_type.h-add-comparison_fn_t.patch \
+    file://0002-add-fallback-parse_printf_format-implementation.patch \
+    file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
+    file://0003-src-basic-missing.h-check-for-missing-strndupa.patch \
+    file://0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch \
+    file://0005-add-missing-FTW_-macros-for-musl.patch \
+    file://0006-Use-uintmax_t-for-handling-rlim_t.patch \
+    file://0007-don-t-pass-AT_SYMLINK_NOFOLLOW-flag-to-faccessat.patch \
+    file://0008-Define-glibc-compatible-basename-for-non-glibc-syste.patch \
+    file://0008-implment-systemd-sysv-install-for-OE.patch \
+    file://0009-Do-not-disable-buffering-when-writing-to-oom_score_a.patch \
+    file://0010-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch \
+    file://0011-avoid-redefinition-of-prctl_mm_map-structure.patch \
+    file://0012-do-not-disable-buffer-in-writing-files.patch \
+    file://0013-Handle-__cpu_mask-usage.patch \
+    file://0014-Handle-missing-gshadow.patch \
+    file://0015-missing_syscall.h-Define-MIPS-ABI-defines-for-musl.patch \
+    file://0016-pass-correct-parameters-to-getdents64.patch \
+    file://0017-Adjust-for-musl-headers.patch \
+    file://0018-test-bus-error-strerror-is-assumed-to-be-GNU-specifi.patch \
+    file://0019-errno-util-Make-STRERROR-portable-for-musl.patch \
+    file://0020-sd-event-Make-malloc_trim-conditional-on-glibc.patch \
+    file://0021-shared-Do-not-use-malloc_info-on-musl.patch \
+    file://0022-avoid-missing-LOCK_EX-declaration.patch \
+"
+
+PACKAGECONFIG ??= "gshadow idn"
+PACKAGECONFIG:remove:libc-musl = " gshadow idn"
+PACKAGECONFIG[gshadow] = "-Dgshadow=true,-Dgshadow=false"
+PACKAGECONFIG[idn] = "-Didn=true,-Didn=false"
+
+CFLAGS:append:libc-musl = " -D__UAPI_DEF_ETHHDR=0 "
+
+EXTRA_OEMESON += "-Dstatic-libsystemd=pic"
+
+S = "${WORKDIR}/git"
+
+RDEPENDS:${PN}-dev = ""
+
+do_compile() {
+    ninja -v ${PARALLEL_MAKE} version.h
+    ninja -v ${PARALLEL_MAKE} libsystemd.a
+    ninja -v ${PARALLEL_MAKE} src/libsystemd/libsystemd.pc
+}
+
+do_install () {
+    install -d ${D}${libdir}
+    install ${B}/libsystemd.a ${D}${libdir}
+
+    install -d ${D}${includedir}/systemd
+    install ${S}/src/systemd/*.h ${D}${includedir}/systemd
+
+    install -d ${D}${libdir}/pkgconfig
+    install ${B}/src/libsystemd/libsystemd.pc ${D}${libdir}/pkgconfig
+}
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.4.0.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.4.0.bb
deleted file mode 100644
index 956b4b8..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.4.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "sdbus-c++ native tools"
-DESCRIPTION = "Native interface code generator for development with sdbus-c++"
-
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
-
-inherit cmake
-
-DEPENDS += "expat"
-
-SRCREV = "b482cd6d0890e3f9ae141b4aeb07d3724e48b3db"
-SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master;subpath=tools"
-
-S = "${WORKDIR}/tools"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.5.0.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.5.0.bb
new file mode 100644
index 0000000..6b1af25
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++-tools_1.5.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "sdbus-c++ native tools"
+DESCRIPTION = "Native interface code generator for development with sdbus-c++"
+
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
+
+inherit cmake
+
+DEPENDS += "expat"
+
+SRCREV = "30d9f1d46258c2be4ce29b7f7f168ecdf6d4f328"
+SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master;subpath=tools"
+
+S = "${WORKDIR}/tools"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.4.0.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.4.0.bb
deleted file mode 100644
index ca91b35..0000000
--- a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.4.0.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "sdbus-c++"
-DESCRIPTION = "High-level C++ D-Bus library designed to provide easy-to-use yet powerful API in modern C++"
-
-SECTION = "libs"
-
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
-
-inherit cmake pkgconfig systemd ptest
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'with-external-libsystemd', 'with-builtin-libsystemd', d)} \
-                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}"
-PACKAGECONFIG[with-builtin-libsystemd] = ",,sdbus-c++-libsystemd,libcap,basu"
-PACKAGECONFIG[with-external-libsystemd] = ",,systemd,libsystemd"
-PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${PTEST_PATH},-DBUILD_TESTS=OFF,googletest gmock"
-
-DEPENDS += "expat"
-
-SRCREV = "b482cd6d0890e3f9ae141b4aeb07d3724e48b3db"
-
-SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master"
-SRC_URI += "file://run-ptest"
-
-EXTRA_OECMAKE = "-DBUILD_CODE_GEN=OFF \
-                 -DBUILD_DOC=ON \
-                 -DBUILD_DOXYGEN_DOC=OFF"
-
-S = "${WORKDIR}/git"
-
-# Link libatomic on architectures without 64bit atomics fixes
-# libsdbus-c++.so.1.1.0: undefined reference to `__atomic_load_8'
-LDFLAGS:append:mips = " -Wl,--no-as-needed -latomic -Wl,--as-needed"
-LDFLAGS:append:powerpc = " -Wl,--no-as-needed -latomic -Wl,--as-needed"
-LDFLAGS:append:riscv32 = " -Wl,--no-as-needed -latomic -Wl,--as-needed"
-
-do_install:append() {
-    if ! ${@bb.utils.contains('PTEST_ENABLED', '1', 'true', 'false', d)}; then
-        rm -rf ${D}${sysconfdir}/dbus-1
-    fi
-}
-
-do_install_ptest() {
-    DESTDIR='${D}' cmake_runcmake_build --target tests/install
-}
-
-FILES:${PN}-ptest =+ "${sysconfdir}/dbus-1/system.d/"
-FILES:${PN}-dev += "${bindir}/sdbus-c++-xml2cpp"
-
-RDEPENDS:${PN}-ptest += "dbus"
-# It adds -isystem which is spurious, no idea where it gets it from
-CCACHE_DISABLE = "1"
diff --git a/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.5.0.bb b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.5.0.bb
new file mode 100644
index 0000000..f52ba14
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/sdbus-c++/sdbus-c++_1.5.0.bb
@@ -0,0 +1,51 @@
+SUMMARY = "sdbus-c++"
+DESCRIPTION = "High-level C++ D-Bus library designed to provide easy-to-use yet powerful API in modern C++"
+
+SECTION = "libs"
+
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=1803fa9c2c3ce8cb06b4861d75310742"
+
+inherit cmake pkgconfig systemd ptest
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'with-external-libsystemd', 'with-builtin-libsystemd', d)} \
+                   ${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}"
+PACKAGECONFIG[with-builtin-libsystemd] = ",,sdbus-c++-libsystemd,libcap,basu"
+PACKAGECONFIG[with-external-libsystemd] = ",,systemd,libsystemd"
+PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${PTEST_PATH},-DBUILD_TESTS=OFF,googletest gmock"
+
+DEPENDS += "expat"
+
+SRCREV = "30d9f1d46258c2be4ce29b7f7f168ecdf6d4f328"
+
+SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master"
+SRC_URI += "file://run-ptest"
+
+EXTRA_OECMAKE = "-DBUILD_CODE_GEN=OFF \
+                 -DBUILD_DOC=ON \
+                 -DBUILD_DOXYGEN_DOC=OFF"
+
+S = "${WORKDIR}/git"
+
+# Link libatomic on architectures without 64bit atomics fixes
+# libsdbus-c++.so.1.1.0: undefined reference to `__atomic_load_8'
+LDFLAGS:append:mips = " -Wl,--no-as-needed -latomic -Wl,--as-needed"
+LDFLAGS:append:powerpc = " -Wl,--no-as-needed -latomic -Wl,--as-needed"
+LDFLAGS:append:riscv32 = " -Wl,--no-as-needed -latomic -Wl,--as-needed"
+
+do_install:append() {
+    if ! ${@bb.utils.contains('PTEST_ENABLED', '1', 'true', 'false', d)}; then
+        rm -rf ${D}${sysconfdir}/dbus-1
+    fi
+}
+
+do_install_ptest() {
+    DESTDIR='${D}' cmake_runcmake_build --target tests/install
+}
+
+FILES:${PN}-ptest =+ "${sysconfdir}/dbus-1/system.d/"
+FILES:${PN}-dev += "${bindir}/sdbus-c++-xml2cpp"
+
+RDEPENDS:${PN}-ptest += "dbus"
+# It adds -isystem which is spurious, no idea where it gets it from
+CCACHE_DISABLE = "1"
diff --git a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
index dcac0cd..58d8325 100644
--- a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
+++ b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils-crates.inc
@@ -18,18 +18,19 @@
     crate://crates.io/binary-heap-plus/0.5.0 \
     crate://crates.io/bindgen/0.63.0 \
     crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/bitflags/2.4.0 \
+    crate://crates.io/bitflags/2.4.2 \
     crate://crates.io/blake2b_simd/1.0.2 \
-    crate://crates.io/blake3/1.5.0 \
+    crate://crates.io/blake3/1.5.1 \
     crate://crates.io/block-buffer/0.10.3 \
-    crate://crates.io/bstr/1.9.0 \
+    crate://crates.io/bstr/1.9.1 \
     crate://crates.io/bumpalo/3.11.1 \
     crate://crates.io/bytecount/0.6.7 \
     crate://crates.io/byteorder/1.5.0 \
     crate://crates.io/cc/1.0.79 \
     crate://crates.io/cexpr/0.6.0 \
     crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/chrono/0.4.32 \
+    crate://crates.io/cfg_aliases/0.1.1 \
+    crate://crates.io/chrono/0.4.35 \
     crate://crates.io/clang-sys/1.4.0 \
     crate://crates.io/clap/4.4.2 \
     crate://crates.io/clap_builder/4.4.2 \
@@ -59,7 +60,7 @@
     crate://crates.io/crossterm_winapi/0.9.1 \
     crate://crates.io/crunchy/0.2.2 \
     crate://crates.io/crypto-common/0.1.6 \
-    crate://crates.io/ctrlc/3.4.1 \
+    crate://crates.io/ctrlc/3.4.4 \
     crate://crates.io/custom_derive/0.1.7 \
     crate://crates.io/data-encoding/2.5.0 \
     crate://crates.io/data-encoding-macro/0.1.14 \
@@ -73,8 +74,8 @@
     crate://crates.io/encode_unicode/0.3.6 \
     crate://crates.io/env_logger/0.8.4 \
     crate://crates.io/errno/0.3.8 \
-    crate://crates.io/exacl/0.11.0 \
-    crate://crates.io/fastrand/2.0.0 \
+    crate://crates.io/exacl/0.12.0 \
+    crate://crates.io/fastrand/2.0.1 \
     crate://crates.io/file_diff/1.0.0 \
     crate://crates.io/filetime/0.2.23 \
     crate://crates.io/flate2/1.0.24 \
@@ -98,7 +99,7 @@
     crate://crates.io/generic-array/0.14.6 \
     crate://crates.io/getrandom/0.2.9 \
     crate://crates.io/glob/0.3.1 \
-    crate://crates.io/half/2.3.1 \
+    crate://crates.io/half/2.4.0 \
     crate://crates.io/hashbrown/0.13.2 \
     crate://crates.io/hermit-abi/0.3.2 \
     crate://crates.io/hex/0.4.3 \
@@ -110,7 +111,7 @@
     crate://crates.io/inotify/0.9.6 \
     crate://crates.io/inotify-sys/0.1.5 \
     crate://crates.io/io-lifetimes/1.0.11 \
-    crate://crates.io/itertools/0.12.0 \
+    crate://crates.io/itertools/0.12.1 \
     crate://crates.io/itoa/1.0.4 \
     crate://crates.io/js-sys/0.3.64 \
     crate://crates.io/keccak/0.1.4 \
@@ -118,13 +119,13 @@
     crate://crates.io/kqueue-sys/1.0.3 \
     crate://crates.io/lazy_static/1.4.0 \
     crate://crates.io/lazycell/1.3.0 \
-    crate://crates.io/libc/0.2.152 \
+    crate://crates.io/libc/0.2.153 \
     crate://crates.io/libloading/0.7.4 \
     crate://crates.io/libm/0.2.7 \
     crate://crates.io/linux-raw-sys/0.3.8 \
     crate://crates.io/linux-raw-sys/0.4.12 \
     crate://crates.io/lock_api/0.4.9 \
-    crate://crates.io/log/0.4.17 \
+    crate://crates.io/log/0.4.20 \
     crate://crates.io/lscolors/0.16.0 \
     crate://crates.io/match_cfg/0.1.0 \
     crate://crates.io/md-5/0.10.6 \
@@ -132,14 +133,14 @@
     crate://crates.io/memmap2/0.9.0 \
     crate://crates.io/minimal-lexical/0.2.1 \
     crate://crates.io/miniz_oxide/0.5.4 \
-    crate://crates.io/mio/0.8.10 \
-    crate://crates.io/nix/0.27.1 \
+    crate://crates.io/mio/0.8.11 \
+    crate://crates.io/nix/0.28.0 \
     crate://crates.io/nom/7.1.3 \
     crate://crates.io/notify/6.0.1 \
     crate://crates.io/nu-ansi-term/0.49.0 \
     crate://crates.io/num-bigint/0.4.4 \
     crate://crates.io/num-integer/0.1.45 \
-    crate://crates.io/num-traits/0.2.17 \
+    crate://crates.io/num-traits/0.2.18 \
     crate://crates.io/num_threads/0.1.6 \
     crate://crates.io/number_prefix/0.4.0 \
     crate://crates.io/once_cell/1.19.0 \
@@ -172,11 +173,12 @@
     crate://crates.io/rand_chacha/0.3.1 \
     crate://crates.io/rand_core/0.6.4 \
     crate://crates.io/rand_pcg/0.3.1 \
-    crate://crates.io/rayon/1.8.0 \
-    crate://crates.io/rayon-core/1.12.0 \
+    crate://crates.io/rayon/1.9.0 \
+    crate://crates.io/rayon-core/1.12.1 \
     crate://crates.io/redox_syscall/0.4.1 \
+    crate://crates.io/redox_syscall/0.5.0 \
     crate://crates.io/reference-counted-singleton/0.1.2 \
-    crate://crates.io/regex/1.10.3 \
+    crate://crates.io/regex/1.10.4 \
     crate://crates.io/regex-automata/0.4.4 \
     crate://crates.io/regex-syntax/0.8.2 \
     crate://crates.io/relative-path/1.8.0 \
@@ -188,34 +190,35 @@
     crate://crates.io/rustc-hash/1.1.0 \
     crate://crates.io/rustc_version/0.4.0 \
     crate://crates.io/rustix/0.37.26 \
-    crate://crates.io/rustix/0.38.30 \
+    crate://crates.io/rustix/0.38.31 \
     crate://crates.io/same-file/1.0.6 \
-    crate://crates.io/scopeguard/1.1.0 \
+    crate://crates.io/scopeguard/1.2.0 \
     crate://crates.io/self_cell/1.0.3 \
     crate://crates.io/selinux/0.4.0 \
     crate://crates.io/selinux-sys/0.6.2 \
     crate://crates.io/semver/1.0.14 \
-    crate://crates.io/serde/1.0.147 \
+    crate://crates.io/serde/1.0.193 \
+    crate://crates.io/serde_derive/1.0.193 \
     crate://crates.io/sha1/0.10.6 \
     crate://crates.io/sha2/0.10.8 \
     crate://crates.io/sha3/0.10.8 \
-    crate://crates.io/shlex/1.1.0 \
+    crate://crates.io/shlex/1.3.0 \
     crate://crates.io/signal-hook/0.3.17 \
     crate://crates.io/signal-hook-mio/0.2.3 \
     crate://crates.io/signal-hook-registry/1.4.0 \
     crate://crates.io/siphasher/0.3.10 \
     crate://crates.io/slab/0.4.7 \
     crate://crates.io/sm3/0.4.2 \
-    crate://crates.io/smallvec/1.13.0 \
+    crate://crates.io/smallvec/1.13.1 \
     crate://crates.io/smawk/0.3.1 \
     crate://crates.io/socket2/0.5.3 \
     crate://crates.io/strsim/0.10.0 \
     crate://crates.io/syn/1.0.109 \
-    crate://crates.io/syn/2.0.23 \
-    crate://crates.io/tempfile/3.9.0 \
+    crate://crates.io/syn/2.0.32 \
+    crate://crates.io/tempfile/3.10.1 \
     crate://crates.io/terminal_size/0.2.6 \
     crate://crates.io/terminal_size/0.3.0 \
-    crate://crates.io/textwrap/0.16.0 \
+    crate://crates.io/textwrap/0.16.1 \
     crate://crates.io/thiserror/1.0.37 \
     crate://crates.io/thiserror-impl/1.0.37 \
     crate://crates.io/time/0.3.20 \
@@ -225,15 +228,15 @@
     crate://crates.io/typenum/1.15.0 \
     crate://crates.io/unicode-ident/1.0.5 \
     crate://crates.io/unicode-linebreak/0.1.5 \
-    crate://crates.io/unicode-segmentation/1.10.1 \
+    crate://crates.io/unicode-segmentation/1.11.0 \
     crate://crates.io/unicode-width/0.1.11 \
     crate://crates.io/unicode-xid/0.2.4 \
     crate://crates.io/unindent/0.2.1 \
     crate://crates.io/utf8parse/0.2.1 \
-    crate://crates.io/uuid/1.2.2 \
+    crate://crates.io/uuid/1.7.0 \
     crate://crates.io/uutils_term_grid/0.3.0 \
     crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/walkdir/2.4.0 \
+    crate://crates.io/walkdir/2.5.0 \
     crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
     crate://crates.io/wasm-bindgen/0.2.87 \
     crate://crates.io/wasm-bindgen-backend/0.2.87 \
@@ -241,7 +244,7 @@
     crate://crates.io/wasm-bindgen-macro-support/0.2.87 \
     crate://crates.io/wasm-bindgen-shared/0.2.87 \
     crate://crates.io/which/4.3.0 \
-    crate://crates.io/wild/2.2.0 \
+    crate://crates.io/wild/2.2.1 \
     crate://crates.io/winapi/0.3.9 \
     crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
     crate://crates.io/winapi-util/0.1.6 \
@@ -295,18 +298,19 @@
 SRC_URI[binary-heap-plus-0.5.0.sha256sum] = "e4551d8382e911ecc0d0f0ffb602777988669be09447d536ff4388d1def11296"
 SRC_URI[bindgen-0.63.0.sha256sum] = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885"
 SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-SRC_URI[bitflags-2.4.0.sha256sum] = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+SRC_URI[bitflags-2.4.2.sha256sum] = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
 SRC_URI[blake2b_simd-1.0.2.sha256sum] = "23285ad32269793932e830392f2fe2f83e26488fd3ec778883a93c8323735780"
-SRC_URI[blake3-1.5.0.sha256sum] = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87"
+SRC_URI[blake3-1.5.1.sha256sum] = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52"
 SRC_URI[block-buffer-0.10.3.sha256sum] = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
-SRC_URI[bstr-1.9.0.sha256sum] = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc"
+SRC_URI[bstr-1.9.1.sha256sum] = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706"
 SRC_URI[bumpalo-3.11.1.sha256sum] = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
 SRC_URI[bytecount-0.6.7.sha256sum] = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205"
 SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
 SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
 SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-SRC_URI[chrono-0.4.32.sha256sum] = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a"
+SRC_URI[cfg_aliases-0.1.1.sha256sum] = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+SRC_URI[chrono-0.4.35.sha256sum] = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
 SRC_URI[clang-sys-1.4.0.sha256sum] = "fa2e27ae6ab525c3d369ded447057bca5438d86dc3a68f6faafb8269ba82ebf3"
 SRC_URI[clap-4.4.2.sha256sum] = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6"
 SRC_URI[clap_builder-4.4.2.sha256sum] = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08"
@@ -336,7 +340,7 @@
 SRC_URI[crossterm_winapi-0.9.1.sha256sum] = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
 SRC_URI[crunchy-0.2.2.sha256sum] = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
 SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
-SRC_URI[ctrlc-3.4.1.sha256sum] = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf"
+SRC_URI[ctrlc-3.4.4.sha256sum] = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345"
 SRC_URI[custom_derive-0.1.7.sha256sum] = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"
 SRC_URI[data-encoding-2.5.0.sha256sum] = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
 SRC_URI[data-encoding-macro-0.1.14.sha256sum] = "20c01c06f5f429efdf2bae21eb67c28b3df3cf85b7dd2d8ef09c0838dac5d33e"
@@ -350,8 +354,8 @@
 SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
 SRC_URI[env_logger-0.8.4.sha256sum] = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
 SRC_URI[errno-0.3.8.sha256sum] = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
-SRC_URI[exacl-0.11.0.sha256sum] = "c695152c1c2777163ea93fff517edc6dd1f8fc226c14b0d60cdcde0beb316d9f"
-SRC_URI[fastrand-2.0.0.sha256sum] = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
+SRC_URI[exacl-0.12.0.sha256sum] = "22be12de19decddab85d09f251ec8363f060ccb22ec9c81bc157c0c8433946d8"
+SRC_URI[fastrand-2.0.1.sha256sum] = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
 SRC_URI[file_diff-1.0.0.sha256sum] = "31a7a908b8f32538a2143e59a6e4e2508988832d5d4d6f7c156b3cbc762643a5"
 SRC_URI[filetime-0.2.23.sha256sum] = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
 SRC_URI[flate2-1.0.24.sha256sum] = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
@@ -375,7 +379,7 @@
 SRC_URI[generic-array-0.14.6.sha256sum] = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
 SRC_URI[getrandom-0.2.9.sha256sum] = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
 SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-SRC_URI[half-2.3.1.sha256sum] = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872"
+SRC_URI[half-2.4.0.sha256sum] = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e"
 SRC_URI[hashbrown-0.13.2.sha256sum] = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
 SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
 SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
@@ -387,7 +391,7 @@
 SRC_URI[inotify-0.9.6.sha256sum] = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
 SRC_URI[inotify-sys-0.1.5.sha256sum] = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
 SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-SRC_URI[itertools-0.12.0.sha256sum] = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
+SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
 SRC_URI[itoa-1.0.4.sha256sum] = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
 SRC_URI[js-sys-0.3.64.sha256sum] = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
 SRC_URI[keccak-0.1.4.sha256sum] = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940"
@@ -395,13 +399,13 @@
 SRC_URI[kqueue-sys-1.0.3.sha256sum] = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587"
 SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
-SRC_URI[libc-0.2.152.sha256sum] = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
+SRC_URI[libc-0.2.153.sha256sum] = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 SRC_URI[libloading-0.7.4.sha256sum] = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
 SRC_URI[libm-0.2.7.sha256sum] = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
 SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
 SRC_URI[linux-raw-sys-0.4.12.sha256sum] = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
 SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
-SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
 SRC_URI[lscolors-0.16.0.sha256sum] = "ab0b209ec3976527806024406fe765474b9a1750a0ed4b8f0372364741f50e7b"
 SRC_URI[match_cfg-0.1.0.sha256sum] = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
 SRC_URI[md-5-0.10.6.sha256sum] = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
@@ -409,14 +413,14 @@
 SRC_URI[memmap2-0.9.0.sha256sum] = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375"
 SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 SRC_URI[miniz_oxide-0.5.4.sha256sum] = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
-SRC_URI[mio-0.8.10.sha256sum] = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
-SRC_URI[nix-0.27.1.sha256sum] = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+SRC_URI[mio-0.8.11.sha256sum] = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+SRC_URI[nix-0.28.0.sha256sum] = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
 SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
 SRC_URI[notify-6.0.1.sha256sum] = "5738a2795d57ea20abec2d6d76c6081186709c0024187cd5977265eda6598b51"
 SRC_URI[nu-ansi-term-0.49.0.sha256sum] = "c073d3c1930d0751774acf49e66653acecb416c3a54c6ec095a9b11caddb5a68"
 SRC_URI[num-bigint-0.4.4.sha256sum] = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
 SRC_URI[num-integer-0.1.45.sha256sum] = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
-SRC_URI[num-traits-0.2.17.sha256sum] = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+SRC_URI[num-traits-0.2.18.sha256sum] = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 SRC_URI[num_threads-0.1.6.sha256sum] = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
 SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
 SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
@@ -449,11 +453,12 @@
 SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
 SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 SRC_URI[rand_pcg-0.3.1.sha256sum] = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e"
-SRC_URI[rayon-1.8.0.sha256sum] = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
-SRC_URI[rayon-core-1.12.0.sha256sum] = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
+SRC_URI[rayon-1.9.0.sha256sum] = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
+SRC_URI[rayon-core-1.12.1.sha256sum] = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
 SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+SRC_URI[redox_syscall-0.5.0.sha256sum] = "13c178f952cc7eac391f3124bd9851d1ac0bdbc4c9de2d892ccd5f0d8b160e96"
 SRC_URI[reference-counted-singleton-0.1.2.sha256sum] = "f1bfbf25d7eb88ddcbb1ec3d755d0634da8f7657b2cb8b74089121409ab8228f"
-SRC_URI[regex-1.10.3.sha256sum] = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+SRC_URI[regex-1.10.4.sha256sum] = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
 SRC_URI[regex-automata-0.4.4.sha256sum] = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a"
 SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 SRC_URI[relative-path-1.8.0.sha256sum] = "4bf2521270932c3c7bed1a59151222bd7643c79310f2916f01925e1e16255698"
@@ -465,34 +470,35 @@
 SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
 SRC_URI[rustix-0.37.26.sha256sum] = "84f3f8f960ed3b5a59055428714943298bf3fa2d4a1d53135084e0544829d995"
-SRC_URI[rustix-0.38.30.sha256sum] = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
+SRC_URI[rustix-0.38.31.sha256sum] = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
 SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 SRC_URI[self_cell-1.0.3.sha256sum] = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba"
 SRC_URI[selinux-0.4.0.sha256sum] = "a00576725d21b588213fbd4af84cd7e4cc4304e8e9bd6c0f5a1498a3e2ca6a51"
 SRC_URI[selinux-sys-0.6.2.sha256sum] = "806d381649bb85347189d2350728817418138d11d738e2482cb644ec7f3c755d"
 SRC_URI[semver-1.0.14.sha256sum] = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
-SRC_URI[serde-1.0.147.sha256sum] = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"
+SRC_URI[serde-1.0.193.sha256sum] = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+SRC_URI[serde_derive-1.0.193.sha256sum] = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
 SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
 SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
 SRC_URI[sha3-0.10.8.sha256sum] = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
-SRC_URI[shlex-1.1.0.sha256sum] = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 SRC_URI[signal-hook-0.3.17.sha256sum] = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
 SRC_URI[signal-hook-mio-0.2.3.sha256sum] = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"
 SRC_URI[signal-hook-registry-1.4.0.sha256sum] = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
 SRC_URI[siphasher-0.3.10.sha256sum] = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
 SRC_URI[slab-0.4.7.sha256sum] = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
 SRC_URI[sm3-0.4.2.sha256sum] = "ebb9a3b702d0a7e33bc4d85a14456633d2b165c2ad839c5fd9a8417c1ab15860"
-SRC_URI[smallvec-1.13.0.sha256sum] = "3b187f0231d56fe41bfb12034819dd2bf336422a5866de41bc3fec4b2e3883e8"
+SRC_URI[smallvec-1.13.1.sha256sum] = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
 SRC_URI[smawk-0.3.1.sha256sum] = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
 SRC_URI[socket2-0.5.3.sha256sum] = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"
 SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-SRC_URI[syn-2.0.23.sha256sum] = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
-SRC_URI[tempfile-3.9.0.sha256sum] = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+SRC_URI[syn-2.0.32.sha256sum] = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
+SRC_URI[tempfile-3.10.1.sha256sum] = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
 SRC_URI[terminal_size-0.2.6.sha256sum] = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237"
 SRC_URI[terminal_size-0.3.0.sha256sum] = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
-SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+SRC_URI[textwrap-0.16.1.sha256sum] = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
 SRC_URI[thiserror-1.0.37.sha256sum] = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
 SRC_URI[thiserror-impl-1.0.37.sha256sum] = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
 SRC_URI[time-0.3.20.sha256sum] = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
@@ -502,15 +508,15 @@
 SRC_URI[typenum-1.15.0.sha256sum] = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
 SRC_URI[unicode-ident-1.0.5.sha256sum] = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
 SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
-SRC_URI[unicode-segmentation-1.10.1.sha256sum] = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+SRC_URI[unicode-segmentation-1.11.0.sha256sum] = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 SRC_URI[unicode-width-0.1.11.sha256sum] = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 SRC_URI[unicode-xid-0.2.4.sha256sum] = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
 SRC_URI[unindent-0.2.1.sha256sum] = "5aa30f5ea51ff7edfc797c6d3f9ec8cbd8cfedef5371766b7181d33977f4814f"
 SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
-SRC_URI[uuid-1.2.2.sha256sum] = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c"
+SRC_URI[uuid-1.7.0.sha256sum] = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
 SRC_URI[uutils_term_grid-0.3.0.sha256sum] = "b389452a568698688dda38802068378a16c15c4af9b153cdd99b65391292bbc7"
 SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-SRC_URI[walkdir-2.4.0.sha256sum] = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+SRC_URI[walkdir-2.5.0.sha256sum] = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
 SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 SRC_URI[wasm-bindgen-0.2.87.sha256sum] = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
 SRC_URI[wasm-bindgen-backend-0.2.87.sha256sum] = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
@@ -518,7 +524,7 @@
 SRC_URI[wasm-bindgen-macro-support-0.2.87.sha256sum] = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
 SRC_URI[wasm-bindgen-shared-0.2.87.sha256sum] = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
 SRC_URI[which-4.3.0.sha256sum] = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b"
-SRC_URI[wild-2.2.0.sha256sum] = "10d01931a94d5a115a53f95292f51d316856b68a035618eb831bbba593a30b67"
+SRC_URI[wild-2.2.1.sha256sum] = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1"
 SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
 SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 SRC_URI[winapi-util-0.1.6.sha256sum] = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
diff --git a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.24.bb b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.24.bb
deleted file mode 100644
index 775af52..0000000
--- a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.24.bb
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright (c) 2022, Snap Inc.
-# Released under the MIT license (see COPYING.MIT for the terms)
-SUMMARY = "coreutils ~ GNU coreutils (updated); implemented as universal (cross-platform) utils, written in Rust"
-HOMEPAGE = "https://github.com/uutils/coreutils"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e74349878141b240070458d414ab3b64"
-
-inherit cargo cargo-update-recipe-crates
-
-SRC_URI += "git://github.com/uutils/coreutils.git;protocol=https;branch=main"
-
-# musl not supported because the libc crate does not support functions like "endutxent" at the moment,
-# so src/uucore/src/lib/features.rs disables utmpx when targetting musl.
-COMPATIBLE_HOST:libc-musl = "null"
-
-SRCREV = "169364044677bdea1e7d497fc638f947fd29c460"
-S = "${WORKDIR}/git"
-
-require ${BPN}-crates.inc
-
-PROVIDES = "coreutils"
-RPROVIDES:${PN} = "coreutils"
-
-PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
-
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
-
-CARGO_BUILD_FLAGS += "--features unix"
-CARGO_BUILD_FLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'selinux', '--features feat_selinux', '', d)}"
-
-DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'selinux', 'clang-native libselinux-native', '', d)}"
-
-export LIBCLANG_PATH = "${WORKDIR}/recipe-sysroot-native${libdir}"
-export SELINUX_LIB_DIR = "${WORKDIR}/recipe-sysroot-native${libdir}"
-export SELINUX_INCLUDE_DIR = "${WORKDIR}/recipe-sysroot-native${includedir}"
-
-# The code which follows is strongly inspired from the GNU coreutils bitbake recipe:
-
-# [ df mktemp nice printenv base64 gets a special treatment and is not included in this
-bindir_progs = "[ arch basename cksum comm csplit cut dir dircolors dirname du \
-                env expand expr factor fmt fold groups head hostid id install \
-                join link logname md5sum mkfifo nl nohup nproc od paste pathchk \
-                pinky pr printf ptx readlink realpath seq sha1sum sha224sum sha256sum \
-                sha384sum sha512sum shred shuf sort split sum tac tail tee test timeout \
-                tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes"
-
-bindir_progs += "${@bb.utils.contains('PACKAGECONFIG', 'selinux', 'chcon runcon', '', d)}"
-
-base_bindir_progs = "cat chgrp chmod chown cp date dd echo false hostname kill ln ls mkdir \
-                     mknod mv pwd rm rmdir sleep stty sync touch true uname stat"
-
-sbindir_progs= "chroot"
-
-inherit update-alternatives
-
-# Higher than busybox (which uses 50)
-ALTERNATIVE_PRIORITY = "100"
-
-# Higher than net-tools (which uses 100)
-ALTERNATIVE_PRIORITY[hostname] = "110"
-
-ALTERNATIVE:${PN} = "${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base32 base64 nice printenv mktemp df"
-
-# Use the multicall binary named "coreutils" for symlinks
-ALTERNATIVE_TARGET = "${bindir}/coreutils"
-
-python __anonymous() {
-    for prog in d.getVar('base_bindir_progs').split():
-        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
-
-    for prog in d.getVar('sbindir_progs').split():
-        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('sbindir'), prog))
-}
diff --git a/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.25.bb b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.25.bb
new file mode 100644
index 0000000..61f2dc2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/uutils-coreutils/uutils-coreutils_0.0.25.bb
@@ -0,0 +1,73 @@
+# Copyright (c) 2022, Snap Inc.
+# Released under the MIT license (see COPYING.MIT for the terms)
+SUMMARY = "coreutils ~ GNU coreutils (updated); implemented as universal (cross-platform) utils, written in Rust"
+HOMEPAGE = "https://github.com/uutils/coreutils"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e74349878141b240070458d414ab3b64"
+
+inherit cargo cargo-update-recipe-crates
+
+SRC_URI += "git://github.com/uutils/coreutils.git;protocol=https;branch=main"
+
+# musl not supported because the libc crate does not support functions like "endutxent" at the moment,
+# so src/uucore/src/lib/features.rs disables utmpx when targetting musl.
+COMPATIBLE_HOST:libc-musl = "null"
+
+SRCREV = "68c77b4bd129bdc12d03cc74fe0f817d2df75894"
+S = "${WORKDIR}/git"
+
+require ${BPN}-crates.inc
+
+PROVIDES = "coreutils"
+RPROVIDES:${PN} = "coreutils"
+
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
+
+PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux"
+
+CARGO_BUILD_FLAGS += "--features unix"
+CARGO_BUILD_FLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'selinux', '--features feat_selinux', '', d)}"
+
+DEPENDS += "${@bb.utils.contains('PACKAGECONFIG', 'selinux', 'clang-native libselinux-native', '', d)}"
+
+export LIBCLANG_PATH = "${WORKDIR}/recipe-sysroot-native${libdir}"
+export SELINUX_LIB_DIR = "${WORKDIR}/recipe-sysroot-native${libdir}"
+export SELINUX_INCLUDE_DIR = "${WORKDIR}/recipe-sysroot-native${includedir}"
+
+# The code which follows is strongly inspired from the GNU coreutils bitbake recipe:
+
+# [ df mktemp nice printenv base64 gets a special treatment and is not included in this
+bindir_progs = "[ arch basename cksum comm csplit cut dir dircolors dirname du \
+                env expand expr factor fmt fold groups head hostid id install \
+                join link logname md5sum mkfifo nl nohup nproc od paste pathchk \
+                pinky pr printf ptx readlink realpath seq sha1sum sha224sum sha256sum \
+                sha384sum sha512sum shred shuf sort split sum tac tail tee test timeout \
+                tr truncate tsort tty unexpand uniq unlink uptime users vdir wc who whoami yes"
+
+bindir_progs += "${@bb.utils.contains('PACKAGECONFIG', 'selinux', 'chcon runcon', '', d)}"
+
+base_bindir_progs = "cat chgrp chmod chown cp date dd echo false hostname kill ln ls mkdir \
+                     mknod mv pwd rm rmdir sleep stty sync touch true uname stat"
+
+sbindir_progs= "chroot"
+
+inherit update-alternatives
+
+# Higher than busybox (which uses 50)
+ALTERNATIVE_PRIORITY = "100"
+
+# Higher than net-tools (which uses 100)
+ALTERNATIVE_PRIORITY[hostname] = "110"
+
+ALTERNATIVE:${PN} = "${bindir_progs} ${base_bindir_progs} ${sbindir_progs} base32 base64 nice printenv mktemp df"
+
+# Use the multicall binary named "coreutils" for symlinks
+ALTERNATIVE_TARGET = "${bindir}/coreutils"
+
+python __anonymous() {
+    for prog in d.getVar('base_bindir_progs').split():
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('base_bindir'), prog))
+
+    for prog in d.getVar('sbindir_progs').split():
+        d.setVarFlag('ALTERNATIVE_LINK_NAME', prog, '%s/%s' % (d.getVar('sbindir'), prog))
+}
diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.7.0.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.7.0.bb
deleted file mode 100644
index c5e84b1..0000000
--- a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.7.0.bb
+++ /dev/null
@@ -1,117 +0,0 @@
-SUMMARY = "Manage plain dm-crypt and LUKS encrypted volumes"
-DESCRIPTION = "Cryptsetup is used to conveniently setup dm-crypt managed \
-device-mapper mappings. These include plain dm-crypt volumes and \
-LUKS volumes. The difference is that LUKS uses a metadata header \
-and can hence offer more features than plain dm-crypt. On the other \
-hand, the header is visible and vulnerable to damage."
-HOMEPAGE = "https://gitlab.com/cryptsetup/cryptsetup"
-SECTION = "console"
-LICENSE = "GPL-2.0-with-OpenSSL-exception"
-LIC_FILES_CHKSUM = "file://COPYING;md5=32107dd283b1dfeb66c9b3e6be312326"
-
-DEPENDS = " \
-    json-c \
-    libdevmapper \
-    popt \
-    util-linux-libuuid \
-"
-
-DEPENDS:append:libc-musl = " argp-standalone"
-LDFLAGS:append:libc-musl = " -largp"
-
-SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}/${BP}.tar.xz"
-SRC_URI[sha256sum] = "94003a00cd5a81944f45e8dc529e0cfd2a6ff629bd2cd21cf5e574e465daf795"
-
-inherit autotools gettext pkgconfig
-
-# Use openssl because libgcrypt drops root privileges
-# if libgcrypt is linked with libcap support
-PACKAGECONFIG ??= " \
-    keyring \
-    cryptsetup \
-    veritysetup \
-    luks2-reencryption \
-    integritysetup \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
-    kernel_crypto \
-    internal-argon2 \
-    blkid \
-    luks-adjust-xts-keysize \
-    openssl \
-    ssh-token \
-"
-PACKAGECONFIG:append:class-target = " \
-    udev \
-"
-
-PACKAGECONFIG[keyring] = "--enable-keyring,--disable-keyring"
-PACKAGECONFIG[fips] = "--enable-fips,--disable-fips"
-PACKAGECONFIG[pwquality] = "--enable-pwquality,--disable-pwquality,libpwquality"
-PACKAGECONFIG[passwdqc] = "--enable-passwdqc,--disable-passwdqc,passwdqc"
-PACKAGECONFIG[cryptsetup] = "--enable-cryptsetup,--disable-cryptsetup"
-PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
-PACKAGECONFIG[luks2-reencryption] = "--enable-luks2-reencryption,--disable-luks2-reencryption"
-PACKAGECONFIG[integritysetup] = "--enable-integritysetup,--disable-integritysetup"
-PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux"
-PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,,udev lvm2-udevrules"
-PACKAGECONFIG[kernel_crypto] = "--enable-kernel_crypto,--disable-kernel_crypto"
-# gcrypt-pkbdf2 requries --with-crypto_backend=gcrypt or the flag isn't
-# recognized.
-PACKAGECONFIG[gcrypt-pbkdf2] = "--enable-gcrypt-pbkdf2"
-PACKAGECONFIG[internal-argon2] = "--enable-internal-argon2,--disable-internal-argon2"
-PACKAGECONFIG[internal-sse-argon2] = "--enable-internal-sse-argon2,--disable-internal-sse-argon2"
-PACKAGECONFIG[blkid] = "--enable-blkid,--disable-blkid,util-linux"
-PACKAGECONFIG[dev-random] = "--enable-dev-random,--disable-dev-random"
-PACKAGECONFIG[luks-adjust-xts-keysize] = "--enable-luks-adjust-xts-keysize,--disable-luks-adjust-xts-keysize"
-PACKAGECONFIG[openssl] = "--with-crypto_backend=openssl,,openssl"
-PACKAGECONFIG[gcrypt] = "--with-crypto_backend=gcrypt,,libgcrypt"
-PACKAGECONFIG[nss] = "--with-crypto_backend=nss,,nss"
-PACKAGECONFIG[kernel] = "--with-crypto_backend=kernel"
-PACKAGECONFIG[nettle] = "--with-crypto_backend=nettle,,nettle"
-PACKAGECONFIG[luks2] = "--with-default-luks-format=LUKS2,--with-default-luks-format=LUKS1"
-PACKAGECONFIG[ssh-token] = "--enable-ssh-token,--disable-ssh-token,libssh"
-
-EXTRA_OECONF = "--enable-static"
-# Building without largefile is not supported by upstream
-EXTRA_OECONF += "--enable-largefile"
-# Requires a static popt library
-EXTRA_OECONF += "--disable-static-cryptsetup"
-# There's no recipe for libargon2 yet
-EXTRA_OECONF += "--disable-libargon2"
-# Disable documentation, there is no asciidoctor-native available in OE
-EXTRA_OECONF += "--disable-asciidoc"
-# libcryptsetup default PBKDF algorithm, Argon2 memory cost (KB), parallel threads and iteration time (ms)
-LUKS2_PBKDF ?= "argon2i"
-LUKS2_MEMORYKB ?= "1048576"
-LUKS2_PARALLEL_THREADS ?= "4"
-LUKS2_ITERTIME ?= "2000"
-
-EXTRA_OECONF += "--with-luks2-pbkdf=${LUKS2_PBKDF} \
-    --with-luks2-memory-kb=${LUKS2_MEMORYKB} \
-    --with-luks2-parallel-threads=${LUKS2_PARALLEL_THREADS} \
-    --with-luks2-iter-time=${LUKS2_ITERTIME}"
-
-do_install:append() {
-    # The /usr/lib/cryptsetup directory is always created, even when ssh-token
-    # is disabled. In that case it is empty and causes a packaging error. Since
-    # there is no reason to distribute the empty directory, the easiest solution
-    # is to remove it if it is empty.
-    rmdir -p --ignore-fail-on-non-empty ${D}${libdir}/${BPN}
-}
-
-FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/cryptsetup.conf', '', d)}"
-
-RDEPENDS:${PN} = " \
-    libdevmapper \
-"
-
-RRECOMMENDS:${PN}:class-target = " \
-    kernel-module-aes-generic \
-    kernel-module-dm-crypt \
-    kernel-module-md5 \
-    kernel-module-cbc \
-    kernel-module-sha256-generic \
-    kernel-module-xts \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.7.1.bb b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.7.1.bb
new file mode 100644
index 0000000..53162cb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-crypto/cryptsetup/cryptsetup_2.7.1.bb
@@ -0,0 +1,117 @@
+SUMMARY = "Manage plain dm-crypt and LUKS encrypted volumes"
+DESCRIPTION = "Cryptsetup is used to conveniently setup dm-crypt managed \
+device-mapper mappings. These include plain dm-crypt volumes and \
+LUKS volumes. The difference is that LUKS uses a metadata header \
+and can hence offer more features than plain dm-crypt. On the other \
+hand, the header is visible and vulnerable to damage."
+HOMEPAGE = "https://gitlab.com/cryptsetup/cryptsetup"
+SECTION = "console"
+LICENSE = "GPL-2.0-with-OpenSSL-exception"
+LIC_FILES_CHKSUM = "file://COPYING;md5=32107dd283b1dfeb66c9b3e6be312326"
+
+DEPENDS = " \
+    json-c \
+    libdevmapper \
+    popt \
+    util-linux-libuuid \
+"
+
+DEPENDS:append:libc-musl = " argp-standalone"
+LDFLAGS:append:libc-musl = " -largp"
+
+SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/v${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}/${BP}.tar.xz"
+SRC_URI[sha256sum] = "da5d1419e2a86e01aa32fd79582cd54d208857cb541bca2fd426a5ff1aaabbc3"
+
+inherit autotools gettext pkgconfig
+
+# Use openssl because libgcrypt drops root privileges
+# if libgcrypt is linked with libcap support
+PACKAGECONFIG ??= " \
+    keyring \
+    cryptsetup \
+    veritysetup \
+    luks2-reencryption \
+    integritysetup \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)} \
+    kernel_crypto \
+    internal-argon2 \
+    blkid \
+    luks-adjust-xts-keysize \
+    openssl \
+    ssh-token \
+"
+PACKAGECONFIG:append:class-target = " \
+    udev \
+"
+
+PACKAGECONFIG[keyring] = "--enable-keyring,--disable-keyring"
+PACKAGECONFIG[fips] = "--enable-fips,--disable-fips"
+PACKAGECONFIG[pwquality] = "--enable-pwquality,--disable-pwquality,libpwquality"
+PACKAGECONFIG[passwdqc] = "--enable-passwdqc,--disable-passwdqc,passwdqc"
+PACKAGECONFIG[cryptsetup] = "--enable-cryptsetup,--disable-cryptsetup"
+PACKAGECONFIG[veritysetup] = "--enable-veritysetup,--disable-veritysetup"
+PACKAGECONFIG[luks2-reencryption] = "--enable-luks2-reencryption,--disable-luks2-reencryption"
+PACKAGECONFIG[integritysetup] = "--enable-integritysetup,--disable-integritysetup"
+PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux"
+PACKAGECONFIG[udev] = "--enable-udev,--disable-udev,,udev lvm2-udevrules"
+PACKAGECONFIG[kernel_crypto] = "--enable-kernel_crypto,--disable-kernel_crypto"
+# gcrypt-pkbdf2 requries --with-crypto_backend=gcrypt or the flag isn't
+# recognized.
+PACKAGECONFIG[gcrypt-pbkdf2] = "--enable-gcrypt-pbkdf2"
+PACKAGECONFIG[internal-argon2] = "--enable-internal-argon2,--disable-internal-argon2"
+PACKAGECONFIG[internal-sse-argon2] = "--enable-internal-sse-argon2,--disable-internal-sse-argon2"
+PACKAGECONFIG[blkid] = "--enable-blkid,--disable-blkid,util-linux"
+PACKAGECONFIG[dev-random] = "--enable-dev-random,--disable-dev-random"
+PACKAGECONFIG[luks-adjust-xts-keysize] = "--enable-luks-adjust-xts-keysize,--disable-luks-adjust-xts-keysize"
+PACKAGECONFIG[openssl] = "--with-crypto_backend=openssl,,openssl"
+PACKAGECONFIG[gcrypt] = "--with-crypto_backend=gcrypt,,libgcrypt"
+PACKAGECONFIG[nss] = "--with-crypto_backend=nss,,nss"
+PACKAGECONFIG[kernel] = "--with-crypto_backend=kernel"
+PACKAGECONFIG[nettle] = "--with-crypto_backend=nettle,,nettle"
+PACKAGECONFIG[luks2] = "--with-default-luks-format=LUKS2,--with-default-luks-format=LUKS1"
+PACKAGECONFIG[ssh-token] = "--enable-ssh-token,--disable-ssh-token,libssh"
+
+EXTRA_OECONF = "--enable-static"
+# Building without largefile is not supported by upstream
+EXTRA_OECONF += "--enable-largefile"
+# Requires a static popt library
+EXTRA_OECONF += "--disable-static-cryptsetup"
+# There's no recipe for libargon2 yet
+EXTRA_OECONF += "--disable-libargon2"
+# Disable documentation, there is no asciidoctor-native available in OE
+EXTRA_OECONF += "--disable-asciidoc"
+# libcryptsetup default PBKDF algorithm, Argon2 memory cost (KB), parallel threads and iteration time (ms)
+LUKS2_PBKDF ?= "argon2i"
+LUKS2_MEMORYKB ?= "1048576"
+LUKS2_PARALLEL_THREADS ?= "4"
+LUKS2_ITERTIME ?= "2000"
+
+EXTRA_OECONF += "--with-luks2-pbkdf=${LUKS2_PBKDF} \
+    --with-luks2-memory-kb=${LUKS2_MEMORYKB} \
+    --with-luks2-parallel-threads=${LUKS2_PARALLEL_THREADS} \
+    --with-luks2-iter-time=${LUKS2_ITERTIME}"
+
+do_install:append() {
+    # The /usr/lib/cryptsetup directory is always created, even when ssh-token
+    # is disabled. In that case it is empty and causes a packaging error. Since
+    # there is no reason to distribute the empty directory, the easiest solution
+    # is to remove it if it is empty.
+    rmdir -p --ignore-fail-on-non-empty ${D}${libdir}/${BPN}
+}
+
+FILES:${PN} += "${@bb.utils.contains('DISTRO_FEATURES','systemd','${exec_prefix}/lib/tmpfiles.d/cryptsetup.conf', '', d)}"
+
+RDEPENDS:${PN} = " \
+    libdevmapper \
+"
+
+RRECOMMENDS:${PN}:class-target = " \
+    kernel-module-aes-generic \
+    kernel-module-dm-crypt \
+    kernel-module-md5 \
+    kernel-module-cbc \
+    kernel-module-sha256-generic \
+    kernel-module-xts \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb b/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb
index 24eae28..7322916 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/libdbi/libdbi_0.9.0.bb
@@ -1,6 +1,5 @@
 require ${PN}.inc
 
-PR = "${INC_PR}.0"
 
 SRC_URI[md5sum] = "05e2ceeac4bc85fbe40de8b4b22d9ab3"
 SRC_URI[sha256sum] = "dafb6cdca524c628df832b6dd0bf8fabceb103248edb21762c02d3068fca4503"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
index 9e6d490..33da32f 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb.inc
@@ -24,6 +24,7 @@
            file://lfs64.patch \
            file://0001-Add-missing-includes-cstdint-and-cstdio.patch \
            file://0001-Remove-the-compile_time_assert-lines.patch \
+           file://0001-MDEV-33439-Fix-build-with-libxml2-2.12.patch \
           "
 SRC_URI:append:libc-musl = " file://ppc-remove-glibc-dep.patch"
 SRC_URI[sha256sum] = "5239a245ed90517e96396605cd01ccd8f73cd7442d1b3076b6ffe258110e5157"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-MDEV-33439-Fix-build-with-libxml2-2.12.patch b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-MDEV-33439-Fix-build-with-libxml2-2.12.patch
new file mode 100644
index 0000000..3e42535
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/mysql/mariadb/0001-MDEV-33439-Fix-build-with-libxml2-2.12.patch
@@ -0,0 +1,170 @@
+From dae52f5916ef59434c93f0b716270f59dd0c3a94 Mon Sep 17 00:00:00 2001
+From: Jan Tojnar <jtojnar@gmail.com>
+Date: Sun, 7 Jan 2024 10:19:54 +0100
+Subject: [PATCH] MDEV-33439 Fix build with libxml2 2.12
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+libxml2 2.12.0 made `xmlGetLastError()` return `const` pointer:
+
+https://gitlab.gnome.org/GNOME/libxml2/-/commit/61034116d0a3c8b295c6137956adc3ae55720711
+
+Clang 16 does not like this:
+
+    error: assigning to 'xmlErrorPtr' (aka '_xmlError *') from 'const xmlError *' (aka 'const _xmlError *') discards qualifiers
+    error: cannot initialize a variable of type 'xmlErrorPtr' (aka '_xmlError *') with an rvalue of type 'const xmlError *' (aka 'const _xmlError *')
+
+Let’s update the variables to `const`.
+For older versions, it will be automatically converted.
+
+But then `xmlResetError(xmlError*)` will not like the `const` pointer:
+
+    error: no matching function for call to 'xmlResetError'
+    note: candidate function not viable: 1st argument ('const xmlError *' (aka 'const _xmlError *')) would lose const qualifier
+
+Let’s replace it with `xmlResetLastError()`.
+
+ALso remove `LIBXMLDOC::Xerr` protected member property.
+It was introduced in 65b0e5455b547a3d574fa77b34cce23ae3bea0a0
+along with the `xmlResetError` calls.
+It does not appear to be used for anything.
+
+Upstream-Status: Backport [https://github.com/MariaDB/server/pull/2983]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ storage/connect/libdoc.cpp | 39 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 20 deletions(-)
+
+diff --git a/storage/connect/libdoc.cpp b/storage/connect/libdoc.cpp
+index 67f22ce2..ab588dd4 100644
+--- a/storage/connect/libdoc.cpp
++++ b/storage/connect/libdoc.cpp
+@@ -93,7 +93,6 @@ class LIBXMLDOC : public XMLDOCUMENT {
+   xmlXPathContextPtr Ctxp;
+   xmlXPathObjectPtr  Xop;
+   xmlXPathObjectPtr  NlXop;
+-  xmlErrorPtr        Xerr;
+   char              *Buf;                  // Temporary
+   bool               Nofreelist;
+ }; // end of class LIBXMLDOC
+@@ -327,7 +326,6 @@ LIBXMLDOC::LIBXMLDOC(char *nsl, char *nsdf, char *enc, PFBLOCK fp)
+   Ctxp = NULL;
+   Xop = NULL;
+   NlXop = NULL;
+-  Xerr = NULL;
+   Buf = NULL;
+   Nofreelist = false;
+   } // end of LIBXMLDOC constructor
+@@ -365,8 +363,8 @@ bool LIBXMLDOC::ParseFile(PGLOBAL g, char *fn)
+       Encoding = (char*)Docp->encoding;
+ 
+     return false;
+-  } else if ((Xerr = xmlGetLastError()))
+-    xmlResetError(Xerr);
++  } else if (xmlGetLastError())
++    xmlResetLastError();
+ 
+   return true;
+   } // end of ParseFile
+@@ -505,9 +503,9 @@ int LIBXMLDOC::DumpDoc(PGLOBAL g, char *ofn)
+ #if 1
+   // This function does not crash (
+   if (xmlSaveFormatFileEnc((const char *)ofn, Docp, Encoding, 0) < 0) {
+-    xmlErrorPtr err = xmlGetLastError();
++    const xmlError *err = xmlGetLastError();
+     strcpy(g->Message, (err) ? err->message : "Error saving XML doc");
+-    xmlResetError(Xerr);
++    xmlResetLastError();
+     rc = -1;
+     } // endif Save
+ //  rc = xmlDocDump(of, Docp);
+@@ -546,8 +544,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp)
+     if (Nlist) {
+       xmlXPathFreeNodeSet(Nlist);
+ 
+-      if ((Xerr = xmlGetLastError()))
+-        xmlResetError(Xerr);
++      if (xmlGetLastError())
++        xmlResetLastError();
+ 
+       Nlist = NULL;
+       } // endif Nlist
+@@ -555,8 +553,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp)
+     if (Xop) {
+       xmlXPathFreeObject(Xop);
+ 
+-      if ((Xerr = xmlGetLastError()))
+-        xmlResetError(Xerr);
++      if (xmlGetLastError())
++        xmlResetLastError();
+ 
+       Xop = NULL;
+       } // endif Xop
+@@ -564,8 +562,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp)
+     if (NlXop) {
+       xmlXPathFreeObject(NlXop);
+ 
+-      if ((Xerr = xmlGetLastError()))
+-        xmlResetError(Xerr);
++      if (xmlGetLastError())
++        xmlResetLastError();
+ 
+       NlXop = NULL;
+       } // endif NlXop
+@@ -573,8 +571,8 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp)
+     if (Ctxp) {
+       xmlXPathFreeContext(Ctxp);
+ 
+-      if ((Xerr = xmlGetLastError()))
+-        xmlResetError(Xerr);
++      if (xmlGetLastError())
++        xmlResetLastError();
+ 
+       Ctxp = NULL;
+       } // endif Ctxp
+@@ -590,6 +588,7 @@ void LIBXMLDOC::CloseDoc(PGLOBAL g, PFBLOCK xp)
+ /******************************************************************/
+ xmlNodeSetPtr LIBXMLDOC::GetNodeList(PGLOBAL g, xmlNodePtr np, char *xp)
+   {
++  const xmlError *xerr;
+   xmlNodeSetPtr nl;
+ 
+   if (trace(1))
+@@ -649,11 +648,11 @@ xmlNodeSetPtr LIBXMLDOC::GetNodeList(PGLOBAL g, xmlNodePtr np, char *xp)
+     } else
+       xmlXPathFreeObject(Xop);            // Caused node not found
+ 
+-    if ((Xerr = xmlGetLastError())) {
+-      strcpy(g->Message, Xerr->message);
+-      xmlResetError(Xerr);
++    if ((xerr = xmlGetLastError())) {
++      strcpy(g->Message, xerr->message);
++      xmlResetLastError();
+       return NULL;
+-      } // endif Xerr
++      } // endif xerr
+ 
+     } // endif Xop
+ 
+@@ -1079,7 +1078,7 @@ void XML2NODE::AddText(PGLOBAL g, PCSZ txtp)
+ /******************************************************************/
+ void XML2NODE::DeleteChild(PGLOBAL g, PXNODE dnp)
+   {
+-  xmlErrorPtr xerr;
++  const xmlError *xerr;
+ 
+   if (trace(1))
+     htrc("DeleteChild: node=%p\n", dnp);
+@@ -1122,7 +1121,7 @@ void XML2NODE::DeleteChild(PGLOBAL g, PXNODE dnp)
+   if (trace(1))
+     htrc("DeleteChild: errmsg=%-.256s\n", xerr->message);
+ 
+-  xmlResetError(xerr);
++  xmlResetLastError();
+   } // end of DeleteChild
+ 
+ /* -------------------- class XML2NODELIST ---------------------- */
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch
index 34d34ec..ebd3e03 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/files/0001-Add-support-for-RISC-V.patch
@@ -5,6 +5,8 @@
 
 The architecture is sufficiently similar to aarch64 that simply
 extending the existing aarch64 macro works.
+
+Upstream-Status: Pending
 ---
  src/include/storage/s_lock.h | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
index 868a2e4..e29a5be 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
+++ b/meta-openembedded/meta-oe/recipes-dbs/postgresql/postgresql.inc
@@ -35,6 +35,7 @@
 
 # LDFLAGS for shared libraries
 export LDFLAGS_SL = "${LDFLAGS}"
+export LDFLAGS_EX_BE = "-Wl,--export-dynamic"
 
 inherit autotools pkgconfig perlnative python3native python3targetconfig useradd update-rc.d systemd gettext cpan-base multilib_header
 
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Add-missing-includes-cstdint-and-cstdio.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Add-missing-includes-cstdint-and-cstdio.patch
deleted file mode 100644
index a177ce2..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-Add-missing-includes-cstdint-and-cstdio.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 6e376601c990abaa5e261d1311f92acb3b370b8f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 24 Jan 2023 21:40:43 -0800
-Subject: [PATCH] Add missing includes <cstdint> and <cstdio>
-
-This is needed with GCC 13 and newer [1]
-
-[1] https://www.gnu.org/software/gcc/gcc-13/porting_to.html
-
-Upstream-Status: Backport [https://github.com/facebook/rocksdb/commit/88edfbfb5e1cac228f7cc31fbec24bb637fe54b1]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- .../rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h   | 1 +
- storage/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h   | 1 +
- .../rocksdb/rocksdb/table/block_based/data_block_hash_index.h    | 1 +
- storage/rocksdb/rocksdb/util/slice.cc                            | 1 +
- storage/rocksdb/rocksdb/util/string_util.h                       | 1 +
- tpool/aio_linux.cc                                               | 1 +
- 6 files changed, 6 insertions(+)
-
---- a/db/compaction/compaction_iteration_stats.h
-+++ b/db/compaction/compaction_iteration_stats.h
-@@ -7,6 +7,7 @@
- 
- #include <cstdint>
- 
-+#include <cstdint>
- #include "rocksdb/rocksdb_namespace.h"
- 
- namespace ROCKSDB_NAMESPACE {
---- a/include/rocksdb/utilities/checkpoint.h
-+++ b/include/rocksdb/utilities/checkpoint.h
-@@ -8,6 +8,7 @@
- #pragma once
- #ifndef ROCKSDB_LITE
- 
-+#include <cstdint>
- #include <string>
- #include <vector>
- 
---- a/table/block_based/data_block_hash_index.h
-+++ b/table/block_based/data_block_hash_index.h
-@@ -5,6 +5,7 @@
- 
- #pragma once
- 
-+#include <cstdint>
- #include <string>
- #include <vector>
- 
---- a/util/slice.cc
-+++ b/util/slice.cc
-@@ -12,6 +12,7 @@
- #include <stdio.h>
- 
- #include <algorithm>
-+#include <cstdint>
- 
- #include "rocksdb/convenience.h"
- #include "rocksdb/slice_transform.h"
---- a/util/string_util.h
-+++ b/util/string_util.h
-@@ -6,6 +6,7 @@
- 
- #pragma once
- 
-+#include <cstdint>
- #include <sstream>
- #include <string>
- #include <unordered_map>
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
index 0fe9c12..ba6a2d4 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Add-check-for-atomic-support.patch
@@ -1,4 +1,4 @@
-From cf168ae0b7bceab8432d096719b331f18428fe39 Mon Sep 17 00:00:00 2001
+From 034a9c4ce2ae61cfcffa977f1eb8e6f68947f480 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Wed, 18 Mar 2020 15:10:37 -0700
 Subject: [PATCH] cmake: Add check for atomic support
@@ -18,6 +18,7 @@
 | /mnt/b/yoe/build/tmp/work/mips32r2-yoe-linux/rocksdb/6.6.4-r0/recipe-sysroot-native/usr/bin/mips-yoe-linux/mips-yoe-linux-ld: librocksdb.so.6.6.4: undefined reference to `__atomic_fetch_add_8'
 
 Upstream-Status: Submitted [https://github.com/facebook/rocksdb/pull/6555]
+
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
  CMakeLists.txt                  |  5 +++
@@ -25,9 +26,11 @@
  2 files changed, 74 insertions(+)
  create mode 100644 cmake/modules/CheckAtomic.cmake
 
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5cfc1b4803..0a7f820a22 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -1057,7 +1057,12 @@ set(ROCKSDB_SHARED_LIB rocksdb-shared${A
+@@ -1038,7 +1038,12 @@ set(ROCKSDB_SHARED_LIB rocksdb-shared${ARTIFACT_SUFFIX})
  if(WIN32)
    set(SYSTEM_LIBS ${SYSTEM_LIBS} shlwapi.lib rpcrt4.lib)
  else()
@@ -40,6 +43,9 @@
  endif()
  
  set(ROCKSDB_PLUGIN_EXTERNS "")
+diff --git a/cmake/modules/CheckAtomic.cmake b/cmake/modules/CheckAtomic.cmake
+new file mode 100644
+index 0000000000..8b7dc8a377
 --- /dev/null
 +++ b/cmake/modules/CheckAtomic.cmake
 @@ -0,0 +1,69 @@
@@ -112,3 +118,6 @@
 +  endif()
 +endif()
 +
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch
deleted file mode 100644
index e521854..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From cedc84a8db468d0b6652e78a8a6667e655586b53 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 26 Jan 2023 13:00:43 -0800
-Subject: [PATCH] cmake: Do not add -msse4.2 -mpclmul on clang
-
-When testcase is compiled with clang and -msse4.2 -mpclmul is added to
-cxxflags then clang -m32 still ends up compiling the test case which is
-not correct for i386, therefore depend on yocto to pass the right flags
-from environemnt via cflags rather than manufecture them here
-
-Upstream-Status: Inappropriate [OE-Specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index dbef059028..981545a4e0 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -290,7 +290,7 @@ endif()
- 
- include(CheckCXXSourceCompiles)
- set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
--if(NOT MSVC)
-+if(NOT MSVC AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-   set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul")
- endif()
- 
--- 
-2.39.1
-
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Use-exported-target-for-bz2.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Use-exported-target-for-bz2.patch
deleted file mode 100644
index 706e086..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-cmake-Use-exported-target-for-bz2.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 46a4e585175cac8d76bd0b64f0fc27c9e22f04a1 Mon Sep 17 00:00:00 2001
-From: Pascal Bach <pascal.bach@nextrem.ch>
-Date: Mon, 12 Oct 2020 21:22:46 +0200
-Subject: [PATCH] cmake: Use exported target for bz2
-
-Without this change, CMake puts the entire path into the generated file.
-This is not portable and makes it fail in environment like Yocto.
-
-Upstream-Status: Submitted [https://github.com/facebook/rocksdb/pull/7541]
----
- CMakeLists.txt | 9 ++-------
- 1 file changed, 2 insertions(+), 7 deletions(-)
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -154,12 +154,7 @@ else()
-   if(WITH_BZ2)
-     find_package(BZip2 REQUIRED)
-     add_definitions(-DBZIP2)
--    if(BZIP2_INCLUDE_DIRS)
--      include_directories(${BZIP2_INCLUDE_DIRS})
--    else()
--      include_directories(${BZIP2_INCLUDE_DIR})
--    endif()
--    list(APPEND THIRDPARTY_LIBS ${BZIP2_LIBRARIES})
-+    list(APPEND THIRDPARTY_LIBS BZip2::BZip2)
-   endif()
- 
-   if(WITH_LZ4)
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch
index c986233..342964c 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch
@@ -1,4 +1,4 @@
-From 114c42fba3fc86119710e8dd1bb2b7a9e39e3064 Mon Sep 17 00:00:00 2001
+From 1ba84e1b8d4c9a3ad85dc443b0df4d79c89cca4b Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Thu, 17 Jun 2021 19:35:01 -0700
 Subject: [PATCH] replace old sync with new atomic builtin equivalents
@@ -6,13 +6,15 @@
 Helps compiling with gcc on newer arches e.g. riscv32 where these
 __sync* builtins are not implemented atleast for 64bit values
 
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
 Upstream-Status: Pending
 
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
  .../range/range_tree/lib/portability/toku_atomic.h   | 12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
+diff --git a/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h b/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h
+index aaa2298faf..9385902808 100644
 --- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h
 +++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h
 @@ -77,37 +77,37 @@ template <typename T, typename U>
@@ -59,3 +61,6 @@
  }
  
  // in case you include this but not toku_portability.h
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0002-cmake-Use-exported-target-for-bz2.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0002-cmake-Use-exported-target-for-bz2.patch
new file mode 100644
index 0000000..6b46a1f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0002-cmake-Use-exported-target-for-bz2.patch
@@ -0,0 +1,34 @@
+From bb3fc86f87a9acc64628e1cb32f5c8a1cfbeb880 Mon Sep 17 00:00:00 2001
+From: Pascal Bach <pascal.bach@nextrem.ch>
+Date: Mon, 12 Oct 2020 21:22:46 +0200
+Subject: [PATCH] cmake: Use exported target for bz2
+
+Without this change, CMake puts the entire path into the generated file.
+This is not portable and makes it fail in environment like Yocto.
+
+Upstream-Status: Submitted [https://github.com/facebook/rocksdb/pull/7541]
+---
+ CMakeLists.txt | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0a7f820a22..be80edb955 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -149,12 +149,7 @@ else()
+   if(WITH_BZ2)
+     find_package(BZip2 REQUIRED)
+     add_definitions(-DBZIP2)
+-    if(BZIP2_INCLUDE_DIRS)
+-      include_directories(${BZIP2_INCLUDE_DIRS})
+-    else()
+-      include_directories(${BZIP2_INCLUDE_DIR})
+-    endif()
+-    list(APPEND THIRDPARTY_LIBS ${BZIP2_LIBRARIES})
++    list(APPEND THIRDPARTY_LIBS BZip2::BZip2)
+   endif()
+ 
+   if(WITH_LZ4)
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0003-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0003-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch
new file mode 100644
index 0000000..e2f785d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0003-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch
@@ -0,0 +1,33 @@
+From bb10f55eb77be7b7eee94cb3506c9cbef8e24099 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 26 Jan 2023 13:00:43 -0800
+Subject: [PATCH] cmake: Do not add -msse4.2 -mpclmul on clang
+
+When testcase is compiled with clang and -msse4.2 -mpclmul is added to
+cxxflags then clang -m32 still ends up compiling the test case which is
+not correct for i386, therefore depend on yocto to pass the right flags
+from environemnt via cflags rather than manufecture them here
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index be80edb955..a1bbade81a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -279,7 +279,7 @@ endif()
+ 
+ include(CheckCXXSourceCompiles)
+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+-if(NOT MSVC)
++if(NOT MSVC AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+   set(CMAKE_REQUIRED_FLAGS "-msse4.2 -mpclmul")
+ endif()
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0004-Implement-support-for-musl-ppc64.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0004-Implement-support-for-musl-ppc64.patch
new file mode 100644
index 0000000..5fcf1f7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0004-Implement-support-for-musl-ppc64.patch
@@ -0,0 +1,42 @@
+From c6accd34e8169d7a6b92fc89dce5d4309978e39e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Mar 2024 14:11:09 +0800
+Subject: [PATCH] Implement support for musl/ppc64
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../lock/range/range_tree/lib/portability/toku_time.h     | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+index 9b83c53511..0a7488c397 100644
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+@@ -58,7 +58,7 @@ Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved.
+ #include <stdint.h>
+ #include <sys/time.h>
+ #include <time.h>
+-#if defined(__powerpc__)
++#if defined(__powerpc__) && defined(__GLIBC__)
+ #include <sys/platform/ppc.h>
+ #endif
+ 
+@@ -131,8 +131,12 @@ static inline tokutime_t toku_time_now(void) {
+   uint64_t result;
+   __asm __volatile__("mrs %[rt], cntvct_el0" : [rt] "=r"(result));
+   return result;
+-#elif defined(__powerpc__)
++#elif defined(__powerpc__) && defined(__GLIBC__)
+   return __ppc_get_timebase();
++#elif defined(__powerpc64__) || defined(__ppc64__)
++  uint64_t result;
++  asm volatile("mfspr %0, 268" : "=r"(result));
++  return result;
+ #elif defined(__s390x__)
+   uint64_t result;
+   asm volatile("stckf %0" : "=Q"(result) : : "cc");
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0005-Implement-timer-implementation-for-mips-platform.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0005-Implement-timer-implementation-for-mips-platform.patch
new file mode 100644
index 0000000..2979b73
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0005-Implement-timer-implementation-for-mips-platform.patch
@@ -0,0 +1,32 @@
+From 2ebc0ff33e41d23e4d3aec1a86f3d8bd4be410e7 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Mar 2024 14:14:58 +0800
+Subject: [PATCH] Implement timer implementation for mips platform
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../lock/range/range_tree/lib/portability/toku_time.h       | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+index 0a7488c397..ad7d9f2124 100644
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+@@ -162,6 +162,12 @@ static inline tokutime_t toku_time_now(void) {
+   unsigned long result;
+   asm volatile ("rdtime.d\t%0,$r0" : "=r" (result));
+   return result;
++#elif defined(__mips__)
++  // mips apparently only allows rdtsc for superusers, so we fall
++  // back to gettimeofday.  It's possible clock_gettime would be better.
++  struct timeval tv;
++  gettimeofday(&tv, nullptr);
++  return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
+ #else
+ #error No timer implementation for this platform
+ #endif
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0006-Implement-timer-for-arm-v6.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0006-Implement-timer-for-arm-v6.patch
new file mode 100644
index 0000000..0ae673c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/0006-Implement-timer-for-arm-v6.patch
@@ -0,0 +1,40 @@
+From 9e274ba2762724f353227b5a3a6e4433f706468a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 21 Mar 2024 14:16:08 +0800
+Subject: [PATCH] Implement timer for arm >= v6
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .../range/range_tree/lib/portability/toku_time.h   | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+index ad7d9f2124..bcb795b7e7 100644
+--- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
++++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+@@ -168,6 +168,20 @@ static inline tokutime_t toku_time_now(void) {
+   struct timeval tv;
+   gettimeofday(&tv, nullptr);
+   return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
++#elif (__ARM_ARCH >= 6)
++  uint32_t pmccntr;
++  uint32_t pmuseren;
++  uint32_t pmcntenset;
++  // Read the user mode perf monitor counter access permissions.
++  asm volatile("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren));
++  if (pmuseren & 1) {  // Allows reading perfmon counters for user mode code.
++    asm volatile("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset));
++    if (pmcntenset & 0x80000000ul) {  // Is it counting?
++      asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr));
++      // The counter is set up to count every 64th cycle
++      return (uint64_t)pmccntr * 64;  // Should optimize to << 6
++    }
++  }
+ #else
+ #error No timer implementation for this platform
+ #endif
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/arm.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/arm.patch
deleted file mode 100644
index 3066aa8..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/arm.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Upstream-Status: Pending
-
-implement timer for arm >= v6
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
-+++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
-@@ -164,6 +164,20 @@ static inline tokutime_t toku_time_now(v
-   struct timeval tv;
-   gettimeofday(&tv, nullptr);
-   return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
-+#elif (__ARM_ARCH >= 6)
-+  uint32_t pmccntr;
-+  uint32_t pmuseren;
-+  uint32_t pmcntenset;
-+  // Read the user mode perf monitor counter access permissions.
-+  asm volatile("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren));
-+  if (pmuseren & 1) {  // Allows reading perfmon counters for user mode code.
-+    asm volatile("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset));
-+    if (pmcntenset & 0x80000000ul) {  // Is it counting?
-+      asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr));
-+      // The counter is set up to count every 64th cycle
-+      return (uint64_t)pmccntr * 64;  // Should optimize to << 6
-+    }
-+  }
- #else
- #error No timer implementation for this platform
- #endif
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/mips.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/mips.patch
deleted file mode 100644
index cea7035..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/mips.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Upstream-Status: Pending
-
-implement timer implementation for mips platform
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
-+++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
-@@ -158,6 +158,12 @@ static inline tokutime_t toku_time_now(v
-   uint64_t cycles;
-   asm volatile("rdcycle %0" : "=r"(cycles));
-   return cycles;
-+#elif defined(__mips__)
-+  // mips apparently only allows rdtsc for superusers, so we fall
-+  // back to gettimeofday.  It's possible clock_gettime would be better.
-+  struct timeval tv;
-+  gettimeofday(&tv, nullptr);
-+  return (uint64_t)tv.tv_sec * 1000000 + tv.tv_usec;
- #else
- #error No timer implementation for this platform
- #endif
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/ppc64.patch b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/ppc64.patch
deleted file mode 100644
index 273b8fe..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/files/ppc64.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Upstream-Status: Pending
-
-implement support for musl/ppc64
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
---- a/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
-+++ b/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
-@@ -58,7 +58,7 @@ Copyright (c) 2006, 2015, Percona and/or
- #include <stdint.h>
- #include <sys/time.h>
- #include <time.h>
--#if defined(__powerpc__)
-+#if defined(__powerpc__) && defined(__GLIBC__)
- #include <sys/platform/ppc.h>
- #endif
- 
-@@ -131,8 +131,12 @@ static inline tokutime_t toku_time_now(v
-   uint64_t result;
-   __asm __volatile__("mrs %[rt], cntvct_el0" : [rt] "=r"(result));
-   return result;
--#elif defined(__powerpc__)
-+#elif defined(__powerpc__) && defined(__GLIBC__)
-   return __ppc_get_timebase();
-+#elif defined(__powerpc64__) || defined(__ppc64__)
-+  uint64_t result;
-+  asm volatile("mfspr %0, 268" : "=r"(result));
-+  return result;
- #elif defined(__s390x__)
-   uint64_t result;
-   asm volatile("stckf %0" : "=Q"(result) : : "cc");
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_7.9.2.bb b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_7.9.2.bb
deleted file mode 100644
index 8faaee4..0000000
--- a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_7.9.2.bb
+++ /dev/null
@@ -1,57 +0,0 @@
-SUMMARY = "RocksDB an embeddable, persistent key-value store"
-DESCRIPTION = "RocksDB is library that provides an embeddable, persistent key-value store for fast storage."
-HOMEPAGE = "http://rocksdb.org/"
-LICENSE = "(Apache-2.0 | GPL-2.0-only) & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.Apache;md5=3b83ef96387f14655fc854ddc3c6bd57 \
-                    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837"
-
-SRCREV = "444b3f4845dd01b0d127c4b420fdd3b50ad56682"
-SRCBRANCH = "7.9.fb"
-
-SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH};protocol=https \
-           file://0001-cmake-Add-check-for-atomic-support.patch \
-           file://0001-cmake-Use-exported-target-for-bz2.patch \
-           file://0001-Add-missing-includes-cstdint-and-cstdio.patch \
-           file://0001-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch \
-           file://ppc64.patch \
-           file://mips.patch \
-           file://arm.patch \
-          "
-
-SRC_URI:append:riscv32 = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
-SRC_URI:append:mips = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
-SRC_URI:append:powerpc = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
-SRC_URI:remove:toolchain-clang:riscv32 = "file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-PACKAGECONFIG ??= "bzip2 zlib lz4 gflags"
-PACKAGECONFIG[bzip2] = "-DWITH_BZ2=ON,-DWITH_BZ2=OFF,bzip2"
-PACKAGECONFIG[lz4] = "-DWITH_LZ4=ON,-DWITH_LZ4=OFF,lz4"
-PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
-PACKAGECONFIG[zstd] = "-DWITH_ZSTD=ON,-DWITH_ZSTD=OFF,zstd"
-PACKAGECONFIG[lite] = "-DROCKSDB_LITE=ON,-DROCKSDB_LITE=OFF"
-PACKAGECONFIG[gflags] = "-DWITH_GFLAGS=ON,-DWITH_GFLAGS=OFF,gflags"
-
-# Tools and tests currently don't compile on armv5 so we disable them
-EXTRA_OECMAKE = "\
-    -DPORTABLE=ON \
-    -DWITH_TESTS=OFF \
-    -DWITH_BENCHMARK_TOOLS=OFF \
-    -DWITH_TOOLS=OFF \
-    -DFAIL_ON_WARNINGS=OFF \
-"
-
-do_install:append() {
-    # fix for qa check buildpaths
-    sed -i "s#${RECIPE_SYSROOT}##g" ${D}${libdir}/cmake/rocksdb/RocksDBTargets.cmake
-}
-
-LDFLAGS:append:riscv64 = " -pthread"
-
-# Need toku_time_now() implemented for ppc/musl
-# see utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
-COMPATIBLE_HOST:libc-musl:powerpc = "null"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb
new file mode 100644
index 0000000..76d75f2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-dbs/rocksdb/rocksdb_9.0.0.bb
@@ -0,0 +1,54 @@
+SUMMARY = "RocksDB an embeddable, persistent key-value store"
+DESCRIPTION = "RocksDB is library that provides an embeddable, persistent key-value store for fast storage."
+HOMEPAGE = "http://rocksdb.org/"
+LICENSE = "(Apache-2.0 | GPL-2.0-only) & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.Apache;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+                    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+                    file://LICENSE.leveldb;md5=fb04ff57a14f308f2eed4a9b87d45837"
+
+SRCREV = "f4441966592636253fd5ab0bb9ed44fc2697fc53"
+SRCBRANCH = "9.0.fb"
+
+SRC_URI = "git://github.com/facebook/${BPN}.git;branch=${SRCBRANCH};protocol=https \
+           file://0001-cmake-Add-check-for-atomic-support.patch \
+           file://0002-cmake-Use-exported-target-for-bz2.patch \
+           file://0003-cmake-Do-not-add-msse4.2-mpclmul-on-clang.patch \
+           file://0004-Implement-support-for-musl-ppc64.patch \
+           file://0005-Implement-timer-implementation-for-mips-platform.patch \
+           file://0006-Implement-timer-for-arm-v6.patch \
+          "
+
+SRC_URI:append:riscv32 = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
+SRC_URI:append:mips = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
+SRC_URI:append:powerpc = " file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
+SRC_URI:remove:toolchain-clang:riscv32 = "file://0001-replace-old-sync-with-new-atomic-builtin-equivalents.patch"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+PACKAGECONFIG ??= "bzip2 zlib lz4 gflags"
+PACKAGECONFIG[bzip2] = "-DWITH_BZ2=ON,-DWITH_BZ2=OFF,bzip2"
+PACKAGECONFIG[lz4] = "-DWITH_LZ4=ON,-DWITH_LZ4=OFF,lz4"
+PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
+PACKAGECONFIG[zstd] = "-DWITH_ZSTD=ON,-DWITH_ZSTD=OFF,zstd"
+PACKAGECONFIG[lite] = "-DROCKSDB_LITE=ON,-DROCKSDB_LITE=OFF"
+PACKAGECONFIG[gflags] = "-DWITH_GFLAGS=ON,-DWITH_GFLAGS=OFF,gflags"
+
+# Tools and tests currently don't compile on armv5 so we disable them
+EXTRA_OECMAKE = "\
+    -DPORTABLE=ON \
+    -DWITH_TESTS=OFF \
+    -DWITH_BENCHMARK_TOOLS=OFF \
+    -DWITH_TOOLS=OFF \
+    -DFAIL_ON_WARNINGS=OFF \
+"
+
+do_install:append() {
+    # Fix for qa check buildpaths
+    sed -i "s#${RECIPE_SYSROOT}##g" ${D}${libdir}/cmake/rocksdb/RocksDBTargets.cmake
+}
+
+# Need toku_time_now() implemented for ppc/musl
+# see utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h
+COMPATIBLE_HOST:libc-musl:powerpc = "null"
diff --git a/meta-openembedded/meta-oe/recipes-dbs/soci/soci_4.0.3.bb b/meta-openembedded/meta-oe/recipes-dbs/soci/soci_4.0.3.bb
index 71ab80c..25d67ff 100644
--- a/meta-openembedded/meta-oe/recipes-dbs/soci/soci_4.0.3.bb
+++ b/meta-openembedded/meta-oe/recipes-dbs/soci/soci_4.0.3.bb
@@ -43,3 +43,7 @@
 FILES:${PN}-postgresql = "${libdir}/lib${BPN}_postgresql.so.*"
 FILES:${PN}-odbc = "${libdir}/lib${BPN}_odbc.so.*"
 FILES:${PN}-oracle = "${libdir}/lib${BPN}_oracle.so.*"
+
+do_install:append() {
+    sed -i 's|${RECIPE_SYSROOT}${prefix}|${_IMPORT_PREFIX}|g' ${D}${libdir}/cmake/SOCI/SOCITargets*.cmake
+}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0004-Avoid-using-both-Win32Waiter-and-PthreadWaiter-on-Mi.patch b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0004-Avoid-using-both-Win32Waiter-and-PthreadWaiter-on-Mi.patch
deleted file mode 100644
index db559bb..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0004-Avoid-using-both-Win32Waiter-and-PthreadWaiter-on-Mi.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From cb7665f39e23e95e2466390c60ee5a410780a3ed Mon Sep 17 00:00:00 2001
-From: Derek Mauro <dmauro@google.com>
-Date: Wed, 8 Nov 2023 09:55:31 -0800
-Subject: [PATCH] Avoid using both Win32Waiter and PthreadWaiter on MinGW, and
- use StdcppWaiter instead.
-
-There are various flavors of MinGW, some of which support pthread,
-and some of which support Win32. Instead of figuring out which
-platform is being used, just use the generic implementation.
-
-PiperOrigin-RevId: 580565507
-Change-Id: Ia85fd7496f1e6ebdeadb95202f0039e844826118
-Upstream-Status: Backport
----
- absl/synchronization/internal/pthread_waiter.h | 4 ++--
- absl/synchronization/internal/win32_waiter.h   | 6 ++++--
- 2 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/absl/synchronization/internal/pthread_waiter.h b/absl/synchronization/internal/pthread_waiter.h
-index 206aefa4..23db76ad 100644
---- a/absl/synchronization/internal/pthread_waiter.h
-+++ b/absl/synchronization/internal/pthread_waiter.h
-@@ -16,7 +16,7 @@
- #ifndef ABSL_SYNCHRONIZATION_INTERNAL_PTHREAD_WAITER_H_
- #define ABSL_SYNCHRONIZATION_INTERNAL_PTHREAD_WAITER_H_
- 
--#ifndef _WIN32
-+#if !defined(_WIN32) && !defined(__MINGW32__)
- #include <pthread.h>
- 
- #include "absl/base/config.h"
-@@ -55,6 +55,6 @@ class PthreadWaiter : public WaiterCrtp<PthreadWaiter> {
- ABSL_NAMESPACE_END
- }  // namespace absl
- 
--#endif  // ndef _WIN32
-+#endif  // !defined(_WIN32) && !defined(__MINGW32__)
- 
- #endif  // ABSL_SYNCHRONIZATION_INTERNAL_PTHREAD_WAITER_H_
-diff --git a/absl/synchronization/internal/win32_waiter.h b/absl/synchronization/internal/win32_waiter.h
-index 87eb617c..fdab264e 100644
---- a/absl/synchronization/internal/win32_waiter.h
-+++ b/absl/synchronization/internal/win32_waiter.h
-@@ -20,7 +20,8 @@
- #include <sdkddkver.h>
- #endif
- 
--#if defined(_WIN32) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
-+#if defined(_WIN32) && !defined(__MINGW32__) && \
-+    _WIN32_WINNT >= _WIN32_WINNT_VISTA
- 
- #include "absl/base/config.h"
- #include "absl/synchronization/internal/kernel_timeout.h"
-@@ -65,6 +66,7 @@ class Win32Waiter : public WaiterCrtp<Win32Waiter> {
- ABSL_NAMESPACE_END
- }  // namespace absl
- 
--#endif  // defined(_WIN32) && _WIN32_WINNT >= _WIN32_WINNT_VISTA
-+#endif  // defined(_WIN32) && !defined(__MINGW32__) &&
-+        // _WIN32_WINNT >= _WIN32_WINNT_VISTA
- 
- #endif  // ABSL_SYNCHRONIZATION_INTERNAL_WIN32_WAITER_H_
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20230802.1.bb b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20230802.1.bb
deleted file mode 100644
index 1ce6ff3..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20230802.1.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Abseil is a cpp library like STL"
-DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
-additional useful libraries like algorithm, container, debugging, hash, memory, \
-meta, numeric, strings, synchronization, time, types and utility"
-HOMEPAGE = "https://abseil.io/"
-SECTION = "libs"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
-
-SRCREV = "fb3621f4f897824c0dbe0615fa94543df6192f30"
-BRANCH = "lts_2023_08_02"
-SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
-           file://0001-absl-always-use-asm-sgidefs.h.patch             \
-           file://0002-Remove-maes-option-from-cross-compilation.patch \
-           file://abseil-ppc-fixes.patch \
-           file://0003-Remove-neon-option-from-cross-compilation.patch \
-           file://0004-Avoid-using-both-Win32Waiter-and-PthreadWaiter-on-Mi.patch \
-          "
-
-S = "${WORKDIR}/git"
-
-ASNEEDED:class-native = ""
-ASNEEDED:class-nativesdk = ""
-
-inherit cmake
-
-EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
-                 -DBUILD_TESTING=OFF    \
-                 -DABSL_ENABLE_INSTALL=ON \
-                "
-
-BBCLASSEXTEND = "native nativesdk"
-
-SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
-
-FILES:${PN}-dev += "${includedir} ${libdir}/cmake ${libdir}/pkgconfig"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20240116.1.bb b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20240116.1.bb
new file mode 100644
index 0000000..e6c65d3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20240116.1.bb
@@ -0,0 +1,53 @@
+SUMMARY = "Abseil is a cpp library like STL"
+DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
+additional useful libraries like algorithm, container, debugging, hash, memory, \
+meta, numeric, strings, synchronization, time, types and utility."
+HOMEPAGE = "https://abseil.io/"
+SECTION = "libs"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
+
+SRCREV = "2f9e432cce407ce0ae50676696666f33a77d42ac"
+BRANCH = "lts_2024_01_16"
+SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH};protocol=https \
+           file://0001-absl-always-use-asm-sgidefs.h.patch             \
+           file://0002-Remove-maes-option-from-cross-compilation.patch \
+           file://abseil-ppc-fixes.patch \
+           file://0003-Remove-neon-option-from-cross-compilation.patch \
+          "
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \
+                 -DBUILD_TESTING=OFF    \
+                 -DABSL_ENABLE_INSTALL=ON \
+                "
+
+SYSROOT_DIRS:append:class-nativesdk:mingw32 = " ${bindir}"
+
+PACKAGES_DYNAMIC = "^libabsl-*"
+PACKAGES_DYNAMIC:class-native = ""
+
+PACKAGESPLITFUNCS =+ "split_dynamic_packages"
+
+python split_dynamic_packages() {
+    libdir = d.getVar('libdir')
+
+    libpackages = do_split_packages(
+        d,
+        root=libdir,
+        file_regex=r'^libabsl_(.*)\.so\..*$',
+        output_pattern='libabsl-%s',
+        description="abseil shared library %s",
+        prepend=True,
+        extra_depends='',
+    )
+    if libpackages:
+        d.appendVar('RDEPENDS:' + d.getVar('PN'), ' ' + ' '.join(libpackages))
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/aer-inject/aer-inject/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-oe/recipes-devtools/aer-inject/aer-inject/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..358ff52
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/aer-inject/aer-inject/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,32 @@
+From a2ccd98076c2ac81830234555edf362ee19a337d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 09:00:41 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [Emailed patch to Author]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ aer-inject.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/aer-inject.c b/aer-inject.c
+index 74e7f72..eed1211 100644
+--- a/aer-inject.c
++++ b/aer-inject.c
+@@ -11,6 +11,7 @@
+  */
+ 
+ #include <stdio.h>
++#include <libgen.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <fcntl.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/aer-inject/aer-inject_1.0.bb b/meta-openembedded/meta-oe/recipes-devtools/aer-inject/aer-inject_1.0.bb
new file mode 100644
index 0000000..87c09f5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/aer-inject/aer-inject_1.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Inject PCIE AER errors on the software level into a running Linux kernel."
+DESCRIPTION = "\
+aer-inject allows to inject PCIE AER errors on the software \
+level into a running Linux kernel. This is intended for \
+validation of the PCIE driver error recovery handler and \
+PCIE AER core handler."
+HOMEPAGE = "https://git.kernel.org/cgit/linux/kernel/git/gong.chen/aer-inject.git/"
+SECTION = "pcie/misc"
+LICENSE = "GPL-2.0-only"
+
+LIC_FILES_CHKSUM = "file://README;beginline=25;endline=38;md5=643c2332ec702691a87ba6ea9499b2d6"
+
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git;protocol=https;branch=master \
+           file://0001-include-libgen.h-for-basename.patch \
+"
+SRCREV = "9bd5e2c7886fca72f139cd8402488a2235957d41"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "bison-native"
+
+do_compile() {
+    oe_runmake CFLAGS="-Wall -D_GNU_SOURCE"
+}
+
+do_install() {
+    oe_runmake 'DESTDIR=${D}' 'PREFIX=${prefix}' install
+}
+FILES:${PN} += "${prefix}/aer-inject"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.1.20240114.0.bb b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.1.20240114.0.bb
deleted file mode 100644
index 6fab920..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.1.20240114.0.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2015 Igor Santos <igor.santos@aker.com.br>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-SUMMARY = "Universal Ctags"
-DESCRIPTION = "Universal Ctags is a multilanguage reimplementation of the \
-               Unix ctags utility. Ctags generates an index of source code \
-               definitions which is used by numerous editors and utilities \
-               to instantly locate the definitions."
-
-HOMEPAGE = "https://ctags.io/"
-
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
-
-inherit autotools-brokensep pkgconfig manpages
-
-SRCREV = "be3439eb01caeadbf52a8ec4d00cb6cf16a61225"
-SRC_URI = "git://github.com/universal-ctags/ctags;branch=master;protocol=https"
-
-S = "${WORKDIR}/git"
-
-PACKAGECONFIG ??= " \
-    readcmd \
-    xml \
-    json \
-    yaml \
-"
-PACKAGECONFIG[readcmd] = "--enable-readcmd,--disable-readcmd"
-PACKAGECONFIG[etags] = "--enable-etags,--disable-etags"
-PACKAGECONFIG[xml] = "--enable-xml,--disable-xml,libxml2"
-PACKAGECONFIG[json] = "--enable-json,--disable-json,jansson"
-PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
-PACKAGECONFIG[yaml] = "--enable-yaml,--disable-yaml,libyaml"
-PACKAGECONFIG[manpages] = ",,python3-docutils-native"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.1.20240310.0.bb b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.1.20240310.0.bb
new file mode 100644
index 0000000..d4ffbb7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/ctags/ctags_6.1.20240310.0.bb
@@ -0,0 +1,36 @@
+# Copyright (C) 2015 Igor Santos <igor.santos@aker.com.br>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+SUMMARY = "Universal Ctags"
+DESCRIPTION = "Universal Ctags is a multilanguage reimplementation of the \
+               Unix ctags utility. Ctags generates an index of source code \
+               definitions which is used by numerous editors and utilities \
+               to instantly locate the definitions."
+
+HOMEPAGE = "https://ctags.io/"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
+
+inherit autotools-brokensep pkgconfig manpages
+
+SRCREV = "38fd8e39b877a79666393b90e38400fd8d7d5d14"
+SRC_URI = "git://github.com/universal-ctags/ctags;branch=master;protocol=https"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= " \
+    readcmd \
+    xml \
+    json \
+    yaml \
+"
+PACKAGECONFIG[readcmd] = "--enable-readcmd,--disable-readcmd"
+PACKAGECONFIG[etags] = "--enable-etags,--disable-etags"
+PACKAGECONFIG[xml] = "--enable-xml,--disable-xml,libxml2"
+PACKAGECONFIG[json] = "--enable-json,--disable-json,jansson"
+PACKAGECONFIG[seccomp] = "--enable-seccomp,--disable-seccomp,libseccomp"
+PACKAGECONFIG[yaml] = "--enable-yaml,--disable-yaml,libyaml"
+PACKAGECONFIG[manpages] = ",,python3-docutils-native"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_1.4.bb b/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_1.4.bb
new file mode 100644
index 0000000..479b98d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_1.4.bb
@@ -0,0 +1,46 @@
+SUMMARY = "A text-based user interface plugin of dnf for user to manage packages. "
+LICENSE = "GPL-2.0-only"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/ubinux/dnf-plugin-tui.git;branch=master;protocol=https"
+SRCREV = "ad48d934c54ab01026634c90f47f151f148b8147"
+
+SRC_URI:append:class-target = " file://oe-remote.repo.sample"
+
+inherit setuptools3-base
+
+S = "${WORKDIR}/git"
+
+do_install:append() {
+    install -d ${D}${datadir}/dnf
+    install -m 0755 ${S}/samples/* ${D}${datadir}/dnf
+    install -d ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins/mkimg
+    install -m 0755 ${S}/dnf-plugins/mkimg/* ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins/mkimg
+    for file in $(ls ${S}/dnf-plugins/ | grep -v mkimg); do
+        install -m 0755 ${S}/dnf-plugins/$file ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins
+    done
+}
+
+do_install:append:class-target() {
+    install -d ${D}${sysconfdir}/yum.repos.d
+    install -m 0644 ${WORKDIR}/oe-remote.repo.sample ${D}${sysconfdir}/yum.repos.d
+}
+
+do_install:append:class-nativesdk() {
+    install -d -p ${D}/${SDKPATH}/postinst-intercepts
+    cp -r ${COREBASE}/scripts/postinst-intercepts/* ${D}/${SDKPATH}/postinst-intercepts/
+    sed -i -e 's/STAGING_DIR_NATIVE/NATIVE_ROOT/g' ${D}/${SDKPATH}/postinst-intercepts/*
+}
+
+FILES:${PN} += "${datadir}/dnf"
+FILES:${PN} += "${SDKPATH}/postinst-intercepts"
+
+RDEPENDS:${PN} += " \
+    bash \
+    dnf \
+    libnewt-python \
+"
+BBCLASSEXTEND = "nativesdk"
+
+SKIP_RECIPE[dnf-plugin-tui] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build correctly without package_rpm in PACKAGE_CLASSES', d)}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb b/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
deleted file mode 100644
index 8db456b..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/dnf-plugin-tui/dnf-plugin-tui_git.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "A text-based user interface plugin of dnf for user to manage packages. "
-LICENSE = "GPL-2.0-only"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "git://github.com/ubinux/dnf-plugin-tui.git;branch=master;protocol=https"
-SRCREV = "baac322a8a6d57e62c703f6ed523152baec18b4f"
-PV = "1.3"
-
-SRC_URI:append:class-target = " file://oe-remote.repo.sample"
-
-inherit setuptools3-base
-
-S = "${WORKDIR}/git"
-
-do_install:append() {
-    install -d ${D}${datadir}/dnf
-    install -m 0755 ${S}/samples/* ${D}${datadir}/dnf
-    install -d ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins/mkimg
-    install -m 0755 ${S}/dnf-plugins/mkimg/* ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins/mkimg
-    for file in $(ls ${S}/dnf-plugins/ | grep -v mkimg); do
-        install -m 0755 ${S}/dnf-plugins/$file ${D}${PYTHON_SITEPACKAGES_DIR}/dnf-plugins
-    done
-}
-
-do_install:append:class-target() {
-    install -d ${D}${sysconfdir}/yum.repos.d
-    install -m 0644 ${WORKDIR}/oe-remote.repo.sample ${D}${sysconfdir}/yum.repos.d
-}
-
-do_install:append:class-nativesdk() {
-    install -d -p ${D}/${SDKPATH}/postinst-intercepts
-    cp -r ${COREBASE}/scripts/postinst-intercepts/* ${D}/${SDKPATH}/postinst-intercepts/
-    sed -i -e 's/STAGING_DIR_NATIVE/NATIVE_ROOT/g' ${D}/${SDKPATH}/postinst-intercepts/*
-}
-
-FILES:${PN} += "${datadir}/dnf"
-FILES:${PN} += "${SDKPATH}/postinst-intercepts"
-
-RDEPENDS:${PN} += " \
-    bash \
-    dnf \
-    libnewt-python \
-"
-BBCLASSEXTEND = "nativesdk"
-
-SKIP_RECIPE[dnf-plugin-tui] ?= "${@bb.utils.contains('PACKAGE_CLASSES', 'package_rpm', '', 'does not build correctly without package_rpm in PACKAGE_CLASSES', d)}"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/editorconfig/editorconfig-core-c_0.12.6.bb b/meta-openembedded/meta-oe/recipes-devtools/editorconfig/editorconfig-core-c_0.12.6.bb
index 1facb35..976120b 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/editorconfig/editorconfig-core-c_0.12.6.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/editorconfig/editorconfig-core-c_0.12.6.bb
@@ -13,3 +13,6 @@
 
 DEPENDS = "pcre2"
 
+do_install:append() {
+    sed -i -e 's|${STAGING_DIR_HOST}||g' ${D}${libdir}/cmake/EditorConfig/EditorConfigTargets.cmake
+}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers.inc b/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers.inc
index 7533f7c..8f6c4c6 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers.inc
+++ b/meta-openembedded/meta-oe/recipes-devtools/flatbuffers/flatbuffers.inc
@@ -1,3 +1,3 @@
-PV = "23.5.26"
-SRCREV = "0100f6a5779831fa7a651e4b67ef389a8752bd9b"
+PV = "24.3.25"
+SRCREV = "595bf0007ab1929570c7671f091313c8fc20644e"
 SRC_URI = "git://github.com/google/flatbuffers.git;branch=master;protocol=https"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.7.0.bb b/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.7.0.bb
index 87f7f1a..1942433 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.7.0.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/jwt-cpp/jwt-cpp_0.7.0.bb
@@ -15,6 +15,6 @@
 
 inherit cmake
 
-EXTRA_OECMAKE += "-DJWT_BUILD_EXAMPLES=OFF -DJWT_CMAKE_FILES_INSTALL_DIR=${libdir}/cmake"
+EXTRA_OECMAKE += "-DJWT_BUILD_EXAMPLES=OFF -DJWT_CMAKE_FILES_INSTALL_DIR=${libdir}/cmake/${BPN}"
 
 BBCLASSEXTEND = "nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch
new file mode 100644
index 0000000..84a585d
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch
@@ -0,0 +1,113 @@
+From 1b4d42ca2e97061042ec44a0b34ceb176c78c7e1 Mon Sep 17 00:00:00 2001
+From: d-winsor <danwin@microsoft.com>
+Date: Mon, 26 Feb 2024 13:17:12 -0800
+Subject: [PATCH] Fix initialization in test (#1140)
+
+* Suppress unsafe-buffer-usage
+
+Upstream-Status: Backport [https://github.com/microsoft/GSL/commit/1b4d42ca2e97061042ec44a0b34ceb176c78c7e1]
+
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ include/gsl/span     | 10 ++++++++++
+ include/gsl/util     | 10 ++++++++++
+ tests/CMakeLists.txt | 10 ++++++++++
+ tests/span_tests.cpp |  2 +-
+ 4 files changed, 31 insertions(+), 1 deletion(-)
+
+diff --git a/include/gsl/span b/include/gsl/span
+index cc8a7b9..d254e4d 100644
+--- a/include/gsl/span
++++ b/include/gsl/span
+@@ -58,6 +58,12 @@
+ #pragma GCC diagnostic ignored "-Wsign-conversion"
+ #endif
+ 
++// Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks
++#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#pragma clang diagnostic push
++#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
++#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++
+ namespace gsl
+ {
+ 
+@@ -818,4 +824,8 @@ as_writable_bytes(span<ElementType, Extent> s) noexcept
+ #pragma GCC diagnostic pop
+ #endif // __GNUC__ > 6
+ 
++#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#pragma clang diagnostic pop
++#endif
++
+ #endif // GSL_SPAN_H
+diff --git a/include/gsl/util b/include/gsl/util
+index a215bad..11735a8 100644
+--- a/include/gsl/util
++++ b/include/gsl/util
+@@ -39,6 +39,12 @@
+ 
+ #endif // _MSC_VER
+ 
++// Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks
++#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#pragma clang diagnostic push
++#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
++#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++
+ #if defined(__cplusplus) && (__cplusplus >= 201703L)
+ #define GSL_NODISCARD [[nodiscard]]
+ #else
+@@ -157,4 +163,8 @@ constexpr auto at(std::span<T, extent> sp, const index i) -> decltype(sp[sp.size
+ 
+ #endif // _MSC_VER
+ 
++#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#pragma clang diagnostic pop
++#endif
++
+ #endif // GSL_UTIL_H
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index cab4e56..20de9e1 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -167,6 +167,11 @@ else()
+         >
+     )
+ endif(MSVC)
++check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER)
++if (WARN_UNSAFE_BUFFER)
++  # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer"
++  target_compile_options(gsl_tests_config INTERFACE "-Wno-unsafe-buffer-usage")
++endif()
+ 
+ # for tests to find the gtest header
+ target_include_directories(gsl_tests_config SYSTEM INTERFACE
+@@ -267,6 +272,11 @@ else()
+         >
+     )
+ endif(MSVC)
++check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER)
++if (WARN_UNSAFE_BUFFER)
++  # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer"
++  target_compile_options(gsl_tests_config_noexcept INTERFACE "-Wno-unsafe-buffer-usage")
++endif()
+ 
+ add_executable(gsl_noexcept_tests no_exception_ensure_tests.cpp)
+ target_link_libraries(gsl_noexcept_tests
+diff --git a/tests/span_tests.cpp b/tests/span_tests.cpp
+index 33ccf56..3c1dfe5 100644
+--- a/tests/span_tests.cpp
++++ b/tests/span_tests.cpp
+@@ -330,7 +330,7 @@ TEST(span_test, from_array_constructor)
+         EXPECT_TRUE(s.data() == std::addressof(arr2d[0]));
+     }
+ 
+-    int arr3d[2][3][2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
++    int arr3d[2][3][2] = { { {1, 2}, {3, 4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} } };
+ 
+ #ifdef CONFIRM_COMPILATION_ERRORS
+     {
+-- 
+2.30.2
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch
new file mode 100644
index 0000000..2f7542c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch
@@ -0,0 +1,82 @@
+From aa4fd1f57794964640005900c2b47af1a0940b7b Mon Sep 17 00:00:00 2001
+From: Werner Henze <w.henze@avm.de>
+Date: Fri, 1 Mar 2024 15:53:50 +0100
+Subject: [PATCH] Fix gcc build problem
+
+Closes issue #1148 by fixing problems introduced in PR #1140.
+
+Upstream-Status: Submitted [https://github.com/microsoft/GSL/pull/1149]
+
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ include/gsl/span | 12 ++++++++----
+ include/gsl/util | 12 ++++++++----
+ 2 files changed, 16 insertions(+), 8 deletions(-)
+
+diff --git a/include/gsl/span b/include/gsl/span
+index 0de2932..d2ef9f7 100644
+--- a/include/gsl/span
++++ b/include/gsl/span
+@@ -59,10 +59,12 @@
+ #endif
+ 
+ // Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks
+-#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#if defined(__clang__)
++#if __has_warning("-Wunsafe-buffer-usage")
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
+-#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#endif // __has_warning("-Wunsafe-buffer-usage")
++#endif // defined(__clang__)
+ 
+ namespace gsl
+ {
+@@ -824,8 +826,10 @@ as_writable_bytes(span<ElementType, Extent> s) noexcept
+ #pragma GCC diagnostic pop
+ #endif // __GNUC__ > 6
+ 
+-#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#if defined(__clang__)
++#if __has_warning("-Wunsafe-buffer-usage")
+ #pragma clang diagnostic pop
+-#endif
++#endif // __has_warning("-Wunsafe-buffer-usage")
++#endif // defined(__clang__)
+ 
+ #endif // GSL_SPAN_H
+diff --git a/include/gsl/util b/include/gsl/util
+index b853017..26b2f5f 100644
+--- a/include/gsl/util
++++ b/include/gsl/util
+@@ -40,10 +40,12 @@
+ #endif // _MSC_VER
+ 
+ // Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks
+-#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#if defined(__clang__)
++#if __has_warning("-Wunsafe-buffer-usage")
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
+-#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#endif // __has_warning("-Wunsafe-buffer-usage")
++#endif // defined(__clang__)
+ 
+ #if defined(__cplusplus) && (__cplusplus >= 201703L)
+ #define GSL_NODISCARD [[nodiscard]]
+@@ -163,8 +165,10 @@ constexpr auto at(std::span<T, extent> sp, const index i) -> decltype(sp[sp.size
+ 
+ #endif // _MSC_VER
+ 
+-#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage")
++#if defined(__clang__)
++#if __has_warning("-Wunsafe-buffer-usage")
+ #pragma clang diagnostic pop
+-#endif
++#endif // __has_warning("-Wunsafe-buffer-usage")
++#endif // defined(__clang__)
+ 
+ #endif // GSL_UTIL_H
+-- 
+2.30.2
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch
new file mode 100644
index 0000000..ed057f5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch
@@ -0,0 +1,53 @@
+From 85e1c38bcf84bd4e2ce63ef74f0cfa1f5e92261e Mon Sep 17 00:00:00 2001
+From: Peter Marko <peter.marko@siemens.com>
+Date: Wed, 27 Mar 2024 23:46:31 +0100
+Subject: [PATCH] Adapt check_cxx_compiler_flag to cmake 3.0.2
+
+Backporting commits which are upgrading cmake_minimum_required and
+include check_cxx_compiler_flag have too many additional changes.
+
+Let's just do a simple adaptation of our backported patch so
+it works with older cmake version instead.
+
+This can be safely removed when recipe version is upgraded.
+
+Upstream-Status: Inappropriate
+
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ tests/CMakeLists.txt | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index 20de9e1..54c3ac5 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -5,6 +5,7 @@ enable_testing()  # again, for support standalone testing
+ 
+ include(FindPkgConfig)
+ include(ExternalProject)
++include(CheckCXXCompilerFlag)
+ 
+ # will make visual studio generated project group files
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+@@ -167,7 +168,7 @@ else()
+         >
+     )
+ endif(MSVC)
+-check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER)
++CHECK_CXX_COMPILER_FLAG("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER)
+ if (WARN_UNSAFE_BUFFER)
+   # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer"
+   target_compile_options(gsl_tests_config INTERFACE "-Wno-unsafe-buffer-usage")
+@@ -272,7 +273,7 @@ else()
+         >
+     )
+ endif(MSVC)
+-check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER)
++CHECK_CXX_COMPILER_FLAG("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER)
+ if (WARN_UNSAFE_BUFFER)
+   # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer"
+   target_compile_options(gsl_tests_config_noexcept INTERFACE "-Wno-unsafe-buffer-usage")
+-- 
+2.30.2
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/run-ptest b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/run-ptest
new file mode 100644
index 0000000..2d5bdf4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+gsl_tests && echo "PASS: gsl_tests" || echo "FAIL: gsl_tests"
+gsl_noexcept_tests && echo "PASS: gsl_noexcept_tests" || echo "FAIL: gsl_noexcept_tests"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb
new file mode 100644
index 0000000..6e29b24
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb
@@ -0,0 +1,45 @@
+SUMMARY = "GSL: Guidelines Support Library"
+DESCRIPTION = "The Guidelines Support Library (GSL) contains functions \
+    and types that are suggested for use by the C++ Core Guidelines \
+    maintained by the Standard C++ Foundation. \
+    This repo contains Microsoft's implementation of GSL."
+HOMEPAGE = "https://github.com/microsoft/GSL"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=363055e71e77071107ba2bb9a54bd9a7"
+
+SRC_URI = "git://github.com/microsoft/GSL.git;protocol=https;branch=main \
+    file://run-ptest \
+    file://0001-Fix-initialization-in-test-1140.patch \
+    file://0002-Fix-gcc-build-problem.patch \
+    file://0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch \
+"
+SRCREV = "a3534567187d2edc428efd3f13466ff75fe5805c"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig ptest
+
+# this is header-only library
+ALLOW_EMPTY:${PN} = "1"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'ptest','', d)}"
+PACKAGECONFIG[ptest] = "-DGSL_TEST=ON,-DGSL_TEST=OFF,googletest"
+
+# clang disagrees with https://github.com/google/googletest/pull/3457
+CXXFLAGS:append:toolchain-clang = " -Wno-error=switch-default"
+# Disable disabled-macro-expansion warning as error as its seen on musl
+CXXFLAGS:append:toolchain-clang:libc-musl = " -Wno-error=disabled-macro-expansion"
+
+do_install_ptest() {
+    install -d ${D}${bindir}
+    install -m 0755 ${B}/tests/gsl_tests ${D}${bindir}
+    install -m 0755 ${B}/tests/gsl_noexcept_tests ${D}${bindir}
+}
+
+FILES:${PN}-ptest = "${bindir}/gsl*_tests"
+
+# there is already other gsl recipe, so recipe name does not match the real component name
+CVE_PRODUCT = "microsoft:gsl"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb b/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
index 441ab2e..4a0383e 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/packagegroups/packagegroup-sdk-target.bb
@@ -1,6 +1,5 @@
 SUMMARY = "Packages required for a target (on-device) SDK"
 
-PR = "r1"
 
 inherit packagegroup
 
diff --git a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Make-function-checks-more-robust-within-shared-libs.patch b/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Make-function-checks-more-robust-within-shared-libs.patch
deleted file mode 100644
index 13a9e3b..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/perl/libio-pty-perl/0001-Make-function-checks-more-robust-within-shared-libs.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 1735a78561dbe139fd138caef2d44d81f5494fe7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 4 Apr 2023 12:28:11 -0700
-Subject: [PATCH] Make function checks more robust within shared libs
-
-Previous attempt to error at link like was with
-
-https://github.com/toddr/IO-Tty/commit/1747cdf9f98cfd3aada9bf6c09f9d46297e18a5e
-
-this however causes issues with newer clang where it detects
-the assignment as -Wint-conversion warning which is treated at error
-and builds with clang fail. So this is an attempt to instruct
-linker explicitly to error out if the symbol is not found during link
-time when building a shared library, this fixes both the problems
-as reported in
-
-https://github.com/toddr/IO-Tty/issues/23
-
-as well as
-
-https://github.com/toddr/IO-Tty/pull/33#issuecomment-1260147256
-
-Upstream-Status: Submitted [https://github.com/toddr/IO-Tty/pull/33]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile.PL | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.PL b/Makefile.PL
-index eaf47e0..2e8338d 100644
---- a/Makefile.PL
-+++ b/Makefile.PL
-@@ -163,7 +163,8 @@ main ()
- #if defined (__stub_$f) || defined (__stub___$f)
- choke me
- #else
--f = $f ();
-+f = $f;
-+f();
- #endif
- 
-   ;
-@@ -173,7 +174,7 @@ ESQ
- 
-   close(TST);
-   print "Looking for $f()" . "." x (13-length($f)) . " ";
--  if (system("$cfg{'cc'} $flags $funcs{$f} functest_$f.c > functest_$f.log 2>&1")) {
-+  if (system("$cfg{'cc'} $flags -Wl,--no-undefined $funcs{$f} functest_$f.c > functest_$f.log 2>&1")) {
-     print "not found.\n";
-   } else {
-     $define{"-DHAVE_\U$f"} = undef;
--- 
-2.40.0
-
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php_8.2.16.bb b/meta-openembedded/meta-oe/recipes-devtools/php/php_8.2.16.bb
new file mode 100644
index 0000000..1cb378f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/php/php_8.2.16.bb
@@ -0,0 +1,299 @@
+SUMMARY = "A server-side, HTML-embedded scripting language"
+HOMEPAGE = "http://www.php.net"
+SECTION = "console/network"
+
+LICENSE = "PHP-3.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fd469cce1a919f0cc95bab7afb28d19d"
+
+BBCLASSEXTEND = "native"
+DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native"
+DEPENDS:append:libc-musl = " libucontext"
+DEPENDS:class-native = "zlib-native libxml2-native"
+
+PHP_MAJOR_VERSION = "${@d.getVar('PV').split('.')[0]}"
+
+SRC_URI = "http://php.net/distributions/php-${PV}.tar.bz2 \
+           file://0002-build-php.m4-don-t-unset-cache-variables.patch \
+           file://0003-php-remove-host-specific-info-from-header-file.patch \
+           file://0004-configure.ac-don-t-include-build-libtool.m4.patch \
+           file://0006-ext-phar-Makefile.frag-Fix-phar-packaging.patch \
+           file://0009-php-don-t-use-broken-wrapper-for-mkdir.patch \
+           file://0010-iconv-fix-detection.patch \
+           file://0001-Change-whether-to-inline-XXH3_hashLong_withSecret-to.patch \
+          "
+
+SRC_URI:append:class-target = " \
+            file://0001-ext-opcache-config.m4-enable-opcache.patch \
+            file://0005-pear-fix-Makefile.frag-for-Yocto.patch \
+            file://0007-sapi-cli-config.m4-fix-build-directory.patch \
+            file://0008-ext-imap-config.m4-fix-include-paths.patch \
+            file://php-fpm.conf \
+            file://php-fpm-apache.conf \
+            file://70_mod_php${PHP_MAJOR_VERSION}.conf \
+            file://php-fpm.service \
+          "
+
+S = "${WORKDIR}/php-${PV}"
+SRC_URI[sha256sum] = "2658c1b8935ab6b53a7f209354602761ab07066e66920bc472b8815fd1b43f71"
+
+CVE_STATUS_GROUPS += "CVE_STATUS_PHP"
+CVE_STATUS_PHP[status] = "fixed-version: The name of this product is exactly the same as github.com/emlog/emlog. CVE can be safely ignored."
+CVE_STATUS_PHP = " \
+    CVE-2007-2728 \
+    CVE-2007-3205 \
+    CVE-2007-4596 \
+"
+
+inherit autotools pkgconfig python3native gettext multilib_header multilib_script systemd
+
+# phpize is not scanned for absolute paths by default (but php-config is).
+#
+SSTATE_SCAN_FILES += "phpize"
+SSTATE_SCAN_FILES += "build-defs.h"
+
+PHP_LIBDIR = "${libdir}/php${PHP_MAJOR_VERSION}"
+
+# Common EXTRA_OECONF
+COMMON_EXTRA_OECONF = "--enable-sockets \
+                       --enable-pcntl \
+                       --enable-shared \
+                       --disable-rpath \
+                       --with-pic \
+                       --libdir=${PHP_LIBDIR} \
+"
+EXTRA_OECONF = "--enable-mbstring \
+                --enable-fpm \
+                --with-libdir=${baselib} \
+                --with-gettext=${STAGING_LIBDIR}/.. \
+                --with-zlib=${STAGING_LIBDIR}/.. \
+                --with-iconv=${STAGING_LIBDIR}/.. \
+                --with-bz2=${STAGING_DIR_TARGET}${exec_prefix} \
+                --with-config-file-path=${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION} \
+                ${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'ac_cv_c_bigendian_php=no', 'ac_cv_c_bigendian_php=yes', d)} \
+                ${@bb.utils.contains('PACKAGECONFIG', 'pam', '', 'ac_cv_lib_pam_pam_start=no', d)} \
+                ${COMMON_EXTRA_OECONF} \
+"
+
+EXTRA_OECONF:append:riscv64 = " --with-pcre-jit=no"
+EXTRA_OECONF:append:riscv32 = " --with-pcre-jit=no"
+# Needs fibers assembly implemented for rv32
+# for example rv64 implementation is below
+# see https://github.com/php/php-src/commit/70b02d75f2abe3a292d49c4a4e9e4f850c2fee68
+EXTRA_OECONF:append:riscv32:libc-musl = " --disable-fiber-asm"
+
+CACHED_CONFIGUREVARS += "ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=yes"
+
+EXTRA_OECONF:class-native = " \
+                --with-zlib=${STAGING_LIBDIR_NATIVE}/.. \
+                --without-iconv \
+                ${COMMON_EXTRA_OECONF} \
+"
+
+PACKAGECONFIG ??= "mysql sqlite3 imap opcache openssl \
+                   ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} \
+"
+PACKAGECONFIG:class-native = ""
+
+PACKAGECONFIG[zip] = "--with-zip --with-zlib-dir=${STAGING_EXECPREFIXDIR},,libzip"
+
+PACKAGECONFIG[mysql] = "--with-mysqli=mysqlnd \
+                        --with-pdo-mysql=mysqlnd \
+                        ,--without-mysqli --without-pdo-mysql \
+                        ,mysql5"
+
+PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
+                          --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
+                          ,--without-sqlite3 --without-pdo-sqlite \
+                          ,sqlite3"
+PACKAGECONFIG[pgsql] = "--with-pgsql=${STAGING_DIR_TARGET}${exec_prefix},--without-pgsql,postgresql"
+PACKAGECONFIG[soap] = "--enable-soap, --disable-soap, libxml2"
+PACKAGECONFIG[apache2] = "--with-apxs2=${STAGING_BINDIR_CROSS}/apxs,,apache2-native apache2"
+PACKAGECONFIG[pam] = ",,libpam"
+PACKAGECONFIG[imap] = "--with-imap=${STAGING_DIR_HOST} \
+                       --with-imap-ssl=${STAGING_DIR_HOST} \
+                       ,--without-imap --without-imap-ssl \
+                       ,uw-imap"
+PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
+PACKAGECONFIG[opcache] = "--enable-opcache,--disable-opcache"
+PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl"
+PACKAGECONFIG[valgrind] = "--with-valgrind=${STAGING_DIR_TARGET}/usr,--with-valgrind=no,valgrind"
+PACKAGECONFIG[mbregex] = "--enable-mbregex, --disable-mbregex, oniguruma"
+PACKAGECONFIG[mbstring] = "--enable-mbstring,,"
+
+export HOSTCC = "${BUILD_CC}"
+export PHP_NATIVE_DIR = "${STAGING_BINDIR_NATIVE}"
+export PHP_PEAR_PHP_BIN = "${STAGING_BINDIR_NATIVE}/php"
+CFLAGS += " -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED -I${STAGING_INCDIR}/apache2"
+
+# Adding these flags enables dynamic library support, which is disabled by
+# default when cross compiling
+# See https://bugs.php.net/bug.php?id=60109
+CFLAGS += " -DHAVE_LIBDL "
+LDFLAGS += " -ldl "
+LDFLAGS:append:libc-musl = " -lucontext "
+LDFLAGS:append:riscv64 = " -latomic"
+
+EXTRA_OEMAKE = "INSTALL_ROOT=${D}"
+
+acpaths = ""
+
+do_configure:prepend () {
+    rm -f ${S}/build/libtool.m4 ${S}/ltmain.sh ${S}/aclocal.m4
+    find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_SBINDIR_NATIVE}/httpd!'
+}
+
+do_configure:append() {
+    # No, libtool, we really don't want rpath set...
+    sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
+    sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+    sed -i -e's@${RECIPE_SYSROOT}@@g' \
+        -e's@-ffile-prefix-map=[^ ]*[ ]*@@g' \
+        -e's@-fdebug-prefix-map=[^ ]*[ ]*@@g' \
+        -e's@-ffile-prefix-map=[^ ]*[ ]*@@g' \
+        -e's@-fmacro-prefix-map=[^ ]*[ ]*@@g' \
+        ${B}/main/build-defs.h \
+        ${B}/scripts/php-config
+}
+
+do_install:append:class-native() {
+    rm -rf ${D}/${PHP_LIBDIR}/php/.registry
+    rm -rf ${D}/${PHP_LIBDIR}/php/.channels
+    rm -rf ${D}/${PHP_LIBDIR}/php/.[a-z]*
+}
+
+do_install:prepend() {
+    cat ${ACLOCALDIR}/libtool.m4 ${ACLOCALDIR}/lt~obsolete.m4 ${ACLOCALDIR}/ltoptions.m4 \
+        ${ACLOCALDIR}/ltsugar.m4 ${ACLOCALDIR}/ltversion.m4 > ${S}/build/libtool.m4
+}
+
+do_install:prepend:class-target() {
+    if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
+        # Install dummy config file so apxs doesn't fail
+        install -d ${D}${sysconfdir}/apache2
+        printf "\nLoadModule dummy_module modules/mod_dummy.so\n" > ${D}${sysconfdir}/apache2/httpd.conf
+    fi
+}
+
+# fixme
+do_install:append:class-target() {
+    install -d ${D}${sysconfdir}/
+    rm -rf ${D}/.registry
+    rm -rf ${D}/.channels
+    rm -rf ${D}/.[a-z]*
+    rm -rf ${D}/var
+    rm -f  ${D}/${sysconfdir}/php-fpm.conf.default
+    install -m 0644 ${WORKDIR}/php-fpm.conf ${D}/${sysconfdir}/php-fpm.conf
+    install -d ${D}/${sysconfdir}/apache2/conf.d
+    install -m 0644 ${WORKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
+    install -d ${D}${sysconfdir}/init.d
+    sed -i 's:=/usr/sbin:=${sbindir}:g' ${B}/sapi/fpm/init.d.php-fpm
+    sed -i 's:=/etc:=${sysconfdir}:g' ${B}/sapi/fpm/init.d.php-fpm
+    sed -i 's:=/var:=${localstatedir}:g' ${B}/sapi/fpm/init.d.php-fpm
+    install -m 0755 ${B}/sapi/fpm/init.d.php-fpm ${D}${sysconfdir}/init.d/php-fpm
+    install -m 0644 ${WORKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
+        install -d ${D}${systemd_system_unitdir}
+        install -m 0644 ${WORKDIR}/php-fpm.service ${D}${systemd_system_unitdir}/php-fpm.service
+        sed -i -e 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_system_unitdir}/php-fpm.service
+        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/php-fpm.service
+        sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/php-fpm.service
+    fi
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/apache2/modules.d
+        install -d ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}
+        install -m 644  ${WORKDIR}/70_mod_php${PHP_MAJOR_VERSION}.conf ${D}${sysconfdir}/apache2/modules.d
+        sed -i s,lib/,${libexecdir}/, ${D}${sysconfdir}/apache2/modules.d/70_mod_php${PHP_MAJOR_VERSION}.conf
+        cat ${S}/php.ini-production | \
+            sed -e 's,extension_dir = \"\./\",extension_dir = \"/usr/lib/extensions\",' \
+            > ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}/php.ini
+        rm -f ${D}${sysconfdir}/apache2/httpd.conf*
+    fi
+}
+
+MULTILIB_SCRIPTS += "${PN}:${bindir}/php-config \
+                     ${PN}:${bindir}/phpize \
+"
+
+do_install:append () {
+        oe_multilib_header php/main/build-defs.h php/main/php_config.h
+}
+
+SYSROOT_PREPROCESS_FUNCS += "php_sysroot_preprocess"
+
+php_sysroot_preprocess () {
+    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -m 755 ${D}${bindir}/phpize ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+    install -m 755 ${D}${bindir}/php-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
+
+    sed -i 's!eval echo /!eval echo ${STAGING_DIR_HOST}/!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/phpize
+    sed -i 's!^include_dir=.*!include_dir=${STAGING_INCDIR}/php!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/php-config
+}
+
+MODPHP_PACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', '${PN}-modphp', '', d)}"
+
+PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-phpdbg ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${PN}-phar ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-opcache ${PN}"
+
+RDEPENDS:${PN} += "libgcc"
+RDEPENDS:${PN}-pear = "${PN}"
+RDEPENDS:${PN}-phar = "${PN}-cli"
+RDEPENDS:${PN}-cli = "${PN}"
+RDEPENDS:${PN}-modphp = "${PN} apache2"
+RDEPENDS:${PN}-opcache = "${PN}"
+
+ALLOW_EMPTY:${PN} = "1"
+
+INITSCRIPT_PACKAGES = "${PN}-fpm"
+inherit update-rc.d
+
+# WARNING: lib32-php-8.0.12-r0 do_package_qa: QA Issue: lib32-php: ELF binary /usr/libexec/apache2/modules/libphp.so has relocations in .text [textrel]
+#WARNING: lib32-php-8.0.12-r0 do_package_qa: QA Issue: lib32-php-opcache: ELF binary /usr/lib/php8/extensions/no-debug-zts-20200930/opcache.so has relocations in .text [textrel]
+INSANE_SKIP:${PN}:append:x86 = " textrel"
+INSANE_SKIP:${PN}-opcache:append:x86 = " textrel"
+
+FILES:${PN}-dbg =+ "${bindir}/.debug \
+                    ${libexecdir}/apache2/modules/.debug"
+FILES:${PN}-doc += "${PHP_LIBDIR}/php/doc"
+FILES:${PN}-cli = "${bindir}/php"
+FILES:${PN}-phpdbg = "${bindir}/phpdbg"
+FILES:${PN}-phar = "${bindir}/phar*"
+FILES:${PN}-cgi = "${bindir}/php-cgi"
+FILES:${PN}-fpm = "${sbindir}/php-fpm ${sysconfdir}/php-fpm.conf ${datadir}/fpm ${sysconfdir}/init.d/php-fpm ${sysconfdir}/php-fpm.d/www.conf.default"
+FILES:${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
+CONFFILES:${PN}-fpm = "${sysconfdir}/php-fpm.conf"
+CONFFILES:${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
+INITSCRIPT_NAME:${PN}-fpm = "php-fpm"
+INITSCRIPT_PARAMS:${PN}-fpm = "defaults 60"
+FILES:${PN}-pear = "${bindir}/pear* ${bindir}/pecl ${PHP_LIBDIR}/php/PEAR \
+                ${PHP_LIBDIR}/php/PEAR*.php ${PHP_LIBDIR}/php/System.php \
+                ${PHP_LIBDIR}/php/peclcmd.php ${PHP_LIBDIR}/php/pearcmd.php \
+                ${PHP_LIBDIR}/php/.channels ${PHP_LIBDIR}/php/.channels/.alias \
+                ${PHP_LIBDIR}/php/.registry ${PHP_LIBDIR}/php/Archive/Tar.php \
+                ${PHP_LIBDIR}/php/Console/Getopt.php ${PHP_LIBDIR}/php/OS/Guess.php \
+                ${PHP_LIBDIR}/php/data/PEAR \
+                ${sysconfdir}/pear.conf"
+FILES:${PN}-dev = "${includedir}/php ${PHP_LIBDIR}/build ${bindir}/phpize \
+                ${bindir}/php-config ${PHP_LIBDIR}/php/.depdb \
+                ${PHP_LIBDIR}/php/.depdblock ${PHP_LIBDIR}/php/.filemap \
+                ${PHP_LIBDIR}/php/.lock ${PHP_LIBDIR}/php/test"
+FILES:${PN}-staticdev += "${PHP_LIBDIR}/extensions/*/*.a"
+FILES:${PN}-opcache = "${PHP_LIBDIR}/extensions/*/opcache${SOLIBSDEV}"
+FILES:${PN} = "${PHP_LIBDIR}/php"
+FILES:${PN} += "${bindir} ${libexecdir}/apache2"
+
+SUMMARY:${PN}-modphp = "PHP module for the Apache HTTP server"
+FILES:${PN}-modphp = "${libdir}/apache2 ${sysconfdir}"
+
+MODPHP_OLDPACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'modphp', '', d)}"
+RPROVIDES:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
+RREPLACES:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
+RCONFLICTS:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
+
+SYSTEMD_SERVICE:${PN}-fpm = "php-fpm.service"
+SYSTEMD_PACKAGES += "${PN}-fpm"
+
+do_install:append:class-native() {
+    create_wrapper ${D}${bindir}/php \
+        PHP_PEAR_SYSCONF_DIR=${sysconfdir}/
+}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/php/php_8.2.9.bb b/meta-openembedded/meta-oe/recipes-devtools/php/php_8.2.9.bb
deleted file mode 100644
index e645a28..0000000
--- a/meta-openembedded/meta-oe/recipes-devtools/php/php_8.2.9.bb
+++ /dev/null
@@ -1,299 +0,0 @@
-SUMMARY = "A server-side, HTML-embedded scripting language"
-HOMEPAGE = "http://www.php.net"
-SECTION = "console/network"
-
-LICENSE = "PHP-3.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5ebd5be8e2a89f634486445bd164bef0"
-
-BBCLASSEXTEND = "native"
-DEPENDS = "zlib bzip2 libxml2 virtual/libiconv php-native"
-DEPENDS:append:libc-musl = " libucontext"
-DEPENDS:class-native = "zlib-native libxml2-native"
-
-PHP_MAJOR_VERSION = "${@d.getVar('PV').split('.')[0]}"
-
-SRC_URI = "http://php.net/distributions/php-${PV}.tar.bz2 \
-           file://0002-build-php.m4-don-t-unset-cache-variables.patch \
-           file://0003-php-remove-host-specific-info-from-header-file.patch \
-           file://0004-configure.ac-don-t-include-build-libtool.m4.patch \
-           file://0006-ext-phar-Makefile.frag-Fix-phar-packaging.patch \
-           file://0009-php-don-t-use-broken-wrapper-for-mkdir.patch \
-           file://0010-iconv-fix-detection.patch \
-           file://0001-Change-whether-to-inline-XXH3_hashLong_withSecret-to.patch \
-          "
-
-SRC_URI:append:class-target = " \
-            file://0001-ext-opcache-config.m4-enable-opcache.patch \
-            file://0005-pear-fix-Makefile.frag-for-Yocto.patch \
-            file://0007-sapi-cli-config.m4-fix-build-directory.patch \
-            file://0008-ext-imap-config.m4-fix-include-paths.patch \
-            file://php-fpm.conf \
-            file://php-fpm-apache.conf \
-            file://70_mod_php${PHP_MAJOR_VERSION}.conf \
-            file://php-fpm.service \
-          "
-
-S = "${WORKDIR}/php-${PV}"
-SRC_URI[sha256sum] = "48460b994ae7eb5096a310f44d13e865de1771104d4a550d53072be58a6f176c"
-
-CVE_STATUS_GROUPS += "CVE_STATUS_PHP"
-CVE_STATUS_PHP[status] = "fixed-version: The name of this product is exactly the same as github.com/emlog/emlog. CVE can be safely ignored."
-CVE_STATUS_PHP = " \
-    CVE-2007-2728 \
-    CVE-2007-3205 \
-    CVE-2007-4596 \
-"
-
-inherit autotools pkgconfig python3native gettext multilib_header multilib_script systemd
-
-# phpize is not scanned for absolute paths by default (but php-config is).
-#
-SSTATE_SCAN_FILES += "phpize"
-SSTATE_SCAN_FILES += "build-defs.h"
-
-PHP_LIBDIR = "${libdir}/php${PHP_MAJOR_VERSION}"
-
-# Common EXTRA_OECONF
-COMMON_EXTRA_OECONF = "--enable-sockets \
-                       --enable-pcntl \
-                       --enable-shared \
-                       --disable-rpath \
-                       --with-pic \
-                       --libdir=${PHP_LIBDIR} \
-"
-EXTRA_OECONF = "--enable-mbstring \
-                --enable-fpm \
-                --with-libdir=${baselib} \
-                --with-gettext=${STAGING_LIBDIR}/.. \
-                --with-zlib=${STAGING_LIBDIR}/.. \
-                --with-iconv=${STAGING_LIBDIR}/.. \
-                --with-bz2=${STAGING_DIR_TARGET}${exec_prefix} \
-                --with-config-file-path=${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION} \
-                ${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'le', 'ac_cv_c_bigendian_php=no', 'ac_cv_c_bigendian_php=yes', d)} \
-                ${@bb.utils.contains('PACKAGECONFIG', 'pam', '', 'ac_cv_lib_pam_pam_start=no', d)} \
-                ${COMMON_EXTRA_OECONF} \
-"
-
-EXTRA_OECONF:append:riscv64 = " --with-pcre-jit=no"
-EXTRA_OECONF:append:riscv32 = " --with-pcre-jit=no"
-# Needs fibers assembly implemented for rv32
-# for example rv64 implementation is below
-# see https://github.com/php/php-src/commit/70b02d75f2abe3a292d49c4a4e9e4f850c2fee68
-EXTRA_OECONF:append:riscv32:libc-musl = " --disable-fiber-asm"
-
-CACHED_CONFIGUREVARS += "ac_cv_func_dlopen=no ac_cv_lib_dl_dlopen=yes"
-
-EXTRA_OECONF:class-native = " \
-                --with-zlib=${STAGING_LIBDIR_NATIVE}/.. \
-                --without-iconv \
-                ${COMMON_EXTRA_OECONF} \
-"
-
-PACKAGECONFIG ??= "mysql sqlite3 imap opcache openssl \
-                   ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 pam', d)} \
-"
-PACKAGECONFIG:class-native = ""
-
-PACKAGECONFIG[zip] = "--with-zip --with-zlib-dir=${STAGING_EXECPREFIXDIR},,libzip"
-
-PACKAGECONFIG[mysql] = "--with-mysqli=mysqlnd \
-                        --with-pdo-mysql=mysqlnd \
-                        ,--without-mysqli --without-pdo-mysql \
-                        ,mysql5"
-
-PACKAGECONFIG[sqlite3] = "--with-sqlite3=${STAGING_LIBDIR}/.. \
-                          --with-pdo-sqlite=${STAGING_LIBDIR}/.. \
-                          ,--without-sqlite3 --without-pdo-sqlite \
-                          ,sqlite3"
-PACKAGECONFIG[pgsql] = "--with-pgsql=${STAGING_DIR_TARGET}${exec_prefix},--without-pgsql,postgresql"
-PACKAGECONFIG[soap] = "--enable-soap, --disable-soap, libxml2"
-PACKAGECONFIG[apache2] = "--with-apxs2=${STAGING_BINDIR_CROSS}/apxs,,apache2-native apache2"
-PACKAGECONFIG[pam] = ",,libpam"
-PACKAGECONFIG[imap] = "--with-imap=${STAGING_DIR_HOST} \
-                       --with-imap-ssl=${STAGING_DIR_HOST} \
-                       ,--without-imap --without-imap-ssl \
-                       ,uw-imap"
-PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
-PACKAGECONFIG[opcache] = "--enable-opcache,--disable-opcache"
-PACKAGECONFIG[openssl] = "--with-openssl,--without-openssl,openssl"
-PACKAGECONFIG[valgrind] = "--with-valgrind=${STAGING_DIR_TARGET}/usr,--with-valgrind=no,valgrind"
-PACKAGECONFIG[mbregex] = "--enable-mbregex, --disable-mbregex, oniguruma"
-PACKAGECONFIG[mbstring] = "--enable-mbstring,,"
-
-export HOSTCC = "${BUILD_CC}"
-export PHP_NATIVE_DIR = "${STAGING_BINDIR_NATIVE}"
-export PHP_PEAR_PHP_BIN = "${STAGING_BINDIR_NATIVE}/php"
-CFLAGS += " -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED -I${STAGING_INCDIR}/apache2"
-
-# Adding these flags enables dynamic library support, which is disabled by
-# default when cross compiling
-# See https://bugs.php.net/bug.php?id=60109
-CFLAGS += " -DHAVE_LIBDL "
-LDFLAGS += " -ldl "
-LDFLAGS:append:libc-musl = " -lucontext "
-LDFLAGS:append:riscv64 = " -latomic"
-
-EXTRA_OEMAKE = "INSTALL_ROOT=${D}"
-
-acpaths = ""
-
-do_configure:prepend () {
-    rm -f ${S}/build/libtool.m4 ${S}/ltmain.sh ${S}/aclocal.m4
-    find ${S} -name config.m4 | xargs -n1 sed -i 's!APXS_HTTPD=.*!APXS_HTTPD=${STAGING_SBINDIR_NATIVE}/httpd!'
-}
-
-do_configure:append() {
-    # No, libtool, we really don't want rpath set...
-    sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
-    sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
-    sed -i -e's@${RECIPE_SYSROOT}@@g' \
-        -e's@-ffile-prefix-map=[^ ]*[ ]*@@g' \
-        -e's@-fdebug-prefix-map=[^ ]*[ ]*@@g' \
-        -e's@-ffile-prefix-map=[^ ]*[ ]*@@g' \
-        -e's@-fmacro-prefix-map=[^ ]*[ ]*@@g' \
-        ${B}/main/build-defs.h \
-        ${B}/scripts/php-config
-}
-
-do_install:append:class-native() {
-    rm -rf ${D}/${PHP_LIBDIR}/php/.registry
-    rm -rf ${D}/${PHP_LIBDIR}/php/.channels
-    rm -rf ${D}/${PHP_LIBDIR}/php/.[a-z]*
-}
-
-do_install:prepend() {
-    cat ${ACLOCALDIR}/libtool.m4 ${ACLOCALDIR}/lt~obsolete.m4 ${ACLOCALDIR}/ltoptions.m4 \
-        ${ACLOCALDIR}/ltsugar.m4 ${ACLOCALDIR}/ltversion.m4 > ${S}/build/libtool.m4
-}
-
-do_install:prepend:class-target() {
-    if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
-        # Install dummy config file so apxs doesn't fail
-        install -d ${D}${sysconfdir}/apache2
-        printf "\nLoadModule dummy_module modules/mod_dummy.so\n" > ${D}${sysconfdir}/apache2/httpd.conf
-    fi
-}
-
-# fixme
-do_install:append:class-target() {
-    install -d ${D}${sysconfdir}/
-    rm -rf ${D}/.registry
-    rm -rf ${D}/.channels
-    rm -rf ${D}/.[a-z]*
-    rm -rf ${D}/var
-    rm -f  ${D}/${sysconfdir}/php-fpm.conf.default
-    install -m 0644 ${WORKDIR}/php-fpm.conf ${D}/${sysconfdir}/php-fpm.conf
-    install -d ${D}/${sysconfdir}/apache2/conf.d
-    install -m 0644 ${WORKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
-    install -d ${D}${sysconfdir}/init.d
-    sed -i 's:=/usr/sbin:=${sbindir}:g' ${B}/sapi/fpm/init.d.php-fpm
-    sed -i 's:=/etc:=${sysconfdir}:g' ${B}/sapi/fpm/init.d.php-fpm
-    sed -i 's:=/var:=${localstatedir}:g' ${B}/sapi/fpm/init.d.php-fpm
-    install -m 0755 ${B}/sapi/fpm/init.d.php-fpm ${D}${sysconfdir}/init.d/php-fpm
-    install -m 0644 ${WORKDIR}/php-fpm-apache.conf ${D}/${sysconfdir}/apache2/conf.d/php-fpm.conf
-
-    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)};then
-        install -d ${D}${systemd_system_unitdir}
-        install -m 0644 ${WORKDIR}/php-fpm.service ${D}${systemd_system_unitdir}/php-fpm.service
-        sed -i -e 's,@LOCALSTATEDIR@,${localstatedir},g' ${D}${systemd_system_unitdir}/php-fpm.service
-        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/php-fpm.service
-        sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_system_unitdir}/php-fpm.service
-    fi
-
-    if ${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'true', 'false', d)}; then
-        install -d ${D}${sysconfdir}/apache2/modules.d
-        install -d ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}
-        install -m 644  ${WORKDIR}/70_mod_php${PHP_MAJOR_VERSION}.conf ${D}${sysconfdir}/apache2/modules.d
-        sed -i s,lib/,${libexecdir}/, ${D}${sysconfdir}/apache2/modules.d/70_mod_php${PHP_MAJOR_VERSION}.conf
-        cat ${S}/php.ini-production | \
-            sed -e 's,extension_dir = \"\./\",extension_dir = \"/usr/lib/extensions\",' \
-            > ${D}${sysconfdir}/php/apache2-php${PHP_MAJOR_VERSION}/php.ini
-        rm -f ${D}${sysconfdir}/apache2/httpd.conf*
-    fi
-}
-
-MULTILIB_SCRIPTS += "${PN}:${bindir}/php-config \
-                     ${PN}:${bindir}/phpize \
-"
-
-do_install:append () {
-        oe_multilib_header php/main/build-defs.h php/main/php_config.h
-}
-
-SYSROOT_PREPROCESS_FUNCS += "php_sysroot_preprocess"
-
-php_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
-    install -m 755 ${D}${bindir}/phpize ${SYSROOT_DESTDIR}${bindir_crossscripts}/
-    install -m 755 ${D}${bindir}/php-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
-
-    sed -i 's!eval echo /!eval echo ${STAGING_DIR_HOST}/!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/phpize
-    sed -i 's!^include_dir=.*!include_dir=${STAGING_INCDIR}/php!' ${SYSROOT_DESTDIR}${bindir_crossscripts}/php-config
-}
-
-MODPHP_PACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', '${PN}-modphp', '', d)}"
-
-PACKAGES = "${PN}-dbg ${PN}-cli ${PN}-phpdbg ${PN}-cgi ${PN}-fpm ${PN}-fpm-apache2 ${PN}-pear ${PN}-phar ${MODPHP_PACKAGE} ${PN}-dev ${PN}-staticdev ${PN}-doc ${PN}-opcache ${PN}"
-
-RDEPENDS:${PN} += "libgcc"
-RDEPENDS:${PN}-pear = "${PN}"
-RDEPENDS:${PN}-phar = "${PN}-cli"
-RDEPENDS:${PN}-cli = "${PN}"
-RDEPENDS:${PN}-modphp = "${PN} apache2"
-RDEPENDS:${PN}-opcache = "${PN}"
-
-ALLOW_EMPTY:${PN} = "1"
-
-INITSCRIPT_PACKAGES = "${PN}-fpm"
-inherit update-rc.d
-
-# WARNING: lib32-php-8.0.12-r0 do_package_qa: QA Issue: lib32-php: ELF binary /usr/libexec/apache2/modules/libphp.so has relocations in .text [textrel]
-#WARNING: lib32-php-8.0.12-r0 do_package_qa: QA Issue: lib32-php-opcache: ELF binary /usr/lib/php8/extensions/no-debug-zts-20200930/opcache.so has relocations in .text [textrel]
-INSANE_SKIP:${PN}:append:x86 = " textrel"
-INSANE_SKIP:${PN}-opcache:append:x86 = " textrel"
-
-FILES:${PN}-dbg =+ "${bindir}/.debug \
-                    ${libexecdir}/apache2/modules/.debug"
-FILES:${PN}-doc += "${PHP_LIBDIR}/php/doc"
-FILES:${PN}-cli = "${bindir}/php"
-FILES:${PN}-phpdbg = "${bindir}/phpdbg"
-FILES:${PN}-phar = "${bindir}/phar*"
-FILES:${PN}-cgi = "${bindir}/php-cgi"
-FILES:${PN}-fpm = "${sbindir}/php-fpm ${sysconfdir}/php-fpm.conf ${datadir}/fpm ${sysconfdir}/init.d/php-fpm ${sysconfdir}/php-fpm.d/www.conf.default"
-FILES:${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
-CONFFILES:${PN}-fpm = "${sysconfdir}/php-fpm.conf"
-CONFFILES:${PN}-fpm-apache2 = "${sysconfdir}/apache2/conf.d/php-fpm.conf"
-INITSCRIPT_NAME:${PN}-fpm = "php-fpm"
-INITSCRIPT_PARAMS:${PN}-fpm = "defaults 60"
-FILES:${PN}-pear = "${bindir}/pear* ${bindir}/pecl ${PHP_LIBDIR}/php/PEAR \
-                ${PHP_LIBDIR}/php/PEAR*.php ${PHP_LIBDIR}/php/System.php \
-                ${PHP_LIBDIR}/php/peclcmd.php ${PHP_LIBDIR}/php/pearcmd.php \
-                ${PHP_LIBDIR}/php/.channels ${PHP_LIBDIR}/php/.channels/.alias \
-                ${PHP_LIBDIR}/php/.registry ${PHP_LIBDIR}/php/Archive/Tar.php \
-                ${PHP_LIBDIR}/php/Console/Getopt.php ${PHP_LIBDIR}/php/OS/Guess.php \
-                ${PHP_LIBDIR}/php/data/PEAR \
-                ${sysconfdir}/pear.conf"
-FILES:${PN}-dev = "${includedir}/php ${PHP_LIBDIR}/build ${bindir}/phpize \
-                ${bindir}/php-config ${PHP_LIBDIR}/php/.depdb \
-                ${PHP_LIBDIR}/php/.depdblock ${PHP_LIBDIR}/php/.filemap \
-                ${PHP_LIBDIR}/php/.lock ${PHP_LIBDIR}/php/test"
-FILES:${PN}-staticdev += "${PHP_LIBDIR}/extensions/*/*.a"
-FILES:${PN}-opcache = "${PHP_LIBDIR}/extensions/*/opcache${SOLIBSDEV}"
-FILES:${PN} = "${PHP_LIBDIR}/php"
-FILES:${PN} += "${bindir} ${libexecdir}/apache2"
-
-SUMMARY:${PN}-modphp = "PHP module for the Apache HTTP server"
-FILES:${PN}-modphp = "${libdir}/apache2 ${sysconfdir}"
-
-MODPHP_OLDPACKAGE = "${@bb.utils.contains('PACKAGECONFIG', 'apache2', 'modphp', '', d)}"
-RPROVIDES:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
-RREPLACES:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
-RCONFLICTS:${PN}-modphp = "${MODPHP_OLDPACKAGE}"
-
-SYSTEMD_SERVICE:${PN}-fpm = "php-fpm.service"
-SYSTEMD_PACKAGES += "${PN}-fpm"
-
-do_install:append:class-native() {
-    create_wrapper ${D}${bindir}/php \
-        PHP_PEAR_SYSCONF_DIR=${sysconfdir}/
-}
diff --git a/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra_2.39.bb b/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra_2.39.bb
index e129c18..a98dfab 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra_2.39.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/python/python3-distutils-extra_2.39.bb
@@ -10,8 +10,6 @@
 
 inherit setuptools3
 
-PIP_INSTALL_PACKAGE = "python_distutils_extra"
-
 S = "${WORKDIR}/python-distutils-extra-${PV}"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..4844003
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,34 @@
+From 8e4e5479cee153db7315d5134663fa87082b39fc Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 17:46:24 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://github.com/namhyung/uftrace/pull/1909]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ utils/utils.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/utils/utils.h b/utils/utils.h
+index 69a6072b..60265431 100644
+--- a/utils/utils.h
++++ b/utils/utils.h
+@@ -11,6 +11,9 @@
+ 
+ #include <ctype.h>
+ #include <endian.h>
++#ifndef __GLIBC__
++#include <libgen.h>
++#endif
+ #include <limits.h>
+ #include <signal.h>
+ #include <stdbool.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.15.2.bb b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.15.2.bb
index ff04d40..6043602 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.15.2.bb
+++ b/meta-openembedded/meta-oe/recipes-devtools/uftrace/uftrace_0.15.2.bb
@@ -11,7 +11,8 @@
 inherit autotools
 
 SRCREV = "9d8657e90b918994d7d2bcf6dd2cc7354c35a1b4"
-SRC_URI = "git://github.com/namhyung/${BPN};branch=master;protocol=https"
+SRC_URI = "git://github.com/namhyung/${BPN};branch=master;protocol=https \
+           file://0001-include-libgen.h-for-basename.patch"
 S = "${WORKDIR}/git"
 
 LDFLAGS:append:libc-musl = " -largp"
diff --git a/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0001-yasm-Set-build-date-to-SOURCE_DATE_EPOCH.patch b/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0001-yasm-Set-build-date-to-SOURCE_DATE_EPOCH.patch
index e65c985..42f5559 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0001-yasm-Set-build-date-to-SOURCE_DATE_EPOCH.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0001-yasm-Set-build-date-to-SOURCE_DATE_EPOCH.patch
@@ -7,6 +7,8 @@
 string for BUILD_DATE.
 
 Signed-off-by: Oleh Matiusha <omatiush@cisco.com>
+
+Upstream-Status: Pending
 ---
  configure.ac | 8 ++++++++
  1 file changed, 8 insertions(+)
diff --git a/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0002-yasm-Use-BUILD_DATE-for-reproducibility.patch b/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0002-yasm-Use-BUILD_DATE-for-reproducibility.patch
index 665f3af..4b9c933 100644
--- a/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0002-yasm-Use-BUILD_DATE-for-reproducibility.patch
+++ b/meta-openembedded/meta-oe/recipes-devtools/yasm/yasm/0002-yasm-Use-BUILD_DATE-for-reproducibility.patch
@@ -7,6 +7,8 @@
 
 Signed-off-by: Oleh Matiusha <omatiush@cisco.com>
 
+
+Upstream-Status: Pending
 ---
  tools/re2c/parser.c | 5 +++++
  1 file changed, 5 insertions(+)
diff --git a/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.27.bb b/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.27.bb
deleted file mode 100644
index 7a71d02..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.27.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "Data recovery tool"
-DESCRIPTION = "GNU ddrescue is a data recovery tool. It copies data \
-    from one file or block device (hard disc, cdrom, etc) to another, \
-    trying hard to rescue data in case of read errors."
-HOMEPAGE = "http://www.gnu.org/software/ddrescue/ddrescue.html"
-SECTION = "console"
-LICENSE = "GPL-2.0-or-later"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
-                    file://main_common.cc;beginline=5;endline=16;md5=ad099df052bdd8297f490712285069da \
-                    "
-
-SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.lz"
-SRC_URI[sha256sum] = "38c80c98c5a44f15e53663e4510097fd68d6ec20758efdf3a925037c183232eb"
-
-# This isn't already added by base.bbclass
-do_unpack[depends] += "lzip-native:do_populate_sysroot"
-
-CONFIGUREOPTS = "\
-    '--srcdir=${S}' \
-    '--prefix=${prefix}' \
-    '--exec-prefix=${exec_prefix}' \
-    '--bindir=${bindir}' \
-    '--datadir=${datadir}' \
-    '--infodir=${infodir}' \
-    '--sysconfdir=${sysconfdir}' \
-    'CXX=${CXX}' \
-    'CPPFLAGS=${CPPFLAGS}' \
-    'CXXFLAGS=${CXXFLAGS}' \
-    'LDFLAGS=${LDFLAGS}' \
-"
-EXTRA_OEMAKE = ""
-
-do_configure () {
-    ${S}/configure ${CONFIGUREOPTS}
-}
-
-do_install () {
-    oe_runmake 'DESTDIR=${D}' install
-    # Info dir listing isn't interesting at this point so remove it if it exists.
-    if [ -e "${D}${infodir}/dir" ]; then
-        rm -f ${D}${infodir}/dir
-    fi
-}
diff --git a/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.28.bb b/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.28.bb
new file mode 100644
index 0000000..0863fc1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/ddrescue/ddrescue_1.28.bb
@@ -0,0 +1,44 @@
+SUMMARY = "Data recovery tool"
+DESCRIPTION = "GNU ddrescue is a data recovery tool. It copies data \
+    from one file or block device (hard disc, cdrom, etc) to another, \
+    trying hard to rescue data in case of read errors."
+HOMEPAGE = "http://www.gnu.org/software/ddrescue/ddrescue.html"
+SECTION = "console"
+LICENSE = "GPL-2.0-or-later"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=76d6e300ffd8fb9d18bd9b136a9bba13 \
+                    file://main_common.cc;beginline=5;endline=16;md5=ad099df052bdd8297f490712285069da \
+                    "
+
+SRC_URI = "${GNU_MIRROR}/${BPN}/${BP}.tar.lz"
+SRC_URI[sha256sum] = "6626c07a7ca1cc1d03cad0958522c5279b156222d32c342e81117cfefaeb10c1"
+
+# This isn't already added by base.bbclass
+do_unpack[depends] += "lzip-native:do_populate_sysroot"
+
+CONFIGUREOPTS = "\
+    '--srcdir=${S}' \
+    '--prefix=${prefix}' \
+    '--exec-prefix=${exec_prefix}' \
+    '--bindir=${bindir}' \
+    '--datadir=${datadir}' \
+    '--infodir=${infodir}' \
+    '--sysconfdir=${sysconfdir}' \
+    'CXX=${CXX}' \
+    'CPPFLAGS=${CPPFLAGS}' \
+    'CXXFLAGS=${CXXFLAGS}' \
+    'LDFLAGS=${LDFLAGS}' \
+"
+EXTRA_OEMAKE = ""
+
+do_configure () {
+    ${S}/configure ${CONFIGUREOPTS}
+}
+
+do_install () {
+    oe_runmake 'DESTDIR=${D}' install
+    # Info dir listing isn't interesting at this point so remove it if it exists.
+    if [ -e "${D}${infodir}/dir" ]; then
+        rm -f ${D}${infodir}/dir
+    fi
+}
diff --git a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20240101.bb b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20240101.bb
deleted file mode 100644
index 988a8ee..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20240101.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "display dialog boxes from shell scripts"
-DESCRIPTION = "Dialog lets you to present a variety of questions \
-or display messages using dialog boxes from a shell \
-script (or any scripting language)."
-HOMEPAGE = "http://invisible-island.net/dialog/"
-SECTION = "console/utils"
-DEPENDS = "ncurses"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-SRC_URI = "https://invisible-mirror.net/archives/${BPN}/${BP}.tgz"
-SRC_URI[sha256sum] = "9419eb52b95837312a76ccb26002c5d624fab53abde0859f1c7364179dc0ebad"
-
-# hardcoded here for use in dialog-static recipe
-S = "${WORKDIR}/dialog-${PV}"
-
-inherit autotools-brokensep pkgconfig
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-
-PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--without-x,virtual/libx11"
-
-EXTRA_OECONF = "--with-ncurses \
-                --disable-rpath-hack"
-
-do_configure() {
-    gnu-configize --force
-    sed -i 's,${cf_ncuconfig_root}6-config,${cf_ncuconfig_root}-config,g' -i configure
-    sed -i 's,cf_have_ncuconfig=unknown,cf_have_ncuconfig=yes,g' -i configure
-    oe_runconf
-}
diff --git a/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20240307.bb b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20240307.bb
new file mode 100644
index 0000000..a497175
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/dialog/dialog_1.3-20240307.bb
@@ -0,0 +1,31 @@
+SUMMARY = "display dialog boxes from shell scripts"
+DESCRIPTION = "Dialog lets you to present a variety of questions \
+or display messages using dialog boxes from a shell \
+script (or any scripting language)."
+HOMEPAGE = "http://invisible-island.net/dialog/"
+SECTION = "console/utils"
+DEPENDS = "ncurses"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+SRC_URI = "https://invisible-mirror.net/archives/${BPN}/${BP}.tgz"
+SRC_URI[sha256sum] = "339d311c6abb240213426b99ad63565cbcb3e8641ef1989c033e945b754d34ef"
+
+# hardcoded here for use in dialog-static recipe
+S = "${WORKDIR}/dialog-${PV}"
+
+inherit autotools-brokensep pkgconfig
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+
+PACKAGECONFIG[x11] = "--with-x --x-includes=${STAGING_INCDIR} --x-libraries=${STAGING_LIBDIR},--without-x,virtual/libx11"
+
+EXTRA_OECONF = "--with-ncurses \
+                --disable-rpath-hack"
+
+do_configure() {
+    gnu-configize --force
+    sed -i 's,${cf_ncuconfig_root}6-config,${cf_ncuconfig_root}-config,g' -i configure
+    sed -i 's,cf_have_ncuconfig=unknown,cf_have_ncuconfig=yes,g' -i configure
+    oe_runconf
+}
diff --git a/meta-openembedded/meta-oe/recipes-extended/highway/highway_1.1.0.bb b/meta-openembedded/meta-oe/recipes-extended/highway/highway_1.1.0.bb
new file mode 100644
index 0000000..11d9e7c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/highway/highway_1.1.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Highway is a C++ library for SIMD (Single Instruction, Multiple Data)"
+HOMEPAGE = "https://github.com/google/highway/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2b42edef8fa55315f34f2370b4715ca9"
+
+inherit cmake
+
+SRC_URI = "git://github.com/google/highway.git;protocol=https;branch=master"
+
+SRCREV = "58b52a717469e62b2d9b8eaa2f5dddb44d4a4cbf"
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE = "-DBUILD_TESTING=0 -DCMAKE_BUILD_TYPE=Release"
+CXXFLAGS:append:arm = " -mfp16-format=ieee"
+# Option not supported with clang and its default format for __fp16 anyway with clang
+CXXFLAGS:remove:toolchain-clang = "-mfp16-format=ieee"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_3.1.0.bb b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_3.1.0.bb
deleted file mode 100644
index 60182d8..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_3.1.0.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-DESCRIPTION = "libblockdev is a C library supporting GObject introspection for manipulation of \
-block devices. It has a plugin-based architecture where each technology (like \
-LVM, Btrfs, MD RAID, Swap,...) is implemented in a separate plugin, possibly \
-with multiple implementations (e.g. using LVM CLI or the new LVM DBus API)."
-HOMEPAGE = "http://rhinstaller.github.io/libblockdev/"
-LICENSE = "LGPL-2.0-or-later"
-SECTION = "devel/lib"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
-
-inherit autotools gobject-introspection pkgconfig lib_package
-
-DEPENDS = "autoconf-archive-native glib-2.0 kmod udev libnvme"
-
-SRC_URI = "git://github.com/storaged-project/libblockdev;branch=master;protocol=https \
-           file://0001-fix-pythondir-for-multilib-when-cross-compiling.patch \
-           "
-SRCREV = "65f50bf912374b85d673f2716ea0c8306980c95b"
-S = "${WORKDIR}/git"
-
-FILES:${PN} += "${libdir}/python3.*/site-packages"
-
-PACKAGECONFIG ??= "python3 lvm lvm-dbus dm parted fs escrow btrfs crypto mdraid mpath nvdimm tools"
-PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
-PACKAGECONFIG[lvm] = "--with-lvm, --without-lvm, multipath-tools, lvm2"
-PACKAGECONFIG[lvm-dbus] = "--with-lvm_dbus, --without-lvm_dbus, multipath-tools, lvm2"
-PACKAGECONFIG[dm] = "--with-dm, --without-dm, multipath-tools, lvm2"
-PACKAGECONFIG[parted] = "--with-part, --without-part, parted"
-PACKAGECONFIG[fs] = "--with-fs, --without-fs, util-linux"
-PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
-PACKAGECONFIG[nvdimm] = "--with-nvdimm, --without-nvdimm, ndctl util-linux"
-PACKAGECONFIG[escrow] = "--with-escrow, --without-escrow, nss volume-key"
-PACKAGECONFIG[btrfs] = "--with-btrfs,--without-btrfs,libbytesize btrfs-tools"
-PACKAGECONFIG[crypto] = "--with-crypto,--without-crypto,cryptsetup nss volume-key"
-PACKAGECONFIG[mdraid] = "--with-mdraid,--without-mdraid,libbytesize"
-PACKAGECONFIG[mpath] = "--with-mpath,--without-mpath, multipath-tools, lvm2"
-PACKAGECONFIG[tools] = "--with-tools,--without-tools,libbytesize libdevmapper"
-
-export GIR_EXTRA_LIBS_PATH="${B}/src/utils/.libs"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_3.1.1.bb b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_3.1.1.bb
new file mode 100644
index 0000000..dd15146
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libblockdev/libblockdev_3.1.1.bb
@@ -0,0 +1,39 @@
+DESCRIPTION = "libblockdev is a C library supporting GObject introspection for manipulation of \
+block devices. It has a plugin-based architecture where each technology (like \
+LVM, Btrfs, MD RAID, Swap,...) is implemented in a separate plugin, possibly \
+with multiple implementations (e.g. using LVM CLI or the new LVM DBus API)."
+HOMEPAGE = "http://rhinstaller.github.io/libblockdev/"
+LICENSE = "LGPL-2.0-or-later"
+SECTION = "devel/lib"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c07cb499d259452f324bb90c3067d85c"
+
+inherit autotools gobject-introspection pkgconfig lib_package
+
+DEPENDS = "autoconf-archive-native glib-2.0 kmod udev libnvme"
+
+SRC_URI = "git://github.com/storaged-project/libblockdev;branch=3.1.x-devel;protocol=https \
+           file://0001-fix-pythondir-for-multilib-when-cross-compiling.patch \
+           "
+SRCREV = "68aaff5556afe26be749c29a2b7cbd714dce3050"
+S = "${WORKDIR}/git"
+
+FILES:${PN} += "${libdir}/python3.*/site-packages"
+
+PACKAGECONFIG ??= "python3 lvm lvm-dbus dm parted fs escrow btrfs crypto mdraid mpath nvdimm tools"
+PACKAGECONFIG[python3] = "--with-python3, --without-python3,,python3"
+PACKAGECONFIG[lvm] = "--with-lvm, --without-lvm, multipath-tools, lvm2"
+PACKAGECONFIG[lvm-dbus] = "--with-lvm_dbus, --without-lvm_dbus, multipath-tools, lvm2"
+PACKAGECONFIG[dm] = "--with-dm, --without-dm, multipath-tools, lvm2"
+PACKAGECONFIG[parted] = "--with-part, --without-part, parted"
+PACKAGECONFIG[fs] = "--with-fs, --without-fs, util-linux"
+PACKAGECONFIG[doc] = "--with-gtk-doc, --without-gtk-doc, gtk-doc-native"
+PACKAGECONFIG[nvdimm] = "--with-nvdimm, --without-nvdimm, ndctl util-linux"
+PACKAGECONFIG[escrow] = "--with-escrow, --without-escrow, nss volume-key"
+PACKAGECONFIG[btrfs] = "--with-btrfs,--without-btrfs,libbytesize btrfs-tools"
+PACKAGECONFIG[crypto] = "--with-crypto,--without-crypto,cryptsetup nss volume-key"
+PACKAGECONFIG[mdraid] = "--with-mdraid,--without-mdraid,libbytesize"
+PACKAGECONFIG[mpath] = "--with-mpath,--without-mpath, multipath-tools, lvm2"
+PACKAGECONFIG[tools] = "--with-tools,--without-tools,libbytesize libdevmapper"
+
+export GIR_EXTRA_LIBS_PATH="${B}/src/utils/.libs"
diff --git a/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.19.bb b/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.19.bb
deleted file mode 100644
index 11cdb82..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.19.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "libdeflate is a library for fast, whole-buffer DEFLATE-based compression and decompression."
-HOMEPAGE = "https://github.com/ebiggers/libdeflate"
-LICENSE = "MIT"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=7b6977026437092191e9da699ed9f780"
-
-DEPENDS += "gzip zlib"
-
-SRC_URI = "git://github.com/ebiggers/libdeflate.git;protocol=https;branch=master"
-
-S = "${WORKDIR}/git"
-SRCREV = "dd12ff2b36d603dbb7fa8838fe7e7176fcbd4f6f"
-
-inherit cmake pkgconfig
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.20.bb b/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.20.bb
new file mode 100644
index 0000000..f0a966f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libdeflate/libdeflate_1.20.bb
@@ -0,0 +1,15 @@
+SUMMARY = "libdeflate is a library for fast, whole-buffer DEFLATE-based compression and decompression."
+HOMEPAGE = "https://github.com/ebiggers/libdeflate"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7b6977026437092191e9da699ed9f780"
+
+DEPENDS += "gzip zlib"
+
+SRC_URI = "git://github.com/ebiggers/libdeflate.git;protocol=https;branch=master"
+
+S = "${WORKDIR}/git"
+SRCREV = "275aa5141db6eda3587214e0f1d3a134768f557d"
+
+inherit cmake pkgconfig
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.3.0.bb b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.3.0.bb
index 7864093..69e80ac 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.3.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libimobiledevice/libplist_2.3.0.bb
@@ -12,7 +12,6 @@
 SRC_URI = "git://github.com/libimobiledevice/libplist;protocol=https;branch=master"
 
 S = "${WORKDIR}/git"
-PR = "r1"
 
 CVE_STATUS_GROUPS += "CVE_STATUS_LIBLIST"
 CVE_STATUS_LIBLIST[status] = "fixed-version: The CPE in the NVD database doesn't reflect correctly the vulnerable versions."
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.17.11.bb b/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.17.11.bb
deleted file mode 100644
index 322075c..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.17.11.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-DESCRIPTION = "Libraries providing API for reporting different problems in applications \
-to different bug targets like Bugzilla, ftp, trac, etc..."
-SUMMARY = "Generic library for reporting various problems"
-HOMEPAGE = "https://abrt.readthedocs.org/"
-LICENSE = "GPL-2.0-or-later"
-DEPENDS = "xmlrpc-c xmlrpc-c-native intltool-native \
-        json-c libarchive libtar libnewt libproxy rpm \
-        augeas satyr systemd \
-"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
-
-SRC_URI = "git://github.com/abrt/libreport.git;protocol=https;branch=master"
-SRC_URI += "file://0001-Makefile.am-remove-doc-and-apidoc.patch \
-            file://0002-configure.ac-remove-prog-test-of-xmlto-and-asciidoc.patch \
-            file://0003-without-build-plugins.patch \
-            file://0004-configure.ac-remove-prog-test-of-augparse.patch \
-"
-
-SRCREV = "d58110e1fc663c92ac3e36b166f114b6904796ff"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-S = "${WORKDIR}/git"
-
-inherit features_check
-REQUIRED_DISTRO_FEATURES = "systemd"
-
-inherit gettext autotools python3native python3targetconfig pkgconfig
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','x11','gtk','',d)}"
-PACKAGECONFIG[gtk] = "--with-gtk, --without-gtk, gtk+3,"
-
-EXTRA_OECONF += "--with-python3"
-
-RDEPENDS:python3-libreport += "${PN}"
-
-do_patch[prefuncs] += "do_gen_version"
-do_gen_version() {
-    cd ${S}
-    ./gen-version
-}
-
-PACKAGES += "python3-libreport"
-
-FILES:${PN} += "${datadir}/*"
-FILES:${PN}-dbg += "${PYTHON_SITEPACKAGES_DIR}/*/.debug"
-FILES:python3-libreport = "${PYTHON_SITEPACKAGES_DIR}/*"
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.17.15.bb b/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.17.15.bb
new file mode 100644
index 0000000..28c64a1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/libreport/libreport_2.17.15.bb
@@ -0,0 +1,49 @@
+DESCRIPTION = "Libraries providing API for reporting different problems in applications \
+to different bug targets like Bugzilla, ftp, trac, etc..."
+SUMMARY = "Generic library for reporting various problems"
+HOMEPAGE = "https://abrt.readthedocs.org/"
+LICENSE = "GPL-2.0-or-later"
+DEPENDS = "xmlrpc-c xmlrpc-c-native intltool-native \
+        json-c libarchive libtar libnewt libproxy rpm \
+        augeas satyr systemd \
+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI = "git://github.com/abrt/libreport.git;protocol=https;branch=master"
+SRC_URI += "file://0001-Makefile.am-remove-doc-and-apidoc.patch \
+            file://0002-configure.ac-remove-prog-test-of-xmlto-and-asciidoc.patch \
+            file://0003-without-build-plugins.patch \
+            file://0004-configure.ac-remove-prog-test-of-augparse.patch \
+"
+
+SRCREV = "f6bb06a699617d078fcd4f8b71b4d063bf47b52b"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+S = "${WORKDIR}/git"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+inherit gettext autotools python3native python3targetconfig pkgconfig
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES','x11','gtk','',d)}"
+PACKAGECONFIG[gtk] = "--with-gtk, --without-gtk, gtk+3,"
+
+EXTRA_OECONF += "--with-python3"
+
+RDEPENDS:python3-libreport += "${PN}"
+
+do_patch[prefuncs] += "do_gen_version"
+do_gen_version() {
+    cd ${S}
+    ./gen-version
+}
+
+PACKAGES += "python3-libreport"
+
+FILES:${PN} += "${datadir}/*"
+FILES:${PN}-dbg += "${PYTHON_SITEPACKAGES_DIR}/*/.debug"
+FILES:python3-libreport = "${PYTHON_SITEPACKAGES_DIR}/*"
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb b/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
index 955dd51..93b5805 100644
--- a/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/libwmf/libwmf_0.2.8.4.bb
@@ -5,7 +5,6 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
 
-PR = "r3"
 
 DEPENDS:class-native = "freetype-native libpng-native jpeg-native"
 DEPENDS = "freetype libpng jpeg expat gtk+"
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch
deleted file mode 100644
index d813b37..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 609e1745d26d6f42d426018a4dd8d2342d6fc170 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 18 Aug 2020 08:37:57 -0700
-Subject: [PATCH] Add -lxml2 to linker cmdline of xml is found
-
-When cross compiling for systems where static libs
-for libxml are not available cmake's detection mechanism
-resort to linking with libxml.so but doesnt use -lxml2
-liblldbHost.a however requires libxml on linker
-cmdline _after_ itself so its use of symbols from libxml2
-can be resolved. Here check for libxml2 being detected and
-add it if its found.
-
-Fixes
-minifi-cpp/0.7.0-r0/recipe-sysroot-native/usr/lib/libxml2.so is incompatible with elf32-i386
-| clang-11: error: linker command failed with exit code 1 (use -v to see invocation)
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- thirdparty/libarchive-3.3.2/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/thirdparty/libarchive-3.3.2/CMakeLists.txt b/thirdparty/libarchive-3.3.2/CMakeLists.txt
-index 0c1ea6f7..cde0cc51 100644
---- a/thirdparty/libarchive-3.3.2/CMakeLists.txt
-+++ b/thirdparty/libarchive-3.3.2/CMakeLists.txt
-@@ -1031,7 +1031,7 @@ ENDIF()
- IF(LIBXML2_FOUND)
-   CMAKE_PUSH_CHECK_STATE()	# Save the state of the variables
-   INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
--  LIST(APPEND ADDITIONAL_LIBS ${LIBXML2_LIBRARIES})
-+  LIST(APPEND ADDITIONAL_LIBS xml2)
-   SET(HAVE_LIBXML2 1)
-   # libxml2's include files use iconv.h
-   SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR})
--- 
-2.28.0
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Add-missing-includes-cstdint-and-cstdio.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Add-missing-includes-cstdint-and-cstdio.patch
deleted file mode 100644
index 0fce8dc..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Add-missing-includes-cstdint-and-cstdio.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 6e376601c990abaa5e261d1311f92acb3b370b8f Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 24 Jan 2023 21:40:43 -0800
-Subject: [PATCH] Add missing includes <cstdint> and <cstdio>
-
-This is needed with GCC 13 and newer [1]
-
-[1] https://www.gnu.org/software/gcc/gcc-13/porting_to.html
-
-Upstream-Status: Backport [https://github.com/facebook/rocksdb/commit/88edfbfb5e1cac228f7cc31fbec24bb637fe54b1]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- .../rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h   | 1 +
- storage/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h   | 1 +
- .../rocksdb/rocksdb/table/block_based/data_block_hash_index.h    | 1 +
- storage/rocksdb/rocksdb/util/slice.cc                            | 1 +
- storage/rocksdb/rocksdb/util/string_util.h                       | 1 +
- tpool/aio_linux.cc                                               | 1 +
- 6 files changed, 6 insertions(+)
-
---- a/thirdparty/rocksdb/include/rocksdb/utilities/checkpoint.h
-+++ b/thirdparty/rocksdb/include/rocksdb/utilities/checkpoint.h
-@@ -8,6 +8,7 @@
- #pragma once
- #ifndef ROCKSDB_LITE
- 
-+#include <cstdint>
- #include <string>
- #include "rocksdb/status.h"
- 
---- a/thirdparty/rocksdb/util/string_util.h
-+++ b/thirdparty/rocksdb/util/string_util.h
-@@ -6,6 +6,7 @@
- 
- #pragma once
- 
-+#include <cstdint>
- #include <sstream>
- #include <string>
- #include <unordered_map>
---- a/extensions/expression-language/common/Value.h
-+++ b/extensions/expression-language/common/Value.h
-@@ -15,6 +15,7 @@
-  * limitations under the License.
-  */
- 
-+#include <cstdint>
- #include <string>
- #include <sstream>
- #include <iomanip>
---- a/libminifi/include/utils/StringUtils.h
-+++ b/libminifi/include/utils/StringUtils.h
-@@ -18,6 +18,7 @@
- #define LIBMINIFI_INCLUDE_IO_STRINGUTILS_H_
- #include <iostream>
- #include <cstring>
-+#include <cstdint>
- #include <functional>
- #ifdef WIN32
- 	#include <cwctype>
---- a/thirdparty/rocksdb/db/compaction_iteration_stats.h
-+++ b/thirdparty/rocksdb/db/compaction_iteration_stats.h
-@@ -5,6 +5,7 @@
- 
- #pragma once
- 
-+#include <cstdint>
- struct CompactionIterationStats {
-   // Compaction statistics
- 
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-BundledOSSPUUID.cmake-Pass-CFLAGS-to-compiler.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-BundledOSSPUUID.cmake-Pass-CFLAGS-to-compiler.patch
deleted file mode 100644
index ceb8ec3..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-BundledOSSPUUID.cmake-Pass-CFLAGS-to-compiler.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ab031c2b1f8c03e23a8dc8a95c9c9e9b8ce397b2 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Fri, 15 Sep 2023 11:32:11 +0800
-Subject: [PATCH] BundledOSSPUUID.cmake: Pass CFLAGS to compiler
-
-Make sure -fdebug-prefix-map options are passed to compiler to fix the
-below warning:
-  WARNING: minifi-cpp-0.7.0-r0 do_package_qa: QA Issue: File /usr/bin/.debug/minificontroller in package minifi-cpp-dbg contains reference to TMPDIR
-File /usr/bin/.debug/minifi in package minifi-cpp-dbg contains reference to TMPDIR [buildpaths]
-
-Upsteam-Status: Pending
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
-Upstream-Status: Pending
-
- cmake/BundledOSSPUUID.cmake | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cmake/BundledOSSPUUID.cmake b/cmake/BundledOSSPUUID.cmake
-index 0cf4bac0..ec57ef51 100644
---- a/cmake/BundledOSSPUUID.cmake
-+++ b/cmake/BundledOSSPUUID.cmake
-@@ -37,7 +37,7 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
-     ENDFOREACH(BYPRODUCT)
- 
-     # Build project
--    set(CONFIGURE_COMMAND ac_cv_va_copy=C99 ./configure CFLAGS=-fPIC CXXFLAGS=-fPIC --host=${HOST_SYS}
-+    set(CONFIGURE_COMMAND ac_cv_va_copy=C99 ./configure CXXFLAGS=-fPIC --host=${HOST_SYS}
-         --with-cxx --without-perl --without-php --without-pgsql
-         --prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install)
-     string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-CMakeLists.txt-Pass-the-OPENSSLDIR.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-CMakeLists.txt-Pass-the-OPENSSLDIR.patch
deleted file mode 100644
index 158fed5..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-CMakeLists.txt-Pass-the-OPENSSLDIR.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 0c5735a0a02e15c3eae94d25fb8756285d121ddb Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Fri, 15 Sep 2023 10:59:05 +0800
-Subject: [PATCH] CMakeLists.txt: Pass the OPENSSLDIR
-
-Fixes:
-  WARNING: minifi-cpp-0.7.0-r0 do_package_qa: QA Issue: File /usr/bin/minificontroller in package minifi-cpp contains reference to TMPDIR
-  File /usr/bin/minifi in package minifi-cpp contains reference to TMPDIR [buildpaths]
-
-Upstream-Status: Pending
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 215a4ef4..6fe8101f 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -75,6 +75,7 @@ set(PASSTHROUGH_CMAKE_ARGS -DANDROID_ABI=${ANDROID_ABI}
-                            -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=${CMAKE_FIND_ROOT_PATH_MODE_LIBRARY}
-                            -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE}
-                            -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
-+                           -DOPENSSLDIR=${OPENSSLDIR}
- 						   ${OPENSSL_PASSTHROUGH}
-                            -G${CMAKE_GENERATOR})
- 
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-CMakeLists.txt-use-curl-local-source-tarball.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-CMakeLists.txt-use-curl-local-source-tarball.patch
deleted file mode 100644
index 183a006..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-CMakeLists.txt-use-curl-local-source-tarball.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 8d99edeefb23c9d7574a0b5a0e2e3f41b0433490 Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Thu, 10 Sep 2020 16:14:10 +0800
-Subject: [PATCH] CMakeLists.txt: use curl local source tarball
-
-Do not download curl source during compile.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- CMakeLists.txt | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7cd550fb..215a4ef4 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -314,11 +314,7 @@ endif()
- 
-   ExternalProject_Add(
-     curl-external
--    GIT_REPOSITORY "https://github.com/curl/curl.git"
--    GIT_TAG "f3294d9d86e6a7915a967efff2842089b8b0d071"  # Version 7.64.0
--    SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-src"
--    LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
--    TLS_VERIFY OFF
-+    SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/curl-7.64.0"
-     CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-                "-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-install"
-                "-DCMAKE_INSTALL_LIBDIR=lib${LIBSUFFIX}"
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-LFS64-functions-on-linux-musl.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-LFS64-functions-on-linux-musl.patch
deleted file mode 100644
index 29f5b94..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-LFS64-functions-on-linux-musl.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 6690e7fe566445e20fec178e9e209e5f9f2fdde3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 5 Apr 2023 23:33:46 -0700
-Subject: [PATCH] Do not use LFS64 functions on linux/musl
-
-On musl, off_t is 64bit always ( even on 32bit platforms ), therefore using
-LFS64 funcitons is not needed on such platforms. Moreover, musl has stopped
-providing aliases for these functions [1] which means it wont compile on
-newer musl systems. Therefore only use it on 32bit glibc/linux platforms
-and exclude musl like cygwin or OSX
-
-[1] https://git.musl-libc.org/cgit/musl/commit/?id=246f1c811448f37a44b41cd8df8d0ef9736d95f4
-
-Upstream-Status: Submitted [https://github.com/gabime/spdlog/pull/2589]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- thirdparty/spdlog-20170710/include/spdlog/details/os.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/thirdparty/spdlog-20170710/include/spdlog/details/os.h b/thirdparty/spdlog-20170710/include/spdlog/details/os.h
-index 735f60147..639b07a79 100644
---- a/thirdparty/spdlog-20170710/include/spdlog/details/os.h
-+++ b/thirdparty/spdlog-20170710/include/spdlog/details/os.h
-@@ -237,7 +237,7 @@ inline size_t filesize(FILE *f)
- #else // unix
-     int fd = fileno(f);
-     //64 bits(but not in osx, where fstat64 is deprecated)
--#if !defined(__FreeBSD__) && !defined(__APPLE__) && (defined(__x86_64__) || defined(__ppc64__))
-+#if !defined(__FreeBSD__) && !defined(__APPLE__) && ((defined(__x86_64__) || defined(__ppc64__)) && (!defined(__linux__)))
-     struct stat64 st;
-     if (fstat64(fd, &st) == 0)
-         return static_cast<size_t>(st.st_size);
--- 
-2.40.0
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-bundled-packages.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-bundled-packages.patch
new file mode 100644
index 0000000..b997d6c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Do-not-use-bundled-packages.patch
@@ -0,0 +1,108 @@
+From 65923a872e44cb461ef1a03374057351f0bc5efe Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 19 Mar 2024 19:39:04 +0800
+Subject: [PATCH] Do not use bundled packages
+
+Use external dependencies for openssl, curl, bzip2, zlib, libarchive,
+xz, yaml-cpp and libxml2.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ CMakeLists.txt                       | 23 ++++++-----------------
+ extensions/libarchive/CMakeLists.txt |  7 ++-----
+ 2 files changed, 8 insertions(+), 22 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 13a2b992..8a1dd6d9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -222,9 +222,7 @@ else()
+ endif()
+ 
+ if (NOT DISABLE_BZIP2 AND (NOT DISABLE_LIBARCHIVE OR (NOT DISABLE_ROCKSDB AND NOT WIN32)))
+-    include(BundledBZip2)
+-    use_bundled_bzip2(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
+-    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/bzip2/dummy")
++    find_package(BZip2 REQUIRED)
+ endif()
+ 
+ if(NOT WIN32)
+@@ -247,9 +245,7 @@ endif()
+ 
+ # OpenSSL
+ if (NOT OPENSSL_OFF)
+-    include(BundledOpenSSL)
+-    use_openssl("${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")
+-    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/ssl")
++    find_package(OpenSSL REQUIRED)
+ 
+     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOPENSSL_SUPPORT")
+     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DOPENSSL_SUPPORT")
+@@ -262,9 +258,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSODIUM_STATIC=1")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSODIUM_STATIC=1")
+ 
+ # zlib
+-include(BundledZLIB)
+-use_bundled_zlib(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+-list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/zlib/dummy")
++find_package(ZLIB REQUIRED)
+ 
+ # uthash
+ add_library(ut INTERFACE)
+@@ -272,9 +266,7 @@ target_include_directories(ut SYSTEM INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/thir
+ 
+ # cURL
+ if(NOT DISABLE_CURL)
+-    include(BundledLibcURL)
+-    use_bundled_curl(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+-    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/curl/dummy")
++    find_package(CURL REQUIRED)
+ else()
+     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDISABLE_CURL")
+     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DDISABLE_CURL")
+@@ -285,8 +277,7 @@ include(BundledSpdlog)
+ use_bundled_spdlog(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+ 
+ # yaml-cpp
+-include(BundledYamlCpp)
+-use_bundled_yamlcpp(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
++find_package(yaml-cpp REQUIRED)
+ 
+ # concurrentqueue
+ add_library(concurrentqueue INTERFACE)
+@@ -357,9 +348,7 @@ include(Extensions)
+ add_subdirectory(libminifi)
+ 
+ if ((ENABLE_OPENWSMAN AND NOT DISABLE_CIVET AND NOT DISABLE_CURL) OR ENABLE_ALL OR ENABLE_AZURE)
+-    include(BundledLibXml2)
+-    use_bundled_libxml2(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
+-    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/libxml2/dummy")
++    find_package(LibXml2 REQUIRED)
+ endif()
+ 
+ if (ENABLE_ALL OR ENABLE_PROMETHEUS OR NOT DISABLE_CIVET)
+diff --git a/extensions/libarchive/CMakeLists.txt b/extensions/libarchive/CMakeLists.txt
+index 2b89d3ea..49e13e21 100644
+--- a/extensions/libarchive/CMakeLists.txt
++++ b/extensions/libarchive/CMakeLists.txt
+@@ -22,13 +22,10 @@ if (DISABLE_LIBARCHIVE)
+ endif()
+ 
+ if (NOT DISABLE_LZMA)
+-    include(BundledLibLZMA)
+-    use_bundled_liblzma(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
+-    list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/liblzma/dummy")
++    find_package(LibLZMA REQUIRED)
+ endif()
+ 
+-include(BundledLibArchive)
+-use_bundled_libarchive(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
++find_package(LibArchive REQUIRED)
+ 
+ include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt)
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Fix-build-with-libc.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Fix-build-with-libc.patch
deleted file mode 100644
index c1c1181..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Fix-build-with-libc.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 72e0fe484444169007e481c9b33d8f78ebe03674 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 27 May 2021 15:44:10 -0700
-Subject: [PATCH] Fix build with libc++
-
-In libc++ on 32-bit platforms, int64_t is defined as alias of long long. On 64-bit platforms: long.
-
-On the other hand in definition of std::chrono::duration aliases, that you can find here long long is used
-
-Therefore create custom unit to avoid incompatibility between libstdc++
-and libc++
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- extensions/expression-language/Expression.cpp | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/extensions/expression-language/Expression.cpp b/extensions/expression-language/Expression.cpp
-index a25e1d3f..68d6320c 100644
---- a/extensions/expression-language/Expression.cpp
-+++ b/extensions/expression-language/Expression.cpp
-@@ -629,7 +629,8 @@ Value expr_toDate(const std::vector<Value> &args) {
- #endif  // EXPRESSION_LANGUAGE_USE_DATE
- 
- Value expr_now(const std::vector<Value> &args) {
--  return Value(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
-+  using Milliseconds = std::chrono::duration<std::int64_t, std::chrono::milliseconds::period>;
-+  return Value(std::chrono::duration_cast<Milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
- }
- 
- Value expr_unescapeCsv(const std::vector<Value> &args) {
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Fix-the-constness-issues-around-autovector-iterator_.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Fix-the-constness-issues-around-autovector-iterator_.patch
deleted file mode 100644
index cd837d8..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-Fix-the-constness-issues-around-autovector-iterator_.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 787d5052a6034cc722b073c652cc610ae037f933 Mon Sep 17 00:00:00 2001
-From: Levi Tamasi <ltamasi@fb.com>
-Date: Fri, 22 Nov 2019 18:12:35 -0800
-Subject: [PATCH 1/2] Fix the constness issues around
- autovector::iterator_impl's dereference operators (#6057)
-
-Summary:
-As described in detail in issue https://github.com/facebook/rocksdb/issues/6048, iterators' dereference operators
-(`*`, `->`, and `[]`) should return `pointer`s/`reference`s (as opposed to
-`const_pointer`s/`const_reference`s) even if the iterator itself is `const`
-to be in sync with the standard's iterator concept.
-Pull Request resolved: https://github.com/facebook/rocksdb/pull/6057
-
-Test Plan: make check
-
-Differential Revision: D18623235
-
-Pulled By: ltamasi
-
-fbshipit-source-id: 04e82d73bc0c67fb0ded018383af8dfc332050cc
----
-Upstream-Status: Pending
-
- thirdparty/rocksdb/util/autovector.h | 15 ++++-----------
- 1 file changed, 4 insertions(+), 11 deletions(-)
-
-diff --git a/thirdparty/rocksdb/util/autovector.h b/thirdparty/rocksdb/util/autovector.h
-index b5c84712..6d337908 100644
---- a/thirdparty/rocksdb/util/autovector.h
-+++ b/thirdparty/rocksdb/util/autovector.h
-@@ -120,27 +120,20 @@ class autovector {
-     }
- 
-     // -- Reference
--    reference operator*() {
-+    reference operator*() const {
-       assert(vect_->size() >= index_);
-       return (*vect_)[index_];
-     }
- 
--    const_reference operator*() const {
--      assert(vect_->size() >= index_);
--      return (*vect_)[index_];
--    }
--
--    pointer operator->() {
-+    pointer operator->() const {
-       assert(vect_->size() >= index_);
-       return &(*vect_)[index_];
-     }
- 
--    const_pointer operator->() const {
--      assert(vect_->size() >= index_);
--      return &(*vect_)[index_];
-+    reference operator[](difference_type len) const {
-+      return *(*this + len);
-     }
- 
--
-     // -- Logical Operators
-     bool operator==(const self_type& other) const {
-       assert(vect_ == other.vect_);
--- 
-2.41.0
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-civetweb-CMakeLists.txt-do-not-search-gcc-ar-and-gcc.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-civetweb-CMakeLists.txt-do-not-search-gcc-ar-and-gcc.patch
deleted file mode 100644
index bc480d9..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-civetweb-CMakeLists.txt-do-not-search-gcc-ar-and-gcc.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 0eee3fb85dad084b6b42f7b219d8aa3a62620a27 Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Wed, 28 Oct 2020 09:52:40 +0800
-Subject: [PATCH] civetweb/CMakeLists.txt: do not search gcc-ar and gcc-ranlib
-
-Do not search gcc-ar and gcc-ranlib. Specify GCC_AR and GCC_RANLIB in
-EXTRA_OECMAKE to avoid host contamination.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- thirdparty/civetweb-1.10/CMakeLists.txt | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/thirdparty/civetweb-1.10/CMakeLists.txt b/thirdparty/civetweb-1.10/CMakeLists.txt
-index f559a04e..0689e3f6 100644
---- a/thirdparty/civetweb-1.10/CMakeLists.txt
-+++ b/thirdparty/civetweb-1.10/CMakeLists.txt
-@@ -246,11 +246,9 @@ set_property(CACHE CIVETWEB_CXX_STANDARD PROPERTY STRINGS auto c++14 c++11 c++98
- 
- # Configure the linker
- if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
--  find_program(GCC_AR gcc-ar)
-   if (GCC_AR)
-     set(CMAKE_AR ${GCC_AR})
-   endif()
--  find_program(GCC_RANLIB gcc-ranlib)
-   if (GCC_RANLIB)
-     set(CMAKE_RANLIB ${GCC_RANLIB})
-   endif()
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-civetweb-Disable-lto.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-civetweb-Disable-lto.patch
deleted file mode 100644
index ec4e6ff..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-civetweb-Disable-lto.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 120c708d51f72ade4a31d3d8f35bcfad7b12e723 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 6 Sep 2022 20:38:03 -0700
-Subject: [PATCH] civetweb: Disable lto
-
-lto does not work everywhere, therefore disable it atleast in the cmake
-file, we can still enable it via environment
-
-Upstream-Status: Pending
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- thirdparty/civetweb-1.10/CMakeLists.txt | 4 ----
- 1 file changed, 4 deletions(-)
-
---- a/thirdparty/civetweb-1.10/CMakeLists.txt
-+++ b/thirdparty/civetweb-1.10/CMakeLists.txt
-@@ -298,7 +298,6 @@ add_c_compiler_flag(/WX)
- add_c_compiler_flag(-pedantic-errors)
- add_c_compiler_flag(-fvisibility=hidden)
- add_c_compiler_flag(-fstack-protector-strong RELEASE)
--add_c_compiler_flag(-flto RELEASE)
- 
- add_c_compiler_flag(-fstack-protector-all DEBUG)
- if (MINGW)
-@@ -361,7 +360,6 @@ if (CIVETWEB_ENABLE_CXX)
-   add_cxx_compiler_flag(-pedantic-errors)
-   add_cxx_compiler_flag(-fvisibility=hidden)
-   add_cxx_compiler_flag(-fstack-protector-strong RELEASE)
--  add_cxx_compiler_flag(-flto RELEASE)
- 
-   add_cxx_compiler_flag(-fstack-protector-all DEBUG)
-   if (MINGW)
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-config.guess-Support-build-on-aarch64.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-config.guess-Support-build-on-aarch64.patch
deleted file mode 100644
index 3086a70..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-config.guess-Support-build-on-aarch64.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 92fdbfdd6b55ff0b65edd9a283ac85ad349e325b Mon Sep 17 00:00:00 2001
-From: Robert Yang <liezhi.yang@windriver.com>
-Date: Tue, 12 Dec 2023 07:27:52 +0000
-Subject: [PATCH] config.guess: Fix do_configure error builder aarch64
-
-Fixed configure error when build on aarch64 host:
-error: cannot guess build type; you must specify one
-
-Upstream-Status: Pending
-
-Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
----
- config.guess      |   2 +-
- 1 files changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/thirdparty/uuid-1.6.2/config.guess b/thirdparty/uuid-1.6.2/config.guess
-index ca2a03c..a858bfd 100755
---- a/thirdparty/uuid-1.6.2/config.guess
-+++ b/thirdparty/uuid-1.6.2/config.guess
-@@ -835,7 +835,7 @@ EOF
-     i*86:Minix:*:*)
- 	echo ${UNAME_MACHINE}-pc-minix
- 	exit ;;
--    arm*:Linux:*:*)
-+    arm*:Linux:*:*|aarch64:Linux:*:*)
- 	eval $set_cc_for_build
- 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- 	    | grep -q __ARM_EABI__
--- 
-2.34.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-cxxopts-Add-limits-header.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-cxxopts-Add-limits-header.patch
deleted file mode 100644
index ef26c47..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0001-cxxopts-Add-limits-header.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From fda0713ce3e07786757a057abe7ebf2146d33780 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 2 Mar 2021 18:31:45 -0800
-Subject: [PATCH] cxxopts: Add limits header
-
-needed for numeric_limits
-
-Upstream-Status: Submitted [https://github.com/apache/nifi-minifi-cpp/pull/1021]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- thirdparty/cxxopts/include/cxxopts.hpp | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/thirdparty/cxxopts/include/cxxopts.hpp
-+++ b/thirdparty/cxxopts/include/cxxopts.hpp
-@@ -29,6 +29,7 @@ THE SOFTWARE.
- #include <cctype>
- #include <exception>
- #include <iostream>
-+#include <limits>
- #include <map>
- #include <memory>
- #include <regex>
---- a/libminifi/src/utils/StringUtils.cpp
-+++ b/libminifi/src/utils/StringUtils.cpp
-@@ -21,6 +21,8 @@
- #include <Windows.h>
- #endif
- 
-+#include <limits>
-+
- namespace org {
- namespace apache {
- namespace nifi {
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-Fix-build-with-clang-17.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-Fix-build-with-clang-17.patch
deleted file mode 100644
index 7581efc..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-Fix-build-with-clang-17.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From a784973e500753747992a51dc0fb1caabbbb03be Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Thu, 6 Jul 2023 17:52:38 -0700
-Subject: [PATCH 2/2] Fix build with clang 17
-
-Part of https://github.com/jarro2783/cxxopts/commit/513afbc6dcfe2952cb2ffab0dae2415b11bba2d0
-
-Upstream-Status: Backport [https://github.com/jarro2783/cxxopts/commit/513afbc6dcfe2952cb2ffab0dae2415b11bba2d0]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- thirdparty/cxxopts/include/cxxopts.hpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/thirdparty/cxxopts/include/cxxopts.hpp b/thirdparty/cxxopts/include/cxxopts.hpp
-index e87416f1..bd2d81cf 100644
---- a/thirdparty/cxxopts/include/cxxopts.hpp
-+++ b/thirdparty/cxxopts/include/cxxopts.hpp
-@@ -468,14 +468,14 @@ namespace cxxopts
-         {
-           if (negative)
-           {
--            if (u > static_cast<U>(-std::numeric_limits<T>::min()))
-+            if (u > static_cast<U>((std::numeric_limits<T>::min)()))
-             {
-               throw argument_incorrect_type(text);
-             }
-           }
-           else
-           {
--            if (u > static_cast<U>(std::numeric_limits<T>::max()))
-+            if (u > static_cast<U>((std::numeric_limits<T>::max)()))
-             {
-               throw argument_incorrect_type(text);
-             }
--- 
-2.41.0
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-Fix-osspuuid-build.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-Fix-osspuuid-build.patch
new file mode 100644
index 0000000..65c52c6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-Fix-osspuuid-build.patch
@@ -0,0 +1,78 @@
+From 4e8e1943541d3b887ba86dc1b488cbb058c7d1cd Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 19 Mar 2024 20:48:25 +0800
+Subject: [PATCH] Fix osspuuid build
+
+* Specify correct configure options to fix osspuuid cross build.
+* Do not download osspuuid source during compile.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ cmake/BundledOSSPUUID.cmake                         | 10 +++++-----
+ .../ossp-uuid/ossp-uuid-cross-compile-fix.patch     | 13 +++++++++++++
+ 2 files changed, 18 insertions(+), 5 deletions(-)
+ create mode 100644 thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch
+
+diff --git a/cmake/BundledOSSPUUID.cmake b/cmake/BundledOSSPUUID.cmake
+index c4fa1523..1faf2e5c 100644
+--- a/cmake/BundledOSSPUUID.cmake
++++ b/cmake/BundledOSSPUUID.cmake
+@@ -23,10 +23,12 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
+     set(PATCH_FILE1 "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
+     set(PATCH_FILE2 "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-no-prog.patch")
+     set(PATCH_FILE3 "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-update-config-guess.patch")
++    set(PATCH_FILE4 "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch")
+     set(PC ${Bash_EXECUTABLE} -c "set -x &&\
+             (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE1}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE1}\") &&\
+             (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE2}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE2}\") &&\
+-            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE3}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE3}\") ")
++            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE3}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE3}\") &&\
++            (\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE4}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE4}\") ")
+ 
+     # Define byproducts
+     set(BYPRODUCTS "lib/libuuid.a"
+@@ -39,7 +41,7 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
+     ENDFOREACH(BYPRODUCT)
+ 
+     # Build project
+-    set(CONFIGURE_COMMAND ./configure "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${PASSTHROUGH_CMAKE_C_FLAGS} -fPIC" "CXXFLAGS=${PASSTHROUGH_CMAKE_CXX_FLAGS} -fPIC" --enable-shared=no --with-cxx --without-perl --without-php --without-pgsql "--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
++    set(CONFIGURE_COMMAND ac_cv_va_copy=C99 ./configure --host=${HOST_SYS} --build=${BUILD_SYS} "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}" "CFLAGS=${PASSTHROUGH_CMAKE_C_FLAGS} -fPIC" "CXXFLAGS=${PASSTHROUGH_CMAKE_CXX_FLAGS} -fPIC" --enable-shared=no --with-cxx --without-perl --without-php --without-pgsql "--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
+     string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
+     if(NOT build_type MATCHES debug)
+         list(APPEND CONFIGURE_COMMAND --enable-debug=yes)
+@@ -47,10 +49,8 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
+ 
+     ExternalProject_Add(
+             ossp-uuid-external
+-            URL "https://deb.debian.org/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz"
+-            URL_HASH "SHA256=11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
+             BUILD_IN_SOURCE true
+-            SOURCE_DIR "${BINARY_DIR}/thirdparty/ossp-uuid-src"
++            SOURCE_DIR "${SOURCE_DIR}/thirdparty/uuid-1.6.2"
+             BUILD_COMMAND make
+             CMAKE_COMMAND ""
+             UPDATE_COMMAND ""
+diff --git a/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch b/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch
+new file mode 100644
+index 00000000..b8d7b0bb
+--- /dev/null
++++ b/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch
+@@ -0,0 +1,13 @@
++diff --git a/shtool b/shtool
++index a2d2567..ab4fe17 100755
++--- a/shtool
+++++ b/shtool
++@@ -1400,7 +1400,7 @@ install )
++             if [ ".$opt_t" = .yes ]; then
++                 echo "strip $dsttmp" 1>&2
++             fi
++-            strip $dsttmp || shtool_exit $?
+++            $STRIP $dsttmp || shtool_exit $?
++         fi
++         if [ ".$opt_o" != . ]; then
++             if [ ".$opt_t" = .yes ]; then
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-cmake-LibreSSL.cmake-use-libressl-local-source-tarba.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-cmake-LibreSSL.cmake-use-libressl-local-source-tarba.patch
deleted file mode 100644
index da5ee97..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0002-cmake-LibreSSL.cmake-use-libressl-local-source-tarba.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 5a5317044b0039e9e19aabcecb7b666a3f13e136 Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Thu, 10 Sep 2020 15:08:19 +0800
-Subject: [PATCH] cmake/LibreSSL.cmake: use libressl local source tarball
-
-Do not download libressl source during compile.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- cmake/LibreSSL.cmake | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/cmake/LibreSSL.cmake b/cmake/LibreSSL.cmake
-index 57319e40..bab30129 100644
---- a/cmake/LibreSSL.cmake
-+++ b/cmake/LibreSSL.cmake
-@@ -43,9 +43,7 @@ function(use_libre_ssl SOURCE_DIR BINARY_DIR)
- 
- 	ExternalProject_Add(
- 	libressl-portable
--	URL https://cdn.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz https://gentoo.osuosl.org/distfiles/libressl-2.8.3.tar.gz
--	URL_HASH "SHA256=9b640b13047182761a99ce3e4f000be9687566e0828b4a72709e9e6a3ef98477"
--	SOURCE_DIR "${BINARY_DIR}/thirdparty/libressl-src"
-+	SOURCE_DIR "${SOURCE_DIR}/thirdparty/libressl-2.8.3"
- 	PATCH_COMMAND ${PATCH}
- 	CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
- 				"-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libressl-install"
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0003-Fix-libsodium-build.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0003-Fix-libsodium-build.patch
new file mode 100644
index 0000000..a089627
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0003-Fix-libsodium-build.patch
@@ -0,0 +1,39 @@
+From 1c697e4d75f0045d5364d622960ff8047a4ad3ec Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 19 Mar 2024 20:56:05 +0800
+Subject: [PATCH] Fix libsodium build
+
+* Specify correct configure options to fix libsodium cross build.
+* Do not download libsodium source during compile.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ cmake/BundledLibSodium.cmake | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/cmake/BundledLibSodium.cmake b/cmake/BundledLibSodium.cmake
+index 3a3daf41..d851f753 100644
+--- a/cmake/BundledLibSodium.cmake
++++ b/cmake/BundledLibSodium.cmake
+@@ -58,14 +58,12 @@ function(use_bundled_libsodium SOURCE_DIR BINARY_DIR)
+                 EXCLUDE_FROM_ALL TRUE
+         )
+     else()
+-        set(CONFIGURE_COMMAND ./configure --disable-pie --enable-minimal "--prefix=${LIBSODIUM_BIN_DIR}")
++        set(CONFIGURE_COMMAND ./configure --host=${HOST_SYS} --build=${BUILD_SYS} --disable-pie --enable-minimal "--prefix=${LIBSODIUM_BIN_DIR}")
+ 
+         ExternalProject_Add(
+                 libsodium-external
+-                URL "${LIBSODIUM_OFFICIAL_MIRROR_URL} ${LIBSODIUM_GITHUB_MIRROR_URL} ${LIBSODIUM_GENTOO_MIRROR_URL}"
+-                URL_HASH ${LIBSODIUM_URL_HASH}
+                 BUILD_IN_SOURCE true
+-                SOURCE_DIR "${BINARY_DIR}/thirdparty/libsodium-src"
++                SOURCE_DIR "${SOURCE_DIR}/thirdparty/libsodium-stable"
+                 BUILD_COMMAND make
+                 CMAKE_COMMAND ""
+                 UPDATE_COMMAND ""
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0003-cmake-BundledOSSPUUID.cmake-use-ossp-uuid-local-sour.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0003-cmake-BundledOSSPUUID.cmake-use-ossp-uuid-local-sour.patch
deleted file mode 100644
index a39e15b..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0003-cmake-BundledOSSPUUID.cmake-use-ossp-uuid-local-sour.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 74ade26f7ccd0dbc4ad97cb3082204118a67c92b Mon Sep 17 00:00:00 2001
-From: Yi Zhao <yi.zhao@windriver.com>
-Date: Thu, 10 Sep 2020 15:12:41 +0800
-Subject: [PATCH] cmake/BundledOSSPUUID.cmake: use ossp-uuid local source
- tarball
-
-Do not download ossp-uuid source during compile.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- cmake/BundledOSSPUUID.cmake | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/cmake/BundledOSSPUUID.cmake b/cmake/BundledOSSPUUID.cmake
-index 1103156d..0cf4bac0 100644
---- a/cmake/BundledOSSPUUID.cmake
-+++ b/cmake/BundledOSSPUUID.cmake
-@@ -47,10 +47,8 @@ function(use_bundled_osspuuid SOURCE_DIR BINARY_DIR)
- 
-     ExternalProject_Add(
-             ossp-uuid-external
--            URL "https://deb.debian.org/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz"
--            URL_HASH "SHA256=11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
-             BUILD_IN_SOURCE true
--            SOURCE_DIR "${BINARY_DIR}/thirdparty/ossp-uuid-src"
-+            SOURCE_DIR "${SOURCE_DIR}/thirdparty/uuid-1.6.2"
-             BUILD_COMMAND make
-             CMAKE_COMMAND ""
-             UPDATE_COMMAND ""
--- 
-2.17.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0004-Fix-spdlog-build.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0004-Fix-spdlog-build.patch
new file mode 100644
index 0000000..177c6ad
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0004-Fix-spdlog-build.patch
@@ -0,0 +1,44 @@
+From 8a5fe73f722718aa5c9a467c28a26913771f7208 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 19 Mar 2024 20:57:37 +0800
+Subject: [PATCH] Fix spdlog build
+
+* Specify CMAKE_INSTALL_LIBDIR to fix multilib build.
+* Do not download spdlog source during compile.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ cmake/BundledSpdlog.cmake | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/BundledSpdlog.cmake b/cmake/BundledSpdlog.cmake
+index 974cbbaa..c0c45688 100644
+--- a/cmake/BundledSpdlog.cmake
++++ b/cmake/BundledSpdlog.cmake
+@@ -35,11 +35,12 @@ function(use_bundled_spdlog SOURCE_DIR BINARY_DIR)
+     endif()
+ 
+     # Set build options
+-    set(SPDLOG_SOURCE_DIR "${BINARY_DIR}/thirdparty/spdlog-src")
++    set(SPDLOG_SOURCE_DIR "${SOURCE_DIR}/thirdparty/spdlog-src")
+     set(SPDLOG_INSTALL_DIR "${BINARY_DIR}/thirdparty/spdlog-install")
+     set(SPDLOG_LIBRARY "${SPDLOG_INSTALL_DIR}/${BYPRODUCT}")
+     set(SPDLOG_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
+             "-DCMAKE_INSTALL_PREFIX=${SPDLOG_INSTALL_DIR}"
++            "-DCMAKE_INSTALL_LIBDIR=${LIBDIR}"
+             "-DSPDLOG_BUILD_EXAMPLE=OFF"
+             "-DSPDLOG_BUILD_TESTS=OFF"
+             "-DSPDLOG_BUILD_TESTING=OFF"
+@@ -49,7 +50,6 @@ function(use_bundled_spdlog SOURCE_DIR BINARY_DIR)
+     # Build project
+     ExternalProject_Add(
+             spdlog-external
+-            URL "https://github.com/gabime/spdlog/archive/v1.8.0.zip"
+             SOURCE_DIR "${SPDLOG_SOURCE_DIR}"
+             CMAKE_ARGS ${SPDLOG_CMAKE_ARGS}
+             BUILD_BYPRODUCTS "${SPDLOG_LIBRARY}"
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0005-Pass-noline-flag-to-flex.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0005-Pass-noline-flag-to-flex.patch
new file mode 100644
index 0000000..5393913
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0005-Pass-noline-flag-to-flex.patch
@@ -0,0 +1,31 @@
+From 083babbd6c6cc6f31530fbac0227c1d426fb0863 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Tue, 19 Mar 2024 21:00:59 +0800
+Subject: [PATCH] Pass --noline flag to flex
+
+This ensures that line directive is not emitted into lexer output which
+could be absolute build paths.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ extensions/expression-language/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/extensions/expression-language/CMakeLists.txt b/extensions/expression-language/CMakeLists.txt
+index 775b4116..84edc617 100644
+--- a/extensions/expression-language/CMakeLists.txt
++++ b/extensions/expression-language/CMakeLists.txt
+@@ -77,7 +77,7 @@ flex_target(
+     el-scanner
+     ${CMAKE_CURRENT_SOURCE_DIR}/Scanner.ll
+     ${CMAKE_CURRENT_SOURCE_DIR}/Scanner.cpp
+-    COMPILE_FLAGS --c++
++    COMPILE_FLAGS "--c++ --noline"
+ )
+ 
+ add_flex_bison_dependency(el-scanner el-parser)
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0006-OsUtils.h-add-missing-header-cstdint-for-int64_t.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0006-OsUtils.h-add-missing-header-cstdint-for-int64_t.patch
new file mode 100644
index 0000000..38893e7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0006-OsUtils.h-add-missing-header-cstdint-for-int64_t.patch
@@ -0,0 +1,36 @@
+From 08d1b4b66fedde97eefb5e3ff6aa98fd02be7c21 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Wed, 20 Mar 2024 10:03:14 +0800
+Subject: [PATCH] OsUtils.h: add missing header <cstdint> for int64_t
+
+Fix build with musl:
+libminifi/include/utils/OsUtils.h:31:1: error: 'int64_t' does not name a type
+   31 | int64_t getCurrentProcessPhysicalMemoryUsage();
+      | ^~~~~~~
+libminifi/include/utils/OsUtils.h:22:1: note: 'int64_t' is defined in header '<cstdint>'; did you forget to '#include <cstdint>'?
+   21 | #include <system_error>
+  +++ |+#include <cstdint>
+   22 |
+
+Upstream-Status: Pending
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ libminifi/include/utils/OsUtils.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libminifi/include/utils/OsUtils.h b/libminifi/include/utils/OsUtils.h
+index a7117233..5e623d1a 100644
+--- a/libminifi/include/utils/OsUtils.h
++++ b/libminifi/include/utils/OsUtils.h
+@@ -19,6 +19,7 @@
+ #include <string>
+ #include <optional>
+ #include <system_error>
++#include <cstdint>
+ 
+ struct sockaddr;
+ 
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0007-CMakeLists.txt-do-not-use-ccache.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0007-CMakeLists.txt-do-not-use-ccache.patch
new file mode 100644
index 0000000..73a59f2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0007-CMakeLists.txt-do-not-use-ccache.patch
@@ -0,0 +1,38 @@
+From 44867a8e4100a7296b98e0e850d950d24b980959 Mon Sep 17 00:00:00 2001
+From: Yi Zhao <yi.zhao@windriver.com>
+Date: Thu, 21 Mar 2024 10:18:39 +0800
+Subject: [PATCH] CMakeLists.txt: do not use ccache
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ CMakeLists.txt | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8a1dd6d91..8a5314544 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -82,12 +82,12 @@ if (USE_REAL_ODBC_TEST_DRIVER)
+ endif()
+ 
+ # Use ccache if present
+-find_program(CCACHE_FOUND ccache)
+-if(CCACHE_FOUND)
+-    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
+-    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
+-    message("-- Found ccache: ${CCACHE_FOUND}")
+-endif(CCACHE_FOUND)
++#find_program(CCACHE_FOUND ccache)
++#if(CCACHE_FOUND)
++#    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
++#    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
++#    message("-- Found ccache: ${CCACHE_FOUND}")
++#endif(CCACHE_FOUND)
+ 
+ # Use gold linker if instructed
+ if (UNIX AND USE_GOLD_LINKER AND NOT APPLE )
+-- 
+2.25.1
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0008-libsodium-aarch64_crypto.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0008-libsodium-aarch64_crypto.patch
new file mode 100644
index 0000000..c2c5114
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/0008-libsodium-aarch64_crypto.patch
@@ -0,0 +1,38 @@
+Move target #pragma after arm_neon.h include
+
+Fix per android/ndk#1945
+
+If the pragma is done before the header include,
+when using clang compiler attribute may apply to the functions in arm_neon.h
+
+Upstream-Status: Submitted [https://github.com/jedisct1/libsodium/pull/1321]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c
++++ b/thirdparty/libsodium-stable/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c
+@@ -19,12 +19,6 @@
+ #define __vectorcall
+ #endif
+ 
+-#ifdef __clang__
+-#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function)
+-#elif defined(__GNUC__)
+-#pragma GCC target("+simd+crypto")
+-#endif
+-
+ #ifndef __ARM_FEATURE_CRYPTO
+ #define __ARM_FEATURE_CRYPTO 1
+ #endif
+@@ -34,6 +28,12 @@
+ 
+ #include <arm_neon.h>
+ 
++#ifdef __clang__
++#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function)
++#elif defined(__GNUC__)
++#pragma GCC target("+simd+crypto")
++#endif
++
+ #define ABYTES    crypto_aead_aes256gcm_ABYTES
+ #define NPUBBYTES crypto_aead_aes256gcm_NPUBBYTES
+ #define KEYBYTES  crypto_aead_aes256gcm_KEYBYTES
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-libressl-avoid-BSWAP-assembly-for-ARM-v6.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-libressl-avoid-BSWAP-assembly-for-ARM-v6.patch
deleted file mode 100644
index a7dc35a..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-libressl-avoid-BSWAP-assembly-for-ARM-v6.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Upstream-Status: Pending
-
-diff -urN -x .git orig/thirdparty/libressl/avoid-BSWAP-assembly-for-ARM-v6.patch patched/thirdparty/libressl/avoid-BSWAP-assembly-for-ARM-v6.patch
---- orig/thirdparty/libressl/avoid-BSWAP-assembly-for-ARM-v6.patch	1970-01-01 09:00:00.000000000 +0900
-+++ patched/thirdparty/libressl/avoid-BSWAP-assembly-for-ARM-v6.patch	2020-08-07 23:14:46.196764271 +0900
-@@ -0,0 +1,30 @@
-+This patch was imported from the libressl potable.
-+https://github.com/libressl-portable/portable/commit/a9332ccecfce63bf54924e70c11f420edd3ae312
-+
-+From a9332ccecfce63bf54924e70c11f420edd3ae312 Mon Sep 17 00:00:00 2001
-+From: Brent Cook <bcook@openbsd.org>
-+Date: Sun, 17 Jul 2016 18:12:23 -0500
-+Subject: [PATCH] avoid BSWAP assembly for ARM <= v6
-+
-+diff -urN orig/crypto/modes/modes_lcl.h patched/crypto/modes/modes_lcl.h
-+--- orig/crypto/modes/modes_lcl.h	2018-11-18 21:27:10.000000000 +0900
-++++ patched/crypto/modes/modes_lcl.h	2020-08-07 23:11:01.960764745 +0900
-+@@ -45,14 +45,16 @@
-+ 			asm ("bswapl %0"		\
-+ 			: "+r"(ret));	ret;		})
-+ # elif (defined(__arm__) || defined(__arm)) && !defined(__STRICT_ALIGNMENT)
-+-#  define BSWAP8(x) ({	u32 lo=(u64)(x)>>32,hi=(x);	\
-++#  if (__ARM_ARCH >= 6)
-++#   define BSWAP8(x) ({	u32 lo=(u64)(x)>>32,hi=(x);	\
-+ 			asm ("rev %0,%0; rev %1,%1"	\
-+ 			: "+r"(hi),"+r"(lo));		\
-+ 			(u64)hi<<32|lo;			})
-+-#  define BSWAP4(x) ({	u32 ret;			\
-++#   define BSWAP4(x) ({	u32 ret;			\
-+ 			asm ("rev %0,%1"		\
-+ 			: "=r"(ret) : "r"((u32)(x)));	\
-+ 			ret;				})
-++#  endif
-+ # endif
-+ #endif
-+ #endif
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-libressl-compile.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-libressl-compile.patch
deleted file mode 100644
index 32bcfbd..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-libressl-compile.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Upstream-Status: Pending
-
-diff -urN -x .git orig/cmake/LibreSSL.cmake patched/cmake/LibreSSL.cmake
---- orig/cmake/LibreSSL.cmake	2020-08-07 21:58:34.660773928 +0900
-+++ patched/cmake/LibreSSL.cmake	2020-08-07 22:51:18.620767245 +0900
-@@ -18,6 +18,9 @@
- function(use_libre_ssl SOURCE_DIR BINARY_DIR)
- 	message("Using bundled LibreSSL from release")
- 	
-+	find_package(Patch REQUIRED)
-+	set(PATCH "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/libressl/avoid-BSWAP-assembly-for-ARM-v6.patch")
-+
- 	set(BYPRODUCT_PREFIX "lib" CACHE STRING "" FORCE)
- 	set(BYPRODUCT_SUFFIX ".a" CACHE STRING "" FORCE)
- 	
-@@ -27,16 +30,29 @@
- 		set(BYPRODUCT_PREFIX "" CACHE STRING "" FORCE)
- 	set(BUILD_ARGS " -GVisual Studio 15 2017")
- 	endif(WIN32)
-+
-+	set(BYPRODUCTS
-+		"lib/${BYPRODUCT_PREFIX}crypto${BYPRODUCT_SUFFIX}"
-+		"lib/${BYPRODUCT_PREFIX}ssl${BYPRODUCT_SUFFIX}"
-+		"lib/${BYPRODUCT_PREFIX}tls${BYPRODUCT_SUFFIX}"
-+	)
-+	set(LIBRESSL_INSTALL_DIR "${BINARY_DIR}/thirdparty/libressl-install" CACHE STRING "" FORCE)
-+	FOREACH(BYPRODUCT ${BYPRODUCTS})
-+		LIST(APPEND LIBRESSL_LIBRARIES_LIST "${LIBRESSL_INSTALL_DIR}/${BYPRODUCT}")
-+	ENDFOREACH(BYPRODUCT)
-+
- 	ExternalProject_Add(
- 	libressl-portable
- 	URL https://cdn.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz https://gentoo.osuosl.org/distfiles/libressl-2.8.3.tar.gz
- 	URL_HASH "SHA256=9b640b13047182761a99ce3e4f000be9687566e0828b4a72709e9e6a3ef98477"
- 	SOURCE_DIR "${BINARY_DIR}/thirdparty/libressl-src"
-+	PATCH_COMMAND ${PATCH}
- 	CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
- 				"-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libressl-install"
- 				"-DLIBRESSL_APPS=OFF"
- 				"-DLIBRESSL_TESTS=OFF"
- 				"${BUILD_ARGS}"
-+	BUILD_BYPRODUCTS ${LIBRESSL_LIBRARIES_LIST}
- 	)
- 
- 	add_library(crypto STATIC IMPORTED)
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-minifi-compile.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-minifi-compile.patch
deleted file mode 100644
index d5b4449..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-minifi-compile.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Upstream-Status: Pending
-
-diff -urN -x .git orig/CMakeLists.txt patched/CMakeLists.txt
---- orig/CMakeLists.txt	2020-08-07 21:58:34.656773928 +0900
-+++ patched/CMakeLists.txt	2020-08-10 15:08:31.800278357 +0900
-@@ -119,13 +119,28 @@
- 	endif()
- endif()
- 
-+include(CheckCXXSourceCompiles)
-+CHECK_CXX_SOURCE_COMPILES("
-+    #include <atomic>
-+    int main(int argc, char **argv) {
-+        uint8_t m;
-+        __atomic_load_8(&m, 0);
-+        __atomic_fetch_add_1(&m , 0, 0);
-+        return 0;
-+    }"
-+    HAVE_ATOMIC
-+)
-+if(NOT HAVE_ATOMIC)
-+    set(LIB_ATOMIC atomic)
-+endif()
-+
- # Use ccache if present
--find_program(CCACHE_FOUND ccache)
--if(CCACHE_FOUND)
--    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
--    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
--    message("-- Found ccache: ${CCACHE_FOUND}")
--endif(CCACHE_FOUND)
-+#find_program(CCACHE_FOUND ccache)
-+#if(CCACHE_FOUND)
-+#    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
-+#    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
-+#    message("-- Found ccache: ${CCACHE_FOUND}")
-+#endif(CCACHE_FOUND)
- 
- if (UNIX AND USE_GOLD_LINKER AND NOT APPLE )
-   execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE ld_version)
-@@ -303,8 +318,10 @@
-     GIT_TAG "f3294d9d86e6a7915a967efff2842089b8b0d071"  # Version 7.64.0
-     SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-src"
-     LIST_SEPARATOR % # This is needed for passing semicolon-separated lists
-+    TLS_VERIFY OFF
-     CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
-                "-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/thirdparty/curl-install"
-+               "-DCMAKE_INSTALL_LIBDIR=lib${LIBSUFFIX}"
-                 -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-                 -DBUILD_CURL_EXE=OFF
-                 -DBUILD_TESTING=OFF
-diff -urN -x .git orig/libminifi/CMakeLists.txt patched/libminifi/CMakeLists.txt
---- orig/libminifi/CMakeLists.txt	2020-08-07 21:58:34.676773928 +0900
-+++ patched/libminifi/CMakeLists.txt	2020-08-10 15:06:17.124278642 +0900
-@@ -108,6 +108,7 @@
- add_library(spdlog STATIC ${SPD_SOURCES})
- add_library(core-minifi STATIC ${SOURCES})
- target_link_libraries(core-minifi ${CMAKE_DL_LIBS} yaml-cpp)
-+target_link_libraries(core-minifi ${LIB_ATOMIC})
- 
- #target_link_libraries(core-minifi  PRIVATE bsdiff )
- 
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-compile.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-compile.patch
deleted file mode 100644
index 903e72e..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-compile.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Upstream-Status: Pending
-
-diff -urN -x .git orig/cmake/BundledOSSPUUID.cmake patched/cmake/BundledOSSPUUID.cmake
---- orig/cmake/BundledOSSPUUID.cmake	2020-08-07 21:58:34.660773928 +0900
-+++ patched/cmake/BundledOSSPUUID.cmake	2020-08-07 22:05:57.404772993 +0900
-@@ -22,7 +22,9 @@
- 
-     # Define patch step
-     find_package(Patch REQUIRED)
--    set(PC "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
-+    set(PATCH1 "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-mac-fix.patch")
-+    set(PATCH2 "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch")
-+    set(PATCH3 "${Patch_EXECUTABLE}" -p1 -i "${SOURCE_DIR}/thirdparty/ossp-uuid/ossp-uuid-musl-compile-fix.patch")
- 
-     # Define byproducts
-     set(BYPRODUCTS "lib/libuuid.a"
-@@ -35,7 +37,9 @@
-     ENDFOREACH(BYPRODUCT)
- 
-     # Build project
--    set(CONFIGURE_COMMAND ./configure "CFLAGS=-fPIC" "CXXFLAGS=-fPIC" --with-cxx --without-perl --without-php --without-pgsql "--prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install")
-+    set(CONFIGURE_COMMAND ac_cv_va_copy=C99 ./configure CFLAGS=-fPIC CXXFLAGS=-fPIC --host=${HOST_SYS}
-+        --with-cxx --without-perl --without-php --without-pgsql
-+        --prefix=${BINARY_DIR}/thirdparty/ossp-uuid-install)
-     string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type)
-     if(NOT build_type MATCHES debug)
-         list(APPEND CONFIGURE_COMMAND --enable-debug=yes)
-@@ -52,8 +56,8 @@
-             UPDATE_COMMAND ""
-             INSTALL_COMMAND make install
-             BUILD_BYPRODUCTS ${OSSPUUID_LIBRARIES_LIST}
--            CONFIGURE_COMMAND ""
--            PATCH_COMMAND ${PC} && ${CONFIGURE_COMMAND}
-+            CONFIGURE_COMMAND ${CONFIGURE_COMMAND}
-+            PATCH_COMMAND ${PATCH1} && ${PATCH2} && ${PATCH3}
-             STEP_TARGETS build
-             EXCLUDE_FROM_ALL TRUE
-     )
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-cross-compile.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-cross-compile.patch
deleted file mode 100644
index add1f6f..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-cross-compile.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Upstream-Status: Pending
-
-diff -urN -x .git orig/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch patched/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch
---- orig/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch	1970-01-01 09:00:00.000000000 +0900
-+++ patched/thirdparty/ossp-uuid/ossp-uuid-cross-compile-fix.patch	2020-08-07 22:28:04.396770190 +0900
-@@ -0,0 +1,33 @@
-+diff -urN orig/config.sub patched/config.sub
-+--- orig/config.sub	2008-07-05 06:43:08.000000000 +0900
-++++ patched/config.sub	2020-08-07 22:23:48.412770731 +0900
-+@@ -238,6 +238,8 @@
-+ 	# Some are omitted here because they have special meanings below.
-+ 	1750a | 580 \
-+ 	| a29k \
-++	| aarch64 | aarch64_be \
-++	| riscv32 | riscv64 \
-+ 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-+ 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-+ 	| am33_2.0 \
-+@@ -314,6 +316,8 @@
-+ 	# Recognize the basic CPU types with company name.
-+ 	580-* \
-+ 	| a29k-* \
-++	| aarch64-* | aarch64_be-* \
-++	| riscv32-* | riscv64-* \
-+ 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-+ 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-+ 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
-+diff -urN orig/shtool patched/shtool
-+--- orig/shtool	2008-07-05 06:43:08.000000000 +0900
-++++ patched/shtool	2020-08-07 22:21:23.192771037 +0900
-+@@ -1400,7 +1400,7 @@
-+             if [ ".$opt_t" = .yes ]; then
-+                 echo "strip $dsttmp" 1>&2
-+             fi
-+-            strip $dsttmp || shtool_exit $?
-++            $STRIP $dsttmp || shtool_exit $?
-+         fi
-+         if [ ".$opt_o" != . ]; then
-+             if [ ".$opt_t" = .yes ]; then
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-musl-compile.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-musl-compile.patch
deleted file mode 100644
index f8ba89d..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-osspuuid-musl-compile.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Upstream-Status: Pending
-
-diff -urN -x .git orig/thirdparty/ossp-uuid/ossp-uuid-musl-compile-fix.patch patched/thirdparty/ossp-uuid/ossp-uuid-musl-compile-fix.patch
---- orig/thirdparty/ossp-uuid/ossp-uuid-musl-compile-fix.patch	1970-01-01 09:00:00.000000000 +0900
-+++ patched/thirdparty/ossp-uuid/ossp-uuid-musl-compile-fix.patch	2020-08-07 11:22:49.344854508 +0900
-@@ -0,0 +1,21 @@
-+diff -urN orig/config.sub patched/config.sub
-+--- orig/config.sub	2008-07-05 06:43:08.000000000 +0900
-++++ patched/config.sub	2020-08-07 11:19:25.948854937 +0900
-+@@ -120,7 +120,7 @@
-+ # Here we must recognize all the valid KERNEL-OS combinations.
-+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-+ case $maybe_os in
-+-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-++  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | linux-musl* | \
-+   uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
-+   storm-chaos* | os2-emx* | rtmk-nova*)
-+     os=-$maybe_os
-+@@ -1250,7 +1250,7 @@
-+ 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-+ 	      | -chorusos* | -chorusrdb* \
-+ 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-+-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
-++	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* | -linux-musl* \
-+ 	      | -uxpv* | -beos* | -mpeix* | -udk* \
-+ 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-+ 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-rocksdb-cross-compile.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-rocksdb-cross-compile.patch
deleted file mode 100644
index 0a3194d..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/fix-rocksdb-cross-compile.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Upstream-Status: Pending
-
-diff -urN orig/thirdparty/rocksdb/CMakeLists.txt patched/thirdparty/rocksdb/CMakeLists.txt
---- orig/thirdparty/rocksdb/CMakeLists.txt	2020-07-28 11:39:40.254677515 +0900
-+++ patched/thirdparty/rocksdb/CMakeLists.txt	2020-07-28 11:51:11.898676054 +0900
-@@ -618,6 +618,7 @@
- add_library(${ROCKSDB_STATIC_LIB} STATIC ${SOURCES})
- target_link_libraries(${ROCKSDB_STATIC_LIB}
-   ${THIRDPARTY_LIBS} ${SYSTEM_LIBS})
-+target_link_libraries(${ROCKSDB_STATIC_LIB} ${LIB_ATOMIC})
- 
- if(WIN32)
- #  add_library(${ROCKSDB_IMPORT_LIB} SHARED ${SOURCES})
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/minifi.service b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/minifi.service
deleted file mode 100644
index 059cdbc..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/minifi.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=MiNiFi Service
-After=network.target
-RequiresMountsFor=/var
-
-[Service]
-Type=simple
-WorkingDirectory=@LOCALSTATEDIR@/lib/minifi
-Environment=MINIFI_HOME=@SYSCONFDIR@/minifi
-ExecStart=@BINDIR@/minifi
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/remove_const_due_to_std_lock_guard.patch b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/remove_const_due_to_std_lock_guard.patch
deleted file mode 100644
index 365dec9..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/files/remove_const_due_to_std_lock_guard.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From bfce136fa9ff1e955928539484ba4dd55f98f05b Mon Sep 17 00:00:00 2001
-From: Willem Jan Withagen <wjw@digiware.nl>
-Date: Sun, 16 Aug 2020 23:38:55 +0200
-Subject: [PATCH] Update channel.h
-
-Compiling this on FreeBSD with CLang fails due to:
-```In file included from /usr/ports/net/ceph15/work/ceph-15.2.4/src/rocksdb/utilities/backupable/backupable_db.cc:16:
-/usr/ports/net/ceph15/work/ceph-15.2.4/src/rocksdb/util/channel.h:35:33: error: no matching constructor for initialization of 'std::lock_guard<std::mutex>'
-    std::lock_guard<std::mutex> lk(lock_);
-                                ^  ~~~~~
-/usr/include/c++/v1/__mutex_base:90:14: note: candidate constructor not viable: 1st argument ('const std::mutex') would lose const qualifier
-    explicit lock_guard(mutex_type& __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(acquire_capability(__m))
-             ^
-/usr/include/c++/v1/__mutex_base:100:5: note: candidate constructor not viable: no known conversion from 'const std::mutex' to 'const std::__1::lock_guard<std::__1::mutex>' for 1st argument
-    lock_guard(lock_guard const&) _LIBCPP_EQUAL_DELETE;
-    ^
-/usr/include/c++/v1/__mutex_base:94:5: note: candidate constructor not viable: requires 2 arguments, but 1 was provided
-    lock_guard(mutex_type& __m, adopt_lock_t) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
-    ^
-1 error generated.
-```
----
-Upstream-Status: Pending
-
- thirdparty/rocksdb/util/channel.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/thirdparty/rocksdb/util/channel.h b/thirdparty/rocksdb/util/channel.h
-index 705fa2d28f..993bef5bc0 100644
---- a/thirdparty/rocksdb/util/channel.h
-+++ b/thirdparty/rocksdb/util/channel.h
-@@ -31,7 +31,7 @@ class channel {
-     return buffer_.empty() && eof_;
-   }
- 
--  size_t size() const {
-+  size_t size() {
-     std::lock_guard<std::mutex> lk(lock_);
-     return buffer_.size();
-   }
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.15.0.bb b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.15.0.bb
new file mode 100644
index 0000000..beb247c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.15.0.bb
@@ -0,0 +1,201 @@
+SUMMARY = "A subproject of Apache NiFi to collect data where it originates."
+DESCRIPTION = "MiNiFi--a subproject of Apache NiFi--is a complementary \
+data collection approach that supplements the core tenets of NiFi in dataflow \
+management, focusing on the collection of data at the source of its creation."
+HOMEPAGE = "https://nifi.apache.org/minifi/index.html"
+SECTION = "console/network"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c62efdfb90a8aa4cc3bc15f56baa30b7"
+
+SRC_URI = "git://github.com/apache/nifi-minifi-cpp.git;protocol=https;branch=main \
+           git://github.com/martinmoene/expected-lite.git;protocol=https;branch=master;name=expected-lite;destsuffix=${S}/thirdparty/expected-lite-src \
+           git://github.com/ericniebler/range-v3.git;protocol=https;branch=master;name=range-v3;destsuffix=${S}/thirdparty/range-v3-src \
+           git://github.com/Neargye/magic_enum.git;protocol=https;branch=master;name=magic-enum;destsuffix=${S}/thirdparty/magic-enum-src \
+           git://github.com/jarro2783/cxxopts.git;protocol=https;branch=v2_2;name=cxxopts;destsuffix=${S}/thirdparty/cxxopts-src \
+           git://github.com/gsl-lite/gsl-lite.git;protocol=https;branch=master;name=gsl-lite;destsuffix=${S}/thirdparty/gsl-lite-src \
+           git://github.com/HowardHinnant/date.git;protocol=https;branch=master;name=date;destsuffix=${S}/thirdparty/date-src \
+           git://github.com/chriskohlhoff/asio.git;protocol=https;branch=master;name=asio;destsuffix=${S}/thirdparty/asio-src \
+           git://github.com/gabime/spdlog.git;protocol=https;branch=v1.x;name=spdlog;destsuffix=${S}/thirdparty/spdlog-src \
+           git://github.com/civetweb/civetweb.git;protocol=https;branch=master;name=civetweb;destsuffix=${S}/thirdparty/civetweb-src \
+           ${DEBIAN_MIRROR}/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz;name=ossp-uuid;subdir=${S}/thirdparty \
+           https://download.libsodium.org/libsodium/releases/libsodium-1.0.19.tar.gz;name=libsodium;subdir=${S}/thirdparty \
+           file://0001-Do-not-use-bundled-packages.patch \
+           file://0002-Fix-osspuuid-build.patch \
+           file://0003-Fix-libsodium-build.patch \
+           file://0004-Fix-spdlog-build.patch \
+           file://0005-Pass-noline-flag-to-flex.patch \
+           file://0006-OsUtils.h-add-missing-header-cstdint-for-int64_t.patch \
+           file://0007-CMakeLists.txt-do-not-use-ccache.patch \
+           file://0008-libsodium-aarch64_crypto.patch \
+           file://systemd-volatile.conf \
+           file://sysvinit-volatile.conf \
+          "
+
+SRCREV = "9b55dc0c0f17a190f3e9ade87070a28faf542c25"
+SRCREV_expected-lite = "c8ffab649ba56e43c731b7017a69ddaebe2e1893"
+SRCREV_range-v3 = "a81477931a8aa2ad025c6bda0609f38e09e4d7ec"
+SRCREV_magic-enum = "e1ea11a93d0bdf6aae415124ded6126220fa4f28"
+SRCREV_cxxopts = "302302b30839505703d37fb82f536c53cf9172fa"
+SRCREV_gsl-lite = "755ba124b54914e672737acace6a9314f59e8d6f"
+SRCREV_date = "6e921e1b1d21e84a5c82416ba7ecd98e33a436d0"
+SRCREV_asio = "814f67e730e154547aea3f4d99f709cbdf1ea4a0"
+SRCREV_spdlog = "7c02e204c92545f869e2f04edaab1f19fe8b19fd"
+SRCREV_civetweb = "d7ba35bbb649209c66e582d5a0244ba988a15159"
+
+SRCREV_FORMAT .= "_expected-lite_range-v3_magic-enum_cxxopts_gsl-lite_date_asio_spdlog_civetweb"
+
+SRC_URI[ossp-uuid.sha256sum] = "11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
+SRC_URI[libsodium.sha256sum] = "018d79fe0a045cca07331d37bd0cb57b2e838c51bc48fd837a1472e50068bbea"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig cmake systemd
+
+DEPENDS = "virtual/crypt bison-native flex-native flex openssl curl zlib xz bzip2 yaml-cpp"
+
+OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
+
+EXTRA_OECMAKE = " \
+                 -DCMAKE_BUILD_TYPE=Release \
+                 -DHOST_SYS=${HOST_SYS} -DBUILD_SYS=${BUILD_SYS} \
+                 -DGCC_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \
+                 -DGCC_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \
+                 -DFLEX_TARGET_ARG_COMPILE_FLAGS='--noline' \
+                 -DBISON_TARGET_ARG_COMPILE_FLAGS='--no-lines --file-prefix-map=${S}=${TARGET_DBGSRC_DIR}' \
+                 -DENABLE_ENCRYPT_CONFIG=ON \
+                 -DENABLE_LUA_SCRIPTING=OFF \
+                 -DENABLE_PYTHON_SCRIPTING=OFF \
+                 -DENABLE_AWS=OFF \
+                 -DENABLE_AZURE=OFF \
+                 -DENABLE_GCP=OFF \
+                 -DENABLE_KUBERNETES=OFF \
+                 -DENABLE_MQTT=OFF \
+                 -DENABLE_ELASTICSEARCH=OFF \
+                 -DENABLE_SQL=OFF \
+                 -DENABLE_PROMETHEUS=OFF \
+                 -DENABLE_PROCFS=OFF \
+                 -DENABLE_SPLUNK=OFF \
+                 -DENABLE_OPC=OFF \
+                 -DENABLE_LIBRDKAFKA=OFF \
+                 -DDISABLE_CURL=OFF \
+                 -DDISABLE_BZIP2=OFF \
+                 -DDISABLE_LZMA=OFF \
+                 -DDISABLE_JEMALLOC=ON \
+                 -DSKIP_TESTS=ON \
+                 -DFETCHCONTENT_SOURCE_DIR_GSL-LITE=${S}/thirdparty/gsl-lite-src \
+                 -DFETCHCONTENT_SOURCE_DIR_DATE_SRC=${S}/thirdparty/date-src \
+                 -DFETCHCONTENT_SOURCE_DIR_EXPECTED-LITE=${S}/thirdparty/expected-lite-src \
+                 -DFETCHCONTENT_SOURCE_DIR_RANGE-V3_SRC=${S}/thirdparty/range-v3-src \
+                 -DFETCHCONTENT_SOURCE_DIR_MAGIC_ENUM=${S}/thirdparty/magic-enum-src \
+                 -DFETCHCONTENT_SOURCE_DIR_ASIO=${S}/thirdparty/asio-src \
+                 -DFETCHCONTENT_SOURCE_DIR_CXXOPTS_SRC=${S}/thirdparty/cxxopts-src \
+                 -DFETCHCONTENT_SOURCE_DIR_CIVETWEB=${S}/thirdparty/civetweb-src \
+                 ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '-DENABLE_SYSTEMD=ON', '-DENABLE_SYSTEMD=OFF', d)} \
+                "
+
+PACKAGECONFIG ??= "civetweb libarchive rocksdb expression-language"
+PACKAGECONFIG[civetweb] = "-DDISABLE_CIVET=OFF,-DDISABLE_CIVET=ON"
+PACKAGECONFIG[openwsman] = "-DENABLE_OPENWSMAN=ON,-DENABLE_OPENWSMAN=OFF,libxml2"
+PACKAGECONFIG[libarchive] = "-DDISABLE_LIBARCHIVE=OFF,-DDISABLE_LIBARCHIVE=ON,libarchive"
+PACKAGECONFIG[rocksdb] = "-DDISABLE_ROCKSDB=OFF -DBUILD_ROCKSDB=OFF,-DDISABLE_ROCKSDB=ON,rocksdb"
+PACKAGECONFIG[expression-language] = "-DDISABLE_EXPRESSION_LANGUAGE=OFF, -DDISABLE_EXPRESSION_LANGUAGE=ON"
+
+SYSTEMD_PACKAGES = "minifi-cpp"
+SYSTEMD_SERVICE:${PN} = "minifi.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+do_install[cleandirs] += "${WORKDIR}/minifi-install"
+PSEUDO_CONSIDER_PATHS .= ",${WORKDIR}/minifi-install"
+
+do_compile:prepend() {
+    # Remove build host references
+    sed -i -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
+        -e 's|${DEBUG_PREFIX_MAP}||g' \
+        -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
+        ${B}/libminifi/agent_version.cpp
+}
+
+do_install() {
+    DESTDIR='${WORKDIR}/minifi-install' cmake_runcmake_build --target ${OECMAKE_TARGET_INSTALL}
+    MINIFI_BIN=${bindir}
+    MINIFI_HOME=${sysconfdir}/minifi
+    MINIFI_RUN=${localstatedir}/lib/minifi
+    MINIFI_LOG=${localstatedir}/log/minifi
+
+    install -m 755 -d ${D}${MINIFI_BIN}
+    install -m 755 -d ${D}${MINIFI_HOME}/conf
+    install -m 755 -d ${D}${localstatedir}/lib/minifi
+
+    for i in encrypt-config minifi minifi.sh minificontroller; do
+        install -m 755 ${WORKDIR}/minifi-install/usr/bin/${i} ${D}${MINIFI_BIN}
+    done
+    for i in config.yml minifi-log.properties minifi.properties minifi-uid.properties; do
+        install -m 644 ${WORKDIR}/minifi-install/usr/conf/${i} ${D}${MINIFI_HOME}/conf
+    done
+
+    install -m 755 -d ${D}${libdir}/minifi-extensions
+    install -m 755 ${WORKDIR}/minifi-install/usr/bin/libcore-minifi.so ${D}${libdir}
+    install -m 755 ${WORKDIR}/minifi-install/usr/extensions/*.so ${D}${libdir}/minifi-extensions
+
+    install -m 755 -d ${D}${libexecdir}/minifi-python
+    for i in examples google h2o; do
+        cp -rf ${WORKDIR}/minifi-install/usr/minifi-python/${i} ${D}${libexecdir}/minifi-python
+    done
+
+    sed -i "s|MINIFI_HOME=.*|MINIFI_HOME=${MINIFI_HOME}|g" ${D}${MINIFI_BIN}/minifi.sh
+    sed -i "s|bin_dir=.*|bin_dir=${MINIFI_BIN}|g" ${D}${MINIFI_BIN}/minifi.sh
+
+    sed -i "s|#appender.rolling.directory=.*|appender.rolling.directory=${MINIFI_LOG}|g" \
+        ${D}${MINIFI_HOME}/conf/minifi-log.properties
+    sed -i "s|nifi.provenance.repository.directory.default=.*|nifi.provenance.repository.directory.default=${MINIFI_RUN}/provenance_repository|g" \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i "s|nifi.flowfile.repository.directory.default=.*|nifi.flowfile.repository.directory.default=${MINIFI_RUN}/flowfile_repository|g" \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i "s|nifi.database.content.repository.directory.default=.*|nifi.database.content.repository.directory.default=${MINIFI_RUN}/content_repository|g" \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i "s|nifi.flow.configuration.file=.*|nifi.flow.configuration.file=${MINIFI_HOME}/conf/config.yml|g" \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i "s|nifi.python.processor.dir=.*|nifi.python.processor.dir=${libexecdir}/minifi-python|g" \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+    sed -i "s|nifi.extension.path=.*|nifi.extension.path=${libdir}/minifi-extensions/*|g" \
+        ${D}${MINIFI_HOME}/conf/minifi.properties
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -m 755 -d ${D}${sysconfdir}/tmpfiles.d
+        install -m 644 ${WORKDIR}/systemd-volatile.conf ${D}${sysconfdir}/tmpfiles.d/minifi.conf
+        sed -i "s|@MINIFI_LOG@|${MINIFI_LOG}|g" ${D}${sysconfdir}/tmpfiles.d/minifi.conf
+
+        install -m 755 -d ${D}${systemd_system_unitdir}
+        install -m 644 ${WORKDIR}/minifi-install/usr/bin/minifi.service ${D}${systemd_system_unitdir}
+
+        sed -i -e "s|^Environment=.*|Environment=MINIFI_HOME=${MINIFI_HOME}|g" ${D}${systemd_system_unitdir}/minifi.service
+        sed -i -e "s|^ExecStart=.*|ExecStart=${MINIFI_BIN}/minifi|g" ${D}${systemd_system_unitdir}/minifi.service
+    fi
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/default/volatiles
+        install -m 0644 ${WORKDIR}/sysvinit-volatile.conf ${D}${sysconfdir}/default/volatiles/99_minifi
+
+        sed -i "s|@MINIFI_LOG@|${MINIFI_LOG}|g" ${D}${sysconfdir}/default/volatiles/99_minifi
+    fi
+}
+
+pkg_postinst:${PN}() {
+    if [ -z "$D" ]; then
+        if type systemd-tmpfiles >/dev/null; then
+            systemd-tmpfiles --create
+        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+            ${sysconfdir}/init.d/populate-volatile.sh update
+        fi
+    fi
+}
+
+FILES:${PN}-dev = ""
+FILES:${PN} += "${libdir}/libcore-minifi.so \
+                ${libdir}/minifi-extensions \
+                ${libexecdir}/minifi-python \
+               "
+
+INSANE_SKIP:${PN} += "dev-deps"
+
+CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb b/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
deleted file mode 100644
index 5059b63..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/minifi-cpp/minifi-cpp_0.7.0.bb
+++ /dev/null
@@ -1,169 +0,0 @@
-SUMMARY = "A subproject of Apache NiFi to collect data where it originates."
-DESCRIPTION = "MiNiFi--a subproject of Apache NiFi--is a complementary \
-data collection approach that supplements the core tenets of NiFi in dataflow \
-management, focusing on the collection of data at the source of its creation."
-HOMEPAGE = "https://nifi.apache.org/minifi/index.html"
-SECTION = "console/network"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f9534eb5f4ab800b573a37bffc62f3a7"
-
-DEPENDS = "virtual/crypt expat flex python3 bison-native libxml2 nettle lz4"
-RDEPENDS:${PN} = "python3-core"
-
-SRCREV = "aa42957a2e227df41510047cece3cd606dc1cb6a"
-SRC_URI = "git://github.com/apache/nifi-minifi-cpp.git;branch=master;protocol=https \
-            https://curl.haxx.se/download/curl-7.64.0.tar.bz2;name=curl;subdir=git/thirdparty \
-            https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.3.tar.gz;name=libressl;subdir=git/thirdparty \
-            ${DEBIAN_MIRROR}/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz;name=ossp-uuid;subdir=git/thirdparty \
-            file://fix-minifi-compile.patch \
-            file://fix-libressl-compile.patch \
-            file://fix-libressl-avoid-BSWAP-assembly-for-ARM-v6.patch \
-            file://fix-osspuuid-compile.patch \
-            file://fix-osspuuid-cross-compile.patch \
-            file://fix-osspuuid-musl-compile.patch \
-            file://fix-rocksdb-cross-compile.patch \
-            file://remove_const_due_to_std_lock_guard.patch \
-            file://0001-Add-lxml2-to-linker-cmdline-of-xml-is-found.patch \
-            file://0001-CMakeLists.txt-use-curl-local-source-tarball.patch \
-            file://0002-cmake-LibreSSL.cmake-use-libressl-local-source-tarba.patch \
-            file://0003-cmake-BundledOSSPUUID.cmake-use-ossp-uuid-local-sour.patch \
-            file://0001-civetweb-CMakeLists.txt-do-not-search-gcc-ar-and-gcc.patch \
-            file://0001-cxxopts-Add-limits-header.patch \
-            file://0001-Fix-build-with-libc.patch \
-            file://0001-civetweb-Disable-lto.patch \
-            file://0001-Add-missing-includes-cstdint-and-cstdio.patch \
-            file://0001-Do-not-use-LFS64-functions-on-linux-musl.patch \
-            file://0001-Fix-the-constness-issues-around-autovector-iterator_.patch \
-            file://0002-Fix-build-with-clang-17.patch \
-            file://0001-CMakeLists.txt-Pass-the-OPENSSLDIR.patch \
-            file://0001-BundledOSSPUUID.cmake-Pass-CFLAGS-to-compiler.patch \
-            file://minifi.service \
-            file://systemd-volatile.conf \
-            file://sysvinit-volatile.conf \
-            file://0001-config.guess-Support-build-on-aarch64.patch \
-            "
-
-SRC_URI[curl.md5sum] = "d0bcc586873cfef08b4b9594e5395a33"
-SRC_URI[curl.sha256sum] = "d573ba1c2d1cf9d8533fadcce480d778417964e8d04ccddcc76e591d544cf2eb"
-SRC_URI[libressl.md5sum] = "0f1127bd21b4aa8495a910379c2ad936"
-SRC_URI[libressl.sha256sum] = "9b640b13047182761a99ce3e4f000be9687566e0828b4a72709e9e6a3ef98477"
-SRC_URI[ossp-uuid.md5sum] = "5db0d43a9022a6ebbbc25337ae28942f"
-SRC_URI[ossp-uuid.sha256sum] = "11a615225baa5f8bb686824423f50e4427acd3f70d394765bdff32801f0fd5b0"
-
-S = "${WORKDIR}/git"
-
-inherit pkgconfig cmake systemd
-
-SYSTEMD_PACKAGES = "minifi-cpp"
-SYSTEMD_SERVICE:${PN} = "minifi.service"
-SYSTEMD_AUTO_ENABLE = "disable"
-
-OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
-
-EXTRA_OECMAKE += " \
-    -DHOST_SYS=${HOST_SYS} -DBUILD_SYS=${BUILD_SYS} \
-    -DSKIP_TESTS=ON \
-    -DGCC_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \
-    -DGCC_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \
-    -DDISABLE_PYTHON_SCRIPTING=ON \
-    -DFLEX_TARGET_ARG_COMPILE_FLAGS='--noline' \
-    -DBISON_TARGET_ARG_COMPILE_FLAGS='--no-lines --file-prefix-map=${S}=${TARGET_DBGSRC_DIR}' \
-    -DOPENSSLDIR=${sysconfdir}/libressl \
-    "
-
-CFLAGS:append = " -fPIC"
-EXTRA_OECMAKE:append:toolchain-clang = " -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib"
-LDFLAGS:append:toolchain-clang = " -fuse-ld=lld"
-
-# RV lld errors out:
-# riscv64-yoe-linux-ld.lld: error: init.c:(.text+0x0): relocation R_RISCV_ALIGN requires unimplemented linker relaxation; recompile with -mno-relax
-LDFLAGS:remove:riscv32 = "-fuse-ld=lld"
-LDFLAGS:remove:riscv64 = "-fuse-ld=lld"
-
-# There are endian issues when communicating with the x86 nifi on the the mips and the ppc machines.
-COMPATIBLE_MACHINE:mips = "(!.*mips).*"
-COMPATIBLE_MACHINE:mips64 = "(!.*mips64).*"
-COMPATIBLE_MACHINE:powerpc = "(!.*ppc).*"
-
-TARGET_CFLAGS:append:riscv32 = " -fpic"
-TARGET_CXXFLAGS:append:riscv32 = " -fpic"
-TARGET_CFLAGS:append:riscv64 = " -fpic"
-TARGET_CXXFLAGS:append:riscv64 = " -fpic"
-
-do_install[cleandirs] += "${WORKDIR}/minifi-install"
-PSEUDO_CONSIDER_PATHS .= ",${WORKDIR}/minifi-install"
-
-do_configure:prepend:libc-musl() {
-    sed -i -e 's/-DHAVE_GLIBC_STRERROR_R=1/-DHAVE_GLIBC_STRERROR_R=0/' ${S}/CMakeLists.txt
-    sed -i -e 's/-DHAVE_POSIX_STRERROR_R=0/-DHAVE_POSIX_STRERROR_R=1/' ${S}/CMakeLists.txt
-}
-
-do_configure:append() {
-    sed -i -e 's|${WORKDIR}|<WORKDIR>|g' ${S}/libminifi/include/agent/agent_version.h
-}
-
-CFLAGS:append:libc-glibc = " -D_GNU_SOURCE"
-CXXFLAGS:append:libc-glibc = " -D_GNU_SOURCE"
-
-do_install() {
-    DESTDIR='${WORKDIR}/minifi-install' cmake_runcmake_build --target ${OECMAKE_TARGET_INSTALL}
-    MINIFI_BIN=${bindir}
-    MINIFI_HOME=${sysconfdir}/minifi
-    MINIFI_RUN=${localstatedir}/lib/minifi
-    MINIFI_LOG=${localstatedir}/log/minifi
-
-    install -d ${D}${MINIFI_BIN}
-    install -d ${D}${MINIFI_HOME}/conf
-    install -m 755 -d ${D}${localstatedir}/lib/minifi
-    install -m 755 -d ${D}${libexecdir}/minifi-python
-    cp -a ${WORKDIR}/minifi-install/usr/bin/*   ${D}${MINIFI_BIN}/
-    cp -a ${WORKDIR}/minifi-install/usr/conf/*  ${D}${MINIFI_HOME}/conf/
-
-    sed -i 's|#appender.rolling.directory=.*|appender.rolling.directory='${MINIFI_LOG}'|g' \
-        ${D}${MINIFI_HOME}/conf/minifi-log.properties
-    sed -i 's|nifi.provenance.repository.directory.default=.*|nifi.provenance.repository.directory.default='${MINIFI_RUN}'/provenance_repository|g' \
-        ${D}${MINIFI_HOME}/conf/minifi.properties
-    sed -i 's|nifi.flowfile.repository.directory.default=.*|nifi.flowfile.repository.directory.default='${MINIFI_RUN}'/flowfile_repository|g' \
-        ${D}${MINIFI_HOME}/conf/minifi.properties
-    sed -i 's|nifi.database.content.repository.directory.default=.*|nifi.database.content.repository.directory.default='${MINIFI_RUN}'/content_repository|g' \
-        ${D}${MINIFI_HOME}/conf/minifi.properties
-    sed -i 's|nifi.flow.configuration.file=.*|nifi.flow.configuration.file='${MINIFI_HOME}'/conf/config.yml|g' \
-        ${D}${MINIFI_HOME}/conf/minifi.properties
-    sed -i 's|nifi.python.processor.dir=.*|nifi.python.processor.dir=${libexecdir}/minifi-python|g' \
-        ${D}${MINIFI_HOME}/conf/minifi.properties
-
-    sed -i 's|export MINIFI_HOME=.*|export MINIFI_HOME='${MINIFI_HOME}'|g' ${D}${MINIFI_BIN}/minifi.sh
-    sed -i 's|bin_dir=${MINIFI_HOME}/bin|bin_dir='${MINIFI_BIN}'|g' ${D}${MINIFI_BIN}/minifi.sh
-    sed -i 's|pid_file=${bin_dir}/.|pid_file='${localstatedir}/run/'|g' ${D}${MINIFI_BIN}/minifi.sh
-
-    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-        install -d ${D}${sysconfdir}/tmpfiles.d/
-        install -m 0644 ${WORKDIR}/systemd-volatile.conf ${D}${sysconfdir}/tmpfiles.d/minifi.conf
-        install -m 0755 -d ${D}${systemd_unitdir}/system
-        install -m 0644 ${WORKDIR}/minifi.service ${D}${systemd_unitdir}/system/
-
-        sed -i 's|@LOCALSTATEDIR@|${localstatedir}|g' ${D}${systemd_unitdir}/system/minifi.service
-        sed -i 's|@SYSCONFDIR@|${sysconfdir}|g' ${D}${systemd_unitdir}/system/minifi.service
-        sed -i 's|@BINDIR@|${bindir}|g' ${D}${systemd_unitdir}/system/minifi.service
-
-        sed -i 's|@MINIFI_LOG@|'${MINIFI_LOG}'|g' ${D}${sysconfdir}/tmpfiles.d/minifi.conf
-
-    elif ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-        install -d ${D}${sysconfdir}/default/volatiles
-        install -m 0644 ${WORKDIR}/sysvinit-volatile.conf ${D}${sysconfdir}/default/volatiles/99_minifi
-
-        sed -i 's|@MINIFI_LOG@|'${MINIFI_LOG}'|g' ${D}${sysconfdir}/default/volatiles/99_minifi
-    fi
-}
-
-pkg_postinst:${PN}() {
-    if [ -z "$D" ]; then
-        if type systemd-tmpfiles >/dev/null; then
-            systemd-tmpfiles --create
-        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
-            ${sysconfdir}/init.d/populate-volatile.sh update
-        fi
-    fi
-}
-
-CLEANBROKEN = "1"
diff --git a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs-115_115.8.0.bb b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs-115_115.8.0.bb
index 4e36aca..1269795 100644
--- a/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs-115_115.8.0.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/mozjs/mozjs-115_115.8.0.bb
@@ -93,5 +93,6 @@
     rm -f ${D}${libdir}/libjs_static.ajs
 }
 
+PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
 PACKAGES =+ "lib${BPN}"
 FILES:lib${BPN} += "${libdir}/lib*"
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2024.3.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2024.3.bb
deleted file mode 100644
index 158ec9b..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2024.3.bb
+++ /dev/null
@@ -1,212 +0,0 @@
-SUMMARY = "Versioned Operating System Repository."
-DESCRIPTION = "libostree is both a shared library and suite of command line \
-tools that combines a \"git-like\" model for committing and downloading \
-bootable filesystem trees, along with a layer for deploying them and managing \
-the bootloader configuration."
-HOMEPAGE = "https://ostree.readthedocs.io"
-LICENSE = "LGPL-2.1-only"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
-
-DEPENDS = " \
-    glib-2.0-native \
-    glib-2.0 \
-    e2fsprogs \
-    libcap \
-    zlib \
-    xz \
-    bison-native \
-"
-
-GITHUB_BASE_URI = "https://github.com/ostreedev/ostree/releases"
-SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libostree-${PV}.tar.xz \
-           file://run-ptest \
-           "
-SRC_URI[sha256sum] = "5e0daaaa70772bfa00bd3d0c25d11f7c1f6d41a996708fad8bf9941f0a36bc8d"
-
-S = "${WORKDIR}/libostree-${PV}"
-
-inherit autotools bash-completion gobject-introspection github-releases gtk-doc manpages pkgconfig ptest-gnome systemd
-
-UNKNOWN_CONFIGURE_OPT_IGNORE = "--disable-introspection --enable-introspection"
-
-# Workaround compile failure:
-# |../git/src/libotutil/zbase32.c:37:1: error: function returns an aggregate [-Werror=aggregate-return]
-# so remove -Og and use -O2 as workaround
-DEBUG_OPTIMIZATION:remove = "-Og"
-DEBUG_OPTIMIZATION:append = " -O2"
-BUILD_OPTIMIZATION:remove = "-Og"
-BUILD_OPTIMIZATION:append = " -O2"
-
-# Package configuration - match ostree defaults, but without rofiles-fuse
-# otherwise we introduce a dependendency on meta-filesystems and swap
-# soup for curl to avoid bringing in deprecated libsoup2 (though
-# to run ptest requires that you have soup2 or soup3).
-PACKAGECONFIG ??= " \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd libmount', '', d)} \
-    glib \
-    gpgme \
-    curl \
-"
-
-# We include curl because ostree can't (currently) be built without
-# soup or curl - https://github.com/ostreedev/ostree/issues/1897
-PACKAGECONFIG:class-native ??= " \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
-    builtin-grub2-mkconfig \
-    gpgme \
-    curl \
-"
-
-PACKAGECONFIG:class-nativesdk ??= " \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
-    builtin-grub2-mkconfig \
-    gpgme \
-    curl \
-"
-
-PACKAGECONFIG[avahi] = "--with-avahi, --without-avahi, avahi"
-PACKAGECONFIG[builtin-grub2-mkconfig] = "--with-builtin-grub2-mkconfig, --without-builtin-grub2-mkconfig"
-PACKAGECONFIG[curl] = "--with-curl, --without-curl, curl"
-PACKAGECONFIG[dracut] = "--with-dracut, --without-dracut"
-PACKAGECONFIG[ed25519-libsodium] = "--with-ed25519-libsodium, --without-ed25519-libsodium, libsodium"
-PACKAGECONFIG[ed25519-openssl] = "--with-openssl, --without-openssl, openssl"
-PACKAGECONFIG[gjs] = "ac_cv_path_GJS=${bindir}/gjs"
-PACKAGECONFIG[glib] = "--with-crypto=glib, , , , , gnutls openssl"
-PACKAGECONFIG[gnutls] = "--with-crypto=gnutls, , gnutls, , , glib openssl"
-PACKAGECONFIG[gpgme] = "--with-gpgme, --without-gpgme, gpgme"
-PACKAGECONFIG[libarchive] = "--with-libarchive, --without-libarchive, libarchive"
-PACKAGECONFIG[libmount] = "--with-libmount, --without-libmount, util-linux"
-PACKAGECONFIG[manpages] = "--enable-man, --disable-man, libxslt-native docbook-xsl-stylesheets-native"
-PACKAGECONFIG[mkinitcpio] = "--with-mkinitcpio, --without-mkinitcpio"
-PACKAGECONFIG[no-http2] = "--disable-http2, --enable-http2"
-PACKAGECONFIG[openssl] = "--with-crypto=openssl, , openssl, , , glib gnutls"
-PACKAGECONFIG[rofiles-fuse] = "--enable-rofiles-fuse, --disable-rofiles-fuse, fuse3"
-PACKAGECONFIG[selinux] = "--with-selinux, --without-selinux, libselinux, bubblewrap"
-PACKAGECONFIG[smack] = "--with-smack, --without-smack, smack"
-PACKAGECONFIG[soup2] = "--with-soup, --without-soup, libsoup-2.4, , , soup3"
-PACKAGECONFIG[soup3] = "--with-soup3, --without-soup3, libsoup, , , soup2"
-PACKAGECONFIG[static] = ""
-PACKAGECONFIG[systemd] = "--with-libsystemd --with-systemdsystemunitdir=${systemd_system_unitdir}, --without-libsystemd, systemd"
-
-EXTRA_OECONF = " \
-    ${@bb.utils.contains('PACKAGECONFIG', 'static', '--with-static-compiler=\'${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}\'', '', d)} \
-"
-
-# Makefile-libostree.am overrides this to avoid a build problem with clang,
-# but that fix breaks cross compilation and we don't need it
-EXTRA_OEMAKE = " \
-    INTROSPECTION_SCANNER_ENV= \
-"
-
-EXTRA_OECONF:class-native = " \
-    --enable-wrpseudo-compat \
-    --disable-otmpfile \
-"
-
-EXTRA_OECONF:class-nativesdk = " \
-    --enable-wrpseudo-compat \
-    --disable-otmpfile \
-"
-
-# Path to ${prefix}/lib/ostree/ostree-grub-generator is hardcoded on the
-# do_configure stage so we do depend on it
-SYSROOT_DIR = "${STAGING_DIR_TARGET}"
-SYSROOT_DIR:class-native = "${STAGING_DIR_NATIVE}"
-do_configure[vardeps] += "SYSROOT_DIR"
-
-do_configure:prepend() {
-    # this reflects what autogen.sh does, but the OE wrappers for autoreconf
-    # allow it to work without the other gyrations which exist there
-    cp ${S}/libglnx/Makefile-libglnx.am ${S}/libglnx/Makefile-libglnx.am.inc
-    cp ${S}/bsdiff/Makefile-bsdiff.am ${S}/bsdiff/Makefile-bsdiff.am.inc
-}
-
-do_install:append:class-native() {
-    create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="${STAGING_LIBDIR_NATIVE}/ostree/ostree-grub-generator"
-}
-
-do_install:append:class-nativesdk() {
-    create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="\$OECORE_NATIVE_SYSROOT/usr/lib/ostree/ostree-grub-generator"
-}
-
-PACKAGE_BEFORE_PN = " \
-    ${PN}-dracut \
-    ${PN}-grub \
-    ${PN}-mkinitcpio \
-    ${PN}-switchroot \
-"
-
-FILES:${PN} += " \
-    ${nonarch_libdir}/${BPN} \
-    ${nonarch_libdir}/tmpfiles.d \
-    ${systemd_system_unitdir} \
-    ${systemd_unitdir}/system-generators \
-"
-FILES:${PN}-dracut = " \
-    ${sysconfdir}/dracut.conf.d \
-    ${libdir}/dracut \
-"
-FILES:${PN}-grub = " \
-    ${sysconfdir}/grub.d \
-    ${libexecdir}/libostree/grub2-15_ostree \
-"
-FILES:${PN}-mkinitcpio = " \
-    ${sysconfdir}/ostree-mkinitcpio.conf \
-    ${libdir}/initcpio \
-"
-FILES:${PN}-switchroot = " \
-    ${nonarch_libdir}/${BPN}/ostree-prepare-root \
-    ${systemd_system_unitdir}/ostree-prepare-root.service \
-"
-
-RDEPENDS:${PN}-dracut = "bash"
-RDEPENDS:${PN}-mkinitcpio = "bash"
-RDEPENDS:${PN}:class-target = " \
-    ${@bb.utils.contains('PACKAGECONFIG', 'gpgme', 'gnupg', '', d)} \
-    ${PN}-switchroot \
-"
-
-#
-# Note that to get ptest to pass you also need:
-#
-#   xattr in DISTRO_FEATURES (default)
-#   static ostree-prepare-root
-#   overlayfs in your kernel
-#   busybox built statically
-#   C.UTF-8 locale available (default)
-#   Sufficient disk space/RAM (e.g. core-image-sato-sdk)
-#
-# Something like this in your local.conf:
-#
-# PACKAGECONFIG:append:pn-ostree = " static soup3"
-# KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
-# TARGET_CFLAGS:append:pn-busybox = " -static"
-#
-RDEPENDS:${PN}-ptest += " \
-    attr \
-    bash \
-    coreutils \
-    cpio \
-    diffutils \
-    findutils \
-    grep \
-    python3-core \
-    python3-multiprocessing \
-    strace \
-    tar \
-    util-linux \
-    xz \
-    python3-pyyaml \
-    ${@bb.utils.contains('PACKAGECONFIG', 'gjs', 'gjs', '', d)} \
-"
-RDEPENDS:${PN}-ptest:remove:riscv32 = "strace"
-RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-localedata-en-us"
-
-RRECOMMENDS:${PN}:append:class-target = " kernel-module-overlay"
-
-SYSTEMD_SERVICE:${PN} = "ostree-remount.service ostree-finalize-staged.path"
-SYSTEMD_SERVICE:${PN}-switchroot = "ostree-prepare-root.service"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2024.5.bb b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2024.5.bb
new file mode 100644
index 0000000..0e09810
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2024.5.bb
@@ -0,0 +1,212 @@
+SUMMARY = "Versioned Operating System Repository."
+DESCRIPTION = "libostree is both a shared library and suite of command line \
+tools that combines a \"git-like\" model for committing and downloading \
+bootable filesystem trees, along with a layer for deploying them and managing \
+the bootloader configuration."
+HOMEPAGE = "https://ostree.readthedocs.io"
+LICENSE = "LGPL-2.1-only"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
+
+DEPENDS = " \
+    glib-2.0-native \
+    glib-2.0 \
+    e2fsprogs \
+    libcap \
+    zlib \
+    xz \
+    bison-native \
+"
+
+GITHUB_BASE_URI = "https://github.com/ostreedev/ostree/releases"
+SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libostree-${PV}.tar.xz \
+           file://run-ptest \
+           "
+SRC_URI[sha256sum] = "bc12d8493db64152093ee5be77cf62a29cc67a4a9e430dc987103e78aada4a6f"
+
+S = "${WORKDIR}/libostree-${PV}"
+
+inherit autotools bash-completion gobject-introspection github-releases gtk-doc manpages pkgconfig ptest-gnome systemd
+
+UNKNOWN_CONFIGURE_OPT_IGNORE = "--disable-introspection --enable-introspection"
+
+# Workaround compile failure:
+# |../git/src/libotutil/zbase32.c:37:1: error: function returns an aggregate [-Werror=aggregate-return]
+# so remove -Og and use -O2 as workaround
+DEBUG_OPTIMIZATION:remove = "-Og"
+DEBUG_OPTIMIZATION:append = " -O2"
+BUILD_OPTIMIZATION:remove = "-Og"
+BUILD_OPTIMIZATION:append = " -O2"
+
+# Package configuration - match ostree defaults, but without rofiles-fuse
+# otherwise we introduce a dependendency on meta-filesystems and swap
+# soup for curl to avoid bringing in deprecated libsoup2 (though
+# to run ptest requires that you have soup2 or soup3).
+PACKAGECONFIG ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd libmount', '', d)} \
+    glib \
+    gpgme \
+    curl \
+"
+
+# We include curl because ostree can't (currently) be built without
+# soup or curl - https://github.com/ostreedev/ostree/issues/1897
+PACKAGECONFIG:class-native ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
+    builtin-grub2-mkconfig \
+    gpgme \
+    curl \
+"
+
+PACKAGECONFIG:class-nativesdk ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'selinux smack', d)} \
+    builtin-grub2-mkconfig \
+    gpgme \
+    curl \
+"
+
+PACKAGECONFIG[avahi] = "--with-avahi, --without-avahi, avahi"
+PACKAGECONFIG[builtin-grub2-mkconfig] = "--with-builtin-grub2-mkconfig, --without-builtin-grub2-mkconfig"
+PACKAGECONFIG[curl] = "--with-curl, --without-curl, curl"
+PACKAGECONFIG[dracut] = "--with-dracut, --without-dracut"
+PACKAGECONFIG[ed25519-libsodium] = "--with-ed25519-libsodium, --without-ed25519-libsodium, libsodium"
+PACKAGECONFIG[ed25519-openssl] = "--with-openssl, --without-openssl, openssl"
+PACKAGECONFIG[gjs] = "ac_cv_path_GJS=${bindir}/gjs"
+PACKAGECONFIG[glib] = "--with-crypto=glib, , , , , gnutls openssl"
+PACKAGECONFIG[gnutls] = "--with-crypto=gnutls, , gnutls, , , glib openssl"
+PACKAGECONFIG[gpgme] = "--with-gpgme, --without-gpgme, gpgme"
+PACKAGECONFIG[libarchive] = "--with-libarchive, --without-libarchive, libarchive"
+PACKAGECONFIG[libmount] = "--with-libmount, --without-libmount, util-linux"
+PACKAGECONFIG[manpages] = "--enable-man, --disable-man, libxslt-native docbook-xsl-stylesheets-native"
+PACKAGECONFIG[mkinitcpio] = "--with-mkinitcpio, --without-mkinitcpio"
+PACKAGECONFIG[no-http2] = "--disable-http2, --enable-http2"
+PACKAGECONFIG[openssl] = "--with-crypto=openssl, , openssl, , , glib gnutls"
+PACKAGECONFIG[rofiles-fuse] = "--enable-rofiles-fuse, --disable-rofiles-fuse, fuse3"
+PACKAGECONFIG[selinux] = "--with-selinux, --without-selinux, libselinux, bubblewrap"
+PACKAGECONFIG[smack] = "--with-smack, --without-smack, smack"
+PACKAGECONFIG[soup2] = "--with-soup, --without-soup, libsoup-2.4, , , soup3"
+PACKAGECONFIG[soup3] = "--with-soup3, --without-soup3, libsoup, , , soup2"
+PACKAGECONFIG[static] = ""
+PACKAGECONFIG[systemd] = "--with-libsystemd --with-systemdsystemunitdir=${systemd_system_unitdir}, --without-libsystemd, systemd"
+
+EXTRA_OECONF = " \
+    ${@bb.utils.contains('PACKAGECONFIG', 'static', '--with-static-compiler=\'${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}\'', '', d)} \
+"
+
+# Makefile-libostree.am overrides this to avoid a build problem with clang,
+# but that fix breaks cross compilation and we don't need it
+EXTRA_OEMAKE = " \
+    INTROSPECTION_SCANNER_ENV= \
+"
+
+EXTRA_OECONF:class-native = " \
+    --enable-wrpseudo-compat \
+    --disable-otmpfile \
+"
+
+EXTRA_OECONF:class-nativesdk = " \
+    --enable-wrpseudo-compat \
+    --disable-otmpfile \
+"
+
+# Path to ${prefix}/lib/ostree/ostree-grub-generator is hardcoded on the
+# do_configure stage so we do depend on it
+SYSROOT_DIR = "${STAGING_DIR_TARGET}"
+SYSROOT_DIR:class-native = "${STAGING_DIR_NATIVE}"
+do_configure[vardeps] += "SYSROOT_DIR"
+
+do_configure:prepend() {
+    # this reflects what autogen.sh does, but the OE wrappers for autoreconf
+    # allow it to work without the other gyrations which exist there
+    cp ${S}/libglnx/Makefile-libglnx.am ${S}/libglnx/Makefile-libglnx.am.inc
+    cp ${S}/bsdiff/Makefile-bsdiff.am ${S}/bsdiff/Makefile-bsdiff.am.inc
+}
+
+do_install:append:class-native() {
+    create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="${STAGING_LIBDIR_NATIVE}/ostree/ostree-grub-generator"
+}
+
+do_install:append:class-nativesdk() {
+    create_wrapper ${D}${bindir}/ostree OSTREE_GRUB2_EXEC="\$OECORE_NATIVE_SYSROOT/usr/lib/ostree/ostree-grub-generator"
+}
+
+PACKAGE_BEFORE_PN = " \
+    ${PN}-dracut \
+    ${PN}-grub \
+    ${PN}-mkinitcpio \
+    ${PN}-switchroot \
+"
+
+FILES:${PN} += " \
+    ${nonarch_libdir}/${BPN} \
+    ${nonarch_libdir}/tmpfiles.d \
+    ${systemd_system_unitdir} \
+    ${systemd_unitdir}/system-generators \
+"
+FILES:${PN}-dracut = " \
+    ${sysconfdir}/dracut.conf.d \
+    ${libdir}/dracut \
+"
+FILES:${PN}-grub = " \
+    ${sysconfdir}/grub.d \
+    ${libexecdir}/libostree/grub2-15_ostree \
+"
+FILES:${PN}-mkinitcpio = " \
+    ${sysconfdir}/ostree-mkinitcpio.conf \
+    ${libdir}/initcpio \
+"
+FILES:${PN}-switchroot = " \
+    ${nonarch_libdir}/${BPN}/ostree-prepare-root \
+    ${systemd_system_unitdir}/ostree-prepare-root.service \
+"
+
+RDEPENDS:${PN}-dracut = "bash"
+RDEPENDS:${PN}-mkinitcpio = "bash"
+RDEPENDS:${PN}:class-target = " \
+    ${@bb.utils.contains('PACKAGECONFIG', 'gpgme', 'gnupg', '', d)} \
+    ${PN}-switchroot \
+"
+
+#
+# Note that to get ptest to pass you also need:
+#
+#   xattr in DISTRO_FEATURES (default)
+#   static ostree-prepare-root
+#   overlayfs in your kernel
+#   busybox built statically
+#   C.UTF-8 locale available (default)
+#   Sufficient disk space/RAM (e.g. core-image-sato-sdk)
+#
+# Something like this in your local.conf:
+#
+# PACKAGECONFIG:append:pn-ostree = " static soup3"
+# KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
+# TARGET_CFLAGS:append:pn-busybox = " -static"
+#
+RDEPENDS:${PN}-ptest += " \
+    attr \
+    bash \
+    coreutils \
+    cpio \
+    diffutils \
+    findutils \
+    grep \
+    python3-core \
+    python3-multiprocessing \
+    strace \
+    tar \
+    util-linux \
+    xz \
+    python3-pyyaml \
+    ${@bb.utils.contains('PACKAGECONFIG', 'gjs', 'gjs', '', d)} \
+"
+RDEPENDS:${PN}-ptest:remove:riscv32 = "strace"
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-utils glibc-localedata-en-us"
+
+RRECOMMENDS:${PN}:append:class-target = " kernel-module-overlay"
+
+SYSTEMD_SERVICE:${PN} = "ostree-remount.service ostree-finalize-staged.path"
+SYSTEMD_SERVICE:${PN}-switchroot = "ostree-prepare-root.service"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-extended/plocate/plocate/0001-Include-linux-stat.h-only-when-sys-stat.h-is-not-inc.patch b/meta-openembedded/meta-oe/recipes-extended/plocate/plocate/0001-Include-linux-stat.h-only-when-sys-stat.h-is-not-inc.patch
new file mode 100644
index 0000000..7ba266f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/plocate/plocate/0001-Include-linux-stat.h-only-when-sys-stat.h-is-not-inc.patch
@@ -0,0 +1,39 @@
+From 1d2197c195e19f1414afef75186bdd4c27b3ee5a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 23 Mar 2024 18:16:19 -0700
+Subject: [PATCH] Include linux/stat.h only when sys/stat.h is not included
+
+This ends up providing certain functions from both headers e.g.
+statx and statx_timestamp since liburing.h forcefully defines _GNU_SOURCE
+to help musl compile liburing, however, this define then causes these
+two files to conflict in plocate, it seems this file is redundant here
+when sys/stat.h is included anyway, mark it for conditional include
+
+Fixes
+| In file included from ../plocate-1.1.22/plocate.cpp:5:
+| In file included from ../plocate-1.1.22/io_uring_engine.h:14:
+| In file included from /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/plocate/1.1.22/recipe-sysroot/usr/include/liburing.h:14:
+| /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/plocate/1.1.22/recipe-sysroot/usr/include/sys/stat.h:124:8: error: redefinition of 'statx_timestamp'
+|   124 | struct statx_timestamp {
+|       |        ^
+| /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/plocate/1.1.22/recipe-sysroot/usr/include/linux/stat.h:56:8: note: previous definition is here                                             |    56 | struct statx_timestamp {                                                                                                                                                                    |       |        ^                                                                                                                                                                                    | In file included from ../plocate-1.1.22/plocate.cpp:5:                                                                                                                                              | In file included from ../plocate-1.1.22/io_uring_engine.h:14:                                                                                                                                       | In file included from /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/plocate/1.1.22/recipe-sysroot/usr/include/liburing.h:14:                                                             | /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/plocate/1.1.22/recipe-sysroot/usr/include/sys/stat.h:129:8: error: redefinition of 'statx'                                                 |   129 | struct statx {                                                                                                                                                                              |       |        ^                                                                                                                                                                                    | /mnt/b/yoe/master/build/tmp/work/core2-64-yoe-linux-musl/plocate/1.1.22/recipe-sysroot/usr/include/linux/stat.h:99:8: note: previous definition is here
+|    99 | struct statx {
+|       |        ^
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ io_uring_engine.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/io_uring_engine.h
++++ b/io_uring_engine.h
+@@ -7,7 +7,6 @@
+ #include <string_view>
+ #include <sys/socket.h>
+ #include <sys/types.h>
+-#include <linux/stat.h>
+ 
+ struct io_uring_sqe;
+ #ifndef WITHOUT_URING
diff --git a/meta-openembedded/meta-oe/recipes-extended/plocate/plocate_1.1.22.bb b/meta-openembedded/meta-oe/recipes-extended/plocate/plocate_1.1.22.bb
index 07de357..694c297 100644
--- a/meta-openembedded/meta-oe/recipes-extended/plocate/plocate_1.1.22.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/plocate/plocate_1.1.22.bb
@@ -9,6 +9,7 @@
 
 DEPENDS = "zstd liburing"
 
-SRC_URI = "https://plocate.sesse.net/download/${BP}.tar.gz"
+SRC_URI = "https://plocate.sesse.net/download/${BP}.tar.gz \
+           file://0001-Include-linux-stat.h-only-when-sys-stat.h-is-not-inc.patch"
 
 SRC_URI[sha256sum] = "3b7e4741b4aa2ec044e53eff06474a32a3fb1e928b9382351fe79d4c27fb0049"
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-polkit.service.in-disable-MemoryDenyWriteExecute.patch b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-polkit.service.in-disable-MemoryDenyWriteExecute.patch
deleted file mode 100644
index 4f008f7..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit/0001-polkit.service.in-disable-MemoryDenyWriteExecute.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 95148a804be66092564f81306a02f625d5b8a5d0 Mon Sep 17 00:00:00 2001
-From: Markus Volk <f_l_k@t-online.de>
-Date: Sun, 17 Sep 2023 23:26:59 +0200
-Subject: [PATCH] polkit.service.in: disable MemoryDenyWriteExecute
-
-A few momths ago some hardening options have been added to polkit.service.in
-https://gitlab.freedesktop.org/polkit/polkit/-/merge_requests/177/diffs?commit_id=afecbd53696e32bbadd60f431fc7d285f3edd265
-
-and polkitd segfaults with MemoryDenyWriteExecute=yes, at least in my environment
-
-Upstream-Status: Inappropriate [needs further investigation]
-
-Signed-off-by: Markus Volk <f_l_k@t-online.de>
----
- data/polkit.service.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/data/polkit.service.in b/data/polkit.service.in
-index e6db351..4390cce 100644
---- a/data/polkit.service.in
-+++ b/data/polkit.service.in
-@@ -12,7 +12,7 @@ ExecStart=@libprivdir@/polkitd --no-debug
- User=@polkitd_user@
- LimitMEMLOCK=0
- LockPersonality=yes
--MemoryDenyWriteExecute=yes
-+#MemoryDenyWriteExecute=yes
- NoNewPrivileges=yes
- PrivateDevices=yes
- PrivateNetwork=yes
diff --git a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_124.bb b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_124.bb
index 3eb0d52..9e2eb05 100644
--- a/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_124.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/polkit/polkit_124.bb
@@ -4,9 +4,7 @@
 LICENSE = "LGPL-2.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING;md5=155db86cdbafa7532b41f390409283eb"
 
-SRC_URI = "git://gitlab.freedesktop.org/polkit/polkit.git;protocol=https;branch=master \
-           file://0001-polkit.service.in-disable-MemoryDenyWriteExecute.patch \
-           "
+SRC_URI = "git://gitlab.freedesktop.org/polkit/polkit.git;protocol=https;branch=master"
 
 S = "${WORKDIR}/git"
 SRCREV = "82f0924dc0eb23b9df68e88dbaf9e07c81940a5a"
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2306.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2306.0.bb
deleted file mode 100644
index c3948a4..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2306.0.bb
+++ /dev/null
@@ -1,208 +0,0 @@
-SUMMARY = "Rsyslog is an enhanced multi-threaded syslogd"
-DESCRIPTION = "\
-Rsyslog is an enhanced syslogd supporting, among others, MySQL,\
- PostgreSQL, failover log destinations, syslog/tcp, fine grain\
- output format control, high precision timestamps, queued operations\
- and the ability to filter on any message part. It is quite\
- compatible to stock sysklogd and can be used as a drop-in replacement.\
- Its advanced features make it suitable for enterprise-class,\
- encryption protected syslog relay chains while at the same time being\
- very easy to setup for the novice user."
-
-DEPENDS = "zlib libestr libfastjson bison-native flex-native liblogging"
-HOMEPAGE = "http://www.rsyslog.com/"
-LICENSE = "GPL-3.0-only & LGPL-3.0-only & Apache-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=51d9635e646fb75e1b74c074f788e973 \
-                    file://COPYING.LESSER;md5=cb7903f1e5c39ae838209e130dca270a \
-                    file://COPYING.ASL20;md5=052f8a09206615ab07326ff8ce2d9d32\
-"
-
-SRC_URI = "https://www.rsyslog.com/files/download/rsyslog/${BPN}-${PV}.tar.gz \
-           file://initscript \
-           file://rsyslog.conf \
-           file://rsyslog.logrotate \
-           file://rsyslog.service \
-           file://use-pkgconfig-to-check-libgcrypt.patch \
-           file://run-ptest \
-           file://0001-tests-disable-the-check-for-inotify.patch \
-"
-
-SRC_URI:append:libc-musl = " \
-    file://0001-Include-sys-time-h.patch \
-    file://disable-omfile-outchannel.patch \
-"
-
-SRC_URI[sha256sum] = "f6283efaadc609540a56e6bec88a362c966e77f29fe48e6b734bd6c1123e0be5"
-
-UPSTREAM_CHECK_URI = "https://github.com/rsyslog/rsyslog/releases"
-UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
-
-inherit autotools pkgconfig systemd update-rc.d ptest
-
-EXTRA_OECONF += "--disable-generate-man-pages ap_cv_atomic_builtins=yes"
-EXTRA_OECONF += "--enable-imfile-tests"
-EXTRA_OECONF:remove:mipsarch = "ap_cv_atomic_builtins=yes"
-EXTRA_OECONF:remove:powerpc = "ap_cv_atomic_builtins=yes"
-EXTRA_OECONF:remove:riscv32 = "ap_cv_atomic_builtins=yes"
-
-# first line is default yes in configure
-PACKAGECONFIG ??= " \
-    rsyslogd rsyslogrt klog inet regexp uuid libgcrypt \
-    fmhttp imdiag openssl imfile \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'snmp systemd', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'testbench relp ${VALGRIND}', '', d)} \
-"
-
-# default yes in configure
-PACKAGECONFIG[relp] = "--enable-relp,--disable-relp,librelp,"
-PACKAGECONFIG[rsyslogd] = "--enable-rsyslogd,--disable-rsyslogd,,"
-PACKAGECONFIG[rsyslogrt] = "--enable-rsyslogrt,--disable-rsyslogrt,,"
-PACKAGECONFIG[fmhttp] = "--enable-fmhttp,--disable-fmhttp,curl,"
-PACKAGECONFIG[inet] = "--enable-inet,--disable-inet,,"
-PACKAGECONFIG[klog] = "--enable-klog,--disable-klog,,"
-PACKAGECONFIG[regexp] = "--enable-regexp,--disable-regexp,,"
-PACKAGECONFIG[uuid] = "--enable-uuid,--disable-uuid,util-linux,"
-PACKAGECONFIG[libgcrypt] = "--enable-libgcrypt,--disable-libgcrypt,libgcrypt,"
-PACKAGECONFIG[testbench] = "--enable-testbench --enable-omstdout,--disable-testbench --disable-omstdout,,"
-
-# default no in configure
-PACKAGECONFIG[debug] = "--enable-debug,--disable-debug,,"
-PACKAGECONFIG[imdiag] = "--enable-imdiag,--disable-imdiag,,"
-PACKAGECONFIG[imfile] = "--enable-imfile,--disable-imfile,,"
-PACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp,net-snmp,"
-PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls,"
-PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl,"
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
-PACKAGECONFIG[imjournal] = "--enable-imjournal,--disable-imjournal,"
-PACKAGECONFIG[mmjsonparse] = "--enable-mmjsonparse,--disable-mmjsonparse,"
-PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
-PACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql,"
-PACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi,"
-# For libcap-ng, see commit log and  https://github.com/rsyslog/rsyslog/issues/5091
-PACKAGECONFIG[libcap-ng] = "--enable-libcap-ng,--disable-libcap-ng,libcap-ng,"
-PACKAGECONFIG[mail] = "--enable-mail,--disable-mail,,"
-PACKAGECONFIG[valgrind] = ",--without-valgrind-testbench,valgrind,"
-PACKAGECONFIG[imhttp] = "--enable-imhttp,--disable-imhttp,civetweb,"
-
-
-TESTDIR = "tests"
-do_compile_ptest() {
-    echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${TESTDIR}/Makefile
-    oe_runmake -C ${TESTDIR} buildtest-TESTS
-}
-
-do_install_ptest() {
-    # install the tests
-    cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH}
-    cp -rf ${B}/${TESTDIR} ${D}${PTEST_PATH}
-
-    # give permissions to all users
-    # some tests need to write to this directory as user 'daemon'
-    chmod 777 -R ${D}${PTEST_PATH}/tests
-
-    # do NOT need to rebuild Makefile itself
-    sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
-    # do NOT need to rebuild $(check_PROGRAMS)
-    sed -i 's/^check-TESTS:.*$/check-TESTS:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
-
-    # fix the srcdir, top_srcdir
-    sed -i 's,^\(srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
-    sed -i 's,^\(top_srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
-    # fix the abs_top_builddir
-    sed -i 's,^\(abs_top_builddir = \).*,\1${PTEST_PATH}/,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
-
-    # install test-driver
-    install -m 644 ${S}/test-driver ${D}${PTEST_PATH}
-
-    # install necessary links
-    install -d ${D}${PTEST_PATH}/tools
-    ln -sf ${sbindir}/rsyslogd ${D}${PTEST_PATH}/tools/rsyslogd
-
-    install -d ${D}${PTEST_PATH}/runtime
-    install -d ${D}${PTEST_PATH}/runtime/.libs
-    (
-        cd ${D}/${libdir}/rsyslog
-        allso="*.so"
-        for i in $allso; do
-            ln -sf ${libdir}/rsyslog/$i ${D}${PTEST_PATH}/runtime/.libs/$i
-        done
-    )
-
-    # fix the module load path with runtime/.libs
-    find ${D}${PTEST_PATH}/${TESTDIR} -name "*.conf" -o -name "*.sh" -o -name "*.c" | xargs \
-        sed -i -e 's:../plugins/.*/.libs/:../runtime/.libs/:g'
-    # fix the python3 path for tests/set-envar
-    sed -i -e s:${HOSTTOOLS_DIR}:${bindir}:g ${D}${PTEST_PATH}/tests/set-envvars
-}
-
-do_install:append() {
-    install -d "${D}${sysconfdir}/init.d"
-    install -d "${D}${sysconfdir}/logrotate.d"
-    install -m 755 ${WORKDIR}/initscript ${D}${sysconfdir}/init.d/syslog
-    install -m 644 ${WORKDIR}/rsyslog.conf ${D}${sysconfdir}/rsyslog.conf
-    install -m 644 ${WORKDIR}/rsyslog.logrotate ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog
-    sed -i -e "s#@BINDIR@#${bindir}#g" ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog
-
-    if ${@bb.utils.contains('PACKAGECONFIG', 'imjournal', 'true', 'false', d)}; then
-        install -d 0755 ${D}${sysconfdir}/rsyslog.d
-        echo '$ModLoad imjournal' >> ${D}${sysconfdir}/rsyslog.d/imjournal.conf
-    fi
-    if ${@bb.utils.contains('PACKAGECONFIG', 'mmjsonparse', 'true', 'false', d)}; then
-        install -d 0755 ${D}${sysconfdir}/rsyslog.d
-        echo '$ModLoad mmjsonparse' >> ${D}${sysconfdir}/rsyslog.d/mmjsonparse.conf
-    fi
-    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-        install -d ${D}${systemd_system_unitdir}
-        install -m 644 ${WORKDIR}/rsyslog.service ${D}${systemd_system_unitdir}
-        sed -i -e "s,@sbindir@,${sbindir},g" ${D}${systemd_system_unitdir}/rsyslog.service
-    fi
-}
-
-FILES:${PN} += "${bindir}"
-
-INITSCRIPT_NAME = "syslog"
-INITSCRIPT_PARAMS = "defaults"
-
-CONFFILES:${PN} = "${sysconfdir}/rsyslog.conf"
-
-RCONFLICTS:${PN} = "busybox-syslog sysklogd syslog-ng"
-
-RPROVIDES:${PN} += "${PN}-systemd"
-RREPLACES:${PN} += "${PN}-systemd"
-RCONFLICTS:${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE:${PN} = "${BPN}.service"
-
-RDEPENDS:${PN} += "logrotate"
-
-# for rsyslog-ptest
-VALGRIND = "valgrind"
-
-# valgrind supports armv7 and above
-VALGRIND:armv4 = ''
-VALGRIND:armv5 = ''
-VALGRIND:armv6 = ''
-
-# X32 isn't supported by valgrind at this time
-VALGRIND:linux-gnux32 = ''
-VALGRIND:linux-muslx32 = ''
-
-# Disable for some MIPS variants
-VALGRIND:mipsarchr6 = ''
-VALGRIND:linux-gnun32 = ''
-
-# Disable for powerpc64 with musl
-VALGRIND:libc-musl:powerpc64 = ''
-VALGRIND:libc-musl:powerpc64le = ''
-
-# RISC-V support for valgrind is not there yet
-VALGRIND:riscv64 = ""
-VALGRIND:riscv32 = ""
-
-# util-linux: logger needs the -d option
-RDEPENDS:${PN}-ptest += "\
-  make diffutils gzip bash gawk coreutils procps \
-  libgcc python3-core python3-io python3-json \
-  curl util-linux shadow \
-  "
-
-RRECOMMENDS:${PN}-ptest += "${TCLIBC}-dbg ${VALGRIND}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2402.0.bb b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2402.0.bb
new file mode 100644
index 0000000..af46cc1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/rsyslog/rsyslog_8.2402.0.bb
@@ -0,0 +1,207 @@
+SUMMARY = "Rsyslog is an enhanced multi-threaded syslogd"
+DESCRIPTION = "\
+Rsyslog is an enhanced syslogd supporting, among others, MySQL,\
+ PostgreSQL, failover log destinations, syslog/tcp, fine grain\
+ output format control, high precision timestamps, queued operations\
+ and the ability to filter on any message part. It is quite\
+ compatible to stock sysklogd and can be used as a drop-in replacement.\
+ Its advanced features make it suitable for enterprise-class,\
+ encryption protected syslog relay chains while at the same time being\
+ very easy to setup for the novice user."
+
+DEPENDS = "zlib libestr libfastjson bison-native flex-native liblogging"
+HOMEPAGE = "http://www.rsyslog.com/"
+LICENSE = "GPL-3.0-only & LGPL-3.0-only & Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=51d9635e646fb75e1b74c074f788e973 \
+                    file://COPYING.LESSER;md5=cb7903f1e5c39ae838209e130dca270a \
+                    file://COPYING.ASL20;md5=052f8a09206615ab07326ff8ce2d9d32\
+"
+
+SRC_URI = "https://www.rsyslog.com/files/download/rsyslog/${BPN}-${PV}.tar.gz \
+           file://initscript \
+           file://rsyslog.conf \
+           file://rsyslog.logrotate \
+           file://rsyslog.service \
+           file://use-pkgconfig-to-check-libgcrypt.patch \
+           file://run-ptest \
+           file://0001-tests-disable-the-check-for-inotify.patch \
+"
+
+SRC_URI:append:libc-musl = " \
+    file://0001-Include-sys-time-h.patch \
+    file://disable-omfile-outchannel.patch \
+"
+
+SRC_URI[sha256sum] = "acbdd8579489df36b4a383dc6909a61b7623807f0aff54c062115f2de7ea85ba"
+
+UPSTREAM_CHECK_URI = "https://github.com/rsyslog/rsyslog/releases"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
+
+inherit autotools pkgconfig systemd update-rc.d ptest
+
+EXTRA_OECONF += "--disable-generate-man-pages ap_cv_atomic_builtins=yes"
+EXTRA_OECONF += "--enable-imfile-tests"
+EXTRA_OECONF:remove:mipsarch = "ap_cv_atomic_builtins=yes"
+EXTRA_OECONF:remove:powerpc = "ap_cv_atomic_builtins=yes"
+EXTRA_OECONF:remove:riscv32 = "ap_cv_atomic_builtins=yes"
+
+# first line is default yes in configure
+PACKAGECONFIG ??= " \
+    rsyslogd rsyslogrt klog inet regexp uuid libcap-ng libgcrypt \
+    fmhttp imdiag openssl imfile \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'snmp systemd', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'ptest', 'testbench relp ${VALGRIND}', '', d)} \
+"
+
+# default yes in configure
+PACKAGECONFIG[relp] = "--enable-relp,--disable-relp,librelp,"
+PACKAGECONFIG[rsyslogd] = "--enable-rsyslogd,--disable-rsyslogd,,"
+PACKAGECONFIG[rsyslogrt] = "--enable-rsyslogrt,--disable-rsyslogrt,,"
+PACKAGECONFIG[fmhttp] = "--enable-fmhttp,--disable-fmhttp,curl,"
+PACKAGECONFIG[inet] = "--enable-inet,--disable-inet,,"
+PACKAGECONFIG[klog] = "--enable-klog,--disable-klog,,"
+PACKAGECONFIG[libcap-ng] = "--enable-libcap-ng,--disable-libcap-ng,libcap-ng,"
+PACKAGECONFIG[regexp] = "--enable-regexp,--disable-regexp,,"
+PACKAGECONFIG[uuid] = "--enable-uuid,--disable-uuid,util-linux,"
+PACKAGECONFIG[libgcrypt] = "--enable-libgcrypt,--disable-libgcrypt,libgcrypt,"
+PACKAGECONFIG[testbench] = "--enable-testbench --enable-omstdout,--disable-testbench --disable-omstdout,,"
+
+# default no in configure
+PACKAGECONFIG[debug] = "--enable-debug,--disable-debug,,"
+PACKAGECONFIG[imdiag] = "--enable-imdiag,--disable-imdiag,,"
+PACKAGECONFIG[imfile] = "--enable-imfile,--disable-imfile,,"
+PACKAGECONFIG[snmp] = "--enable-snmp,--disable-snmp,net-snmp,"
+PACKAGECONFIG[gnutls] = "--enable-gnutls,--disable-gnutls,gnutls,"
+PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl,"
+PACKAGECONFIG[systemd] = "--enable-libsystemd,--disable-libsystemd,systemd,"
+PACKAGECONFIG[imjournal] = "--enable-imjournal,--disable-imjournal,"
+PACKAGECONFIG[mmjsonparse] = "--enable-mmjsonparse,--disable-mmjsonparse,"
+PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5,"
+PACKAGECONFIG[postgresql] = "--enable-pgsql,--disable-pgsql,postgresql,"
+PACKAGECONFIG[libdbi] = "--enable-libdbi,--disable-libdbi,libdbi,"
+PACKAGECONFIG[mail] = "--enable-mail,--disable-mail,,"
+PACKAGECONFIG[valgrind] = ",--without-valgrind-testbench,valgrind,"
+PACKAGECONFIG[imhttp] = "--enable-imhttp,--disable-imhttp,civetweb,"
+
+
+TESTDIR = "tests"
+do_compile_ptest() {
+    echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${TESTDIR}/Makefile
+    oe_runmake -C ${TESTDIR} buildtest-TESTS
+}
+
+do_install_ptest() {
+    # install the tests
+    cp -rf ${S}/${TESTDIR} ${D}${PTEST_PATH}
+    cp -rf ${B}/${TESTDIR} ${D}${PTEST_PATH}
+
+    # give permissions to all users
+    # some tests need to write to this directory as user 'daemon'
+    chmod 777 -R ${D}${PTEST_PATH}/tests
+
+    # do NOT need to rebuild Makefile itself
+    sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    # do NOT need to rebuild $(check_PROGRAMS)
+    sed -i 's/^check-TESTS:.*$/check-TESTS:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+
+    # fix the srcdir, top_srcdir
+    sed -i 's,^\(srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    sed -i 's,^\(top_srcdir = \).*,\1${PTEST_PATH}/tests,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    # fix the abs_top_builddir
+    sed -i 's,^\(abs_top_builddir = \).*,\1${PTEST_PATH}/,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+
+    # install test-driver
+    install -m 644 ${S}/test-driver ${D}${PTEST_PATH}
+
+    # install necessary links
+    install -d ${D}${PTEST_PATH}/tools
+    ln -sf ${sbindir}/rsyslogd ${D}${PTEST_PATH}/tools/rsyslogd
+
+    install -d ${D}${PTEST_PATH}/runtime
+    install -d ${D}${PTEST_PATH}/runtime/.libs
+    (
+        cd ${D}/${libdir}/rsyslog
+        allso="*.so"
+        for i in $allso; do
+            ln -sf ${libdir}/rsyslog/$i ${D}${PTEST_PATH}/runtime/.libs/$i
+        done
+    )
+
+    # fix the module load path with runtime/.libs
+    find ${D}${PTEST_PATH}/${TESTDIR} -name "*.conf" -o -name "*.sh" -o -name "*.c" | xargs \
+        sed -i -e 's:../plugins/.*/.libs/:../runtime/.libs/:g'
+    # fix the python3 path for tests/set-envar
+    sed -i -e s:${HOSTTOOLS_DIR}:${bindir}:g ${D}${PTEST_PATH}/tests/set-envvars
+}
+
+do_install:append() {
+    install -d "${D}${sysconfdir}/init.d"
+    install -d "${D}${sysconfdir}/logrotate.d"
+    install -m 755 ${WORKDIR}/initscript ${D}${sysconfdir}/init.d/syslog
+    install -m 644 ${WORKDIR}/rsyslog.conf ${D}${sysconfdir}/rsyslog.conf
+    install -m 644 ${WORKDIR}/rsyslog.logrotate ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog
+    sed -i -e "s#@BINDIR@#${bindir}#g" ${D}${sysconfdir}/logrotate.d/logrotate.rsyslog
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'imjournal', 'true', 'false', d)}; then
+        install -d 0755 ${D}${sysconfdir}/rsyslog.d
+        echo '$ModLoad imjournal' >> ${D}${sysconfdir}/rsyslog.d/imjournal.conf
+    fi
+    if ${@bb.utils.contains('PACKAGECONFIG', 'mmjsonparse', 'true', 'false', d)}; then
+        install -d 0755 ${D}${sysconfdir}/rsyslog.d
+        echo '$ModLoad mmjsonparse' >> ${D}${sysconfdir}/rsyslog.d/mmjsonparse.conf
+    fi
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}${systemd_system_unitdir}
+        install -m 644 ${WORKDIR}/rsyslog.service ${D}${systemd_system_unitdir}
+        sed -i -e "s,@sbindir@,${sbindir},g" ${D}${systemd_system_unitdir}/rsyslog.service
+    fi
+}
+
+FILES:${PN} += "${bindir}"
+
+INITSCRIPT_NAME = "syslog"
+INITSCRIPT_PARAMS = "defaults"
+
+CONFFILES:${PN} = "${sysconfdir}/rsyslog.conf"
+
+RCONFLICTS:${PN} = "busybox-syslog sysklogd syslog-ng"
+
+RPROVIDES:${PN} += "${PN}-systemd"
+RREPLACES:${PN} += "${PN}-systemd"
+RCONFLICTS:${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE:${PN} = "${BPN}.service"
+
+RDEPENDS:${PN} += "logrotate"
+
+# for rsyslog-ptest
+VALGRIND = "valgrind"
+
+# valgrind supports armv7 and above
+VALGRIND:armv4 = ''
+VALGRIND:armv5 = ''
+VALGRIND:armv6 = ''
+
+# X32 isn't supported by valgrind at this time
+VALGRIND:linux-gnux32 = ''
+VALGRIND:linux-muslx32 = ''
+
+# Disable for some MIPS variants
+VALGRIND:mipsarchr6 = ''
+VALGRIND:linux-gnun32 = ''
+
+# Disable for powerpc64 with musl
+VALGRIND:libc-musl:powerpc64 = ''
+VALGRIND:libc-musl:powerpc64le = ''
+
+# RISC-V support for valgrind is not there yet
+VALGRIND:riscv64 = ""
+VALGRIND:riscv32 = ""
+
+# util-linux: logger needs the -d option
+RDEPENDS:${PN}-ptest += "\
+  make diffutils gzip bash gawk coreutils procps \
+  libgcc python3-core python3-io python3-json \
+  curl util-linux shadow \
+  "
+
+RRECOMMENDS:${PN}-ptest += "${TCLIBC}-dbg ${VALGRIND}"
diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..439ffc6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,32 @@
+From c955ac2a4d57f21351e53a5209346fdc2325a747 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 15:12:02 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ wdmd/main.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/wdmd/main.c b/wdmd/main.c
+index 38a99f3..7014462 100644
+--- a/wdmd/main.c
++++ b/wdmd/main.c
+@@ -15,6 +15,7 @@
+ #include <stddef.h>
+ #include <grp.h>
+ #include <fcntl.h>
++#include <libgen.h>
+ #include <string.h>
+ #include <errno.h>
+ #include <limits.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.9.1.bb b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.9.1.bb
index 91b1460..1d0f8b0 100644
--- a/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.9.1.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/sanlock/sanlock_3.9.1.bb
@@ -16,8 +16,9 @@
 SRC_URI = "git://pagure.io/sanlock.git;protocol=http;branch=master \
            file://0001-sanlock-Replace-cp-a-with-cp-R-no-dereference-preser.patch \
            file://0001-add-missing-system-header-string.h.patch \
+           file://0001-include-libgen.h-for-basename.patch \
           "
-SRCREV = "90156f382c2508cc7dc4dc32f8247d3e1291b318"
+SRCREV = "ecf30a1ccf756776dfea440e4cf9b0b54581075f"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb b/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
index 54bc1b2..6a99e8d 100644
--- a/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/uml-utilities/uml-utilities_20040406.bb
@@ -14,7 +14,6 @@
 SRC_URI[md5sum] = "2c1ccd9efacbfb39e42d482b89b2550a"
 SRC_URI[sha256sum] = "4f179b1db021ef15ac7e9b2eed57c525db127a754c574f591c367460cded9f41"
 
-PR = "r1"
 
 S = "${WORKDIR}/tools"
 
diff --git a/meta-openembedded/meta-oe/recipes-extended/wtmpdb/files/0001-remove-lto-to-fix-link-error-of-clang.patch b/meta-openembedded/meta-oe/recipes-extended/wtmpdb/files/0001-remove-lto-to-fix-link-error-of-clang.patch
deleted file mode 100644
index ef188e7..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/wtmpdb/files/0001-remove-lto-to-fix-link-error-of-clang.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9840939789dec9153150e8f9ae34de4171a5c15e Mon Sep 17 00:00:00 2001
-From: Wang Mingyu <wangmy@fujitsu.com>
-Date: Wed, 19 Jul 2023 07:31:32 +0000
-Subject: [PATCH] remove lto to fix link error of clang
-
-error message:
-| tests/tst-dlopen.p/tst-dlopen.c.o: file not recognized: file format not recognized
-| clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
-
-Upstream-Status: Pending
-
-Signed-off-by: Wang Mingyu <wangmy@fujitsu.com>
----
- meson.build | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/meson.build b/meson.build
-index 6fe8045..166a15b 100644
---- a/meson.build
-+++ b/meson.build
-@@ -28,7 +28,6 @@ add_project_arguments(['-D_GNU_SOURCE=1',
-                        '-D_TIME_BITS=64'], language : 'c')
- 
- possible_cc_flags = [
--                  '-flto=auto',
-                   '-ffat-lto-objects',
- 		  '-fstack-protector-strong',
- 		  '-funwind-tables',
--- 
-2.34.1
-
diff --git a/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..766865e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,32 @@
+From 32f99ce7e890a457af50606ea7b577659a2a790a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 17:35:07 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [https://github.com/thkukuk/wtmpdb/pull/11]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/wtmpdb.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/wtmpdb.c b/src/wtmpdb.c
+index aac7b5b..eaffae6 100644
+--- a/src/wtmpdb.c
++++ b/src/wtmpdb.c
+@@ -30,6 +30,7 @@
+ #include <time.h>
+ #include <ctype.h>
+ #include <errno.h>
++#include <libgen.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb_0.11.0.bb b/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb_0.11.0.bb
new file mode 100644
index 0000000..785ae50
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb_0.11.0.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Y2038 safe version of wtmp"
+HOMEPAGE = "https://github.com/thkukuk/wtmpdb"
+DESCRIPTION = "last reports the login and logout times of users and when the machine got rebooted."
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=020090a00b69dd2af9ab82eb0003ea2c"
+SECTION = "libs"
+
+SRCREV = "493e9704dbc50f141d5fbd41c823311e79d7e8d3"
+
+SRC_URI = "git://github.com/thkukuk/wtmpdb.git;branch=main;protocol=https \
+           file://0001-include-libgen.h-for-basename.patch"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd features_check
+
+DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} sqlite3 "
+REQUIRED_DISTRO_FEATURES = "pam"
+
+SYSTEMD_SERVICE:${PN} = "wtmpdb-update-boot.service wtmpdb-rotate.service"
+
+EXTRA_OEMESON = " -Dpamlibdir=${libdir}"
+
+do_install:append () {
+      if [ -d ${D}${prefix}/lib/systemd -a ${D}${prefix}/lib != `dirname ${D}${systemd_unitdir}` ]; then
+          # Fix makefile hardcoded path assumptions for systemd (assumes $prefix)
+          # without usrmerge distro feature enabled
+          install -d `dirname ${D}${systemd_unitdir}`
+          mv ${D}${prefix}/lib/systemd `dirname ${D}${systemd_unitdir}`
+      fi
+}
+
+FILES:${PN} += " ${systemd_system_unitdir} "
+FILES:${PN} += " ${libdir} "
+FILES:${PN} += " ${nonarch_libdir}/tmpfiles.d/* "
diff --git a/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb_0.9.3.bb b/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb_0.9.3.bb
deleted file mode 100644
index 6d23c00..0000000
--- a/meta-openembedded/meta-oe/recipes-extended/wtmpdb/wtmpdb_0.9.3.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Y2038 safe version of wtmp"
-HOMEPAGE = "https://github.com/thkukuk/wtmpdb"
-DESCRIPTION = "last reports the login and logout times of users and when the machine got rebooted."
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=020090a00b69dd2af9ab82eb0003ea2c"
-SECTION = "libs"
-
-SRCREV = "8ef2677a13d19aee3a834500f9c8a4dac9d68ef7"
-
-SRC_URI = "git://github.com/thkukuk/wtmpdb.git;branch=main;protocol=https \
-           file://0001-remove-lto-to-fix-link-error-of-clang.patch \
-"
-
-S = "${WORKDIR}/git"
-
-inherit meson pkgconfig systemd features_check
-
-DEPENDS += " ${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'libpam', '', d)} sqlite3 "
-REQUIRED_DISTRO_FEATURES = "pam"
-
-SYSTEMD_SERVICE:${PN} = "wtmpdb-update-boot.service wtmpdb-rotate.service"
-
-EXTRA_OEMESON = " -Dpamlibdir=${libdir}"
-
-do_install:append () {
-      if [ -d ${D}${prefix}/lib/systemd -a ${D}${prefix}/lib != `dirname ${D}${systemd_unitdir}` ]; then
-          # Fix makefile hardcoded path assumptions for systemd (assumes $prefix)
-          # without usrmerge distro feature enabled
-          install -d `dirname ${D}${systemd_unitdir}`
-          mv ${D}${prefix}/lib/systemd `dirname ${D}${systemd_unitdir}`
-      fi
-}
-
-FILES:${PN} += " ${systemd_system_unitdir} "
-FILES:${PN} += " ${libdir} "
-FILES:${PN} += " ${nonarch_libdir}/tmpfiles.d/* "
diff --git a/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb b/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb
index 97db341..b4b3a27 100644
--- a/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-extended/zram/zram_0.2.bb
@@ -8,7 +8,6 @@
     ${@bb.utils.contains('DISTRO_FEATURES','systemd','util-linux','util-linux-swaponoff',d)}"
 RRECOMMENDS:${PN} = "kernel-module-zram"
 
-PR = "r3"
 
 SRC_URI = " \
            file://init \
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb b/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb
index c853668..3456383 100644
--- a/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb
+++ b/meta-openembedded/meta-oe/recipes-gnome/gnome-themes/gnome-themes-extra_3.28.bb
@@ -7,18 +7,19 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1"
 
 GNOMEBASEBUILDCLASS = "autotools"
+GTKIC_VERSION = '3'
 inherit gnomebase gettext gtk-icon-cache upstream-version-is-even features_check
 
-ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}"
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
-DEPENDS += "intltool-native gtk+"
+DEPENDS += "intltool-native gtk+3 librsvg"
 
 # PV is 3.28 not 3.28.0, so the gnomebase SRC_URI isn't right.
 SRC_URI = "${GNOME_MIRROR}/${BPN}/${PV}/${BPN}-${PV}.tar.xz;name=archive"
 SRC_URI[archive.md5sum] = "f9f2c6c521948da427f702372e16f826"
 SRC_URI[archive.sha256sum] = "7c4ba0bff001f06d8983cfc105adaac42df1d1267a2591798a780bac557a5819"
 
-EXTRA_OECONF = "--disable-gtk3-engine"
+EXTRA_OECONF = "--disable-gtk2-engine"
 
 do_install:append() {
         # Only building Adwaita, remove highcontrast files
diff --git a/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm4_4.14.0.bb b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm4_4.14.0.bb
new file mode 100644
index 0000000..d3a01e4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-gnome/gtk+/gtkmm4_4.14.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "C++ bindings for the GTK+ toolkit V4"
+HOMEPAGE = "http://www.gtkmm.org/"
+SECTION = "libs"
+
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://COPYING.tools;md5=751419260aa954499f7abaabaa882bbe"
+
+DEPENDS = "glib-2.0-native atkmm pangomm-2.48 glibmm gtk4 cairomm-1.16 gdk-pixbuf-native"
+
+BPN = "gtkmm"
+
+inherit gnomebase features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl x11"
+
+SRC_URI[archive.sha256sum] = "9350a0444b744ca3dc69586ebd1b6707520922b6d9f4f232103ce603a271ecda"
+
+EXTRA_OEMESON = "-Dbuild-demos=false"
+
+FILES:${PN}-dev += "${libdir}/*/include ${libdir}/*/proc/m4"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash/0001-Mimic-GNU-basename-API-for-non-glibc-library-e.g.-mu.patch b/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash/0001-Mimic-GNU-basename-API-for-non-glibc-library-e.g.-mu.patch
new file mode 100644
index 0000000..aa8406e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash/0001-Mimic-GNU-basename-API-for-non-glibc-library-e.g.-mu.patch
@@ -0,0 +1,28 @@
+From 272491297564513c4ce49a11bc1ecc523a3afd63 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 15 Mar 2024 11:05:54 -0700
+Subject: [PATCH] Mimic GNU basename() API for non-glibc library e.g. musl
+
+Upstream-Status: Submitted [https://github.com/lucasdemarchi/dietsplash/pull/7]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/util.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/util.h b/src/util.h
+index 1f4c3ef..a3ab54a 100644
+--- a/src/util.h
++++ b/src/util.h
+@@ -60,6 +60,9 @@
+  */
+ #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + _array_size_chk(arr))
+ 
++#if !defined(__GLIBC__)
++#define basename(src) (strrchr(src,'/') ? strrchr(src,'/')+1 : src)
++#endif
+ 
+ #define DIE_PREFIX "[" PACKAGE_NAME "] ERR: "
+ #define LOG_SUFFIX "\n"
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb b/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
index 2c28fde..1ee2657 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/dietsplash/dietsplash_git.bb
@@ -4,13 +4,13 @@
 
 # Really, no depends besides a C library
 
-PV = "0.3"
-PR = "r1"
+PV = "0.3+git"
 
-SRCREV = "ef2e1a390e768e21e6a6268977580ee129a96633"
+SRCREV = "8bed71d860bbb0c8792fa2a1179c9beeae84d577"
 SRC_URI = "git://github.com/lucasdemarchi/dietsplash.git;branch=master;protocol=https \
            file://0001-configure.ac-Do-not-demand-linker-hash-style.patch \
-           "
+           file://0001-Mimic-GNU-basename-API-for-non-glibc-library-e.g.-mu.patch \
+"
 
 inherit autotools
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
index 07b9864..4d38632 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
+++ b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb.inc
@@ -23,6 +23,7 @@
            file://fix-tslib-version-check.patch \
            file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch \
            file://0001-os-linux-Fix-build-when-__NR_futex-is-not-available.patch \
+           file://0001-include-libgen.h-for-basename.patch \
            "
 
 S = "${WORKDIR}/DirectFB-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..abdba18
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/directfb/directfb/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,32 @@
+From c8cf3ffd4fa14cdc6d607a09d51e898dec922348 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 18:17:44 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Inappropriate [Upstream is dead]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ systems/fbdev/fbdev.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/systems/fbdev/fbdev.c b/systems/fbdev/fbdev.c
+index 5297358..4e6f178 100644
+--- a/systems/fbdev/fbdev.c
++++ b/systems/fbdev/fbdev.c
+@@ -42,6 +42,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <strings.h>
++#include <libgen.h>
+ #if defined(HAVE_SYSIO)
+ # include <sys/io.h>
+ #endif
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
index a817d38..4fc4679 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libsdl/libsdl_1.2.15.bb
@@ -10,7 +10,6 @@
 LICENSE = "LGPL-2.1-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=27818cd7fd83877a8e3ef82b82798ef4"
 
-PR = "r3"
 
 SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
            file://libsdl-1.2.15-xdata32.patch \
diff --git a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.14.bb b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.14.bb
index 50bdad5..ce01593 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.14.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/libvncserver/libvncserver_0.9.14.bb
@@ -50,3 +50,7 @@
 S = "${WORKDIR}/git"
 
 EXTRA_OECMAKE = "-DMAKE_INSTALL_LIBDIR=${libdir}"
+
+do_install:append() {
+    sed -i -e 's|${STAGING_DIR_HOST}||g' ${D}${libdir}/cmake/LibVNCServer/LibVNCServerTargets.cmake
+}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch
deleted file mode 100644
index 5149002..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0001-wayland-Switch-to-custom-timer-tick.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 1d92e1854c19c06c553243d29170bb4d1a9e3863 Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Tue, 9 May 2023 02:57:30 +0200
-Subject: [PATCH 1/2] wayland: Switch to custom timer tick
-
-The OE LVGL is configured to obtain timer tick from system timer
-instead of using ad-hoc mechanisms to emulate timer tick using
-threads or such. Use system timer to provide the tick.
-
-The tick handling implementation comes from:
-https://github.com/lvgl/lv_port_linux_frame_buffer.git
-as of commit adf2c4490e17a1b9ec1902cc412a24b3b8235c8e
-
-Upstream-Status: Inappropriate [Upstream repo is archived]
-Signed-off-by: Marek Vasut <marex@denx.de>
----
- src/drivers/wayland.c | 24 ++++++++++++++++--------
- 1 file changed, 16 insertions(+), 8 deletions(-)
-
-diff --git a/src/drivers/wayland.c b/src/drivers/wayland.c
-index 633dc18..bcebf4d 100644
---- a/src/drivers/wayland.c
-+++ b/src/drivers/wayland.c
-@@ -6,6 +6,7 @@
- #if defined(USE_WAYLAND) && USE_WAYLAND
- 
- #include <pthread.h>
-+#include <sys/time.h>
- #include <unistd.h>
- 
- #include <lv_drivers/wayland/wayland.h>
-@@ -18,13 +19,22 @@
- #define WAYLAND_VER_RES      320
- #endif
- 
--static void * tick_thread(void * data)
-+uint32_t custom_tick_get(void)
- {
--    (void) data;
--    while(true) {
--        usleep(5 * 1000);
--        lv_tick_inc(5);
--    }
-+	static uint64_t start_ms = 0;
-+	if(start_ms == 0) {
-+		struct timeval tv_start;
-+		gettimeofday(&tv_start, NULL);
-+		start_ms = (tv_start.tv_sec * 1000000 + tv_start.tv_usec) / 1000;
-+	}
-+
-+	struct timeval tv_now;
-+	gettimeofday(&tv_now, NULL);
-+	uint64_t now_ms;
-+	now_ms = (tv_now.tv_sec * 1000000 + tv_now.tv_usec) / 1000;
-+
-+	uint32_t time_ms = now_ms - start_ms;
-+	return time_ms;
- }
- 
- 
-@@ -47,8 +57,6 @@ void hal_init(void)
- 
-     lv_group_t * g = lv_group_create();
-     lv_group_set_default(g);
--    static pthread_t hal_thread;
--    pthread_create(&hal_thread, NULL, tick_thread, NULL);
- }
- 
- #endif
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch
deleted file mode 100644
index 8919a1a..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl/0002-wayland-Fix-callback-data-type.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b7af695d79820adf53e7d612120bda12ed2886e2 Mon Sep 17 00:00:00 2001
-From: Marek Vasut <marex@denx.de>
-Date: Tue, 9 May 2023 02:57:38 +0200
-Subject: [PATCH 2/2] wayland: Fix callback data type
-
-The LVGL 8.3.y changed the callback data type, update it accordingly.
-
-Upstream-Status: Inappropriate [Upstream repo is archived]
-Signed-off-by: Marek Vasut <marex@denx.de>
----
- src/drivers/wayland.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/drivers/wayland.c b/src/drivers/wayland.c
-index bcebf4d..cfefa88 100644
---- a/src/drivers/wayland.c
-+++ b/src/drivers/wayland.c
-@@ -37,8 +37,7 @@ uint32_t custom_tick_get(void)
- 	return time_ms;
- }
- 
--
--static lv_wayland_display_close_f_t close_cb()
-+static bool close_cb(lv_disp_t * disp)
- {
- }
- 
--- 
-2.39.2
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb
deleted file mode 100644
index 139aa47..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/dialog-lvgl_git.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-# SPDX-FileCopyrightText: Huawei Inc.
-# SPDX-License-Identifier: MIT
-
-SRC_URI = "git://git.ostc-eu.org/rzr/dialog-lvgl;destsuffix=${S};protocol=https;nobranch=1 \
-           file://0001-wayland-Switch-to-custom-timer-tick.patch \
-           file://0002-wayland-Fix-callback-data-type.patch \
-           "
-SRCREV = "cdf8d38acca87e871c3a488fd07f1e4779590f8e"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8ce0a84e5276f01364119c873b712c4f"
-
-DEPENDS += "lvgl"
-DEPENDS += "lv-drivers"
-
-SUMMARY = "Basic UI utility to be used in scripts"
-DESCRIPTION = "Inspired by ncurses' dialog, implemented using LVGL"
-HOMEPAGE = "https://git.ostc-eu.org/rzr/dialog-lvgl/-/wikis/"
-
-REQUIRED_DISTRO_FEATURES = "wayland"
-
-inherit pkgconfig
-inherit features_check
-
-EXTRA_OEMAKE += "sysroot=${RECIPE_SYSROOT}"
-EXTRA_OEMAKE += "DESTDIR=${D}"
-EXTRA_OEMAKE += "lvgl_driver=wayland"
-
-do_install() {
-    oe_runmake install
-}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch
new file mode 100644
index 0000000..bd619b1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch
@@ -0,0 +1,63 @@
+From 5b7f657e8ad656e0854f2252b3bd482b966d650c Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marex@denx.de>
+Date: Wed, 13 Mar 2024 02:12:30 +0100
+Subject: [PATCH 2/2] fix(sdl): handle both LV_IMAGE_SRC_FILE and
+ LV_IMAGE_SRC_VARIABLE
+
+The SDL image draw code currently assumes that the image source is a
+filename and attempts to open that filename. This is not necessarily
+the case, e.g. the lv_demo_fb uses encoded images which are of type
+LV_IMAGE_SRC_VARIABLE and instead of filename, come with a buffer of
+pixels. Handle the later using SDL_CreateRGBSurfaceFrom().
+
+Upstream-Status: Submitted [https://github.com/lvgl/lvgl/pull/5852]
+Signed-off-by: Marek Vasut <marex@denx.de>
+---
+ src/draw/sdl/lv_draw_sdl.c | 30 +++++++++++++++++++++++++++---
+ 1 file changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/src/draw/sdl/lv_draw_sdl.c b/src/draw/sdl/lv_draw_sdl.c
+index cbb555d94..5eee5b725 100644
+--- a/src/draw/sdl/lv_draw_sdl.c
++++ b/src/draw/sdl/lv_draw_sdl.c
+@@ -224,10 +224,34 @@ static bool draw_to_texture(lv_draw_sdl_unit_t * u, cache_data_t * data)
+             break;
+         case LV_DRAW_TASK_TYPE_IMAGE: {
+                 lv_draw_image_dsc_t * image_dsc = task->draw_dsc;
+-                const char * path = image_dsc->src;
+-                SDL_Surface * surface = IMG_Load(&path[2]);
++                lv_image_src_t type = lv_image_src_get_type(image_dsc->src);
++                SDL_Surface * surface = NULL;
++                if(type == LV_IMAGE_SRC_FILE) {
++                    const char * path = image_dsc->src;
++                    surface = IMG_Load(&path[2]);
++                }
++                else if(type == LV_IMAGE_SRC_VARIABLE) {
++                    lv_image_dsc_t * lvd = image_dsc->src;
++                    surface = SDL_CreateRGBSurfaceFrom(lvd->data,
++                                                       lvd->header.w, lvd->header.h,
++                                                       LV_COLOR_FORMAT_GET_BPP(lvd->header.cf),
++                                                       lvd->header.stride,
++#if SDL_BYTEORDER == SDL_LIL_ENDIAN
++                                                       0x00FF0000,
++                                                       0x0000FF00,
++                                                       0x000000FF,
++                                                       0xFF000000
++#else
++                                                       0x0000FF00,
++                                                       0x00FF0000,
++                                                       0xFF000000,
++                                                       0x000000FF
++#endif
++                                                      );
++                }
++
+                 if(surface == NULL) {
+-                    fprintf(stderr, "could not load image: %s\n", IMG_GetError());
++                    fprintf(stderr, "could not load image\n");
+                     return false;
+                 }
+ 
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch
new file mode 100644
index 0000000..73c01cb
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch
@@ -0,0 +1,45 @@
+From 85d90749a10b5f91741d37b75825935bf7cc4fb3 Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marex@denx.de>
+Date: Tue, 12 Mar 2024 03:00:37 +0100
+Subject: [PATCH 3/6] Make fbdev device node runtime configurable via
+ environment variable
+
+Test whether $LV_VIDEO_CARD environment variable is non-NULL and in
+case it is, use it as the video card file in lv_linux_fbdev_set_file().
+Otherwise fall back to /dev/fb0, i.e. the current behavior. This way,
+it is possible to test LVGL on systems with multiple fbdev devices.
+
+Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47]
+Signed-off-by: Marek Vasut <marex@denx.de>
+---
+ main.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/main.c b/main.c
+index 9775b9c..b64a098 100644
+--- a/main.c
++++ b/main.c
+@@ -4,13 +4,19 @@
+ #include <pthread.h>
+ #include <time.h>
+ 
++static const char *lv_linux_get_video_card_node(const char *videocard_default)
++{
++    return getenv("LV_VIDEO_CARD") ? : videocard_default;
++}
++
+ int main(void)
+ {
++    const char *videocard = lv_linux_get_video_card_node("/dev/fb0");
+     lv_init();
+ 
+     /*Linux frame buffer device init*/
+     lv_display_t * disp = lv_linux_fbdev_create();
+-    lv_linux_fbdev_set_file(disp, "/dev/fb0");
++    lv_linux_fbdev_set_file(disp, videocard);
+ 
+     /*Create a Demo*/
+     lv_demo_widgets();
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0004-Factor-out-fbdev-initialization-code.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0004-Factor-out-fbdev-initialization-code.patch
new file mode 100644
index 0000000..d24d150
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0004-Factor-out-fbdev-initialization-code.patch
@@ -0,0 +1,52 @@
+From 593da8e11cc5029773ad330b5d7633ee9f2fba95 Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marex@denx.de>
+Date: Tue, 12 Mar 2024 18:09:42 +0100
+Subject: [PATCH 4/6] Factor out fbdev initialization code
+
+Pull fbdev initialization code into separate function and add ifdef
+around it, so it can be conditionally compiled in. This is done in
+preparation for addition of other backend initialization example
+code.
+
+Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47]
+Signed-off-by: Marek Vasut <marex@denx.de>
+---
+ main.c | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/main.c b/main.c
+index b64a098..288519c 100644
+--- a/main.c
++++ b/main.c
+@@ -9,14 +9,24 @@ static const char *lv_linux_get_video_card_node(const char *videocard_default)
+     return getenv("LV_VIDEO_CARD") ? : videocard_default;
+ }
+ 
+-int main(void)
++#if LV_USE_LINUX_FBDEV
++static void lv_linux_disp_init(void)
+ {
+     const char *videocard = lv_linux_get_video_card_node("/dev/fb0");
+-    lv_init();
+-
+-    /*Linux frame buffer device init*/
+     lv_display_t * disp = lv_linux_fbdev_create();
++
+     lv_linux_fbdev_set_file(disp, videocard);
++}
++#else
++#error Unsupported configuration
++#endif
++
++int main(void)
++{
++    lv_init();
++
++    /*Linux display device init*/
++    lv_linux_disp_init();
+ 
+     /*Create a Demo*/
+     lv_demo_widgets();
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0005-Add-DRM-KMS-example-support.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0005-Add-DRM-KMS-example-support.patch
new file mode 100644
index 0000000..9ee7a7f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0005-Add-DRM-KMS-example-support.patch
@@ -0,0 +1,59 @@
+From dabf40559428733413432afa29598bc145aa6636 Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marex@denx.de>
+Date: Tue, 12 Mar 2024 03:08:13 +0100
+Subject: [PATCH 5/6] Add DRM/KMS example support
+
+Extend the main.c to support both legacy fbdev and DRM/KMS initialization.
+
+To use legacy fbdev support, adjust lv_conf.h as follows:
+LV_USE_LINUX_FBDEV=1
+LV_USE_LINUX_DRM=0
+
+To use DRM/KMS support, adjust lv_conf.h as follows:
+LV_USE_LINUX_FBDEV=0
+LV_USE_LINUX_DRM=1
+
+Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47]
+Signed-off-by: Marek Vasut <marex@denx.de>
+---
+ CMakeLists.txt | 5 ++++-
+ main.c         | 8 ++++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d91b196..c1cfb7f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -12,6 +12,9 @@ target_include_directories(lvgl PUBLIC ${PROJECT_SOURCE_DIR})
+ 
+ add_executable(main main.c mouse_cursor_icon.c)
+ 
+-target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} m pthread)
++include(${CMAKE_CURRENT_LIST_DIR}/lvgl/tests/FindLibDRM.cmake)
++include_directories(${Libdrm_INCLUDE_DIRS})
++
++target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} ${Libdrm_LIBRARIES} m pthread)
+ add_custom_target (run COMMAND ${EXECUTABLE_OUTPUT_PATH}/main DEPENDS main)
+ 
+diff --git a/main.c b/main.c
+index 288519c..ab4e936 100644
+--- a/main.c
++++ b/main.c
+@@ -17,6 +17,14 @@ static void lv_linux_disp_init(void)
+ 
+     lv_linux_fbdev_set_file(disp, videocard);
+ }
++#elif LV_USE_LINUX_DRM
++static void lv_linux_disp_init(void)
++{
++    const char *videocard = lv_linux_get_video_card_node("/dev/dri/card0");
++    lv_display_t * disp = lv_linux_drm_create();
++
++    lv_linux_drm_set_file(disp, videocard, -1);
++}
+ #else
+ #error Unsupported configuration
+ #endif
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0006-Add-SDL2-example-support.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0006-Add-SDL2-example-support.patch
new file mode 100644
index 0000000..691ee80
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0006-Add-SDL2-example-support.patch
@@ -0,0 +1,69 @@
+From b202ce51f7b68c460fcd1b6d9c3ffa8aaf2baaf6 Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marex@denx.de>
+Date: Tue, 12 Mar 2024 19:05:38 +0100
+Subject: [PATCH 6/6] Add SDL2 example support
+
+Extend the main.c to support both legacy fbdev, DRM/KMS, SDL2 initialization.
+The SDL2 window resolution can be configured using environment variables
+LV_VIDEO_WIDTH and LV_VIDEO_HEIGHT and defaults to 800 x 480 .
+
+To use legacy fbdev support, adjust lv_conf.h as follows:
+LV_USE_LINUX_FBDEV=1
+LV_USE_LINUX_DRM=0
+LV_USE_SDL=0
+
+To use DRM/KMS support, adjust lv_conf.h as follows:
+LV_USE_LINUX_FBDEV=0
+LV_USE_LINUX_DRM=1
+LV_USE_SDL=0
+
+To use SDL2 support, adjust lv_conf.h as follows:
+LV_USE_LINUX_FBDEV=0
+LV_USE_LINUX_DRM=0
+LV_USE_SDL=1
+
+Upstream-Status: Submitted [https://github.com/lvgl/lv_port_linux_frame_buffer/pull/47]
+Signed-off-by: Marek Vasut <marex@denx.de>
+---
+ CMakeLists.txt | 6 +++++-
+ main.c         | 8 ++++++++
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c1cfb7f..658193f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -15,6 +15,10 @@ add_executable(main main.c mouse_cursor_icon.c)
+ include(${CMAKE_CURRENT_LIST_DIR}/lvgl/tests/FindLibDRM.cmake)
+ include_directories(${Libdrm_INCLUDE_DIRS})
+ 
+-target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} ${Libdrm_LIBRARIES} m pthread)
++find_package(SDL2)
++find_package(SDL2_image)
++include_directories(${SDL2_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIRS})
++
++target_link_libraries(main lvgl lvgl::examples lvgl::demos lvgl::thorvg ${SDL2_LIBRARIES} ${SDL2_IMAGE_LIBRARIES} ${Libdrm_LIBRARIES} m pthread)
+ add_custom_target (run COMMAND ${EXECUTABLE_OUTPUT_PATH}/main DEPENDS main)
+ 
+diff --git a/main.c b/main.c
+index ab4e936..4b66ebc 100644
+--- a/main.c
++++ b/main.c
+@@ -25,6 +25,14 @@ static void lv_linux_disp_init(void)
+ 
+     lv_linux_drm_set_file(disp, videocard, -1);
+ }
++#elif LV_USE_SDL
++static void lv_linux_disp_init(void)
++{
++    const int width = atoi(getenv("LV_VIDEO_WIDTH") ? : "800");
++    const int height = atoi(getenv("LV_VIDEO_HEIGHT") ? : "480");
++
++    lv_sdl_window_create(width, height);
++}
+ #else
+ #error Unsupported configuration
+ #endif
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0007-fix-cmake-generate-versioned-shared-libraries.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0007-fix-cmake-generate-versioned-shared-libraries.patch
new file mode 100644
index 0000000..6997d84
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0007-fix-cmake-generate-versioned-shared-libraries.patch
@@ -0,0 +1,68 @@
+From 40657a770baadfff30abfecf7638e7b1c340db4d Mon Sep 17 00:00:00 2001
+From: Marek Vasut <marex@denx.de>
+Date: Thu, 14 Mar 2024 03:23:10 +0100
+Subject: [PATCH] fix(cmake): generate versioned shared libraries
+
+Add missing version suffix to shared libraries. Currently the filename of
+generated shared libraries is only liblvgl.so, which prevents coexistence
+of different versions of LVGL on the same system. Set VERSION and SOVERSION
+to make cmake add the version suffix to generated shared libraries. That
+changes the filename to liblvgl.so.9.0.0 and includes symlink with major
+ABI version, i.e. liblvgl.so.9 .
+
+Upstream-Status: Submitted [https://github.com/lvgl/lvgl/pull/5865]
+Signed-off-by: Marek Vasut <marex@denx.de>
+---
+ env_support/cmake/custom.cmake | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/env_support/cmake/custom.cmake b/env_support/cmake/custom.cmake
+index 9800468eb..6f33f1cc8 100644
+--- a/env_support/cmake/custom.cmake
++++ b/env_support/cmake/custom.cmake
+@@ -1,3 +1,6 @@
++set(LVGL_VERSION "9.0.0")
++set(LVGL_SOVERSION "9")
++
+ # Option to define LV_LVGL_H_INCLUDE_SIMPLE, default: ON
+ option(LV_LVGL_H_INCLUDE_SIMPLE
+        "Use #include \"lvgl.h\" instead of #include \"../../lvgl.h\"" ON)
+@@ -119,6 +122,8 @@ install(
+ set_target_properties(
+   lvgl
+   PROPERTIES OUTPUT_NAME lvgl
++             VERSION ${LVGL_VERSION}
++             SOVERSION ${LVGL_SOVERSION}
+              ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+              LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+              RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+@@ -137,6 +142,8 @@ if(NOT LV_CONF_BUILD_DISABLE_THORVG_INTERNAL)
+   set_target_properties(
+     lvgl_thorvg
+     PROPERTIES OUTPUT_NAME lvgl_thorvg
++               VERSION ${LVGL_VERSION}
++               SOVERSION ${LVGL_SOVERSION}
+                ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+                LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+                RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+@@ -155,6 +162,8 @@ if(NOT LV_CONF_BUILD_DISABLE_DEMOS)
+   set_target_properties(
+     lvgl_demos
+     PROPERTIES OUTPUT_NAME lvgl_demos
++               VERSION ${LVGL_VERSION}
++               SOVERSION ${LVGL_SOVERSION}
+                ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+                LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+                RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+@@ -173,6 +182,8 @@ if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
+   set_target_properties(
+     lvgl_examples
+     PROPERTIES OUTPUT_NAME lvgl_examples
++               VERSION ${LVGL_VERSION}
++               SOVERSION ${LVGL_SOVERSION}
+                ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+                LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+                RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+-- 
+2.43.0
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0008-fix-fbdev-set-resolution-prior-to-buffer.patch b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0008-fix-fbdev-set-resolution-prior-to-buffer.patch
new file mode 100644
index 0000000..449db53
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/files/0008-fix-fbdev-set-resolution-prior-to-buffer.patch
@@ -0,0 +1,29 @@
+From a6f822f75b3ba01b00c028608c93160d09a6ffd1 Mon Sep 17 00:00:00 2001
+From: Jaeyoon Jung <jaeyoon.jung@lge.com>
+Date: Mon, 1 Apr 2024 18:00:39 +0900
+Subject: [PATCH] fix(fbdev): set resolution prior to buffer
+
+Otherwise it ends up with using the default value 800x480 and may fail
+at lv_display_set_buffers due to incorrect resolution.
+
+Upstream-Status: Submitted [https://github.com/lvgl/lvgl/pull/6004]
+Signed-off-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
+---
+
+ src/drivers/display/fb/lv_linux_fbdev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/drivers/display/fb/lv_linux_fbdev.c b/src/drivers/display/fb/lv_linux_fbdev.c
+index b3cc89199..5fb4c5c9f 100644
+--- a/src/drivers/display/fb/lv_linux_fbdev.c
++++ b/src/drivers/display/fb/lv_linux_fbdev.c
+@@ -233,8 +233,8 @@ void lv_linux_fbdev_set_file(lv_display_t * disp, const char * file)
+         draw_buf_2 = malloc(draw_buf_size);
+     }
+ 
+-    lv_display_set_buffers(disp, draw_buf, draw_buf_2, draw_buf_size, LV_LINUX_FBDEV_RENDER_MODE);
+     lv_display_set_resolution(disp, hor_res, ver_res);
++    lv_display_set_buffers(disp, draw_buf, draw_buf_2, draw_buf_size, LV_LINUX_FBDEV_RENDER_MODE);
+ 
+     if(width > 0) {
+         lv_display_set_dpi(disp, DIV_ROUND_UP(hor_res * 254, width * 10));
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-conf.inc b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-conf.inc
new file mode 100644
index 0000000..8fd3412
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-conf.inc
@@ -0,0 +1,76 @@
+PACKAGECONFIG ??= "drm"
+
+PACKAGECONFIG[drm] = ",,libdrm"
+PACKAGECONFIG[fbdev] = ",,"
+PACKAGECONFIG[sdl] = ",,virtual/libsdl2 libsdl2-image"
+
+# Add libdrm include if drm is selected in PACKAGECONFIG
+TARGET_CFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'drm', '-I${STAGING_INCDIR}/libdrm', '', d)}"
+
+LVGL_CONFIG_USE_DRM = "${@bb.utils.contains('PACKAGECONFIG', 'drm', '1', '0', d)}"
+
+LVGL_CONFIG_USE_EVDEV = "${@bb.utils.contains_any('PACKAGECONFIG', 'drm fbdev', '1', '0', d)}"
+
+LVGL_CONFIG_USE_FBDEV = "${@bb.utils.contains('PACKAGECONFIG', 'fbdev', '1', '0', d)}"
+
+LVGL_CONFIG_USE_SDL = "${@bb.utils.contains('PACKAGECONFIG', 'sdl', '1', '0', d)}"
+LVGL_CONFIG_SDL_FULLSCREEN ?= "0"
+
+LVGL_CONFIG_LV_MEM_CUSTOM ?= "0"
+LVGL_CONFIG_LV_MEM_SIZE ?= "(64 * 1024U)"
+LVGL_CONFIG_LV_COLOR_DEPTH ?= "32"
+
+LVGL_CONFIG_LV_USE_LOG    ?= "0"
+LVGL_CONFIG_LV_LOG_LEVEL  ?= "LV_LOG_LEVEL_WARN"
+LVGL_CONFIG_LV_LOG_PRINTF ?= "0"
+
+LVGL_CONFIG_LV_USE_FONT_COMPRESSED ?= "0"
+
+LVGL_CONFIG_LV_THEME_DEFAULT_DARK ?= "0"
+
+DEBUG_BUILD ??= "0"
+
+ALLOW_EMPTY:${PN} = "1"
+
+EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${baselib}"
+
+do_configure:append() {
+    # If there is a configuration template, start from that
+    [ -r "${S}/lv_conf_template.h" ] && cp -Lv "${S}/lv_conf_template.h" "${S}/lv_conf.h"
+
+    sed -r -e "s|#if 0 .*Set it to \"1\" to enable content.*|#if 1 // Enabled by ${PN}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_USE_LINUX_DRM[[:space:]]).*|\1${LVGL_CONFIG_USE_DRM}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_USE_LINUX_FBDEV[[:space:]]).*|\1${LVGL_CONFIG_USE_FBDEV}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_USE_SDL[[:space:]]).*|\1${LVGL_CONFIG_USE_SDL}|" \
+        -e "s|^([[:space:]]*#define LV_USE_DRAW_SDL[[:space:]]).*|\1${LVGL_CONFIG_USE_SDL}|" \
+        -e "s|^([[:space:]]*#define LV_SDL_BUF_COUNT[[:space:]]).*|\1 2|" \
+        -e "s|^([[:space:]]*#define LV_SDL_FULLSCREEN[[:space:]]).*|\1${LVGL_CONFIG_SDL_FULLSCREEN}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_COLOR_DEPTH[[:space:]]).*|\1${LVGL_CONFIG_LV_COLOR_DEPTH}|" \
+        -e "s|^([[:space:]]*#define LV_MEM_CUSTOM[[:space:]]).*|\1${LVGL_CONFIG_LV_MEM_CUSTOM}|" \
+        -e "s|^([[:space:]]*#define LV_MEM_SIZE[[:space:]]).*|\1${LVGL_CONFIG_LV_MEM_SIZE}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_TICK_CUSTOM[[:space:]]).*|\1 1|" \
+        -e "s|^([[:space:]]*#define LV_TICK_CUSTOM_INCLUDE[[:space:]]).*|\1 <stdint.h>|" \
+        -e "s|^([[:space:]]*#define LV_TICK_CUSTOM_SYS_TIME_EXPR[[:space:]]).*|extern uint32_t custom_tick_get(void);\n\1 (custom_tick_get())|" \
+        \
+        -e "s|^([[:space:]]*#define LV_USE_EVDEV[[:space:]]).*|\1${LVGL_CONFIG_USE_EVDEV}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_USE_ASSERT_NULL[[:space:]]).*|\1${DEBUG_BUILD}|" \
+        -e "s|^([[:space:]]*#define LV_USE_ASSERT_MALLOC[[:space:]]).*|\1${DEBUG_BUILD}|" \
+        -e "s|^([[:space:]]*#define LV_USE_ASSERT_STYLE[[:space:]]).*|\1${DEBUG_BUILD}|" \
+        -e "s|^([[:space:]]*#define LV_USE_ASSERT_MEM_INTEGRITY[[:space:]]).*|\1${DEBUG_BUILD}|" \
+        -e "s|^([[:space:]]*#define LV_USE_ASSERT_OBJ[[:space:]]).*|\1${DEBUG_BUILD}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_USE_LOG[[:space:]]).*|\1${LVGL_CONFIG_LV_USE_LOG}|" \
+        -e "s|^([[:space:]]*#define LV_LOG_LEVEL[[:space:]]).*|\1${LVGL_CONFIG_LV_LOG_LEVEL}|" \
+        -e "s|^([[:space:]]*#define LV_LOG_PRINTF[[:space:]]).*|\1${LVGL_CONFIG_LV_LOG_PRINTF}|" \
+        \
+        -e "s|^([[:space:]]*#define LV_USE_FONT_COMPRESSED[[:space:]]).*|\1${LVGL_CONFIG_LV_USE_FONT_COMPRESSED}|" \
+        -e "s|^([[:space:]]*#define LV_THEME_DEFAULT_DARK[[:space:]]).*|\1${LVGL_CONFIG_LV_THEME_DEFAULT_DARK}|" \
+        \
+        -i "${S}/lv_conf.h"
+}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers.inc b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers.inc
deleted file mode 100644
index 6cfb7fa..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers.inc
+++ /dev/null
@@ -1,48 +0,0 @@
-PACKAGECONFIG[drm] = ",,libdrm"
-PACKAGECONFIG[fbdev] = ",,"
-PACKAGECONFIG[sdl] = ",,virtual/libsdl2"
-PACKAGECONFIG[wayland] = ",,libxkbcommon wayland"
-
-LVGL_CONFIG_USE_DRM = "${@bb.utils.contains('PACKAGECONFIG', 'drm', '1', '0', d)}"
-LVGL_CONFIG_DRM_CARD ?= "/dev/dri/card0"
-
-LVGL_CONFIG_USE_EVDEV = "${@bb.utils.contains_any('PACKAGECONFIG', 'drm fbdev', '1', '0', d)}"
-LVGL_CONFIG_EVDEV_INPUT ?= "/dev/input/touchscreen"
-
-LVGL_CONFIG_USE_FBDEV = "${@bb.utils.contains('PACKAGECONFIG', 'fbdev', '1', '0', d)}"
-
-LVGL_CONFIG_USE_SDL = "${@bb.utils.contains('PACKAGECONFIG', 'sdl', '1', '0', d)}"
-
-LVGL_CONFIG_USE_WAYLAND = "${@bb.utils.contains('PACKAGECONFIG', 'wayland', '1', '0', d)}"
-LVGL_CONFIG_WAYLAND_HOR_RES ?= "480"
-LVGL_CONFIG_WAYLAND_VER_RES ?= "320"
-
-ALLOW_EMPTY:${PN} = "1"
-
-EXTRA_OECMAKE += "-Dinstall:BOOL=ON -DLIB_INSTALL_DIR=${baselib}"
-
-do_configure:append() {
-    # If there is a configuration template, start from that
-    [ -r "${S}/lv_drv_conf_template.h" ] && cp -Lv "${S}/lv_drv_conf_template.h" "${S}/lv_drv_conf.h"
-
-    # Configure the software using sed
-    sed -e "s|#if 0 .*Set it to \"1\" to enable the content.*|#if 1 // Enabled by ${PN}|g" \
-        \
-        -e "s|\(^#  define USE_DRM \).*|#  define USE_DRM ${LVGL_CONFIG_USE_DRM}|g" \
-        -e "s|\(^#  define DRM_CARD \).*|#  define DRM_CARD \"${LVGL_CONFIG_DRM_CARD}\"|g" \
-	\
-        -e "s|\(^#  define USE_EVDEV \).*|#  define USE_EVDEV ${LVGL_CONFIG_USE_EVDEV}|g" \
-        -e "s|\(^#  define EVDEV_NAME \).*|#  define EVDEV_NAME \"${LVGL_CONFIG_EVDEV_INPUT}\"|g" \
-        \
-        -e "s|\(^#  define USE_FBDEV \).*|#  define USE_FBDEV ${LVGL_CONFIG_USE_FBDEV}|g" \
-        \
-        -e "s|\(^# define USE_SDL \).*|#  define USE_SDL ${LVGL_CONFIG_USE_SDL}|g" \
-        -e "s|\(^#  define USE_SDL_GPU \).*|#  define USE_SDL_GPU 1|g" \
-        -e "s|\(^#  define SDL_DOUBLE_BUFFERED \).*|#  define SDL_DOUBLE_BUFFERED 1|g" \
-        \
-        -e "s|\(^#  define USE_WAYLAND \).*|#  define USE_WAYLAND ${LVGL_CONFIG_USE_WAYLAND}|g" \
-        -e "s|\(^ *# *define *WAYLAND_HOR_RES *\).*|\1${LVGL_CONFIG_WAYLAND_HOR_RES}|g" \
-        -e "s|\(^ *# *define *WAYLAND_VER_RES *\).*|\1${LVGL_CONFIG_WAYLAND_VER_RES}|g" \
-        \
-        -i "${S}/lv_drv_conf.h"
-}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_8.3.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_8.3.0.bb
deleted file mode 100644
index e2c5a34..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-drivers_8.3.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-# SPDX-FileCopyrightText: Huawei Inc.
-#
-# SPDX-License-Identifier: MIT
-
-HOMEPAGE = "https://docs.lvgl.io/latest/en/html/porting/index.html"
-SUMMARY = "LVGL's Display and Touch pad drivers"
-DESCRIPTION = "Collection of drivers: SDL, framebuffer, wayland and more..."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2"
-
-SRC_URI = "git://github.com/lvgl/lv_drivers;protocol=https;branch=release/v8.3"
-SRCREV = "71830257710f430b6d8d1c324f89f2eab52488f1"
-
-DEPENDS = "lvgl"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'wayland fbdev', d)}"
-require lv-drivers.inc
-
-inherit cmake
-
-S = "${WORKDIR}/git"
-
-TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1"
-TARGET_CFLAGS += "-I${STAGING_INCDIR}/lvgl"
-
-FILES:${PN}-dev += "\
-    ${includedir}/lvgl/lv_drivers/ \
-    "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb
deleted file mode 100644
index 0049bbe..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lv-lib-png_8.0.2.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-# SPDX-FileCopyrightText: Huawei Inc.
-#
-# SPDX-License-Identifier: MIT
-
-HOMEPAGE = "https://docs.lvgl.io"
-SUMMARY = "PNG decoder for LVGL"
-DESCRIPTION = "Allow the use of PNG images in LVGL. This implementation uses lodepng"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2"
-
-SRC_URI = "git://github.com/lvgl/lv_lib_png;;protocol=https;branch=master"
-SRCREV = "bf1531afe07c9f861107559e29ab8a2d83e4715a"
-
-S = "${WORKDIR}/git"
-
-# because of lvgl dependency
-REQUIRED_DISTRO_FEATURES = "wayland"
-
-DEPENDS += "lvgl"
-
-EXTRA_OECMAKE += "-DLIB_INSTALL_DIR=${baselib}"
-
-inherit cmake
-inherit features_check
-
-TARGET_CFLAGS += "-DLV_CONF_INCLUDE_SIMPLE=1"
-TARGET_CFLAGS += "-I${STAGING_INCDIR}/lvgl"
-
-FILES:${PN}-dev = "\
-    ${includedir}/lvgl/lv_lib_png/ \
-    "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb
deleted file mode 100644
index 32f833a..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_8.3.0.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "LVGL Demo Application for Framebuffer"
-HOMEPAGE = "https://github.com/lvgl/lv_port_linux_frame_buffer"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=802d3d83ae80ef5f343050bf96cce3a4 \
-                    file://lv_drivers/LICENSE;md5=d6fc0df890c5270ef045981b516bb8f2 \
-                    file://lvgl/LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a"
-
-SRC_URI = "gitsm://github.com/lvgl/lv_port_linux_frame_buffer.git;branch=master;protocol=https"
-SRCREV = "adf2c4490e17a1b9ec1902cc412a24b3b8235c8e"
-
-EXTRA_OEMAKE = "DESTDIR=${D}"
-
-PACKAGECONFIG ??= "drm"
-require lv-drivers.inc
-
-inherit cmake
-
-S = "${WORKDIR}/git"
-
-TARGET_CFLAGS += "-I${STAGING_INCDIR}/libdrm"
-
-do_configure:prepend() {
-	if [ "${LVGL_CONFIG_USE_DRM}" -eq 1 ] ; then
-		# Add libdrm build dependency
-		sed -i '/^target_link_libraries/ s@lvgl::drivers@& drm@' "${S}/CMakeLists.txt"
-		# Switch from fbdev to drm usage
-		sed -i 's@fbdev@drm@g' "${S}/main.c"
-		# Pull resolution from DRM instead of hardcoding it
-		sed -i '/disp_drv.hor_res/ d' "${S}/main.c"
-		sed -i '/disp_drv.ver_res/ s@disp_drv.ver_res.*@drm_get_sizes(\&disp_drv.hor_res, \&disp_drv.ver_res, NULL);@' "${S}/main.c"
-	fi
-
-	if [ "${LVGL_CONFIG_USE_SDL}" -eq 1 ] ; then
-		# Add libsdl build dependency
-		sed -i '/^target_link_libraries/ s@lvgl::drivers@& SDL2@' "${S}/CMakeLists.txt"
-		# Switch from fbdev to sdl usage
-		sed -i 's@fbdev_flush@sdl_display_flush@g' "${S}/main.c"
-		sed -i 's@lv_drivers/display/fbdev.h@lv_drivers/sdl/sdl.h@g' "${S}/main.c"
-		sed -i 's@fbdev@sdl@g' "${S}/main.c"
-	fi
-}
-
-do_install:append() {
-	install -d ${D}${bindir}
-	install -m 0755 ${B}/lvgl_fb ${D}${bindir}/
-}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.1.0.bb
new file mode 100644
index 0000000..6e8371b
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl-demo-fb_9.1.0.bb
@@ -0,0 +1,45 @@
+SUMMARY = "LVGL Demo Application for Framebuffer"
+HOMEPAGE = "https://github.com/lvgl/lv_port_linux_frame_buffer"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=802d3d83ae80ef5f343050bf96cce3a4 \
+                    file://lvgl/LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a"
+
+SRC_URI = "\
+	git://github.com/lvgl/lv_port_linux_frame_buffer.git;protocol=https;branch=master;name=demo \
+	git://github.com/lvgl/lvgl;protocol=https;branch=master;name=lvgl;subdir=git/lvgl \
+	file://0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch;patchdir=lvgl \
+	file://0003-Make-fbdev-device-node-runtime-configurable-via-envi.patch \
+	file://0004-Factor-out-fbdev-initialization-code.patch \
+	file://0005-Add-DRM-KMS-example-support.patch \
+	file://0006-Add-SDL2-example-support.patch \
+	file://0007-fix-cmake-generate-versioned-shared-libraries.patch;patchdir=lvgl \
+	file://0008-fix-fbdev-set-resolution-prior-to-buffer.patch;patchdir=lvgl \
+	"
+SRCREV_demo = "dccc6a1ca48372aa993dbea7a8e17dec6f42df6a"
+SRCREV_lvgl = "e1c0b21b2723d391b885de4b2ee5cc997eccca91"
+SRCREV_FORMAT = "demo_lvgl"
+
+EXTRA_OEMAKE = "DESTDIR=${D}"
+
+LVGL_CONFIG_DRM_CARD ?= "/dev/dri/card0"
+LVGL_CONFIG_LV_USE_LOG    = "1"
+LVGL_CONFIG_LV_LOG_PRINTF = "1"
+LVGL_CONFIG_LV_MEM_SIZE = "(256 * 1024U)"
+LVGL_CONFIG_LV_USE_FONT_COMPRESSED = "1"
+require lv-conf.inc
+
+inherit cmake
+
+S = "${WORKDIR}/git"
+
+do_configure:prepend() {
+	if [ "${LVGL_CONFIG_USE_SDL}" -eq 1 ] ; then
+		# Add libsdl build dependency, SDL2_image has no cmake file
+		sed -i '/^target_link_libraries/ s@pthread@& SDL2_image@' "${S}/CMakeLists.txt"
+	fi
+}
+
+do_install:append() {
+	install -d ${D}${bindir}
+	install -m 0755 ${S}/bin/main ${D}${bindir}/lvgl
+}
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb
deleted file mode 100644
index 2523680..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_8.3.11.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-# SPDX-FileCopyrightText: Huawei Inc.
-#
-# SPDX-License-Identifier: MIT
-
-HOMEPAGE = "https://lvgl.io/"
-DESCRIPTION = "LVGL is an OSS graphics library to create embedded GUI"
-SUMMARY = "Light and Versatile Graphics Library"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a"
-
-SRC_URI = "git://github.com/lvgl/lvgl;protocol=https;branch=release/v8.3"
-SRCREV = "74d0a816a440eea53e030c4f1af842a94f7ce3d3"
-
-inherit cmake
-
-EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${baselib}"
-S = "${WORKDIR}/git"
-
-ALLOW_EMPTY:${PN} = "1"
-
-LVGL_CONFIG_LV_MEM_CUSTOM ?= "0"
-LVGL_CONFIG_LV_COLOR_DEPTH ?= "32"
-
-# Upstream does not support a default configuration
-# but propose a default "disabled" template, which is used as reference
-# More configuration can be done using external configuration variables
-do_configure:prepend() {
-    [ -r "${S}/lv_conf.h" ] \
-        || sed -e 's|#if 0 .*Set it to "1" to enable .*|#if 1 // Enabled|g' \
-	    -e "s|\(#define LV_COLOR_DEPTH \).*|\1 ${LVGL_CONFIG_LV_COLOR_DEPTH}|g" \
-	    \
-	    -e "s|\(#define LV_MEM_CUSTOM .*\)0|\1${LVGL_CONFIG_LV_MEM_CUSTOM}|g" \
-	    \
-	    -e "s|\(#define LV_TICK_CUSTOM \).*|\1 1|g" \
-	    -e "s|\(#define LV_TICK_CUSTOM_INCLUDE \).*|\1 <stdint.h>|g" \
-	    -e "s|\(#define LV_TICK_CUSTOM_SYS_TIME_EXPR \).*|extern uint32_t custom_tick_get(void);\n\1 (custom_tick_get())|g" \
-	    \
-            < "${S}/lv_conf_template.h" > "${S}/lv_conf.h"
-}
-
-FILES:${PN}-dev += "\
-    ${includedir}/${PN}/ \
-    ${includedir}/${PN}/lvgl/ \
-    "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_9.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_9.1.0.bb
new file mode 100644
index 0000000..4435c40
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/lvgl/lvgl_9.1.0.bb
@@ -0,0 +1,33 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: MIT
+
+HOMEPAGE = "https://lvgl.io/"
+DESCRIPTION = "LVGL is an OSS graphics library to create embedded GUI"
+SUMMARY = "Light and Versatile Graphics Library"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=bf1198c89ae87f043108cea62460b03a"
+
+SRC_URI = "\
+	git://github.com/lvgl/lvgl;protocol=https;branch=master \
+	file://0002-fix-sdl-handle-both-LV_IMAGE_SRC_FILE-and-LV_IMAGE_S.patch \
+	file://0007-fix-cmake-generate-versioned-shared-libraries.patch \
+	file://0008-fix-fbdev-set-resolution-prior-to-buffer.patch \
+	"
+SRCREV = "e1c0b21b2723d391b885de4b2ee5cc997eccca91"
+
+inherit cmake
+
+EXTRA_OECMAKE = "-DLIB_INSTALL_DIR=${baselib} -DBUILD_SHARED_LIBS=ON"
+S = "${WORKDIR}/git"
+
+require lv-conf.inc
+
+do_install:append() {
+    install -d "${D}${includedir}/${PN}"
+    install -m 0644 "${S}/lv_conf.h" "${D}${includedir}/${PN}/lv_conf.h"
+}
+
+FILES:${PN}-dev += "\
+    ${includedir}/${PN}/ \
+    "
diff --git a/meta-openembedded/meta-oe/recipes-graphics/neatvnc/neatvnc_0.7.2.bb b/meta-openembedded/meta-oe/recipes-graphics/neatvnc/neatvnc_0.7.2.bb
deleted file mode 100644
index 152409d..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/neatvnc/neatvnc_0.7.2.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY = "A liberally licensed VNC server library"
-DESCRIPTION = "This is a liberally licensed VNC server library that's intended to be fast and neat."
-HOMEPAGE = "https://github.com/any1/neatvnc"
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94fc374e7174f41e3afe0f027ee59ff7"
-
-SRC_URI = "git://github.com/any1/neatvnc;branch=v0.7;protocol=https"
-
-SRCREV = "14619e6281136a02e376ad23e3cfaedc8de00ffb"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "libdrm pixman aml zlib"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[tls] = "-Dtls=enabled,-Dtls=disabled,gnutls"
-PACKAGECONFIG[jpeg] = "-Djpeg=enabled,-Djpeg=disabled,libjpeg-turbo"
-PACKAGECONFIG[examples] = "-Dexamples=true,-Dexamples=false,libpng"
-PACKAGECONFIG[benchmarks] = "-Dbenchmarks=true,-Dbenchmarks=false,libpng"
-
-PACKAGE_BEFORE_PN += "${PN}-examples"
-ALLOW_EMPTY:${PN}-examples = "1"
-FILES:${PN}-examples = "${bindir}"
-
-NEATVNC_EXAMPLES = "draw png-server"
-
-inherit meson pkgconfig
-
-do_install:append () {
-	if ${@bb.utils.contains('PACKAGECONFIG', 'examples', 'true', 'false', d)}; then
-		install -d ${D}${bindir}
-		for bin in ${NEATVNC_EXAMPLES}; do
-			install -m 0755 ${B}/examples/$bin ${D}${bindir}
-		done
-	fi
-}
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/neatvnc/neatvnc_0.8.0.bb b/meta-openembedded/meta-oe/recipes-graphics/neatvnc/neatvnc_0.8.0.bb
new file mode 100644
index 0000000..c9c4a6c
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/neatvnc/neatvnc_0.8.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "A liberally licensed VNC server library"
+DESCRIPTION = "This is a liberally licensed VNC server library that's intended to be fast and neat."
+HOMEPAGE = "https://github.com/any1/neatvnc"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94fc374e7174f41e3afe0f027ee59ff7"
+
+SRC_URI = "git://github.com/any1/neatvnc;branch=master;protocol=https"
+
+SRCREV = "46432ce8cade0b54a38d4bb42eb07f96c8ff49fd"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libdrm pixman aml zlib"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[tls] = "-Dtls=enabled,-Dtls=disabled,gnutls"
+PACKAGECONFIG[jpeg] = "-Djpeg=enabled,-Djpeg=disabled,libjpeg-turbo"
+PACKAGECONFIG[examples] = "-Dexamples=true,-Dexamples=false,libpng"
+PACKAGECONFIG[benchmarks] = "-Dbenchmarks=true,-Dbenchmarks=false,libpng"
+
+PACKAGE_BEFORE_PN += "${PN}-examples"
+ALLOW_EMPTY:${PN}-examples = "1"
+FILES:${PN}-examples = "${bindir}"
+
+NEATVNC_EXAMPLES = "draw png-server"
+
+inherit meson pkgconfig
+
+do_install:append () {
+	if ${@bb.utils.contains('PACKAGECONFIG', 'examples', 'true', 'false', d)}; then
+		install -d ${D}${bindir}
+		for bin in ${NEATVNC_EXAMPLES}; do
+			install -m 0755 ${B}/examples/$bin ${D}${bindir}
+		done
+	fi
+}
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/packagegroups/packagegroup-fonts-truetype.bb b/meta-openembedded/meta-oe/recipes-graphics/packagegroups/packagegroup-fonts-truetype.bb
index 0af6ac0..1cc2cdf 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/packagegroups/packagegroup-fonts-truetype.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/packagegroups/packagegroup-fonts-truetype.bb
@@ -3,7 +3,6 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 PV = "1.0"
-PR = "r2"
 
 inherit packagegroup
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.9.1.bb b/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.9.1.bb
new file mode 100644
index 0000000..18499cf
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.9.1.bb
@@ -0,0 +1,35 @@
+SECTION = "shadow"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=703e9835709f45ee7b81082277f1daec"
+SRC_URI = "http://dl.suckless.org/${BPN}/${BP}.tar.gz"
+
+inherit pkgconfig features_check
+
+REQUIRED_DISTRO_FEATURES = "x11"
+
+SRC_URI[sha256sum] = "16f43b9433ade9d70d6085c31f9fd99f2835eaade31221020f22143035dfc0d2"
+
+DEPENDS += "libx11 libxft fontconfig ncurses-native"
+
+RDEPENDS:${PN} += "libx11-locale"
+
+do_compile() {
+    make INCS='-I. `pkg-config --cflags x11 fontconfig xft`' LIBS='-lm -lutil `pkg-config --libs x11 fontconfig xft`'
+}
+do_install() {
+    make install DESTDIR=${D} PREFIX=/usr TERMINFO=${D}${datadir}/terminfo
+}
+
+FILES:${PN} += " \
+    ${datadir}/terminfo \
+"
+
+inherit update-alternatives
+
+ALTERNATIVE_PRIORITY = "50"
+
+ALTERNATIVE:${PN} = "st st-256color"
+
+ALTERNATIVE_LINK_NAME[st] = "${datadir}/terminfo/s/st"
+
+ALTERNATIVE_LINK_NAME[st-256color] = "${datadir}/terminfo/s/st-256color"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.9.bb b/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.9.bb
deleted file mode 100644
index 517d467..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/suckless/st_0.9.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-SECTION = "shadow"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=703e9835709f45ee7b81082277f1daec"
-SRC_URI = "http://dl.suckless.org/${BPN}/${BP}.tar.gz"
-
-inherit pkgconfig features_check
-
-REQUIRED_DISTRO_FEATURES = "x11"
-
-SRC_URI[sha256sum] = "f36359799734eae785becb374063f0be833cf22f88b4f169cd251b99324e08e7"
-
-DEPENDS += "libx11 libxft fontconfig ncurses-native"
-
-RDEPENDS:${PN} += "libx11-locale"
-
-do_compile() {
-    make INCS='-I. `pkg-config --cflags x11 fontconfig xft`' LIBS='-lm -lutil `pkg-config --libs x11 fontconfig xft`'
-}
-do_install() {
-    make install DESTDIR=${D} PREFIX=/usr TERMINFO=${D}${datadir}/terminfo
-}
-
-FILES:${PN} += " \
-    ${datadir}/terminfo \
-"
-
-inherit update-alternatives
-
-ALTERNATIVE_PRIORITY = "50"
-
-ALTERNATIVE:${PN} = "st st-256color"
-
-ALTERNATIVE_LINK_NAME[st] = "${datadir}/terminfo/s/st"
-
-ALTERNATIVE_LINK_NAME[st-256color] = "${datadir}/terminfo/s/st-256color"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
index 05ece8b..ea73418 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-arphic-uming_20080216.bb
@@ -4,7 +4,6 @@
 LIC_FILES_CHKSUM = "file://license/english/ARPHICPL.TXT;md5=4555ed88e9a72fc9562af379d07c3350"
 
 RPROVIDES:${PN} = "virtual-chinese-font"
-PR = "r6"
 
 FONT_PACKAGES = "${PN}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.37.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.37.bb
index 919dad8..43a387b 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.37.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-dejavu_2.37.bb
@@ -13,7 +13,6 @@
 RDEPENDS:${PN}-serif-condensed = "${PN}-common"
 RDEPENDS:${PN}-mathtexgyre = "${PN}-common"
 RDEPENDS:${PN}-common = ""
-PR = "r7"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/dejavu/dejavu-fonts-ttf-${PV}.tar.bz2 \
            file://30-dejavu-aliases.conf"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
index f223664..cc9213e 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-droid_git.bb
@@ -6,7 +6,6 @@
 LIC_FILES_CHKSUM = "file://README.txt;md5=83544262a86f1f1ec761e75897df92bc"
 SRCREV = "21e6e2de1f0062f949fcc52d0b4559dfa3246e0e"
 PV = "0.1+git"
-PR = "r3"
 
 SRC_URI = "git://github.com/android/platform_frameworks_base.git;branch=master;protocol=https"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
index eb13b47..2439766 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-gentium_1.02.bb
@@ -6,7 +6,6 @@
 LICENSE_URL = "http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=OFL"
 LIC_FILES_CHKSUM = "file://OFL;md5=33a5bf7b98a9c0ae87430760ba762295 \
 "
-PR = "r8"
 
 SRC_URI = "https://archive.debian.org/debian/pool/main/t/ttf-gentium/ttf-gentium_${PV}.orig.tar.gz "
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
index e361ce9..8a75fe3 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-hunkyfonts_0.3.1.bb
@@ -4,7 +4,6 @@
 HOMEPAGE = "http://sourceforge.net/projects/hunkyfonts"
 LICENSE = "LGPL-2.1-or-later"
 LIC_FILES_CHKSUM = "file://../COPYRIGHT.TXT;md5=70d34478e38b1ad9995079f9921f9ef7"
-PR = "r7"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/hunkyfonts/hunkyfonts-${PV}.tar.bz2"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
index fdcfe04..6d7ba11 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-liberation_0.2.bb
@@ -7,7 +7,6 @@
                     file://License.txt;md5=5b171c5100029d884fcea21d9a2b7543 \
 "
 
-PR = "r7"
 
 SRC_URI = "http://fedorahosted.org/liberation-fonts/export/807b6dfd069b998cd9b4d3158da98817ef23c79d/F-9/liberation-fonts-ttf-3.tar.gz"
 S = "${WORKDIR}/liberation-fonts-${PV}"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
index a048075..a3babe9 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-mplus_027.bb
@@ -6,7 +6,6 @@
 LIC_FILES_CHKSUM = "file://LICENSE_E;md5=ac161e96eda00db9a3aec7870b5d9658 \
                     file://LICENSE_J;md5=a120ca8d7c8e4a475d5277c9aeb95221 \
 "
-PR = "r4"
 SRC_URI = "http://downloads.sourceforge.jp/mplus-fonts/6650/mplus-TESTFLIGHT-${PV}.tar.gz"
 S = "${WORKDIR}/mplus-TESTFLIGHT-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb
index c7229df..a4ad91f 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-sazanami_20040629.bb
@@ -8,7 +8,6 @@
 LIC_FILES_CHKSUM = "file://README;md5=97d739900be6e852830f55aa3c07d4a0"
 
 RPROVIDES:${PN} = "virtual-japanese-font"
-PR = "r9"
 
 SRC_URI = "http://osdn.dl.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2"
 S = "${WORKDIR}/sazanami-20040629"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.83.bb b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.83.bb
index e81515f..d118769 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.83.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/ttf-fonts/ttf-ubuntu-font-family_0.83.bb
@@ -4,7 +4,6 @@
 HOMEPAGE = "http://font.ubuntu.com"
 LICENSE = "UFL"
 LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=325a1a9029112a2405e743c7f816427b"
-PR = "r1"
 
 SHA1SUM = "0cef8205"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/files/0001-Remove-dead-variable-984.patch b/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/files/0001-Remove-dead-variable-984.patch
deleted file mode 100644
index c29d80a..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/vk-gl-cts/files/0001-Remove-dead-variable-984.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 0d863b444c9a54a92dab176b1b656c116923e1ca Mon Sep 17 00:00:00 2001
-From: alan-baker <alanbaker@google.com>
-Date: Wed, 30 Mar 2022 12:59:28 -0400
-Subject: [PATCH] Remove dead variable (#984)
-
-Upstream-Status: Backport [https://github.com/google/amber/commit/627ee453d6047ced0e2dd13cde983b341d0615e3]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/vkscript/command_parser.cc | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/vkscript/command_parser.cc b/src/vkscript/command_parser.cc
-index 610c7e6..3429d4d 100644
---- a/src/vkscript/command_parser.cc
-+++ b/src/vkscript/command_parser.cc
-@@ -486,7 +486,6 @@ Result CommandParser::ParseValues(const std::string& name,
-                                   std::vector<Value>* values) {
-   assert(values);
- 
--  uint32_t row_index = 0;
-   auto token = tokenizer_->NextToken();
-   size_t seen = 0;
-   while (!token->IsEOL() && !token->IsEOS()) {
-@@ -515,7 +514,6 @@ Result CommandParser::ParseValues(const std::string& name,
-     values->push_back(v);
-     token = tokenizer_->NextToken();
- 
--    ++row_index;
-     ++seen;
-   }
- 
--- 
-2.37.3
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/wayland/waylandpp_1.0.0.bb b/meta-openembedded/meta-oe/recipes-graphics/wayland/waylandpp_1.0.0.bb
index eb8ec4f..c1f5f4e 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/wayland/waylandpp_1.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/wayland/waylandpp_1.0.0.bb
@@ -37,4 +37,9 @@
 	-DCMAKE_EXE_LINKER_FLAGS="-Wl,--enable-new-dtags" \
 "
 
+do_install:append:class-target() {
+    sed -i -e 's|${S}||g' ${D}${libdir}/cmake/waylandpp/waylandpp-targets.cmake
+    sed -i -e 's|${STAGING_DIR_HOST}||g' ${D}${libdir}/cmake/waylandpp/waylandpp-targets.cmake
+}
+
 BBCLASSEXTEND += "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.10.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.10.bb
new file mode 100644
index 0000000..7d025de
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.10.bb
@@ -0,0 +1,16 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+
+DESCRIPTION = "A collection of utilities used to tweak and query the runtime configuration\
+of the X server."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=13f70acf3c27f5f834bbc954df775f8e"
+
+BBCLASSEXTEND = "native"
+
+DEPENDS += "libice"
+
+SRC_URI_EXT = "xz"
+SRC_URI[sha256sum] = "3deefb7da26af9dc799b5628d929d91c9af68c78575639944db3b955f29aa029"
+
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.9.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.9.bb
deleted file mode 100644
index ea0ef0a..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/iceauth_1.0.9.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require recipes-graphics/xorg-app/xorg-app-common.inc
-
-SUMMARY = "X.Org X11 X client utilities"
-
-DESCRIPTION = "A collection of utilities used to tweak and query the runtime configuration\
-of the X server."
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=13f70acf3c27f5f834bbc954df775f8e"
-
-BBCLASSEXTEND = "native"
-
-DEPENDS += "libice"
-
-SRC_URI_EXT = "xz"
-SRC_URI[sha256sum] = "2cb9dfcb545683af77fb1029bea3fc52dcc8a0666f7b8b2d7373b6ed4c408c05"
-
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.6.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.6.bb
deleted file mode 100644
index cb12383..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.6.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require recipes-graphics/xorg-app/xorg-app-common.inc
-
-SUMMARY = "Display a message or query in a window"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=73c7f696a728de728d7446cbca814cc5"
-
-DEPENDS += "libxaw"
-
-SRC_URI[sha256sum] = "d2eac545f137156b960877e052fcc8e29795ed735c02f7690fd7b439e6846a12"
-SRC_URI_EXT = "xz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.7.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.7.bb
new file mode 100644
index 0000000..6682784
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xmessage_1.0.7.bb
@@ -0,0 +1,10 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "Display a message or query in a window"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=73c7f696a728de728d7446cbca814cc5"
+
+DEPENDS += "libxaw"
+
+SRC_URI[sha256sum] = "703fccb7a0b772d61d7e603c189b9739866aa97ba985c727275420f829a30356"
+SRC_URI_EXT = "xz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.7.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.7.bb
deleted file mode 100644
index 6f6ad73..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.0.7.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-require recipes-graphics/xorg-app/xorg-app-common.inc
-
-SUMMARY = "X.Org X11 X client utilities"
-HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xrefresh/"
-DESCRIPTION = "xrefresh - refresh all or part of an X screen"
-SECTION = "x11/app"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=dad633bce9c3cd0e3abf72a16e0057cf"
-
-BBCLASSEXTEND = "native"
-
-SRC_URI[sha256sum] = "a9f1d635f2f42283d0174e94d09ab69190c227faa5ab542bfe15ed9607771b1e"
-SRC_URI_EXT = "xz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.1.0.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.1.0.bb
new file mode 100644
index 0000000..12d05b1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-app/xrefresh_1.1.0.bb
@@ -0,0 +1,13 @@
+require recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "X.Org X11 X client utilities"
+HOMEPAGE = "http://cgit.freedesktop.org/xorg/app/xrefresh/"
+DESCRIPTION = "xrefresh - refresh all or part of an X screen"
+SECTION = "x11/app"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dad633bce9c3cd0e3abf72a16e0057cf"
+
+BBCLASSEXTEND = "native"
+
+SRC_URI[sha256sum] = "29ed592d5ece35a3029004d8c46f3002f92970870a96c11e38baf7f1122b8b5f"
+SRC_URI_EXT = "xz"
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-void_1.4.2.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-void_1.4.2.bb
index 54a6476..7a12272 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-void_1.4.2.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-driver/xf86-input-void_1.4.2.bb
@@ -1,6 +1,5 @@
 require recipes-graphics/xorg-driver/xorg-driver-input.inc
 SUMMARY = "X.Org X server -- void input driver"
-PR = "r22"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=4be6a915bfbf111cd88706fc6a6f141b"
 
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.15.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.15.bb
deleted file mode 100644
index 253bb6f..0000000
--- a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.15.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-require recipes-graphics/xorg-lib/xorg-lib-common.inc
-SUMMARY = "X Athena Widget Set"
-DEPENDS += "xorgproto virtual/libx11 libxext libxt libxmu libxpm libxau xmlto-native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=1c65719d42900bb81b83e8293c20a364"
-
-PE = "1"
-
-XORG_PN = "libXaw"
-
-SRC_URI[sha256sum] = "ab35f70fde9fb02cc71b342f654846a74328b74cb3a0703c02d20eddb212754a"
-
-do_install:append () {
-    ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
-    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
-    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
-}
-
-PACKAGES =+ "libxaw6 libxaw7 libxaw8"
-
-FILES:libxaw6 = "${libdir}/libXaw*.so.6*"
-FILES:libxaw7 = "${libdir}/libXaw*.so.7*"
-FILES:libxaw8 = "${libdir}/libXaw8.so.8*"
-
-# Avoid dependency on libxaw as it is not build
-RDEPENDS:${PN}-dev = ""
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.16.bb b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.16.bb
new file mode 100644
index 0000000..ee14cf7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-graphics/xorg-lib/libxaw_1.0.16.bb
@@ -0,0 +1,26 @@
+require recipes-graphics/xorg-lib/xorg-lib-common.inc
+SUMMARY = "X Athena Widget Set"
+DEPENDS += "xorgproto virtual/libx11 libxext libxt libxmu libxpm libxau xmlto-native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=1c65719d42900bb81b83e8293c20a364"
+
+PE = "1"
+
+XORG_PN = "libXaw"
+
+SRC_URI[sha256sum] = "731d572b54c708f81e197a6afa8016918e2e06dfd3025e066ca642a5b8c39c8f"
+
+do_install:append () {
+    ln -sf libXaw6.so.6 ${D}${libdir}/libXaw.so.6
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so.7
+    ln -sf libXaw7.so.7 ${D}${libdir}/libXaw.so
+}
+
+PACKAGES =+ "libxaw6 libxaw7 libxaw8"
+
+FILES:libxaw6 = "${libdir}/libXaw*.so.6*"
+FILES:libxaw7 = "${libdir}/libXaw*.so.7*"
+FILES:libxaw8 = "${libdir}/libXaw8.so.8*"
+
+# Avoid dependency on libxaw as it is not build
+RDEPENDS:${PN}-dev = ""
diff --git a/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb b/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
index 574d259..3f577bf 100644
--- a/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
+++ b/meta-openembedded/meta-oe/recipes-graphics/xserver-common/xserver-common_1.34.bb
@@ -2,7 +2,6 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
 
-PR = "r9"
 
 # we are using a gpe-style Makefile
 inherit features_check gpe
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash-cross-canadian_8.0.4.bb b/meta-openembedded/meta-oe/recipes-kernel/crash/crash-cross-canadian_8.0.4.bb
index 04be126..54883ce 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash-cross-canadian_8.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash-cross-canadian_8.0.4.bb
@@ -6,7 +6,6 @@
 
 require crash.inc
 
-PR = "${INC_PR}.0"
 
 DEPENDS = "\
     nativesdk-ncurses \
diff --git a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_8.0.4.bb b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_8.0.4.bb
index cc46ab9..1af9097 100644
--- a/meta-openembedded/meta-oe/recipes-kernel/crash/crash_8.0.4.bb
+++ b/meta-openembedded/meta-oe/recipes-kernel/crash/crash_8.0.4.bb
@@ -1,6 +1,5 @@
 require crash.inc
 
-PR = "${INC_PR}.0"
 
 BBCLASSEXTEND = "native cross"
 
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb b/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
index a7d645f..379c7e1 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/id3lib/id3lib_3.8.3.bb
@@ -4,7 +4,6 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=3bf50002aefd002f49e7bb854063f7e7"
 DEPENDS = "zlib"
 
-PR = "r1"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/id3lib/id3lib-${PV}.tar.gz;name=archive \
            ${DEBIAN_MIRROR}/main/i/id3lib3.8.3/id3lib3.8.3_3.8.3-16.2.debian.tar.xz;name=patch;subdir=${BP} \
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb b/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
index 2f7edfb..850918d 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libid3tag/libid3tag_0.15.1b.bb
@@ -7,7 +7,6 @@
 			file://version.h;beginline=1;endline=8;md5=86ac68b67f054b7afde9e149bbc3fe63"
 SECTION = "libs"
 DEPENDS = "zlib gperf-native"
-PR = "r7"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/mad/libid3tag-${PV}.tar.gz \
            file://addpkgconfig.patch \
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libjxl/libjxl_0.10.2.bb b/meta-openembedded/meta-oe/recipes-multimedia/libjxl/libjxl_0.10.2.bb
new file mode 100644
index 0000000..142b283
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libjxl/libjxl_0.10.2.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Reference implementation of JPEG XL (encoder and decoder)"
+HOMEPAGE = "https://github.com/libjxl/libjxl/"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6a905a337cc228a1f68f0b5416f52a7f"
+
+inherit cmake pkgconfig mime
+
+DEPENDS = "highway brotli"
+
+SRC_URI = "gitsm://github.com/libjxl/libjxl.git;protocol=https;nobranch=1"
+
+SRCREV = "e1489592a770b989303b0edc5cc1dc447bbe0515"
+S = "${WORKDIR}/git"
+
+EXTRA_OECMAKE = " \
+	-DCMAKE_BUILD_TYPE=Release \
+	-DJPEGXL_ENABLE_PLUGINS=ON \
+	-DBUILD_TESTING=OFF \
+	-DJPEGXL_WARNINGS_AS_ERRORS=OFF \
+	-DJPEGXL_ENABLE_SIZELESS_VECTORS=ON \
+	-DJPEGXL_ENABLE_SJPEG=OFF \
+	-DJPEGXL_ENABLE_BENCHMARK=OFF \
+	-DJPEGXL_ENABLE_EXAMPLES=OFF \
+	-DJPEGXL_ENABLE_MANPAGES=OFF \
+	-DJPEGXL_ENABLE_SKCMS=ON \
+	-DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
+	-DJPEGXL_FORCE_SYSTEM_HWY=ON \
+	-DJPEGXL_ENABLE_JNI=OFF \
+	-DJPEGXL_ENABLE_TCMALLOC=OFF \
+	-DJPEGXL_ENABLE_TOOLS=OFF \
+"
+
+PACKAGECONFIG ?= "mime gdk-pixbuf-loader"
+PACKAGECONFIG[gdk-pixbuf-loader] = "-DJPEGXL_ENABLE_PLUGIN_GDKPIXBUF=ON,-DJPEGXL_ENABLE_PLUGIN_GDKPIXBUF=OFF,gdk-pixbuf"
+PACKAGECONFIG[gimp] = "-DJPEGXL_ENABLE_PLUGIN_GIMP210=ON,-DJPEGXL_ENABLE_PLUGIN_GIMP210=OFF,gimp"
+PACKAGECONFIG[mime] = "-DJPEGXL_ENABLE_PLUGIN_MIME=ON,-DJPEGXL_ENABLE_PLUGIN_MIME=OFF"
+
+FILES:${PN} += "${libdir}/gdk-pixbuf-2.0 ${datadir}"
+
+CXXFLAGS:append:arm = " -mfp16-format=ieee"
+# Option not supported with clang and its default format for __fp16 anyway with clang
+CXXFLAGS:remove:toolchain-clang = "-mfp16-format=ieee"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb b/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb
index 5b089a0..d0171f3 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libmad/libmad_0.15.1b.bb
@@ -8,7 +8,6 @@
     file://version.h;beginline=1;endline=8;md5=aa07311dd39288d4349f28e1de516454"
 SECTION = "libs"
 DEPENDS = "libid3tag"
-PR = "r3"
 
 SRC_URI = "ftp://ftp.mars.org/pub/mpeg/libmad-${PV}.tar.gz \
     file://no-force-mem.patch \
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.4.bb b/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.4.bb
deleted file mode 100644
index 127c8be..0000000
--- a/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.4.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY = "Opus Audio Codec"
-DESCRIPTION = "The Opus codec is designed for interactive \
-speech and audio transmission over the Internet. It is \
-designed by the IETF Codec Working Group and incorporates \
-technology from Skype's SILK codec and Xiph.Org's CELT codec."
-HOMEPAGE = "http://www.opus-codec.org/"
-SECTION = "libs/multimedia"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e304cdf74c2a1b0a33a5084c128a23a3"
-
-SRC_URI = "http://downloads.xiph.org/releases/opus/opus-${PV}.tar.gz"
-SRC_URI[sha256sum] = "c9b32b4253be5ae63d1ff16eea06b94b5f0f2951b7a02aceef58e3a3ce49c51f"
-
-S = "${WORKDIR}/opus-${PV}"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[fixed-point] = "--enable-fixed-point,,"
-PACKAGECONFIG[float-approx] = "--enable-float-approx,,"
-
-EXTRA_OECONF = " \
-    --with-NE10-includes=${STAGING_DIR_TARGET}${includedir} \
-    --with-NE10-libraries=${STAGING_DIR_TARGET}${libdir} \
-    --enable-asm \
-    --enable-intrinsics \
-    --enable-custom-modes \
-"
-
-# ne10 is available only for armv7a, armv7ve and aarch64
-DEPENDS:append:aarch64 = " ne10"
-DEPENDS:append:armv7a = "${@bb.utils.contains("TUNE_FEATURES","neon"," ne10","",d)}"
-DEPENDS:append:armv7ve = "${@bb.utils.contains("TUNE_FEATURES","neon"," ne10","",d)}"
-
-python () {
-    if d.getVar('TARGET_FPU') in [ 'soft' ]:
-        d.appendVar('PACKAGECONFIG', ' fixed-point')
-}
-
-# Fails to build with thumb-1 (qemuarm)
-#| {standard input}: Assembler messages:
-#| {standard input}:389: Error: selected processor does not support Thumb mode `smull r5,r7,r1,r4'
-#| {standard input}:418: Error: selected processor does not support Thumb mode `smull r5,r6,r4,r1'
-#| {standard input}:448: Error: selected processor does not support Thumb mode `smull r4,r5,r1,r0'
-#| {standard input}:474: Error: selected processor does not support Thumb mode `smull r0,r4,r8,r1'
-#| {standard input}:510: Error: selected processor does not support Thumb mode `smull fp,r0,r10,r1'
-#| {standard input}:553: Error: selected processor does not support Thumb mode `smull fp,r1,r10,r3'
-#| {standard input}:741: Error: selected processor does not support Thumb mode `smull r3,r0,r6,r10'
-#| {standard input}:761: Error: selected processor does not support Thumb mode `smull fp,r2,r3,r9'
-#| {standard input}:773: Error: selected processor does not support Thumb mode `smull fp,r3,r5,r8'
-#| make[2]: *** [celt/celt.lo] Error 1
-ARM_INSTRUCTION_SET:armv5 = "arm"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CVE_PRODUCT += "opus-codec:opus"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.5.1.bb b/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.5.1.bb
new file mode 100644
index 0000000..4ce6dd2
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-multimedia/libopus/libopus_1.5.1.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Opus Audio Codec"
+DESCRIPTION = "The Opus codec is designed for interactive \
+speech and audio transmission over the Internet. It is \
+designed by the IETF Codec Working Group and incorporates \
+technology from Skype's SILK codec and Xiph.Org's CELT codec."
+HOMEPAGE = "http://www.opus-codec.org/"
+SECTION = "libs/multimedia"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4b365c2155d66e550e1447075d6744a5"
+
+SRC_URI = "http://downloads.xiph.org/releases/opus/opus-${PV}.tar.gz"
+SRC_URI[sha256sum] = "b84610959b8d417b611aa12a22565e0a3732097c6389d19098d844543e340f85"
+
+S = "${WORKDIR}/opus-${PV}"
+
+inherit autotools pkgconfig
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[fixed-point] = "--enable-fixed-point,,"
+PACKAGECONFIG[float-approx] = "--enable-float-approx,,"
+
+EXTRA_OECONF = " \
+    --with-NE10-includes=${STAGING_DIR_TARGET}${includedir} \
+    --with-NE10-libraries=${STAGING_DIR_TARGET}${libdir} \
+    --enable-asm \
+    --enable-intrinsics \
+    --enable-custom-modes \
+"
+
+# ne10 is available only for armv7a, armv7ve and aarch64
+DEPENDS:append:aarch64 = " ne10"
+DEPENDS:append:armv7a = "${@bb.utils.contains("TUNE_FEATURES","neon"," ne10","",d)}"
+DEPENDS:append:armv7ve = "${@bb.utils.contains("TUNE_FEATURES","neon"," ne10","",d)}"
+
+python () {
+    if d.getVar('TARGET_FPU') in [ 'soft' ]:
+        d.appendVar('PACKAGECONFIG', ' fixed-point')
+}
+
+# Fails to build with thumb-1 (qemuarm)
+#| {standard input}: Assembler messages:
+#| {standard input}:389: Error: selected processor does not support Thumb mode `smull r5,r7,r1,r4'
+#| {standard input}:418: Error: selected processor does not support Thumb mode `smull r5,r6,r4,r1'
+#| {standard input}:448: Error: selected processor does not support Thumb mode `smull r4,r5,r1,r0'
+#| {standard input}:474: Error: selected processor does not support Thumb mode `smull r0,r4,r8,r1'
+#| {standard input}:510: Error: selected processor does not support Thumb mode `smull fp,r0,r10,r1'
+#| {standard input}:553: Error: selected processor does not support Thumb mode `smull fp,r1,r10,r3'
+#| {standard input}:741: Error: selected processor does not support Thumb mode `smull r3,r0,r6,r10'
+#| {standard input}:761: Error: selected processor does not support Thumb mode `smull fp,r2,r3,r9'
+#| {standard input}:773: Error: selected processor does not support Thumb mode `smull fp,r3,r5,r8'
+#| make[2]: *** [celt/celt.lo] Error 1
+ARM_INSTRUCTION_SET:armv5 = "arm"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CVE_PRODUCT += "opus-codec:opus"
diff --git a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
index 1017663..3069528 100644
--- a/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
+++ b/meta-openembedded/meta-oe/recipes-multimedia/v4l2apps/yavta_git.bb
@@ -7,7 +7,6 @@
 SRCREV = "65f740aa1758531fd810339bc1b7d1d33666e28a"
 
 PV = "0.0"
-PR = "r2"
 S = "${WORKDIR}/git"
 
 EXTRA_OEMAKE = "-e MAKEFLAGS="
diff --git a/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.7.1.bb b/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.7.1.bb
index 2628b77..9fcd1e6 100644
--- a/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.7.1.bb
+++ b/meta-openembedded/meta-oe/recipes-navigation/geoclue/geoclue_2.7.1.bb
@@ -22,18 +22,18 @@
 # Without this line, package is declared a library and named libgeoclue*
 AUTO_LIBNAME_PKGS = ""
 
-PACKAGECONFIG ??= "3g modem-gps cdma nmea lib"
+PACKAGECONFIG ??= "3g modem-gps cdma nmea lib agent"
 PACKAGECONFIG[3g] = "-D3g-source=true,-D3g-source=false,modemmanager"
 PACKAGECONFIG[modem-gps] = "-Dmodem-gps-source=true,-Dmodem-gps-source=false,modemmanager"
 PACKAGECONFIG[cdma] = "-Dcdma-source=true,-Dcdma-source=false,modemmanager"
 PACKAGECONFIG[nmea] = "-Dnmea-source=true,-Dnmea-source=false,avahi,avahi-daemon"
 PACKAGECONFIG[lib] = "-Dlibgeoclue=true,-Dlibgeoclue=false"
+PACKAGECONFIG[agent] = "-Ddemo-agent=true,-Ddemo-agent=false,libnotify"
 
 GTKDOC_MESON_OPTION = "gtk-doc"
 
 EXTRA_OEMESON += " \
     -Ddbus-sys-dir=${sysconfdir}/dbus-1/system.d \
-    -Ddemo-agent=false \
 "
 
 USERADD_PACKAGES = "${PN}"
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit/0002-Add-attribute-declarations.patch b/meta-openembedded/meta-oe/recipes-security/audit/audit/0002-Add-attribute-declarations.patch
deleted file mode 100644
index 3491425..0000000
--- a/meta-openembedded/meta-oe/recipes-security/audit/audit/0002-Add-attribute-declarations.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 64cb48e1e5137b8a389c7528e611617a98389bc7 Mon Sep 17 00:00:00 2001
-From: Steve Grubb <ausearch.1@gmail.com>
-Date: Thu, 25 Jan 2024 15:14:51 -0500
-Subject: [PATCH] Add attribute declarations
-
-Upstream-Status: Backport
-[https://github.com/linux-audit/audit-userspace/commit/64cb48e1e5137b8a389c7528e611617a98389bc7]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- audisp/plugins/remote/queue.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/audisp/plugins/remote/queue.h b/audisp/plugins/remote/queue.h
-index 36b70d04..2c70e839 100644
---- a/audisp/plugins/remote/queue.h
-+++ b/audisp/plugins/remote/queue.h
-@@ -1,5 +1,5 @@
- /* queue.h -- a queue abstraction
-- * Copyright 2009, 2011 Red Hat Inc., Durham, North Carolina.
-+ * Copyright 2009, 2011 Red Hat Inc.
-  * All Rights Reserved.
-  *
-  * This library is free software; you can redistribute it and/or
-@@ -25,6 +25,7 @@
- #define QUEUE_HEADER
- 
- #include <sys/types.h>
-+#include "common.h"   // attribute decls
- 
- struct queue;
- 
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit_4.0.1.bb b/meta-openembedded/meta-oe/recipes-security/audit/audit_4.0.1.bb
new file mode 100644
index 0000000..96ed6ff
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-security/audit/audit_4.0.1.bb
@@ -0,0 +1,103 @@
+SUMMARY = "User space tools for kernel auditing"
+DESCRIPTION = "The audit package contains the user space utilities for \
+storing and searching the audit records generated by the audit subsystem \
+in the Linux kernel."
+HOMEPAGE = "http://people.redhat.com/sgrubb/audit/"
+SECTION = "base"
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+
+SRC_URI = "git://github.com/linux-audit/${BPN}-userspace.git;branch=master;protocol=https \
+           file://0001-Fixed-swig-host-contamination-issue.patch \
+           file://auditd \
+           file://audit-volatile.conf \
+          "
+
+SRC_URI:append:libc-musl = " file://0001-Replace-__attribute_malloc__-with-__attribute__-__ma.patch"
+
+S = "${WORKDIR}/git"
+SRCREV = "22ccbd984e493524050ac445f796e9a7e90e1149"
+
+inherit autotools python3targetconfig update-rc.d systemd
+
+UPDATERCPN = "auditd"
+INITSCRIPT_NAME = "auditd"
+INITSCRIPT_PARAMS = "defaults"
+
+SYSTEMD_PACKAGES = "auditd"
+SYSTEMD_SERVICE:auditd = "auditd.service audit-rules.service"
+
+DEPENDS = "python3 tcp-wrappers libcap-ng linux-libc-headers swig-native python3-setuptools-native coreutils-native"
+
+EXTRA_OECONF = " \
+        --with-libwrap \
+        --with-libcap-ng \
+        --with-python3 \
+        --with-arm \
+        --with-aarch64 \
+        --without-golang \
+        --disable-gssapi-krb5 \
+        --disable-zos-remote \
+        --sbindir=${base_sbindir} \
+        --runstatedir=/run \
+        "
+
+EXTRA_OEMAKE = " \
+        PYTHON=python3 \
+        pythondir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
+        pyexecdir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
+        STDINC='${STAGING_INCDIR}' \
+        "
+
+SUMMARY:audispd-plugins = "Plugins for the audit event dispatcher"
+DESCRIPTION:audispd-plugins = "The audispd-plugins package provides plugins for the real-time \
+interface to the audit system, audispd. These plugins can do things \
+like relay events to remote machines or analyze events for suspicious \
+behavior."
+
+PACKAGES =+ "audispd-plugins"
+PACKAGES += "auditd ${PN}-python"
+
+FILES:${PN} = "${sysconfdir}/libaudit.conf ${libdir}/libau*.so.*"
+FILES:auditd = "${bindir}/* ${base_sbindir}/* ${sysconfdir}/* ${datadir}/audit-rules/* ${libexecdir}/*"
+FILES:audispd-plugins = "${sysconfdir}/audit/audisp-remote.conf \
+        ${sysconfdir}/audit/plugins.d/au-remote.conf \
+        ${sysconfdir}/audit/plugins.d/syslog.conf \
+        ${base_sbindir}/audisp-remote \
+        ${base_sbindir}/audisp-syslog \
+        ${localstatedir}/spool/audit \
+        "
+FILES:${PN}-dbg += "${libdir}/python${PYTHON_BASEVERSION}/*/.debug"
+FILES:${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}"
+
+CONFFILES:auditd = "${sysconfdir}/audit/audit.rules"
+
+do_configure:prepend() {
+    sed -e 's|buf\[];|buf[0];|g'  ${STAGING_INCDIR}/linux/audit.h > ${S}/lib/audit.h
+    sed -i -e 's|#include <linux/audit.h>|#include "audit.h"|g' ${S}/lib/libaudit.h
+}
+
+do_install:append() {
+    sed -i -e 's|#include "audit.h"|#include <linux/audit.h>|g' ${D}${includedir}/libaudit.h
+
+    # Install default rules
+    install -d -m 750 ${D}/etc/audit
+    install -d -m 750 ${D}/etc/audit/rules.d
+
+    install -m 0640 ${S}/rules/10-base-config.rules ${D}/etc/audit/rules.d/audit.rules
+
+    # Based on the audit.spec "Copy default rules into place on new installation"
+    install -m 0640 ${D}/etc/audit/rules.d/audit.rules ${D}/etc/audit/audit.rules
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -D -m 0644 ${WORKDIR}/audit-volatile.conf ${D}${sysconfdir}/tmpfiles.d/audit.conf
+    fi
+
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+        install -D -m 0755 ${WORKDIR}/auditd ${D}/etc/init.d/auditd
+        rm -rf ${D}${libdir}/systemd
+    fi
+
+    # Create /var/spool/audit directory for audisp-remote
+    install -d -m 0700 ${D}${localstatedir}/spool/audit
+}
diff --git a/meta-openembedded/meta-oe/recipes-security/audit/audit_4.0.bb b/meta-openembedded/meta-oe/recipes-security/audit/audit_4.0.bb
deleted file mode 100644
index c8ab0d8..0000000
--- a/meta-openembedded/meta-oe/recipes-security/audit/audit_4.0.bb
+++ /dev/null
@@ -1,103 +0,0 @@
-SUMMARY = "User space tools for kernel auditing"
-DESCRIPTION = "The audit package contains the user space utilities for \
-storing and searching the audit records generated by the audit subsystem \
-in the Linux kernel."
-HOMEPAGE = "http://people.redhat.com/sgrubb/audit/"
-SECTION = "base"
-LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
-
-SRC_URI = "git://github.com/linux-audit/${BPN}-userspace.git;branch=master;protocol=https \
-           file://0001-Fixed-swig-host-contamination-issue.patch \
-           file://0002-Add-attribute-declarations.patch \
-           file://auditd \
-           file://audit-volatile.conf \
-          "
-
-SRC_URI:append:libc-musl = " file://0001-Replace-__attribute_malloc__-with-__attribute__-__ma.patch"
-
-S = "${WORKDIR}/git"
-SRCREV = "ae7d2830391c1115cebff6340ef3130b1b03ce45"
-
-inherit autotools python3targetconfig update-rc.d systemd
-
-UPDATERCPN = "auditd"
-INITSCRIPT_NAME = "auditd"
-INITSCRIPT_PARAMS = "defaults"
-
-SYSTEMD_PACKAGES = "auditd"
-SYSTEMD_SERVICE:auditd = "auditd.service audit-rules.service"
-
-DEPENDS = "python3 tcp-wrappers libcap-ng linux-libc-headers swig-native python3-setuptools-native coreutils-native"
-
-EXTRA_OECONF = " \
-        --with-libwrap \
-        --with-libcap-ng \
-        --with-python3 \
-        --with-arm \
-        --with-aarch64 \
-        --without-golang \
-        --disable-gssapi-krb5 \
-        --disable-zos-remote \
-        --sbindir=${base_sbindir} \
-        "
-
-EXTRA_OEMAKE = " \
-        PYTHON=python3 \
-        pythondir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
-        pyexecdir=${libdir}/python${PYTHON_BASEVERSION}/site-packages \
-        STDINC='${STAGING_INCDIR}' \
-        "
-
-SUMMARY:audispd-plugins = "Plugins for the audit event dispatcher"
-DESCRIPTION:audispd-plugins = "The audispd-plugins package provides plugins for the real-time \
-interface to the audit system, audispd. These plugins can do things \
-like relay events to remote machines or analyze events for suspicious \
-behavior."
-
-PACKAGES =+ "audispd-plugins"
-PACKAGES += "auditd ${PN}-python"
-
-FILES:${PN} = "${sysconfdir}/libaudit.conf ${libdir}/libau*.so.*"
-FILES:auditd = "${bindir}/* ${base_sbindir}/* ${sysconfdir}/* ${datadir}/audit-rules/* ${libexecdir}/*"
-FILES:audispd-plugins = "${sysconfdir}/audit/audisp-remote.conf \
-        ${sysconfdir}/audit/plugins.d/au-remote.conf \
-        ${sysconfdir}/audit/plugins.d/syslog.conf \
-        ${base_sbindir}/audisp-remote \
-        ${base_sbindir}/audisp-syslog \
-        ${localstatedir}/spool/audit \
-        "
-FILES:${PN}-dbg += "${libdir}/python${PYTHON_BASEVERSION}/*/.debug"
-FILES:${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}"
-
-CONFFILES:auditd = "${sysconfdir}/audit/audit.rules"
-
-do_configure:prepend() {
-    sed -e 's|buf\[];|buf[0];|g'  ${STAGING_INCDIR}/linux/audit.h > ${S}/lib/audit.h
-    sed -i -e 's|#include <linux/audit.h>|#include "audit.h"|g' ${S}/lib/libaudit.h
-}
-
-do_install:append() {
-    sed -i -e 's|#include "audit.h"|#include <linux/audit.h>|g' ${D}${includedir}/libaudit.h
-
-    # Install default rules
-    install -d -m 750 ${D}/etc/audit
-    install -d -m 750 ${D}/etc/audit/rules.d
-
-    install -m 0640 ${S}/rules/10-base-config.rules ${D}/etc/audit/rules.d/audit.rules
-
-    # Based on the audit.spec "Copy default rules into place on new installation"
-    install -m 0640 ${D}/etc/audit/rules.d/audit.rules ${D}/etc/audit/audit.rules
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        install -D -m 0644 ${WORKDIR}/audit-volatile.conf ${D}${sysconfdir}/tmpfiles.d/audit.conf
-    fi
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-        install -D -m 0755 ${WORKDIR}/auditd ${D}/etc/init.d/auditd
-        rm -rf ${D}${libdir}/systemd
-    fi
-
-    # Create /var/spool/audit directory for audisp-remote
-    install -d -m 0700 ${D}${localstatedir}/spool/audit
-}
diff --git a/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.24.10.bb b/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.24.10.bb
deleted file mode 100644
index abeb6e8..0000000
--- a/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.24.10.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-DESCRIPTION = "TENEX C Shell, an enhanced version of Berkeley csh \
-    The TENEX C Shell is an enhanced version of the Berkeley Unix C shell. \
-    It includes all features of 4.4BSD C shell, plus a command-line editor, \
-    programmable word completion, spelling correction and more."
-
-HOMEPAGE = "http://www.tcsh.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://Copyright;md5=575cf2715c3bf894e1f79aec1d4eaaf5"
-SECTION = "base"
-DEPENDS = "ncurses virtual/crypt gettext-native"
-SRC_URI = " \
-    https://astron.com/pub/${BPN}/${BP}.tar.gz \
-    file://0001-Enable-system-malloc-on-all-linux.patch \
-    file://0002-Add-debian-csh-scripts.patch \
-"
-SRC_URI[sha256sum] = "13475c0fbeb74139d33ed793bf00ffbbb2ac2dc9fb1d44467a410760aba36664"
-
-EXTRA_OEMAKE += "CC_FOR_GETHOST='${BUILD_CC}'"
-inherit autotools
-
-do_compile:prepend() {
-    oe_runmake CC_FOR_GETHOST='${BUILD_CC}' CFLAGS='${BUILD_CFLAGS}' LDFLAGS='${BUILD_LDFLAGS}' gethost
-}
-
-do_install:append () {
-    oe_runmake install.man DESTDIR=${D}
-
-    install -d ${D}${base_bindir}
-    if ! ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','true','false',d)}; then
-        ln -s /usr/bin/tcsh ${D}${base_bindir}/tcsh
-        ln -s /usr/bin/tcsh ${D}${base_bindir}/csh
-    fi
-    install -d ${D}${sysconfdir}/csh/login.d
-    install -m 0644 ${S}/csh.cshrc ${S}/csh.login ${S}/csh.logout ${S}/complete.tcsh ${D}${sysconfdir}
-    install -D -m 0644 ${S}/csh-mode.el ${D}${datadir}/emacs/site-lisp/csh-mode.el
-}
-
-FILES:${PN} += "${datadir}/emacs/site-lisp/csh-mode.el"
-
-
-pkg_postinst:${PN} () {
-#!/bin/sh -e
-echo /usr/bin/tcsh >> $D/etc/shells
-echo /usr/bin/csh >> $D/etc/shells
-}
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.24.11.bb b/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.24.11.bb
new file mode 100644
index 0000000..d04ba16
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-shells/tcsh/tcsh_6.24.11.bb
@@ -0,0 +1,46 @@
+DESCRIPTION = "TENEX C Shell, an enhanced version of Berkeley csh \
+    The TENEX C Shell is an enhanced version of the Berkeley Unix C shell. \
+    It includes all features of 4.4BSD C shell, plus a command-line editor, \
+    programmable word completion, spelling correction and more."
+
+HOMEPAGE = "http://www.tcsh.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://Copyright;md5=575cf2715c3bf894e1f79aec1d4eaaf5"
+SECTION = "base"
+DEPENDS = "ncurses virtual/crypt gettext-native"
+SRC_URI = " \
+    https://astron.com/pub/${BPN}/${BP}.tar.gz \
+    file://0001-Enable-system-malloc-on-all-linux.patch \
+    file://0002-Add-debian-csh-scripts.patch \
+"
+SRC_URI[sha256sum] = "b5a7b627abb3ef2e8d3a869bb675d0e927d850704447a1b2c77946c0d324799d"
+
+EXTRA_OEMAKE += "CC_FOR_GETHOST='${BUILD_CC}'"
+inherit autotools
+
+do_compile:prepend() {
+    oe_runmake CC_FOR_GETHOST='${BUILD_CC}' CFLAGS='${BUILD_CFLAGS}' LDFLAGS='${BUILD_LDFLAGS}' gethost
+}
+
+do_install:append () {
+    oe_runmake install.man DESTDIR=${D}
+
+    install -d ${D}${base_bindir}
+    if ! ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','true','false',d)}; then
+        ln -s /usr/bin/tcsh ${D}${base_bindir}/tcsh
+        ln -s /usr/bin/tcsh ${D}${base_bindir}/csh
+    fi
+    install -d ${D}${sysconfdir}/csh/login.d
+    install -m 0644 ${S}/csh.cshrc ${S}/csh.login ${S}/csh.logout ${S}/complete.tcsh ${D}${sysconfdir}
+    install -D -m 0644 ${S}/csh-mode.el ${D}${datadir}/emacs/site-lisp/csh-mode.el
+}
+
+FILES:${PN} += "${datadir}/emacs/site-lisp/csh-mode.el"
+
+
+pkg_postinst:${PN} () {
+#!/bin/sh -e
+echo /usr/bin/tcsh >> $D/etc/shells
+echo /usr/bin/csh >> $D/etc/shells
+}
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_1.1.11.bb b/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_1.1.11.bb
new file mode 100644
index 0000000..a48195a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_1.1.11.bb
@@ -0,0 +1,25 @@
+SUMMARY = "[Boost::ext].SML (State Machine Language)"
+DESCRIPTION = "Your scalable C++14 one header only State Machine Library with no dependencies"
+HOMEPAGE = "https://github.com/boost-ext/sml"
+BUGTRACKER = "https://github.com/boost-ext/sml/issues"
+SECTION = "libs"
+LICENSE = "BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=e4224ccaecb14d942c71d31bef20d78c"
+
+DEPENDS += "boost qemu-native"
+
+SRC_URI = "git://github.com/boost-ext/sml.git;protocol=https;branch=master"
+SRCREV = "b7df6180d20422b2724d26007aebb24066f2a6a9"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+# Building benchmarks takes a lot of time and requires additional headers (euml2.hpp)
+# Building examples fail with gcc-12
+EXTRA_OECMAKE:append = " -DSML_BUILD_BENCHMARKS:bool=OFF -DSML_BUILD_EXAMPLES=OFF"
+
+# [boost::ext].XML is a header only C++ library, so the main package will be empty.
+ALLOW_EMPTY:${PN} = "1"
+
+BBCLASSEXTEND = "nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb b/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
deleted file mode 100644
index 378be1a..0000000
--- a/meta-openembedded/meta-oe/recipes-support/boost-sml/boost-sml_git.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "[Boost::ext].SML (State Machine Language)"
-DESCRIPTION = "Your scalable C++14 one header only State Machine Library with no dependencies"
-HOMEPAGE = "https://github.com/boost-ext/sml"
-BUGTRACKER = "https://github.com/boost-ext/sml/issues"
-SECTION = "libs"
-LICENSE = "BSL-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=e4224ccaecb14d942c71d31bef20d78c"
-
-DEPENDS += "boost qemu-native"
-
-PV = "1.1.9"
-
-SRC_URI = "git://github.com/boost-ext/sml.git;protocol=https;branch=master"
-SRCREV = "751b6f10b73c086e0e8850a7ef5b5aea2136831b"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-# Building benchmarks takes a lot of time and requires additional headers (euml2.hpp)
-# Building examples fail with gcc-12
-EXTRA_OECMAKE:append = " -DSML_BUILD_BENCHMARKS:bool=OFF -DSML_BUILD_EXAMPLES=OFF"
-
-# [boost::ext].XML is a header only C++ library, so the main package will be empty.
-ALLOW_EMPTY:${PN} = "1"
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.26.0.bb b/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.26.0.bb
deleted file mode 100644
index 450d466..0000000
--- a/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.26.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (c) 2012-2014 LG Electronics, Inc.
-SUMMARY = "c-ares is a C library that resolves names asynchronously."
-HOMEPAGE = "http://daniel.haxx.se/projects/c-ares/"
-SECTION = "libs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=fdbc58a6da11a9f68aa73c453818decc"
-
-SRC_URI = "https://c-ares.org/download/${BPN}-${PV}.tar.gz \
-           file://run-ptest"
-SRC_URI[sha256sum] = "bed58c4f02b009080ebda6c2467ba469722ac6aebbf4497dc44a83d8c6194e50"
-
-PACKAGECONFIG ?= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
-PACKAGECONFIG[manpages] = ""
-PACKAGECONFIG[tests] = "-DCARES_BUILD_TESTS=ON,-DCARES_BUILD_TESTS=OFF,googletest"
-
-inherit cmake manpages pkgconfig ptest
-
-EXTRA_OECMAKE = "-DCARES_STATIC=${@ 'ON' if d.getVar('DISABLE_STATIC') == '' else 'OFF' }"
-
-do_install_ptest () {
-	install -d ${D}${PTEST_PATH}
-	install -m 0755 ${B}/bin/arestest ${D}${PTEST_PATH}
-	install -m 0755 ${WORKDIR}/run-ptest ${D}${PTEST_PATH}
-}
-
-PACKAGE_BEFORE_PN = "${PN}-utils"
-
-FILES:${PN}-utils = "${bindir}"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.27.0.bb b/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.27.0.bb
new file mode 100644
index 0000000..2d91ac1
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/c-ares/c-ares_1.27.0.bb
@@ -0,0 +1,30 @@
+# Copyright (c) 2012-2014 LG Electronics, Inc.
+SUMMARY = "c-ares is a C library that resolves names asynchronously."
+HOMEPAGE = "http://daniel.haxx.se/projects/c-ares/"
+SECTION = "libs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=fdbc58a6da11a9f68aa73c453818decc"
+
+SRC_URI = "https://c-ares.org/download/${BPN}-${PV}.tar.gz \
+           file://run-ptest"
+SRC_URI[sha256sum] = "0a72be66959955c43e2af2fbd03418e82a2bd5464604ec9a62147e37aceb420b"
+
+PACKAGECONFIG ?= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)}"
+PACKAGECONFIG[manpages] = ""
+PACKAGECONFIG[tests] = "-DCARES_BUILD_TESTS=ON,-DCARES_BUILD_TESTS=OFF,googletest"
+
+inherit cmake manpages pkgconfig ptest
+
+EXTRA_OECMAKE = "-DCARES_STATIC=${@ 'ON' if d.getVar('DISABLE_STATIC') == '' else 'OFF' }"
+
+do_install_ptest () {
+	install -d ${D}${PTEST_PATH}
+	install -m 0755 ${B}/bin/arestest ${D}${PTEST_PATH}
+	install -m 0755 ${WORKDIR}/run-ptest ${D}${PTEST_PATH}
+}
+
+PACKAGE_BEFORE_PN = "${PN}-utils"
+
+FILES:${PN}-utils = "${bindir}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb b/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
index 33b31a2..dd5489e 100644
--- a/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
+++ b/meta-openembedded/meta-oe/recipes-support/eject/eject_2.1.5.bb
@@ -18,7 +18,6 @@
 
 S = "${WORKDIR}/${BPN}"
 
-PR = "r1"
 
 do_compile:prepend() {
     # PO subdir must be in build directory
diff --git a/meta-openembedded/meta-oe/recipes-support/emacs/files/0001-largefile.m4-Update-from-latest-gnulib.patch b/meta-openembedded/meta-oe/recipes-support/emacs/files/0001-largefile.m4-Update-from-latest-gnulib.patch
deleted file mode 100644
index 72c0c0e..0000000
--- a/meta-openembedded/meta-oe/recipes-support/emacs/files/0001-largefile.m4-Update-from-latest-gnulib.patch
+++ /dev/null
@@ -1,390 +0,0 @@
-From c2bea3d033b5abd44698722d8eedc2b87373b33b Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 2 Apr 2023 10:42:43 -0700
-Subject: [PATCH] largefile.m4: Update from latest gnulib
-
-brings in latest largefile specific changes which autoconf 2.72+ requires
-
-Upstream-Status: Inappropriate [Drop it with new emacs release which has it]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- m4/largefile.m4 | 330 ++++++++++++++++++++++++++++++++++++++----------
- 1 file changed, 263 insertions(+), 67 deletions(-)
-
-diff --git a/m4/largefile.m4 b/m4/largefile.m4
-index 3e8b5e3..7fb81b8 100644
---- a/m4/largefile.m4
-+++ b/m4/largefile.m4
-@@ -1,7 +1,7 @@
- # Enable large files on systems where this is not the default.
- # Enable support for files on Linux file systems with 64-bit inode numbers.
- 
--# Copyright 1992-1996, 1998-2022 Free Software Foundation, Inc.
-+# Copyright 1992-1996, 1998-2023 Free Software Foundation, Inc.
- # This file is free software; the Free Software Foundation
- # gives unlimited permission to copy and/or distribute it,
- # with or without modifications, as long as this notice is preserved.
-@@ -10,8 +10,9 @@
- # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this
- # setting of _LARGEFILE_SOURCE is needed so that <stdio.h> declares fseeko
- # and ftello in C++ mode as well.
-+# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038.
- AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
--[
-+ m4_ifndef([AC_SYS_YEAR2038], [[
-   AC_REQUIRE([AC_CANONICAL_HOST])
-   AC_FUNC_FSEEKO
-   case "$host_os" in
-@@ -20,10 +21,10 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
-         [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).])
-       ;;
-   esac
--])
-+ ]])
-+)
- 
--# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+
--# with _TIME_BITS.  Also, work around a problem in autoconf <= 2.69:
-+# Work around a problem in autoconf <= 2.69:
- # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
- # or configures them incorrectly in some cases.
- m4_version_prereq([2.70], [], [
-@@ -43,33 +44,258 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES],
- ])
- ])# m4_version_prereq 2.70
- 
-+# Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier.
-+# This code is taken from Autoconf master.
-+m4_ifndef([AC_SYS_YEAR2038], [
-+
-+# _AC_SYS_YEAR2038_TEST_CODE
-+# --------------------------
-+# C code used to probe for time_t that can represent time points more
-+# than 2**31 - 1 seconds after the epoch.  With the usual Unix epoch,
-+# these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian),
-+# hence the name.
-+AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE],
-+[[
-+  #include <time.h>
-+  /* Check that time_t can represent 2**32 - 1 correctly.  */
-+  #define LARGE_TIME_T \\
-+    ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))
-+  int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535
-+                           && LARGE_TIME_T % 65537 == 0)
-+                          ? 1 : -1];
-+]])
-+
-+# _AC_SYS_YEAR2038_OPTIONS
-+# ------------------------
-+# List of known ways to enable support for large time_t.  If you change
-+# this list you probably also need to change the AS_CASE at the end of
-+# _AC_SYS_YEAR2038_PROBE.
-+m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
-+    ["none needed"]                   dnl 64-bit and newer 32-bit Unix
-+    ["-D_TIME_BITS=64"]               dnl glibc 2.34 with some 32-bit ABIs
-+    ["-D__MINGW_USE_VC2005_COMPAT"]   dnl 32-bit MinGW
-+    ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"]
-+                                      dnl 32-bit MinGW (misconfiguration)
-+))
-+
-+# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED])
-+# -----------------------------------------
-+# Subroutine of AC_SYS_YEAR2038.  Probe for time_t that can represent
-+# time points more than 2**31 - 1 seconds after the epoch (dates after
-+# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts
-+# to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to
-+# "support not detected" if none of them worked.  Then, set compilation
-+# options and #defines as necessary to enable large time_t support.
-+#
-+# Note that we do not test whether mktime, localtime, etc. handle
-+# large values of time_t correctly, as that would require use of
-+# AC_TRY_RUN.  Note also that some systems only support large time_t
-+# together with large off_t.
-+#
-+# If support is not detected, the behavior depends on which of the
-+# top-level AC_SYS_YEAR2038 macros was used (see below).
-+#
-+# If you change this macro you may also need to change
-+# _AC_SYS_YEAR2038_OPTIONS.
-+AC_DEFUN([_AC_SYS_YEAR2038_PROBE],
-+[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038],
-+  [ac_cv_sys_year2038_opts],
-+  [ac_save_CPPFLAGS="$CPPFLAGS"
-+  ac_opt_found=no
-+  for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do
-+    AS_IF([test x"$ac_opt" != x"none needed"],
-+      [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"])
-+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])],
-+      [ac_cv_sys_year2038_opts="$ac_opt"
-+      ac_opt_found=yes])
-+    test $ac_opt_found = no || break
-+  done
-+  CPPFLAGS="$ac_save_CPPFLAGS"
-+  test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"])
-+
-+ac_have_year2038=yes
-+AS_CASE([$ac_cv_sys_year2038_opts],
-+  ["none needed"], [],
-+  ["support not detected"],
-+    [ac_have_year2038=no
-+     AS_CASE([$enable_year2038],
-+      [yes],
-+        [# If we're not cross compiling and 'touch' works with a large
-+        # timestamp, then we can presume the system supports wider time_t
-+        # *somehow* and we just weren't able to detect it.  One common
-+        # case that we deliberately *don't* probe for is a system that
-+        # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
-+        # wide time_t.  (It would be inappropriate for us to override an
-+        # intentional use of -m32.)  Error out, demanding use of
-+        # --disable-year2038 if this is intentional.
-+        AS_IF([test $cross_compiling = no],
-+          [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
-+            [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
-+              [*'Feb  7  2106'* | *'Feb  7 17:10'*],
-+              [AC_MSG_FAILURE(m4_text_wrap(
-+      [this system appears to support timestamps after January 2038,
-+       but no mechanism for enabling wide 'time_t' was detected.
-+       Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.)
-+       To proceed with 32-bit time_t, configure with '--disable-year2038'.],
-+      [], [], [55]))])])])])],
-+
-+  ["-D_TIME_BITS=64"],
-+    [AC_DEFINE([_TIME_BITS], [64],
-+      [Number of bits in time_t, on hosts where this is settable.])],
-+
-+  ["-D__MINGW_USE_VC2005_COMPAT=1"],
-+    [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
-+      [Define to 1 on platforms where this makes time_t a 64-bit type.])],
- 
--# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
--#                               CACHE-VAR,
--#                               DESCRIPTION,
--#                               PROLOGUE, [FUNCTION-BODY])
--# --------------------------------------------------------
--m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE],
--[AC_CACHE_CHECK([for $1 value needed for large files], [$3],
--[while :; do
--  m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
--    [AC_LANG_PROGRAM([$5], [$6])],
--    [$3=no; break])
--  m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
--    [AC_LANG_PROGRAM([#undef $1
--#define $1 $2
--$5], [$6])],
--    [$3=$2; break])
--  $3=unknown
--  break
--done])
--case $$3 in #(
--  no | unknown) ;;
--  *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);;
--esac
--rm -rf conftest*[]dnl
--])# _AC_SYS_LARGEFILE_MACRO_VALUE
-+  ["-U_USE_32_BIT_TIME_T"*],
-+    [AC_MSG_FAILURE(m4_text_wrap(
-+      [the 'time_t' type is currently forced to be 32-bit.
-+       It will stop working after January 2038.
-+       Remove _USE_32BIT_TIME_T from the compiler flags.],
-+      [], [], [55]))],
-+
-+  [AC_MSG_ERROR(
-+    [internal error: bad value for \$ac_cv_sys_year2038_opts])])
-+])
-+
-+# _AC_SYS_YEAR2038_ENABLE
-+# -----------------------
-+# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN.
-+# Depending on which of the YEAR2038 macros was used, add either an
-+# --enable-year2038, or a --disable-year2038, or no option at all to
-+# the configure script.  Note that this is expanded very late and
-+# therefore there cannot be any code in the AC_ARG_ENABLE.  The
-+# default value for enable_year2038 is emitted unconditionally
-+# because the generated code always looks at this variable.
-+m4_define([_AC_SYS_YEAR2038_ENABLE],
-+[m4_divert_text([DEFAULTS],
-+  m4_provide_if([AC_SYS_YEAR2038],
-+    [enable_year2038=yes],
-+    [enable_year2038=no]))]dnl
-+[AC_ARG_ENABLE([year2038],
-+  m4_provide_if([AC_SYS_YEAR2038],
-+    [AS_HELP_STRING([--disable-year2038],
-+      [do not support timestamps after 2038])],
-+    [AS_HELP_STRING([--enable-year2038],
-+      [support timestamps after 2038])]))])
-+
-+# _AC_SYS_YEAR2038_OPT_IN
-+# -----------------------
-+# If the --enable-year2038 option is given to configure, attempt to
-+# detect and activate support for large time_t on 32-bit systems.
-+# This macro is automatically invoked by AC_SYS_LARGEFILE when large
-+# *file* support is detected.  It does not AC_REQUIRE AC_SYS_LARGEFILE
-+# to avoid a dependency loop, and is therefore unsafe to expose as a
-+# documented macro.
-+AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
-+[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
-+  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
-+  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
-+])])
-+
-+# AC_SYS_YEAR2038
-+# ---------------
-+# Attempt to detect and activate support for large time_t.
-+# On systems where time_t is not always 64 bits, this probe can be
-+# skipped by passing the --disable-year2038 option to configure.
-+AC_DEFUN([AC_SYS_YEAR2038],
-+[AC_REQUIRE([AC_SYS_LARGEFILE])]dnl
-+[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
-+  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
-+  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
-+])])
-+
-+# _AC_SYS_LARGEFILE_TEST_CODE
-+# ---------------------------
-+# C code used to probe for large file support.
-+m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
-+[@%:@include <sys/types.h>
-+ /* Check that off_t can represent 2**63 - 1 correctly.
-+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+    since some C++ compilers masquerading as C compilers
-+    incorrectly reject 9223372036854775807.  */
-+@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-+  int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
-+		       && LARGE_OFF_T % 2147483647 == 1)
-+		      ? 1 : -1]];[]dnl
-+])
-+
-+# _AC_SYS_LARGEFILE_OPTIONS
-+# -------------------------
-+# List of known ways to enable support for large files.  If you change
-+# this list you probably also need to change the AS_CASE at the end of
-+# _AC_SYS_LARGEFILE_PROBE.
-+m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize(
-+    ["none needed"]                   dnl Most current systems
-+    ["-D_FILE_OFFSET_BITS=64"]        dnl X/Open LFS spec
-+    ["-D_LARGE_FILES=1"]              dnl AIX (which versions?)
-+    ["-n32"]                          dnl Irix 6.2 w/ SGI compiler
-+))
-+
-+# _AC_SYS_LARGEFILE_PROBE
-+# -----------------------
-+# Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set
-+# the cache variable ac_cv_sys_largefile_opts to one of the values in
-+# the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if
-+# none of the options in that list worked.  Then, set compilation
-+# options and #defines as necessary to enable large file support.
-+#
-+# If large file support is not detected, the behavior depends on which of
-+# the top-level AC_SYS_LARGEFILE macros was used (see below).
-+#
-+# If you change this macro you may also need to change
-+# _AC_SYS_LARGEFILE_OPTIONS.
-+AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
-+[AC_CACHE_CHECK([for $CC option to enable large file support],
-+  [ac_cv_sys_largefile_opts],
-+  [ac_save_CC="$CC"
-+  ac_opt_found=no
-+  for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do
-+    AS_IF([test x"$ac_opt" != x"none needed"],
-+      [CC="$ac_save_CC $ac_opt"])
-+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])],
-+      [ac_cv_sys_largefile_opts="$ac_opt"
-+      ac_opt_found=yes])
-+    test $ac_opt_found = no || break
-+  done
-+  CC="$ac_save_CC"
-+  test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"])
-+
-+ac_have_largefile=yes
-+AS_CASE([$ac_cv_sys_largefile_opts],
-+  ["none needed"], [],
-+  ["support not detected"],
-+    [ac_have_largefile=no],
-+
-+  ["-D_FILE_OFFSET_BITS=64"],
-+    [AC_DEFINE([_FILE_OFFSET_BITS], [64],
-+      [Number of bits in a file offset, on hosts where this is settable.])],
-+
-+  ["-D_LARGE_FILES=1"],
-+    [AC_DEFINE([_LARGE_FILES], [1],
-+      [Define to 1 on platforms where this makes off_t a 64-bit type.])],
-+
-+  ["-n32"],
-+    [CC="$CC -n32"],
-+
-+  [AC_MSG_ERROR(
-+    [internal error: bad value for \$ac_cv_sys_largefile_opts])])
-+
-+_AC_SYS_YEAR2038_OPT_IN
-+])
- 
-+# _AC_SYS_LARGEFILE_ENABLE
-+# ------------------------
-+# Subroutine of AC_SYS_LARGEFILE.  Note that this
-+# is expanded very late and therefore there cannot be any code in the
-+# AC_ARG_ENABLE.  The default value for enable_largefile is emitted
-+# unconditionally because the generated shell code always looks at
-+# this variable.
-+m4_define([_AC_SYS_LARGEFILE_ENABLE],
-+[m4_divert_text([DEFAULTS],
-+  enable_largefile=yes)]dnl
-+[AC_ARG_ENABLE([largefile],
-+  [AS_HELP_STRING([--disable-largefile], [omit support for large files])])])
- 
- # AC_SYS_LARGEFILE
- # ----------------
-@@ -80,44 +306,14 @@ rm -rf conftest*[]dnl
- # Additionally, on Linux file systems with 64-bit inodes a file that happens
- # to have a 64-bit inode number cannot be accessed by 32-bit applications on
- # Linux x86/x86_64.  This can occur with file systems such as XFS and NFS.
-+# This macro allows configuration to continue if the system doesn't support
-+# large files.
- AC_DEFUN([AC_SYS_LARGEFILE],
--[AC_ARG_ENABLE(largefile,
--               [  --disable-largefile     omit support for large files])
--AS_IF([test "$enable_largefile" != no],
-- [AC_CACHE_CHECK([for special C compiler options needed for large files],
--    ac_cv_sys_largefile_CC,
--    [ac_cv_sys_largefile_CC=no
--     if test "$GCC" != yes; then
--       ac_save_CC=$CC
--       while :; do
--         # IRIX 6.2 and later do not support large files by default,
--         # so use the C compiler's -n32 option if that helps.
--         AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
--         AC_COMPILE_IFELSE([], [break])
--         CC="$CC -n32"
--         AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
--         break
--       done
--       CC=$ac_save_CC
--       rm -f conftest.$ac_ext
--    fi])
--  if test "$ac_cv_sys_largefile_CC" != no; then
--    CC=$CC$ac_cv_sys_largefile_CC
--  fi
--
--  _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
--    ac_cv_sys_file_offset_bits,
--    [Number of bits in a file offset, on hosts where this is settable.],
--    [_AC_SYS_LARGEFILE_TEST_INCLUDES])
--  AS_CASE([$ac_cv_sys_file_offset_bits],
--    [unknown],
--      [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1],
--         [ac_cv_sys_large_files],
--         [Define for large files, on AIX-style hosts.],
--         [_AC_SYS_LARGEFILE_TEST_INCLUDES])],
--    [64],
--      [gl_YEAR2038_BODY([])])])
--])# AC_SYS_LARGEFILE
-+[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
-+  AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
-+  AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
-+])])
-+])# m4_ifndef AC_SYS_YEAR2038
- 
- # Enable large files on systems where this is implemented by Gnulib, not by the
- # system headers.
--- 
-2.40.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.21.bb b/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.21.bb
index 4a5227f..646dcb2 100644
--- a/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.21.bb
+++ b/meta-openembedded/meta-oe/recipes-support/farsight/libnice_0.1.21.bb
@@ -18,14 +18,14 @@
 PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,gstreamer1.0"
 PACKAGECONFIG[introspection] = "-Dintrospection=enabled,-Dintrospection=disabled,"
 
-EXTRA_OEMESON = "-Dgstreamer=disabled"
-
 GTKDOC_MESON_OPTION = "gtk_doc"
 GTKDOC_MESON_ENABLE_FLAG = "enabled"
 GTKDOC_MESON_DISABLE_FLAG = "disabled"
 
 inherit meson gtk-doc gobject-introspection
 
+EXTRA_OEMESON = "-Dexamples=disabled -Dtests=disabled"
+
 FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
 FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.la"
 FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
diff --git a/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb b/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
index 034c287..aa5f631 100644
--- a/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fbset/fbset-modes.bb
@@ -4,7 +4,6 @@
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
 
 PV = "0.1.0"
-PR = "r6"
 
 SRC_URI = "file://fb.modes"
 S = "${WORKDIR}"
diff --git a/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb b/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
index 9870ee7..690fee0 100644
--- a/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fbset/fbset_2.1.bb
@@ -12,7 +12,6 @@
 RRECOMMENDS:${PN} = "fbset-modes"
 DEPENDS = "bison-native flex-native"
 
-PR = "r4"
 
 SRC_URI = "${DEBIAN_MIRROR}/main/f/fbset/fbset_2.1.orig.tar.gz \
            file://makefile.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
index 33e8279..af7117d 100644
--- a/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fftw/fftw_3.3.10.bb
@@ -100,4 +100,4 @@
 RDEPENDS:${PN}-ptest += "perl"
 RDEPENDS:${PN}-ptest:remove = "fftw"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/fmt/fmt_10.2.1.bb b/meta-openembedded/meta-oe/recipes-support/fmt/fmt_10.2.1.bb
index c2f19c4..1437eb4 100644
--- a/meta-openembedded/meta-oe/recipes-support/fmt/fmt_10.2.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/fmt/fmt_10.2.1.bb
@@ -9,7 +9,7 @@
 
 S = "${WORKDIR}/git"
 
-inherit cmake ptest
+inherit cmake
 
 EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp3_3.4.0.bb b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp3_3.4.0.bb
new file mode 100644
index 0000000..537d192
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/freerdp/freerdp3_3.4.0.bb
@@ -0,0 +1,61 @@
+DESCRIPTION = "FreeRDP RDP client & server library"
+HOMEPAGE = "http://www.freerdp.com"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS = "openssl libusb1 uriparser cairo icu pkcs11-helper zlib jpeg"
+
+inherit pkgconfig cmake
+
+SRCREV = "708f3764897e06297469a7b0507b3c9ecc041ad7"
+SRC_URI = "git://github.com/FreeRDP/FreeRDP.git;branch=master;protocol=https"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= " \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'pam pulseaudio wayland x11', d)} \
+    ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'ffmpeg', '', d)} \
+    gstreamer cups pcsc \
+"
+
+EXTRA_OECMAKE = " \
+    -DRDTK_FORCE_STATIC_BUILD=ON \
+    -DUWAC_FORCE_STATIC_BUILD=ON \
+    -DWITH_ADD=ON \
+    -DWITH_BINARY_VERSIONING=ON \
+    -DWITH_CHANNELS=ON \
+    -DWITH_CLIENT_CHANNELS=ON \
+    -DWITH_JPEG=ON \
+    -DWITH_PKCS11=ON \
+    -DWITH_SERVER_CHANNELS=ON \
+    -DWITH_SERVER=ON \
+    -DPKG_CONFIG_RELOCATABLE=OFF \
+    -DWITH_ALSA=OFF \
+    -DWITH_CLIENT_SDL=OFF \
+    -DWITH_SAMPLE=OFF \
+ "
+
+X11_DEPS = "virtual/libx11 libxinerama libxext libxcursor libxv libxi libxrender libxfixes libxdamage libxrandr libxkbfile"
+PACKAGECONFIG[x11] = "-DWITH_X11=ON -DWITH_XINERAMA=ON -DWITH_XEXT=ON -DWITH_XCURSOR=ON -DWITH_XV=ON -DWITH_XI=ON -DWITH_XRENDER=ON -DWITH_XFIXES=ON -DWITH_XDAMAGE=ON -DWITH_XRANDR=ON -DWITH_XKBFILE=ON,-DWITH_X11=OFF -DWITH_SHADOW=OFF,${X11_DEPS}"
+PACKAGECONFIG[wayland] = "-DWITH_WAYLAND=ON,-DWITH_WAYLAND=OFF,wayland wayland-native libxkbcommon"
+PACKAGECONFIG[pam] = "-DWITH_PAM=ON,-DWITH_PAM=OFF,libpam"
+PACKAGECONFIG[pulseaudio] = "-DWITH_PULSEAUDIO=ON,-DWITH_PULSEAUDIO=OFF,pulseaudio"
+PACKAGECONFIG[gstreamer] = "-DWITH_GSTREAMER_1_0=ON,-DWITH_GSTREAMER_1_0=OFF,gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG[cups] = "-DWITH_CUPS=ON,-DWITH_CUPS=OFF,cups"
+PACKAGECONFIG[fuse] = "-DWITH_FUSE=ON,-DWITH_FUSE=OFF,fuse3,fuse3"
+PACKAGECONFIG[pcsc] = "-DWITH_PCSC=ON,-DWITH_PCSC=OFF,pcsc-lite"
+PACKAGECONFIG[manpages] = "-DWITH_MANPAGES=ON,-DWITH_MANPAGES=OFF, libxslt-native docbook-xsl-stylesheets-native"
+PACKAGECONFIG[ffmpeg] = "-DWITH_DSP_FFMPEG=ON -DWITH_FFMPEG=ON -DWITH_SWSCALE=ON, -DWITH_DSP_FFMPEG=OFF -DWITH_FFMPEG=OFF -DWITH_SWSCALE=OFF,ffmpeg"
+PACKAGECONFIG[krb5] = "-DWITH_KRB5=ON -DWITH_KRB5_NO_NTLM_FALLBACK=OFF,-DWITH_KRB5=OFF,krb5"
+PACKAGECONFIG[openh264] = "-DWITH_OPENH264=ON,-DWITH_OPENH264=OFF,openh264"
+PACKAGECONFIG[opencl] = "-DWITH_OPENCL=ON,-DWITH_OPENCL=OFF,opencl-icd-loader"
+PACKAGECONFIG[lame] = "-DWITH_LAME=ON,-DWITH_LAME=OFF,lame"
+PACKAGECONFIG[faad] = "-DWITH_FAAD=ON,-DWITH_FAAD=OFF,faad2"
+PACKAGECONFIG[faac] = "-DWITH_FAAC=ON,-DWITH_FAAC=OFF,faac"
+
+do_configure:append() {
+    sed -i -e 's|${WORKDIR}||g' ${B}/include/freerdp/buildflags.h
+    sed -i -e 's|${WORKDIR}||g' ${B}/winpr/include/winpr/buildflags.h
+}
+
+FILES:${PN} += "${datadir}"
diff --git a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-12-18.bb b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-12-18.bb
deleted file mode 100644
index 9e09b97..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_2018-12-18.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "The GNU portability library"
-DESCRIPTION = "A collection of software subroutines which are designed to \
-be usable on many operating systems. The goal of the project \
-is to make it easy for free software authors to make their \
-software run on many operating systems. Since source is designed \
-to be copied from gnulib, it is not a library per-se, as much \
-as a collection of portable idioms to be used in other projects."
-
-HOMEPAGE = "http://www.gnu.org/software/gnulib/"
-SECTION = "devel"
-LICENSE = "LGPL-2.0-or-later"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=56a22a6e5bcce45e2c8ac184f81412b5"
-SRCREV = "0d6e3307bbdb8df4d56043d5f373eeeffe4cbef3"
-
-SRC_URI = "git://git.savannah.gnu.org/git/gnulib.git;branch=master;protocol=https \
-"
-
-S = "${WORKDIR}/git"
-
-do_install () {
-    install -d ${D}/${datadir}/gnulib
-    cp --no-preserve=ownership --recursive ${S}/* ${D}/${datadir}/gnulib/
-    cp --no-preserve=ownership --recursive ${S}/.git ${D}/${datadir}/gnulib/
-}
-
-do_patch[noexec] = "1"
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-do_package[noexec] = "1"
-do_packagedata[noexec] = "1"
-deltask package_write_ipk
-deltask package_write_deb
-deltask package_write_rpm
-deltask do_deploy_archives 
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_202401.bb b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_202401.bb
new file mode 100644
index 0000000..41675d3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gnulib/gnulib_202401.bb
@@ -0,0 +1,37 @@
+SUMMARY = "The GNU portability library"
+DESCRIPTION = "A collection of software subroutines which are designed to \
+be usable on many operating systems. The goal of the project \
+is to make it easy for free software authors to make their \
+software run on many operating systems. Since source is designed \
+to be copied from gnulib, it is not a library per-se, as much \
+as a collection of portable idioms to be used in other projects."
+
+HOMEPAGE = "http://www.gnu.org/software/gnulib/"
+SECTION = "devel"
+LICENSE = "LGPL-2.0-or-later"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=56a22a6e5bcce45e2c8ac184f81412b5"
+SRCREV = "c99c8d491850dc3a6e0b8604a2729d8bc5c0eff1"
+
+SRC_URI = "git://git.savannah.gnu.org/git/gnulib.git;branch=stable-${PV};protocol=https \
+"
+
+S = "${WORKDIR}/git"
+
+do_install () {
+    install -d ${D}/${datadir}/gnulib
+    cp --no-preserve=ownership --recursive ${S}/* ${D}/${datadir}/gnulib/
+    cp --no-preserve=ownership --recursive ${S}/.git ${D}/${datadir}/gnulib/
+}
+
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+do_package[noexec] = "1"
+do_packagedata[noexec] = "1"
+deltask package_write_ipk
+deltask package_write_deb
+deltask package_write_rpm
+deltask do_deploy_archives 
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.16.bb b/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.16.bb
deleted file mode 100644
index 70c7275..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.16.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Simple Go-based setuid+setgid+setgroups+exec"
-HOMEPAGE = "https://github.com/tianon/gosu"
-DESCRIPTION = "This is a simple tool grown out of the simple fact that su and sudo have very strange and often annoying TTY and signal-forwarding behavior."
-LICENSE = "Apache-2.0 "
-LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-GO_IMPORT = "github.com/tianon/gosu"
-SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https \
-           git://github.com/opencontainers/runc;name=runc;destsuffix=${S}/src/github.com/opencontainers/runc;branch=main;protocol=https \
-"
-SRCREV = "0e7347714352cd7f2e5edc9d2cf838d9934e6036"
-#v1.1.0
-SRCREV_runc = "067aaf8548d78269dcb2c13b856775e27c410f9c"
-
-SRCREV_FORMAT .= "_runc"
-
-inherit go
-
-CGO_ENABLED = "1"
-
-do_compile:prepend() {
-    # New Go versions has Go modules support enabled by default
-    export GO111MODULE=off
-}
-
-RDEPENDS:${PN}-dev += "bash"
diff --git a/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.17.bb b/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.17.bb
new file mode 100644
index 0000000..a29d6bc
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gosu/gosu_1.17.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Simple Go-based setuid+setgid+setgroups+exec"
+HOMEPAGE = "https://github.com/tianon/gosu"
+DESCRIPTION = "This is a simple tool grown out of the simple fact that su and sudo have very strange and often annoying TTY and signal-forwarding behavior."
+LICENSE = "Apache-2.0 "
+LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+GO_IMPORT = "github.com/tianon/gosu"
+SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https \
+           git://github.com/moby/sys;name=user;destsuffix=${S}/src/github.com/moby/sys;branch=main;protocol=https \
+           git://github.com/golang/sys;name=sys;destsuffix=${S}/src/golang.org/x/sys;branch=master;protocol=https \
+"
+SRCREV = "0d1847490b448a17eb347e5e357f2c0478df87ad"
+#v0.1.0
+SRCREV_user = "c0711cde08c8fa33857a2c28721659267f49b5e2"
+#v0.1.0
+SRCREV_sys = "95e765b1cc43ac521bd4fd501e00774e34401449"
+
+SRCREV_FORMAT .= "_user_sys"
+
+inherit go
+
+CGO_ENABLED = "1"
+
+do_compile:prepend() {
+    # New Go versions has Go modules support enabled by default
+    export GO111MODULE=off
+}
+
+RDEPENDS:${PN}-dev += "bash"
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Define-off64_t-as-off_t-on-musl.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Define-off64_t-as-off_t-on-musl.patch
deleted file mode 100644
index 2b782c2..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Define-off64_t-as-off_t-on-musl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 41260e21e271eb1dc8b34f952ea3f90a0dc35e9e Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 25 Dec 2022 20:01:29 -0800
-Subject: [PATCH] Define off64_t as off_t on musl
-
-Musl's default bitlength for off_t is always 64bit therefore define
-off64_t as off_t on musl
-
-Upstream-Status: Submitted [https://github.com/gperftools/gperftools/pull/1379]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/malloc_hook_mmap_linux.h | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/malloc_hook_mmap_linux.h b/src/malloc_hook_mmap_linux.h
-index c7d8b4b..a10687e 100644
---- a/src/malloc_hook_mmap_linux.h
-+++ b/src/malloc_hook_mmap_linux.h
-@@ -45,6 +45,11 @@
- #include <sys/syscall.h>
- #include <unistd.h>
- 
-+// musl's off_t is already 64-bit
-+#if defined(__linux__) && !defined(__GLIBC__)
-+typedef off_t off64_t;
-+#endif
-+
- // The x86-32 case and the x86-64 case differ:
- // 32b has a mmap2() syscall, 64b does not.
- // 64b and 32b have different calling conventions for mmap().
--- 
-2.39.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Support-Atomic-ops-on-clang.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Support-Atomic-ops-on-clang.patch
deleted file mode 100644
index 2fd21c2..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-Support-Atomic-ops-on-clang.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From aa0a63209af6813d87255ec3ab339f2dbbf27d6d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 6 Mar 2017 13:38:46 -0800
-Subject: [PATCH] Support Atomic ops on clang
-
-clang pretends to be gcc 4.2 which is a lie
-it actually supports a lot more features then
-gcc 4.2, here it depends on gcc 4.7 to enable
-the atomics and fails for clang
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-
----
- src/base/atomicops.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/base/atomicops.h b/src/base/atomicops.h
-index dac95be..390733c 100644
---- a/src/base/atomicops.h
-+++ b/src/base/atomicops.h
-@@ -124,7 +124,7 @@
- #include "base/atomicops-internals-linuxppc.h"
- #elif defined(__GNUC__) && defined(__mips__)
- #include "base/atomicops-internals-mips.h"
--#elif defined(__GNUC__) && GCC_VERSION >= 40700
-+#elif defined(__GNUC__) && GCC_VERSION >= 40700 || defined(__clang__)
- #include "base/atomicops-internals-gcc.h"
- #elif defined(__clang__) && CLANG_VERSION >= 30400
- #include "base/atomicops-internals-gcc.h"
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-disbale-heap-checkers-and-debug-allocator-on-musl.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-disbale-heap-checkers-and-debug-allocator-on-musl.patch
index e3e857f..2ea54e4 100644
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-disbale-heap-checkers-and-debug-allocator-on-musl.patch
+++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-disbale-heap-checkers-and-debug-allocator-on-musl.patch
@@ -11,12 +11,14 @@
  configure.ac | 2 ++
  1 file changed, 2 insertions(+)
 
+diff --git a/configure.ac b/configure.ac
+index 68fd51c..4cb71fe 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -53,6 +53,8 @@ case "$host" in
-    *-cygwin*) default_enable_heap_checker=no; default_enable_cpu_profiler=no;;
-    *-freebsd*) default_enable_heap_checker=no;;
-    *-darwin*) default_enable_heap_checker=no;;
+              need_nanosleep=no;;
+    *-cygwin*) default_enable_cpu_profiler=no;;
+    *-linux*) default_enable_heap_checker=yes; heap_checker_supported=yes;;
 +   *-musl*) default_enable_heap_checker=no; default_enable_heap_profiler=no;
 +            default_enable_debugalloc=no; default_enable_libunwind=no;
  esac
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-src-mmap_hook.cc-Fix-build-for-32bit-machine.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-src-mmap_hook.cc-Fix-build-for-32bit-machine.patch
new file mode 100644
index 0000000..1142df0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/0001-src-mmap_hook.cc-Fix-build-for-32bit-machine.patch
@@ -0,0 +1,59 @@
+From d675808d300278a9e7143428cfecf3fda61cc9a2 Mon Sep 17 00:00:00 2001
+From: Robert Yang <liezhi.yang@windriver.com>
+Date: Thu, 21 Mar 2024 10:59:29 +0000
+Subject: [PATCH] src/mmap_hook.cc: Fix build for 32bit machine
+
+Fixed build error on 32bit machine:
+
+../git/src/mmap_hook.cc:309:31: error: static assertion failed
+ 309 | static_assert(sizeof(int32_t) == sizeof(off_t), "");
+
+This is because oe's off_t is 64bit on both 32 and 64bit system, which is the
+default value of glibc, so the assertion would be failed on 32bit system, and
+remove mmap() and mmap64() to fix the redefined error.
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
+---
+ src/mmap_hook.cc | 22 ----------------------
+ 1 file changed, 22 deletions(-)
+
+diff --git a/src/mmap_hook.cc b/src/mmap_hook.cc
+index 0a0f62f..27425e4 100644
+--- a/src/mmap_hook.cc
++++ b/src/mmap_hook.cc
+@@ -302,30 +302,8 @@ void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t off) _
+ 
+ #define HOOKED_MMAP
+ 
+-#elif defined(DEFINED_DO_MMAP) && defined(__linux__) && !GOOD_LINUX_SYSTEM
+-// Linuxes with 32-bit off_t. We're being careful with mmap64 being
+-// 64-bit and mmap being 32-bit.
+-
+-static_assert(sizeof(int32_t) == sizeof(off_t), "");
+-
+-extern "C" void* mmap64(void* start, size_t length, int prot, int flags, int fd, int64_t off)
+-  __THROW ATTRIBUTE_SECTION(malloc_hook);
+-extern "C" void* mmap(void* start, size_t length, int prot, int flags, int fd, off_t off)
+-  __THROW ATTRIBUTE_SECTION(malloc_hook);
+-
+-void* mmap(void *start, size_t length, int prot, int flags, int fd, off_t off) __THROW {
+-  return do_mmap_with_hooks(start, length, prot, flags, fd, off);
+-}
+-
+-void* mmap64(void *start, size_t length, int prot, int flags, int fd, int64_t off) __THROW {
+-  return do_mmap_with_hooks(start, length, prot, flags, fd, off);
+-}
+-
+-#define HOOKED_MMAP
+-
+ #endif  // Linux/32-bit off_t case
+ 
+-
+ #ifdef HOOKED_MMAP
+ 
+ extern "C" int munmap(void* start, size_t length) __THROW ATTRIBUTE_SECTION(malloc_hook);
+-- 
+2.35.5
+
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/ppc-musl.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/ppc-musl.patch
index 3034e20..800fa3a 100644
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/ppc-musl.patch
+++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/ppc-musl.patch
@@ -6,49 +6,27 @@
 ---
 Upstream-Status: Pending
 
- m4/pc_from_ucontext.m4             | 4 +++-
- src/getpc.h                        | 3 +++
+ src/getpc.h                        | 4 ++++
  src/stacktrace_powerpc-linux-inl.h | 8 ++++++--
- 3 files changed, 12 insertions(+), 3 deletions(-)
+ 2 files changed, 10 insertions(+), 2 deletions(-)
 
-diff --git a/m4/pc_from_ucontext.m4 b/m4/pc_from_ucontext.m4
-index 7f09dd7..5f4ee8c 100644
---- a/m4/pc_from_ucontext.m4
-+++ b/m4/pc_from_ucontext.m4
-@@ -34,6 +34,7 @@ AC_DEFUN([AC_PC_FROM_UCONTEXT],
-    pc_fields="$pc_fields uc_mcontext.gregs[[R15]]"     # Linux (arm old [untested])
-    pc_fields="$pc_fields uc_mcontext.arm_pc"           # Linux (arm arch 5)
-    pc_fields="$pc_fields uc_mcontext.gp_regs[[PT_NIP]]"  # Suse SLES 11 (ppc64)
-+   pc_fields="$pc_fields uc_mcontext.gregs[[PT_NIP]]"
-    pc_fields="$pc_fields uc_mcontext.mc_eip"           # FreeBSD (i386)
-    pc_fields="$pc_fields uc_mcontext.mc_srr0"          # FreeBSD (powerpc, powerpc64)
-    pc_fields="$pc_fields uc_mcontext.mc_rip"           # FreeBSD (x86_64 [untested])
-@@ -77,7 +78,8 @@ AC_DEFUN([AC_PC_FROM_UCONTEXT],
-                         pc_field_found=true)
-        elif test "x$ac_cv_header_ucontext_h" = xyes; then
-          AC_TRY_COMPILE([#define _GNU_SOURCE 1
--                         #include <ucontext.h>],
-+                         #include <ucontext.h>
-+                         #include <asm/ptrace.h>],
-                         [ucontext_t u; return u.$pc_field == 0;],
-                         AC_DEFINE_UNQUOTED(PC_FROM_UCONTEXT, $pc_field,
-                                            How to access the PC from a struct ucontext)
 diff --git a/src/getpc.h b/src/getpc.h
-index 9605363..cd8ccfa 100644
+index 87d18b6..c569731 100644
 --- a/src/getpc.h
 +++ b/src/getpc.h
-@@ -68,6 +68,9 @@
+@@ -68,6 +68,10 @@
  typedef ucontext ucontext_t;
  #endif
  
 +#if defined(__powerpc__) && !defined(PT_NIP)
 +#define PT_NIP 32
 +#endif
++
+ namespace tcmalloc {
+ namespace getpc {
  
- // Take the example where function Foo() calls function Bar().  For
- // many architectures, Bar() is responsible for setting up and tearing
 diff --git a/src/stacktrace_powerpc-linux-inl.h b/src/stacktrace_powerpc-linux-inl.h
-index a301a46..efca426 100644
+index 883e7d2..212bd25 100644
 --- a/src/stacktrace_powerpc-linux-inl.h
 +++ b/src/stacktrace_powerpc-linux-inl.h
 @@ -186,7 +186,7 @@ static int GET_STACK_TRACE_OR_FRAMES {
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/sgidef.patch b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/sgidef.patch
deleted file mode 100644
index b01cba3..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools/sgidef.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 259b420444c52463795b4b582a2ab7511149eea7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 16 Oct 2017 21:26:40 -0700
-Subject: [PATCH] sgidef.h does not exist on musl and its not needed to compile
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-Upstream-Status: Pending
-
----
- src/base/linux_syscall_support.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/src/base/linux_syscall_support.h
-+++ b/src/base/linux_syscall_support.h
-@@ -164,7 +164,7 @@ extern "C" {
- #include <endian.h>
- #include <fcntl.h>
- 
--#ifdef __mips__
-+#if defined(__mips__) && defined(__glibc__)
- /* Include definitions of the ABI currently in use.                          */
- #include <sgidefs.h>
- #endif
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.10.bb b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.10.bb
deleted file mode 100644
index 8db0cec..0000000
--- a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.10.bb
+++ /dev/null
@@ -1,67 +0,0 @@
-SUMMARY = "Fast, multi-threaded malloc() and nifty performance analysis tools"
-HOMEPAGE = "https://github.com/gperftools/gperftools"
-DESCRIPTION = "The gperftools, previously called google-perftools, package contains some \
-utilities to improve and analyze the performance of C++ programs. \
-Included are an optimized thread-caching malloc() and cpu and heap profiling utilities. \
-"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=762732742c73dc6c7fbe8632f06c059a"
-
-DEPENDS:append:libc-musl = " libucontext"
-
-SRCREV = "bf8b714bf5075d0a6f2f28504b43095e2b1e11c5"
-SRC_URI = "git://github.com/gperftools/gperftools;branch=master;protocol=https \
-           file://0001-Support-Atomic-ops-on-clang.patch \
-           file://0001-disbale-heap-checkers-and-debug-allocator-on-musl.patch \
-           file://disable_libunwind_aarch64.patch \
-           file://sgidef.patch \
-           file://0001-Define-off64_t-as-off_t-on-musl.patch \
-           "
-
-SRC_URI:append:libc-musl = " file://ppc-musl.patch"
-
-inherit autotools
-
-S = "${WORKDIR}/git"
-
-# On mips, we have the following error.
-#   do_page_fault(): sending SIGSEGV to ls for invalid read access from 00000008
-#   Segmentation fault (core dumped)
-COMPATIBLE_HOST:mipsarch = "null"
-COMPATIBLE_HOST:riscv64 = "null"
-COMPATIBLE_HOST:riscv32 = "null"
-
-# Disable thumb1
-# {standard input}: Assembler messages:
-# {standard input}:434: Error: lo register required -- `ldr pc,[sp]'
-# Makefile:4538: recipe for target 'src/base/libtcmalloc_la-linuxthreads.lo' failed
-ARM_INSTRUCTION_SET:armv5 = "arm"
-ARM_INSTRUCTION_SET:toolchain-clang:arm = "arm"
-
-EXTRA_OECONF:append:libc-musl:powerpc64le = " --disable-cpu-profiler"
-EXTRA_OECONF:append:libc-musl:powerpc = " --disable-cpu-profiler"
-PACKAGECONFIG ?= "libunwind static"
-PACKAGECONFIG:remove:arm:libc-musl = "libunwind"
-PACKAGECONFIG:remove:riscv64 = "libunwind"
-PACKAGECONFIG:remove:riscv32 = "libunwind"
-
-PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind"
-PACKAGECONFIG[static] = "--enable-static,--disable-static,"
-
-PACKAGE_BEFORE_PN += "libtcmalloc-minimal"
-FILES:libtcmalloc-minimal = "${libdir}/libtcmalloc_minimal*${SOLIBS} ${libdir}/libtcmalloc_minimal_debug*${SOLIBS}"
-
-# pprof tool requires Getopt::long and POSIX perl5 modules.
-# Also runs `objdump` on each cpuprofile data file
-RDEPENDS:${PN} += " \
-    binutils \
-    curl \
-    perl-module-carp \
-    perl-module-cwd \
-    perl-module-getopt-long \
-    perl-module-overloading \
-    perl-module-posix \
-"
-
-RDEPENDS:${PN} += "libtcmalloc-minimal (= ${EXTENDPKGV})"
diff --git a/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.15.bb b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.15.bb
new file mode 100644
index 0000000..bd3b2af
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/gperftools/gperftools_2.15.bb
@@ -0,0 +1,65 @@
+SUMMARY = "Fast, multi-threaded malloc() and nifty performance analysis tools"
+HOMEPAGE = "https://github.com/gperftools/gperftools"
+DESCRIPTION = "The gperftools, previously called google-perftools, package contains some \
+utilities to improve and analyze the performance of C++ programs. \
+Included are an optimized thread-caching malloc() and cpu and heap profiling utilities. \
+"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=762732742c73dc6c7fbe8632f06c059a"
+
+DEPENDS:append:libc-musl = " libucontext"
+
+SRCREV = "365060c4213a48adb27f63d5dfad41b3dfbdd62e"
+SRC_URI = "git://github.com/gperftools/gperftools;branch=master;protocol=https \
+           file://0001-disbale-heap-checkers-and-debug-allocator-on-musl.patch \
+           file://disable_libunwind_aarch64.patch \
+           file://0001-src-mmap_hook.cc-Fix-build-for-32bit-machine.patch \
+           "
+
+SRC_URI:append:libc-musl = " file://ppc-musl.patch"
+
+inherit autotools
+
+S = "${WORKDIR}/git"
+
+# On mips, we have the following error.
+#   do_page_fault(): sending SIGSEGV to ls for invalid read access from 00000008
+#   Segmentation fault (core dumped)
+COMPATIBLE_HOST:mipsarch = "null"
+COMPATIBLE_HOST:riscv64 = "null"
+COMPATIBLE_HOST:riscv32 = "null"
+
+# Disable thumb1
+# {standard input}: Assembler messages:
+# {standard input}:434: Error: lo register required -- `ldr pc,[sp]'
+# Makefile:4538: recipe for target 'src/base/libtcmalloc_la-linuxthreads.lo' failed
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:toolchain-clang:arm = "arm"
+
+EXTRA_OECONF:append:libc-musl:powerpc64le = " --disable-cpu-profiler"
+EXTRA_OECONF:append:libc-musl:powerpc = " --disable-cpu-profiler"
+PACKAGECONFIG ?= "libunwind static"
+PACKAGECONFIG:remove:arm:libc-musl = "libunwind"
+PACKAGECONFIG:remove:riscv64 = "libunwind"
+PACKAGECONFIG:remove:riscv32 = "libunwind"
+
+PACKAGECONFIG[libunwind] = "--enable-libunwind,--disable-libunwind,libunwind"
+PACKAGECONFIG[static] = "--enable-static,--disable-static,"
+
+PACKAGE_BEFORE_PN += "libtcmalloc-minimal"
+FILES:libtcmalloc-minimal = "${libdir}/libtcmalloc_minimal*${SOLIBS} ${libdir}/libtcmalloc_minimal_debug*${SOLIBS}"
+
+# pprof tool requires Getopt::long and POSIX perl5 modules.
+# Also runs `objdump` on each cpuprofile data file
+RDEPENDS:${PN} += " \
+    binutils \
+    curl \
+    perl-module-carp \
+    perl-module-cwd \
+    perl-module-getopt-long \
+    perl-module-overloading \
+    perl-module-posix \
+"
+
+RDEPENDS:${PN} += "libtcmalloc-minimal (= ${EXTENDPKGV})"
diff --git a/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb b/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
index cbb51d3..31503e9 100644
--- a/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
+++ b/meta-openembedded/meta-oe/recipes-support/gpm/gpm_git.bb
@@ -8,7 +8,6 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=18810669f13b87348459e611d31ab760"
 
 PV = "1.99.7+git${SRCREV}"
-PR = "r2"
 SRCREV = "e82d1a653ca94aa4ed12441424da6ce780b1e530"
 
 DEPENDS = "ncurses bison-native"
diff --git a/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
index e9d3097..b204ea4 100644
--- a/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
+++ b/meta-openembedded/meta-oe/recipes-support/hddtemp/hddtemp_0.3-beta15.bb
@@ -2,7 +2,6 @@
 SECTION = "console/network"
 LICENSE = "GPL-2.0-or-later"
 
-PR = "r1"
 
 SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/hddtemp/hddtemp-0.3-beta15.tar.bz2 \
            file://hddtemp-no-nls-support.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.379.bb b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.379.bb
deleted file mode 100644
index 50d449e..0000000
--- a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.379.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "Hardware identification and configuration data"
-HOMEPAGE = "https://github.com/vcrhonek/hwdata"
-SECTION = "System/Base"
-
-LICENSE = "GPL-2.0-or-later | XFree86-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
-
-SRCREV = "87db4fd0620270614f5079c5f73b1fb6000ca081"
-SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https"
-
-S = "${WORKDIR}/git"
-
-inherit allarch
-
-do_configure() {
-    ${S}/configure --datadir=${datadir} --libdir=${libdir}
-}
-
-do_compile[noexec] = "1"
-
-do_install() {
-    oe_runmake install DESTDIR=${D}
-}
-
-FILES:${PN} = "${libdir}/* \
-               ${datadir}/* "
diff --git a/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.380.bb b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.380.bb
new file mode 100644
index 0000000..e9b5afe
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/hwdata/hwdata_0.380.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "Hardware identification and configuration data"
+HOMEPAGE = "https://github.com/vcrhonek/hwdata"
+SECTION = "System/Base"
+
+LICENSE = "GPL-2.0-or-later | XFree86-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1556547711e8246992b999edd9445a57"
+
+SRCREV = "d0cbfddb1fec4bb1a395373396c972e5f210bcf8"
+SRC_URI = "git://github.com/vcrhonek/${BPN}.git;branch=master;protocol=https"
+
+S = "${WORKDIR}/git"
+
+inherit allarch
+
+do_configure() {
+    ${S}/configure --datadir=${datadir} --libdir=${libdir}
+}
+
+do_compile[noexec] = "1"
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+}
+
+FILES:${PN} = "${libdir}/* \
+               ${datadir}/* "
diff --git a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
index dcc951b..6ab8a61 100644
--- a/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/imagemagick/imagemagick_7.1.1.bb
@@ -52,7 +52,7 @@
 
 FILES:${PN}-dbg += "${libdir}/ImageMagick-${BASE_PV}/modules-Q16/*/.debug/*"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
 ALTERNATIVE_PRIORITY = "100"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.16.bb b/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.16.bb
index 10c1994..8135f83 100644
--- a/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.16.bb
+++ b/meta-openembedded/meta-oe/recipes-support/lcms/lcms_2.16.bb
@@ -8,7 +8,7 @@
 
 DEPENDS = "tiff"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
 S = "${WORKDIR}/lcms2-${PV}"
 
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.1.1.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.1.1.bb
new file mode 100644
index 0000000..c62c9a3
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.1.1.bb
@@ -0,0 +1,32 @@
+require libgpiod.inc
+
+LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
+LIC_FILES_CHKSUM = " \
+    file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
+    file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
+"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-2.x:"
+
+SRC_URI[sha256sum] = "b21913f469d3135680d5516f00fdf9f81d5e564e19ffb690927ea7f1d7e312cb"
+
+# Enable all project features for ptest
+PACKAGECONFIG[tests] = "--enable-tests --enable-tools --enable-bindings-cxx --enable-gpioset-interactive,--disable-tests,kmod util-linux glib-2.0 catch2 libedit"
+PACKAGECONFIG[gpioset-interactive] = "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
+
+PACKAGES =+ "${PN}-ptest-dev"
+FILES:${PN}-tools += "${bindir}/gpionotify"
+FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
+FILES:${PN}-ptest-dev += "${includedir}/gpiosim.h"
+
+RDEPENDS:${PN}-ptest += " \
+    bash \
+    ${@bb.utils.contains('PTEST_ENABLED', '1', 'shunit2', '', d)} \
+"
+RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim kernel-module-configfs"
+
+do_install_ptest:append() {
+    install -m 0755 ${S}/tools/gpio-tools-test.bash ${D}${PTEST_PATH}/tests/
+    install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.1.bb b/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.1.bb
deleted file mode 100644
index 33df709..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libgpiod/libgpiod_2.1.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-require libgpiod.inc
-
-LICENSE = "GPL-2.0-or-later & LGPL-2.1-or-later & CC-BY-SA-4.0"
-LIC_FILES_CHKSUM = " \
-    file://LICENSES/GPL-2.0-or-later.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-    file://LICENSES/LGPL-2.1-or-later.txt;md5=4b54a1fd55a448865a0b32d41598759d \
-    file://LICENSES/CC-BY-SA-4.0.txt;md5=fba3b94d88bfb9b81369b869a1e9a20f \
-"
-
-FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}-2.x:"
-
-SRC_URI[sha256sum] = "fa4024a080121c958502f9a46a5bda44bea85e7a4dd7fcb3dead463b6fc4261c"
-
-# Enable all project features for ptest
-PACKAGECONFIG[tests] = "--enable-tests --enable-tools --enable-bindings-cxx --enable-gpioset-interactive,--disable-tests,kmod util-linux glib-2.0 catch2 libedit"
-PACKAGECONFIG[gpioset-interactive] = "--enable-gpioset-interactive,--disable-gpioset-interactive,libedit"
-
-PACKAGES =+ "${PN}-ptest-dev"
-FILES:${PN}-tools += "${bindir}/gpionotify"
-FILES:${PN}-ptest += "${libdir}/libgpiosim.so.*"
-FILES:${PN}-ptest-dev += "${includedir}/gpiosim.h"
-
-RDEPENDS:${PN}-ptest += " \
-    bash \
-    ${@bb.utils.contains('PTEST_ENABLED', '1', 'shunit2', '', d)} \
-"
-RRECOMMENDS:${PN}-ptest += "kernel-module-gpio-sim kernel-module-configfs"
-
-do_install_ptest:append() {
-    install -m 0755 ${S}/tools/gpio-tools-test.bash ${D}${PTEST_PATH}/tests/
-    install -m 0644 ${S}/tests/gpiosim/gpiosim.h ${D}${includedir}/gpiosim.h
-}
diff --git a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_0.25.bb b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_0.25.bb
index 9f3fcc0..2c6d2b5 100644
--- a/meta-openembedded/meta-oe/recipes-support/libiio/libiio_0.25.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libiio/libiio_0.25.bb
@@ -73,7 +73,6 @@
     cmake_do_compile
 }
 
-PIP_INSTALL_PACKAGE = "pylibiio"
 do_install() {
     if ${@bb.utils.contains('PACKAGECONFIG', 'libiio-python3', 'true', 'false', d)}; then
         setuptools3_do_install
diff --git a/meta-openembedded/meta-oe/recipes-support/libosinfo/libosinfo/0001-osinfo-Make-xmlError-struct-constant-in-propagate_li.patch b/meta-openembedded/meta-oe/recipes-support/libosinfo/libosinfo/0001-osinfo-Make-xmlError-struct-constant-in-propagate_li.patch
new file mode 100644
index 0000000..467c6b4
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libosinfo/libosinfo/0001-osinfo-Make-xmlError-struct-constant-in-propagate_li.patch
@@ -0,0 +1,32 @@
+From 5bbdd06503456784c5ffa22409e8bab50470d673 Mon Sep 17 00:00:00 2001
+From: Michal Privoznik <mprivozn@redhat.com>
+Date: Mon, 27 Nov 2023 15:11:45 +0100
+Subject: [PATCH] osinfo: Make xmlError struct constant in
+ propagate_libxml_error()
+
+In libxml2 commit v2.12.0~14 the API changed so that
+xmlGetLastError() returns pointer to a constant xmlError struct.
+Reflect this change in our code.
+
+Upstream-Status: Backport [https://gitlab.com/libosinfo/libosinfo/-/merge_requests/155]
+Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
+---
+ osinfo/osinfo_install_script.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/osinfo/osinfo_install_script.c b/osinfo/osinfo_install_script.c
+index 5800f37..303245a 100644
+--- a/osinfo/osinfo_install_script.c
++++ b/osinfo/osinfo_install_script.c
+@@ -769,7 +769,7 @@ static void propagate_libxml_error(GError **error, const char *format, ...) G_GN
+ 
+ static void propagate_libxml_error(GError **error, const char *format, ...)
+ {
+-    xmlErrorPtr err = xmlGetLastError();
++    const xmlError *err = xmlGetLastError();
+     char *prefix;
+     va_list ap;
+ 
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/libosinfo/libosinfo_1.11.0.bb b/meta-openembedded/meta-oe/recipes-support/libosinfo/libosinfo_1.11.0.bb
index 68d917f..8ef7ac3 100644
--- a/meta-openembedded/meta-oe/recipes-support/libosinfo/libosinfo_1.11.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libosinfo/libosinfo_1.11.0.bb
@@ -8,6 +8,7 @@
 SRC_URI = " \
 	git://gitlab.com/libosinfo/libosinfo.git;branch=main;protocol=https \
 	file://0001-meson.build-allow-crosscompiling-gir.patch \
+	file://0001-osinfo-Make-xmlError-struct-constant-in-propagate_li.patch \
 "
 
 SRCREV = "ca9dd5b810dc04ea38048ae9be491654c8596ef9"
diff --git a/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml_2.6.2.bb b/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml_2.6.2.bb
index 138df9f..6fbdd07 100644
--- a/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml_2.6.2.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libtinyxml/libtinyxml_2.6.2.bb
@@ -6,7 +6,6 @@
 LIC_FILES_CHKSUM = "file://readme.txt;md5=f8f366f3370dda889f60faa7db162cf4"
 SECTION = "libs"
 
-PR = "r5"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/tinyxml/tinyxml_${@'${PV}'.replace('.', '_')}.tar.gz \
            file://enforce-use-stl.patch \
diff --git a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_10.0.0.bb b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_10.0.0.bb
index 1c94eff..bcd3092 100644
--- a/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_10.0.0.bb
+++ b/meta-openembedded/meta-oe/recipes-support/libtinyxml2/libtinyxml2_10.0.0.bb
@@ -27,4 +27,4 @@
     done
 }
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/libtommath/libtommath_1.2.1.bb b/meta-openembedded/meta-oe/recipes-support/libtommath/libtommath_1.2.1.bb
deleted file mode 100644
index 32ec290..0000000
--- a/meta-openembedded/meta-oe/recipes-support/libtommath/libtommath_1.2.1.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "LibTomMath is a number theoretic multiple-precision integer library"
-HOMEPAGE = "https://www.libtom.net/LibTomMath"
-SECTION = "libs"
-LICENSE = "Unlicense"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=23e7e0a32e53a2b1d35f5fd9ef053402"
-
-DEPENDS = "libtool-cross"
-
-SRC_URI = "git://github.com/libtom/libtommath.git;protocol=https;branch=master"
-
-SRCREV = "97e500351e653472b2ea00b37137ad0414165efe"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OEMAKE = "'PREFIX=${prefix}' 'DESTDIR=${D}' 'LIBPATH=${libdir}' 'CFLAGS=${CFLAGS}'"
-
-do_compile() {
-    oe_runmake -f makefile.shared
-}
-
-do_install() {
-    oe_runmake -f makefile.shared install
-}
diff --git a/meta-openembedded/meta-oe/recipes-support/libtommath/libtommath_1.3.0.bb b/meta-openembedded/meta-oe/recipes-support/libtommath/libtommath_1.3.0.bb
new file mode 100644
index 0000000..4d6c062
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libtommath/libtommath_1.3.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "LibTomMath is a number theoretic multiple-precision integer library"
+HOMEPAGE = "https://www.libtom.net/LibTomMath"
+SECTION = "libs"
+LICENSE = "Unlicense"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=23e7e0a32e53a2b1d35f5fd9ef053402"
+
+DEPENDS = "libtool-cross"
+
+SRC_URI = "git://github.com/libtom/libtommath.git;protocol=https;branch=master"
+
+SRCREV = "95d80fd8229d05dd6cb4ec88bc8d4f5377ff00ef"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "'PREFIX=${prefix}' 'DESTDIR=${D}' 'LIBPATH=${libdir}' 'CFLAGS=${CFLAGS}'"
+
+do_compile() {
+    oe_runmake -f makefile.shared
+}
+
+do_install() {
+    oe_runmake -f makefile.shared install
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/liburing/liburing/0001-Fixes-build-failure-on-.-configure-make-shuffle-2836.patch b/meta-openembedded/meta-oe/recipes-support/liburing/liburing/0001-Fixes-build-failure-on-.-configure-make-shuffle-2836.patch
deleted file mode 100644
index 0cf8548..0000000
--- a/meta-openembedded/meta-oe/recipes-support/liburing/liburing/0001-Fixes-build-failure-on-.-configure-make-shuffle-2836.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From c34dca74854cb6e7f2b09affa2a4ab0145e62371 Mon Sep 17 00:00:00 2001
-From: Kartik Mahajan <stonebrakert6@gmail.com>
-Date: Fri, 30 Jun 2023 11:34:07 +0530
-Subject: [PATCH] Fixes build failure on ./configure && make
- --shuffle=2836571325
-
-./configure && make --shuffle=2836571325 fails.
-The build fails on parallel builds for me and above command reproduces it.
-Note that --shuffle options is available on make version >= 4.4
-Target ffi_libname in src/Makefile should have a additional dependency
-upon $(liburing_sobjs)
-
-Upstream-Status: Backport [https://github.com/axboe/liburing/commit/c34dca74854cb6e7f2b09affa2a4ab0145e62371]
-Signed-off-by: Kartik Mahajan <stonebrakert6@gmail.com>
----
- src/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/Makefile b/src/Makefile
-index c4c28cb..7832095 100644
---- a/src/Makefile
-+++ b/src/Makefile
-@@ -81,7 +81,7 @@ liburing-ffi.a: $(liburing_objs) $(liburing_ffi_objs)
- $(libname): $(liburing_sobjs) liburing.map
- 	$(QUIET_CC)$(CC) $(SO_CFLAGS) -shared -Wl,--version-script=liburing.map -Wl,-soname=$(soname) -o $@ $(liburing_sobjs) $(LINK_FLAGS)
- 
--$(ffi_libname): $(liburing_ffi_objs) $(liburing_ffi_sobjs) liburing-ffi.map
-+$(ffi_libname): $(liburing_ffi_objs) $(liburing_ffi_sobjs) $(liburing_sobjs) liburing-ffi.map
- 	$(QUIET_CC)$(CC) $(SO_CFLAGS) -shared -Wl,--version-script=liburing-ffi.map -Wl,-soname=$(ffi_soname) -o $@ $(liburing_sobjs) $(liburing_ffi_sobjs) $(LINK_FLAGS)
- 
- install: $(all_targets)
--- 
-2.41.0
-
diff --git a/meta-openembedded/meta-oe/recipes-support/liburing/liburing/0001-do-not-build-examples.patch b/meta-openembedded/meta-oe/recipes-support/liburing/liburing/0001-do-not-build-examples.patch
deleted file mode 100644
index 03ab075..0000000
--- a/meta-openembedded/meta-oe/recipes-support/liburing/liburing/0001-do-not-build-examples.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 653c39b0b30b2a329db5041e558cfc97c03d6bfb Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 17 Feb 2021 19:18:16 -0800
-Subject: [PATCH] do not build examples
-
-examples need ucontext and some architectures on musl do not have it
-implemented e.g. riscv
-
-Upstream-Status: Inappropriate [Arch-Specific]
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Makefile | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 5d9c4dc..53e1615 100644
---- a/Makefile
-+++ b/Makefile
-@@ -11,7 +11,6 @@ default: all
- all:
- 	@$(MAKE) -C src
- 	@$(MAKE) -C test
--	@$(MAKE) -C examples
- 
- .PHONY: all install default clean test
- .PHONY: FORCE cscope
--- 
-2.31.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.4.bb b/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.4.bb
deleted file mode 100644
index e5dba70..0000000
--- a/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.4.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "This is the io_uring library, liburing."
-DESCRIPTION = "liburing provides helpers to setup and teardown io_uring \
-instances, and also a simplified interface for applications that don't need \
-(or want) to deal with the full kernel side implementation."
-HOMEPAGE = "https://github.com/axboe/liburing"
-BUGTRACKER = "https://github.com/axboe/liburing/issues"
-SECTION = "libs"
-
-LICENSE = "LGPL-2.1-only | MIT"
-LIC_FILES_CHKSUM = "file://README;beginline=41;endline=44;md5=2b0e9926530c269f5ae95560370195af"
-
-SRC_URI = "git://github.com/axboe/liburing.git;branch=master;protocol=https \
-           file://0001-Fixes-build-failure-on-.-configure-make-shuffle-2836.patch"
-SRC_URI:append:libc-musl:riscv64 = " file://0001-do-not-build-examples.patch "
-SRC_URI:append:libc-musl:riscv32 = " file://0001-do-not-build-examples.patch "
-SRCREV = "298c083d75ecde5a8833366167b3b6abff0c8d39"
-
-S = "${WORKDIR}/git"
-
-DEPENDS:append:libc-musl = " libucontext"
-XCFLAGS = "-pthread"
-XCFLAGS:append:libc-musl = " -lucontext"
-
-EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'LDFLAGS=${LDFLAGS}' 'XCFLAGS=${XCFLAGS}' 'BUILDDIR=${S}'"
-do_configure() {
-    ${S}/configure --prefix=${prefix} --libdir=${libdir} --libdevdir=${libdir} --mandir=${mandir} --datadir=${datadir} --includedir=${includedir}
-}
-do_install () {
-    oe_runmake install DESTDIR=${D}
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.5.bb b/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.5.bb
new file mode 100644
index 0000000..440259f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/liburing/liburing_2.5.bb
@@ -0,0 +1,29 @@
+SUMMARY = "This is the io_uring library, liburing."
+DESCRIPTION = "liburing provides helpers to setup and teardown io_uring \
+instances, and also a simplified interface for applications that don't need \
+(or want) to deal with the full kernel side implementation."
+HOMEPAGE = "https://github.com/axboe/liburing"
+BUGTRACKER = "https://github.com/axboe/liburing/issues"
+SECTION = "libs"
+
+LICENSE = "LGPL-2.1-only | MIT"
+LIC_FILES_CHKSUM = "file://README;beginline=41;endline=44;md5=2b0e9926530c269f5ae95560370195af"
+
+SRC_URI = "git://github.com/axboe/liburing.git;branch=master;protocol=https"
+SRCREV = "f4e42a515cd78c8c9cac2be14222834be5f8df2b"
+
+S = "${WORKDIR}/git"
+
+DEPENDS:append:libc-musl = " libucontext"
+XCFLAGS = "-pthread"
+XCFLAGS:append:libc-musl = " -lucontext"
+
+EXTRA_OEMAKE = "'CC=${CC}' 'RANLIB=${RANLIB}' 'AR=${AR}' 'CFLAGS=${CFLAGS} -I${S}/include -DWITHOUT_XATTR' 'LDFLAGS=${LDFLAGS}' 'XCFLAGS=${XCFLAGS}' 'BUILDDIR=${S}'"
+do_configure() {
+    ${S}/configure --prefix=${prefix} --libdir=${libdir} --libdevdir=${libdir} --mandir=${mandir} --datadir=${datadir} --includedir=${includedir}
+}
+do_install () {
+    oe_runmake install DESTDIR=${D}
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-include-libgen.h-for-basename.patch b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-include-libgen.h-for-basename.patch
new file mode 100644
index 0000000..7add3a7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/files/0001-include-libgen.h-for-basename.patch
@@ -0,0 +1,32 @@
+From 1b9677f40ac547ba19d1cdbfd700901eab0a0d0b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Mar 2024 13:07:28 -0700
+Subject: [PATCH] include libgen.h for basename
+
+basename prototype has been removed from string.h from latest musl [1]
+compilers e.g. clang-18 flags the absense of prototype as error. therefore
+include libgen.h for providing it.
+
+[1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
+
+Upstream-Status: Submitted [ Sent to maintainer and lvm-devel@redhat.com ]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ lib/device/device_id.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/lib/device/device_id.c b/lib/device/device_id.c
+index 1422f5d05..8215811bd 100644
+--- a/lib/device/device_id.c
++++ b/lib/device/device_id.c
+@@ -25,6 +25,7 @@
+ #include "lib/datastruct/str_list.h"
+ #include "lib/metadata/metadata-exported.h"
+ 
++#include <libgen.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
index c96989b..d95366f 100644
--- a/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
+++ b/meta-openembedded/meta-oe/recipes-support/lvm2/lvm2.inc
@@ -16,6 +16,7 @@
            file://0006-start-lvm2-monitor.service-after-tmp.mount.patch \
            file://reproducible-build.patch \
            file://0001-configure.ac-check-egrep.patch \
+           file://0001-include-libgen.h-for-basename.patch \
            "
 
 SRCREV = "016e469caf856f1eb8dde39df0d1aa2e74225aed"
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_196.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_196.bb
deleted file mode 100644
index 06aa30d..0000000
--- a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_196.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "mcelog daemon accounts memory and some other errors in various ways."
-DESCRIPTION = "mcelog is required by both 32bit x86 Linux kernels (since 2.6.30) \
-and 64bit Linux kernels (since early 2.6 kernel releases) to log machine checks \
-and should run on all Linux systems that need error handling."
-HOMEPAGE = "https://mcelog.org/"
-SECTION = "System Environment/Base"
-
-SRC_URI = "\
-    git://git.kernel.org/pub/scm/utils/cpu/mce/mcelog.git;protocol=http;;branch=master \
-    file://0001-client-Include-string.h-form-mem-function-prototypes.patch \
-    file://run-ptest \
-"
-
-SRCREV = "edfe78a0dc54a940f4916a9bd681eab7b3f746d1"
-
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-S = "${WORKDIR}/git"
-
-inherit ptest
-
-COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
-
-EXTRA_OEMAKE += "CFLAGS='${CFLAGS}'"
-
-do_compile() {
-    oe_runmake
-}
-
-do_install() {
-    oe_runmake install DESTDIR=${D}
-    install -d ${D}${sysconfdir}/cron.hourly
-    install -m 0755 ${S}/mcelog.cron ${D}${sysconfdir}/cron.hourly/
-    sed -i 's/bash/sh/' ${D}${sysconfdir}/cron.hourly/mcelog.cron
-}
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}
-    cp -r ${S}/tests ${S}/input ${D}${PTEST_PATH}
-    sed -i 's#../../mcelog#mcelog#' ${D}${PTEST_PATH}/tests/test
-}
-
-RDEPENDS:${PN}-ptest += "make bash mce-inject"
diff --git a/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_198.bb b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_198.bb
new file mode 100644
index 0000000..e302f41
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/mcelog/mcelog_198.bb
@@ -0,0 +1,44 @@
+SUMMARY = "mcelog daemon accounts memory and some other errors in various ways."
+DESCRIPTION = "mcelog is required by both 32bit x86 Linux kernels (since 2.6.30) \
+and 64bit Linux kernels (since early 2.6 kernel releases) to log machine checks \
+and should run on all Linux systems that need error handling."
+HOMEPAGE = "https://mcelog.org/"
+SECTION = "System Environment/Base"
+
+SRC_URI = "\
+    git://git.kernel.org/pub/scm/utils/cpu/mce/mcelog.git;protocol=http;;branch=master \
+    file://0001-client-Include-string.h-form-mem-function-prototypes.patch \
+    file://run-ptest \
+"
+
+SRCREV = "ab58f07b9b1a4456fca0f5f41639d5cbecc80e36"
+
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+S = "${WORKDIR}/git"
+
+inherit ptest
+
+COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
+
+EXTRA_OEMAKE += "CFLAGS='${CFLAGS}'"
+
+do_compile() {
+    oe_runmake
+}
+
+do_install() {
+    oe_runmake install DESTDIR=${D}
+    install -d ${D}${sysconfdir}/cron.hourly
+    install -m 0755 ${S}/mcelog.cron ${D}${sysconfdir}/cron.hourly/
+    sed -i 's/bash/sh/' ${D}${sysconfdir}/cron.hourly/mcelog.cron
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+    cp -r ${S}/tests ${S}/input ${D}${PTEST_PATH}
+    sed -i 's#../../mcelog#mcelog#' ${D}${PTEST_PATH}/tests/test
+}
+
+RDEPENDS:${PN}-ptest += "make bash mce-inject"
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-RH-fixup-udev-rules-for-redhat.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-RH-fixup-udev-rules-for-redhat.patch
index 0ec5b5b..74ae153 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-RH-fixup-udev-rules-for-redhat.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-RH-fixup-udev-rules-for-redhat.patch
@@ -16,6 +16,8 @@
 
 Rebase to 0.9.8
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Upstream-Status: Pending
 ---
  Makefile.inc        | 2 +-
  kpartx/kpartx.rules | 2 +-
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-libmultipath-always-use-glibc-basename.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-libmultipath-always-use-glibc-basename.patch
new file mode 100644
index 0000000..0365a7e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0001-libmultipath-always-use-glibc-basename.patch
@@ -0,0 +1,42 @@
+From 389286b25a903be62ce7f964246824fcc20c4c67 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 26 Mar 2024 18:56:55 -0700
+Subject: [PATCH] libmultipath: always use glibc basename()
+
+There is a use of basename() which expects it to be GNU version of
+basename, which is not available in other libcs e.g. musl on Linux
+therefore provide a version for such cases
+
+Upstream-Status: Submitted [https://github.com/opensvc/multipath-tools/pull/84]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libmultipath/configure.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/libmultipath/configure.c b/libmultipath/configure.c
+index 4ecf6ba4..e81cc67c 100644
+--- a/libmultipath/configure.c
++++ b/libmultipath/configure.c
+@@ -43,6 +43,19 @@
+ #include "sysfs.h"
+ #include "io_err_stat.h"
+ 
++#ifndef __GLIBC__
++/*
++ * glibc's non-destructive version of basename()
++ * License: LGPL-2.1-or-later
++ */
++static const char *__basename(const char *filename)
++{
++	char *p = strrchr(filename, '/');
++	return p ? p + 1 : filename;
++}
++#define basename(x) __basename(x)
++#endif
++
+ /* group paths in pg by host adapter
+  */
+ int group_by_host_adapter(struct pathgroup *pgp, vector adapters)
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-RH-Remove-the-property-blacklist-exception-builtin.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-RH-Remove-the-property-blacklist-exception-builtin.patch
index a24c827..4b24bd2 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-RH-Remove-the-property-blacklist-exception-builtin.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0002-RH-Remove-the-property-blacklist-exception-builtin.patch
@@ -20,6 +20,8 @@
 
 Rebase to 0.9.8
 Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Upstream-Status: Pending
 ---
  libmultipath/blacklist.c | 16 +++++-----------
  1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-fix-bug-of-do_compile-and-do_install.patch b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-fix-bug-of-do_compile-and-do_install.patch
index f32d789..abaea2c 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-fix-bug-of-do_compile-and-do_install.patch
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/files/0011-fix-bug-of-do_compile-and-do_install.patch
@@ -11,6 +11,8 @@
 [OP: Rebase to 0.9.3]
 [OP: Drop dependencies that are already present in the 0.9.3 Makefile]
 Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
+
+Upstream-Status: Pending
 ---
  Makefile | 10 ++++++++++
  1 file changed, 10 insertions(+)
diff --git a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.9.8.bb b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.9.8.bb
index df95df6..e9f01bd 100644
--- a/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.9.8.bb
+++ b/meta-openembedded/meta-oe/recipes-support/multipath-tools/multipath-tools_0.9.8.bb
@@ -44,6 +44,7 @@
            file://0010-Subject-PATCH-Always-use-devmapper.patch \
            file://0011-fix-bug-of-do_compile-and-do_install.patch \
            file://0012-add-explicit-dependency-on-libraries.patch \
+           file://0001-libmultipath-always-use-glibc-basename.patch \
            "
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2"
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch
deleted file mode 100644
index d905bf1..0000000
--- a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 1109c1b8259ad840ac1688d533f76ca268c67b6b Mon Sep 17 00:00:00 2001
-From: "John M. Schanck" <jschanck@mozilla.com>
-Date: Sat, 5 Feb 2022 11:12:43 +0000
-Subject: [PATCH] Bug 1750624 - Pin validation date for PayPalEE test cert.
- r=nss-reviewers,bbeurdouche,rrelyea
-
-Differential Revision: https://phabricator.services.mozilla.com/D136289
-
---HG--
-extra : moz-landing-system : lando
-
-Upstream-Status: Backport
-
----
- tests/chains/chains.sh               | 6 +++++-
- tests/chains/scenarios/realcerts.cfg | 1 +
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/tests/chains/chains.sh b/tests/chains/chains.sh
-index 32c7ef54c..e13ae52f9 100755
---- a/nss/tests/chains/chains.sh
-+++ b/nss/tests/chains/chains.sh
-@@ -917,7 +917,7 @@ verify_cert()
-     done
- 
-     VFY_OPTS_TNAME="${DB_OPT} ${ENGINE} ${TRUST_AND_DB_OPT} ${REV_OPTS} ${FETCH_OPT} ${USAGE_OPT} ${POLICY_OPT} ${TRUST_OPT}"
--    VFY_OPTS_ALL="${DB_OPT} ${ENGINE} -vv ${TRUST_AND_DB_OPT} ${REV_OPTS} ${FETCH_OPT} ${USAGE_OPT} ${POLICY_OPT} ${VFY_CERTS} ${TRUST_OPT}"
-+    VFY_OPTS_ALL="${DB_OPT} ${ENGINE} -vv ${VFY_TIME_OPT} ${TRUST_AND_DB_OPT} ${REV_OPTS} ${FETCH_OPT} ${USAGE_OPT} ${POLICY_OPT} ${VFY_CERTS} ${TRUST_OPT}"
- 
-     TESTNAME="Verifying certificate(s) ${VFY_LIST} with flags ${VFY_OPTS_TNAME}"
-     echo "${SCRIPTNAME}: ${TESTNAME}"
-@@ -1118,6 +1118,7 @@ parse_config()
-             ;;
-         "verify")
-             VERIFY="${VALUE}"
-+            VFY_TIME_OPT=
-             TRUST=
-             TRUST_AND_DB=
-             POLICY=
-@@ -1126,6 +1127,9 @@ parse_config()
-             REV_OPTS=
-             USAGE_OPT=
-             ;;
-+        "at_time")
-+            VFY_TIME_OPT="-b ${VALUE}"
-+            ;;
-         "cert")
-             VERIFY="${VERIFY} ${VALUE}"
-             ;;
-diff --git a/tests/chains/scenarios/realcerts.cfg b/tests/chains/scenarios/realcerts.cfg
-index 305443fc3..f8b0fc452 100644
---- a/nss/tests/chains/scenarios/realcerts.cfg
-+++ b/nss/tests/chains/scenarios/realcerts.cfg
-@@ -22,6 +22,7 @@ verify TestUser51:x
- 
- verify PayPalEE:x
-   policy OID.2.16.840.1.114412.2.1 
-+  at_time 2201010000Z
-   result pass
- 
- verify BrAirWaysBadSig:x
--- 
-2.25.1
-
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch
index 72ee1ee..b7f1b01 100644
--- a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch
+++ b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch
@@ -1,4 +1,4 @@
-From 9937e89c22eb2f2db9a936e7bc4442857b4192f5 Mon Sep 17 00:00:00 2001
+From 7c8f367faf8848a43a414079189e10270d6c0fcc Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Wed, 18 Dec 2019 12:29:50 +0100
 Subject: [PATCH] freebl: add a configure option to disable ARM HW crypto
@@ -15,10 +15,10 @@
  2 files changed, 5 insertions(+)
 
 diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile
-index b38889f..4616aac 100644
+index 7ee8736..f9b4925 100644
 --- a/nss/lib/freebl/Makefile
 +++ b/nss/lib/freebl/Makefile
-@@ -139,6 +139,8 @@ endif
+@@ -142,6 +142,8 @@ endif
          endif
      endif
  endif
@@ -27,16 +27,16 @@
  ifeq ($(CPU_ARCH),aarch64)
      ifdef CC_IS_CLANG
          DEFINES += -DUSE_HW_AES -DUSE_HW_SHA1 -DUSE_HW_SHA2
-@@ -180,6 +182,7 @@ endif
+@@ -183,6 +185,7 @@ endif
          endif
      endif
  endif
 +endif
  
- ifeq ($(OS_TARGET),OSF1)
-     DEFINES += -DMP_ASSEMBLY_MULTIPLY -DMP_NO_MP_WORD
+ ifeq (OS2,$(OS_TARGET))
+     ASFILES  = mpi_x86_os2.s
 diff --git a/nss/lib/freebl/gcm.c b/nss/lib/freebl/gcm.c
-index ac461b4..04cb180 100644
+index 2dae724..9ee7fc8 100644
 --- a/nss/lib/freebl/gcm.c
 +++ b/nss/lib/freebl/gcm.c
 @@ -18,6 +18,7 @@
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch
index 950fae6..2385fd3 100644
--- a/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch
+++ b/meta-openembedded/meta-oe/recipes-support/nss/nss/0001-nss-fix-support-cross-compiling.patch
@@ -1,4 +1,4 @@
-From 919fc5d674fae99fe21ba1351d98b75e466f425f Mon Sep 17 00:00:00 2001
+From 46ab1ca6e6fb8e1196e0665a54506dff370f8f2a Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Wed, 22 Feb 2017 11:36:11 +0200
 Subject: [PATCH] nss: fix support cross compiling
@@ -10,15 +10,15 @@
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
 
 ---
- nss/coreconf/arch.mk    | 2 +-
+ nss/coreconf/arch.mk    | 4 ++--
  nss/lib/freebl/Makefile | 6 ++++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
+ 2 files changed, 8 insertions(+), 2 deletions(-)
 
 diff --git a/nss/coreconf/arch.mk b/nss/coreconf/arch.mk
-index 2012d18..78fca62 100644
+index 17e9fae..bc4180a 100644
 --- a/nss/coreconf/arch.mk
 +++ b/nss/coreconf/arch.mk
-@@ -26,11 +26,11 @@ OS_ARCH := $(subst /,_,$(shell uname -s)
+@@ -26,11 +26,11 @@ OS_ARCH := $(subst /,_,$(shell uname -s))
  # Attempt to differentiate between sparc and x86 Solaris
  #
  
@@ -31,9 +31,9 @@
 +    OS_RELEASE ?= $(shell uname -r)
  endif
  
- #
+ 
 diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile
-index 0b8c6f4..b38889f 100644
+index eeee90a..7ee8736 100644
 --- a/nss/lib/freebl/Makefile
 +++ b/nss/lib/freebl/Makefile
 @@ -36,6 +36,12 @@ ifdef USE_64
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
deleted file mode 100644
index ea5abe0..0000000
--- a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.74.bb
+++ /dev/null
@@ -1,290 +0,0 @@
-SUMMARY = "Mozilla's SSL and TLS implementation"
-DESCRIPTION = "Network Security Services (NSS) is a set of libraries \
-designed to support cross-platform development of \
-security-enabled client and server applications. \
-Applications built with NSS can support SSL v2 and v3, \
-TLS, PKCS 5, PKCS 7, PKCS 11, PKCS 12, S/MIME, X.509 \
-v3 certificates, and other security standards."
-HOMEPAGE = "http://www.mozilla.org/projects/security/pki/nss/"
-SECTION = "libs"
-
-DEPENDS = "sqlite3 nspr zlib nss-native"
-DEPENDS:class-native = "sqlite3-native nspr-native zlib-native"
-
-LICENSE = "(MPL-2.0 & MIT) | (MPL-2.0 & GPL-2.0-or-later & MIT) | (MPL-2.0 & LGPL-2.1-or-later & MIT)"
-
-LIC_FILES_CHKSUM = "file://nss/COPYING;md5=3b1e88e1b9c0b5a4b2881d46cce06a18 \
-                    file://nss/lib/freebl/mpi/doc/LICENSE;md5=491f158d09d948466afce85d6f1fe18f \
-                    file://nss/lib/freebl/mpi/doc/LICENSE-MPL;md5=5d425c8f3157dbf212db2ec53d9e5132 \
-                    file://nss/lib/freebl/verified/Hacl_Poly1305_256.c;beginline=1;endline=22;md5=d4096c1e4421ee56e9e0f441a8161f78"
-
-VERSION_DIR = "${@d.getVar('BP').upper().replace('-', '_').replace('.', '_') + '_RTM'}"
-
-SRC_URI = "http://ftp.mozilla.org/pub/security/nss/releases/${VERSION_DIR}/src/${BP}.tar.gz \
-           file://nss.pc.in \
-           file://0001-nss-fix-support-cross-compiling.patch \
-           file://nss-no-rpath-for-cross-compiling.patch \
-           file://nss-fix-incorrect-shebang-of-perl.patch \
-           file://disable-Wvarargs-with-clang.patch \
-           file://pqg.c-ULL_addend.patch \
-           file://blank-cert9.db \
-           file://blank-key4.db \
-           file://system-pkcs11.txt \
-           file://nss-fix-nsinstall-build.patch \
-           file://0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch \
-           file://0001-Bug-1750624-Pin-validation-date-for-PayPalEE-test-ce.patch \
-           "
-SRC_URI[sha256sum] = "88928811f9f40f87d42e2eaccdf6e454562e51486067f2ddbe90aa47ea6cd056"
-
-UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases"
-UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes"
-
-inherit siteinfo
-
-TD = "${S}/tentative-dist"
-TDS = "${S}/tentative-dist-staging"
-
-TARGET_CC_ARCH += "${LDFLAGS}"
-
-CFLAGS:append:class-native = " -D_XOPEN_SOURCE "
-
-do_configure:prepend:libc-musl () {
-    sed -i -e '/-DHAVE_SYS_CDEFS_H/d' ${S}/nss/lib/dbm/config/config.mk
-}
-
-do_configure:prepend:powerpc64le:toolchain-clang () {
-    sed -i -e 's/\-std=c99/\-std=gnu99/g' ${S}/nss/coreconf/command.mk
-}
-
-do_configure:prepend:powerpc64:toolchain-clang () {
-    sed -i -e 's/\-std=c99/\-std=gnu99/g' ${S}/nss/coreconf/command.mk
-}
-
-do_compile:prepend:class-native() {
-    export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}/nspr
-    export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
-}
-
-do_compile:prepend:class-nativesdk() {
-    export LDFLAGS=""
-}
-
-do_compile:prepend:class-native() {
-    # Need to set RPATH so that chrpath will do its job correctly
-    RPATH="-Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} -Wl,-rpath-link,${STAGING_BASE_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_BASE_LIBDIR_NATIVE}"
-}
-
-do_compile() {
-    export NSPR_INCLUDE_DIR=${STAGING_INCDIR}/nspr
-
-    export CROSS_COMPILE=1
-    export NATIVE_CC="${BUILD_CC}"
-    # Additional defines needed on Centos 7
-    export NATIVE_FLAGS="${BUILD_CFLAGS} -DLINUX -Dlinux"
-    export BUILD_OPT=1
-
-    # POSIX.1-2001 states that the behaviour of getcwd() when passing a null
-    # pointer as the buf argument, is unspecified.
-    export NATIVE_FLAGS="${NATIVE_FLAGS} -DGETCWD_CANT_MALLOC"
-
-    export FREEBL_NO_DEPEND=1
-    export FREEBL_LOWHASH=1
-
-    export LIBDIR=${libdir}
-    export MOZILLA_CLIENT=1
-    export NS_USE_GCC=1
-    export NSS_USE_SYSTEM_SQLITE=1
-    export NSS_ENABLE_ECC=1
-    export NSS_ENABLE_WERROR=0
-
-    ${@bb.utils.contains("TUNE_FEATURES", "crypto", "export NSS_USE_ARM_HW_CRYPTO=1", "", d)}
-
-    export OS_RELEASE=3.4
-    export OS_TARGET=Linux
-    export OS_ARCH=Linux
-
-    if [ "${TARGET_ARCH}" = "powerpc" ]; then
-        OS_TEST=ppc
-    elif [ "${TARGET_ARCH}" = "powerpc64" -o "${TARGET_ARCH}" = "powerpc64le" ]; then
-        OS_TEST=ppc64
-    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
-        OS_TEST=mips
-    elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
-        OS_TEST="aarch64"
-    else
-        OS_TEST="${TARGET_ARCH}"
-    fi
-
-    if [ "${SITEINFO_BITS}" = "64" ]; then
-        export USE_64=1
-    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
-        export USE_X32=1
-    fi
-
-    export NSS_DISABLE_GTESTS=1
-    # We can modify CC in the environment, but if we set it via an
-    # argument to make, nsinstall, a host program, will also build with it!
-    #
-    # nss pretty much does its own thing with CFLAGS, so we put them into CC.
-    # Optimization will get clobbered, but most of the stuff will survive.
-    # The motivation for this is to point to the correct place for debug
-    # source files and CFLAGS does that.  Nothing uses CCC.
-    #
-    export CC="${CC} ${CFLAGS}"
-    make -C ./nss CCC="${CXX} -g" \
-        OS_TEST=${OS_TEST} \
-        RPATH="${RPATH}" \
-        autobuild
-}
-
-do_compile[vardepsexclude] += "SITEINFO_BITS"
-
-do_install:prepend:class-nativesdk() {
-    export LDFLAGS=""
-}
-
-do_install() {
-    export CROSS_COMPILE=1
-    export NATIVE_CC="${BUILD_CC}"
-    export BUILD_OPT=1
-
-    export FREEBL_NO_DEPEND=1
-
-    export LIBDIR=${libdir}
-    export MOZILLA_CLIENT=1
-    export NS_USE_GCC=1
-    export NSS_USE_SYSTEM_SQLITE=1
-    export NSS_ENABLE_ECC=1
-
-    export OS_RELEASE=3.4
-    export OS_TARGET=Linux
-    export OS_ARCH=Linux
-
-    if [ "${TARGET_ARCH}" = "powerpc" ]; then
-        OS_TEST=ppc
-    elif [ "${TARGET_ARCH}" = "powerpc64" -o "${TARGET_ARCH}" = "powerpc64le" ]; then
-        OS_TEST=ppc64
-    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
-        OS_TEST=mips
-    elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
-        CPU_ARCH=aarch64
-        OS_TEST="aarch64"
-    else
-        OS_TEST="${TARGET_ARCH}"
-    fi
-    if [ "${SITEINFO_BITS}" = "64" ]; then
-        export USE_64=1
-    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
-        export USE_X32=1
-    fi
-
-    export NSS_DISABLE_GTESTS=1
-
-    make -C ./nss \
-        CCC="${CXX}" \
-        OS_TEST=${OS_TEST} \
-        SOURCE_LIB_DIR="${TD}/${libdir}" \
-        SOURCE_BIN_DIR="${TD}/${bindir}" \
-        install
-
-    install -d ${D}/${libdir}/
-    for file in ${S}/dist/*.OBJ/lib/*.so; do
-        echo "Installing `basename $file`..."
-        cp $file  ${D}/${libdir}/
-    done
-
-    for shared_lib in ${TD}/${libdir}/*.so.*; do
-        if [ -f $shared_lib ]; then
-            cp $shared_lib ${D}/${libdir}
-            ln -sf $(basename $shared_lib) ${D}/${libdir}/$(basename $shared_lib .1oe)
-        fi
-    done
-    for shared_lib in ${TD}/${libdir}/*.so; do
-        if [ -f $shared_lib -a ! -e ${D}/${libdir}/$shared_lib ]; then
-            cp $shared_lib ${D}/${libdir}
-        fi
-    done
-
-    install -d ${D}/${includedir}/nss3
-    install -m 644 -t ${D}/${includedir}/nss3 dist/public/nss/*
-
-    install -d ${D}/${bindir}
-    for binary in ${TD}/${bindir}/*; do
-        install -m 755 -t ${D}/${bindir} $binary
-    done
-}
-
-do_install[vardepsexclude] += "SITEINFO_BITS"
-
-do_install:append() {
-    # Create empty .chk files for the NSS libraries at build time. They could
-    # be regenerated at target's boot time.
-    for file in libsoftokn3.chk libfreebl3.chk libnssdbm3.chk; do
-        touch ${D}/${libdir}/$file
-        chmod 755 ${D}/${libdir}/$file
-    done
-
-    install -d ${D}${libdir}/pkgconfig/
-    sed 's/%NSS_VERSION%/${PV}/' ${WORKDIR}/nss.pc.in | sed 's/%NSPR_VERSION%/4.9.2/' > ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OEPREFIX:${prefix}:g ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OEEXECPREFIX:${exec_prefix}:g ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OELIBDIR:${libdir}:g ${D}${libdir}/pkgconfig/nss.pc
-    sed -i s:OEINCDIR:${includedir}/nss3:g ${D}${libdir}/pkgconfig/nss.pc
-}
-
-do_install:append:class-target() {
-    # It used to call certutil to create a blank certificate with empty password at
-    # build time, but the checksum of key4.db changes every time when certutil is called.
-    # It causes non-determinism issue, so provide databases with a blank certificate
-    # which are originally from output of nss in qemux86-64 build. You can get these
-    # databases by:
-    # certutil -N -d sql:/database/path/ --empty-password
-    install -d ${D}${sysconfdir}/pki/nssdb/
-    install -m 0644 ${WORKDIR}/blank-cert9.db ${D}${sysconfdir}/pki/nssdb/cert9.db
-    install -m 0644 ${WORKDIR}/blank-key4.db ${D}${sysconfdir}/pki/nssdb/key4.db
-    install -m 0644 ${WORKDIR}/system-pkcs11.txt ${D}${sysconfdir}/pki/nssdb/pkcs11.txt
-}
-
-PACKAGE_WRITE_DEPS += "nss-native"
-
-pkg_postinst:${PN} () {
-    for I in $D${libdir}/lib*.chk; do
-        DN=`dirname $I`
-        BN=`basename $I .chk`
-        FN=$DN/$BN.so
-        shlibsign -i $FN
-        if [ $? -ne 0 ]; then
-            echo "shlibsign -i $FN failed"
-        fi
-    done
-}
-
-PACKAGES =+ "${PN}-smime"
-FILES:${PN}-smime = "\
-    ${bindir}/smime \
-"
-
-FILES:${PN} = "\
-    ${sysconfdir} \
-    ${bindir} \
-    ${libdir}/lib*.chk \
-    ${libdir}/lib*.so \
-    "
-
-FILES:${PN}-dev = "\
-    ${libdir}/nss \
-    ${libdir}/pkgconfig/* \
-    ${includedir}/* \
-    "
-
-RDEPENDS:${PN}-smime = "perl"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CVE_PRODUCT += "network_security_services"
-
-CVE_STATUS_GROUPS += "CVE_STATUS_NSS"
-CVE_STATUS_NSS[status] = "not-applicable-config: This only affect the legacy db (libnssdbm), only compiled with --enable-legacy-db"
-CVE_STATUS_NSS = "CVE-2017-11695 CVE-2017-11696 CVE-2017-11697 CVE-2017-11698"
-
-CVE_STATUS[CVE-2022-3479] = "not-applicable-config: vulnerability was introduced in 3.77 and fixed in 3.87"
diff --git a/meta-openembedded/meta-oe/recipes-support/nss/nss_3.98.bb b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.98.bb
new file mode 100644
index 0000000..0150136
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/nss/nss_3.98.bb
@@ -0,0 +1,289 @@
+SUMMARY = "Mozilla's SSL and TLS implementation"
+DESCRIPTION = "Network Security Services (NSS) is a set of libraries \
+designed to support cross-platform development of \
+security-enabled client and server applications. \
+Applications built with NSS can support SSL v2 and v3, \
+TLS, PKCS 5, PKCS 7, PKCS 11, PKCS 12, S/MIME, X.509 \
+v3 certificates, and other security standards."
+HOMEPAGE = "http://www.mozilla.org/projects/security/pki/nss/"
+SECTION = "libs"
+
+DEPENDS = "sqlite3 nspr zlib nss-native"
+DEPENDS:class-native = "sqlite3-native nspr-native zlib-native"
+
+LICENSE = "(MPL-2.0 & MIT) | (MPL-2.0 & GPL-2.0-or-later & MIT) | (MPL-2.0 & LGPL-2.1-or-later & MIT)"
+
+LIC_FILES_CHKSUM = "file://nss/COPYING;md5=3b1e88e1b9c0b5a4b2881d46cce06a18 \
+                    file://nss/lib/freebl/mpi/doc/LICENSE;md5=491f158d09d948466afce85d6f1fe18f \
+                    file://nss/lib/freebl/mpi/doc/LICENSE-MPL;md5=5d425c8f3157dbf212db2ec53d9e5132 \
+                    file://nss/lib/freebl/verified/Hacl_Poly1305_256.c;beginline=1;endline=22;md5=cc22f07b95d28d56baeb757df46ee7c8"
+
+VERSION_DIR = "${@d.getVar('BP').upper().replace('-', '_').replace('.', '_') + '_RTM'}"
+
+SRC_URI = "http://ftp.mozilla.org/pub/security/nss/releases/${VERSION_DIR}/src/${BP}.tar.gz \
+           file://nss.pc.in \
+           file://0001-nss-fix-support-cross-compiling.patch \
+           file://nss-no-rpath-for-cross-compiling.patch \
+           file://nss-fix-incorrect-shebang-of-perl.patch \
+           file://disable-Wvarargs-with-clang.patch \
+           file://pqg.c-ULL_addend.patch \
+           file://blank-cert9.db \
+           file://blank-key4.db \
+           file://system-pkcs11.txt \
+           file://nss-fix-nsinstall-build.patch \
+           file://0001-freebl-add-a-configure-option-to-disable-ARM-HW-cryp.patch \
+           "
+SRC_URI[sha256sum] = "f549cc33d35c0601674bfacf7c6ad683c187595eb4125b423238d3e9aa4209ce"
+
+UPSTREAM_CHECK_URI = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases"
+UPSTREAM_CHECK_REGEX = "NSS_(?P<pver>.+)_release_notes"
+
+inherit siteinfo
+
+TD = "${S}/tentative-dist"
+TDS = "${S}/tentative-dist-staging"
+
+TARGET_CC_ARCH += "${LDFLAGS}"
+
+CFLAGS:append:class-native = " -D_XOPEN_SOURCE "
+
+do_configure:prepend:libc-musl () {
+    sed -i -e '/-DHAVE_SYS_CDEFS_H/d' ${S}/nss/lib/dbm/config/config.mk
+}
+
+do_configure:prepend:powerpc64le:toolchain-clang () {
+    sed -i -e 's/\-std=c99/\-std=gnu99/g' ${S}/nss/coreconf/command.mk
+}
+
+do_configure:prepend:powerpc64:toolchain-clang () {
+    sed -i -e 's/\-std=c99/\-std=gnu99/g' ${S}/nss/coreconf/command.mk
+}
+
+do_compile:prepend:class-native() {
+    export NSPR_INCLUDE_DIR=${STAGING_INCDIR_NATIVE}/nspr
+    export NSPR_LIB_DIR=${STAGING_LIBDIR_NATIVE}
+}
+
+do_compile:prepend:class-nativesdk() {
+    export LDFLAGS=""
+}
+
+do_compile:prepend:class-native() {
+    # Need to set RPATH so that chrpath will do its job correctly
+    RPATH="-Wl,-rpath-link,${STAGING_LIBDIR_NATIVE} -Wl,-rpath-link,${STAGING_BASE_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_LIBDIR_NATIVE} -Wl,-rpath,${STAGING_BASE_LIBDIR_NATIVE}"
+}
+
+do_compile() {
+    export NSPR_INCLUDE_DIR=${STAGING_INCDIR}/nspr
+
+    export CROSS_COMPILE=1
+    export NATIVE_CC="${BUILD_CC}"
+    # Additional defines needed on Centos 7
+    export NATIVE_FLAGS="${BUILD_CFLAGS} -DLINUX -Dlinux"
+    export BUILD_OPT=1
+
+    # POSIX.1-2001 states that the behaviour of getcwd() when passing a null
+    # pointer as the buf argument, is unspecified.
+    export NATIVE_FLAGS="${NATIVE_FLAGS} -DGETCWD_CANT_MALLOC"
+
+    export FREEBL_NO_DEPEND=1
+    export FREEBL_LOWHASH=1
+
+    export LIBDIR=${libdir}
+    export MOZILLA_CLIENT=1
+    export NS_USE_GCC=1
+    export NSS_USE_SYSTEM_SQLITE=1
+    export NSS_ENABLE_ECC=1
+    export NSS_ENABLE_WERROR=0
+
+    ${@bb.utils.contains("TUNE_FEATURES", "crypto", "export NSS_USE_ARM_HW_CRYPTO=1", "", d)}
+
+    export OS_RELEASE=3.4
+    export OS_TARGET=Linux
+    export OS_ARCH=Linux
+
+    if [ "${TARGET_ARCH}" = "powerpc" ]; then
+        OS_TEST=ppc
+    elif [ "${TARGET_ARCH}" = "powerpc64" -o "${TARGET_ARCH}" = "powerpc64le" ]; then
+        OS_TEST=ppc64
+    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
+        OS_TEST=mips
+    elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
+        OS_TEST="aarch64"
+    else
+        OS_TEST="${TARGET_ARCH}"
+    fi
+
+    if [ "${SITEINFO_BITS}" = "64" ]; then
+        export USE_64=1
+    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
+        export USE_X32=1
+    fi
+
+    export NSS_DISABLE_GTESTS=1
+    # We can modify CC in the environment, but if we set it via an
+    # argument to make, nsinstall, a host program, will also build with it!
+    #
+    # nss pretty much does its own thing with CFLAGS, so we put them into CC.
+    # Optimization will get clobbered, but most of the stuff will survive.
+    # The motivation for this is to point to the correct place for debug
+    # source files and CFLAGS does that.  Nothing uses CCC.
+    #
+    export CC="${CC} ${CFLAGS}"
+    make -C ./nss CCC="${CXX} -g" \
+        OS_TEST=${OS_TEST} \
+        RPATH="${RPATH}" \
+        autobuild
+}
+
+do_compile[vardepsexclude] += "SITEINFO_BITS"
+
+do_install:prepend:class-nativesdk() {
+    export LDFLAGS=""
+}
+
+do_install() {
+    export CROSS_COMPILE=1
+    export NATIVE_CC="${BUILD_CC}"
+    export BUILD_OPT=1
+
+    export FREEBL_NO_DEPEND=1
+
+    export LIBDIR=${libdir}
+    export MOZILLA_CLIENT=1
+    export NS_USE_GCC=1
+    export NSS_USE_SYSTEM_SQLITE=1
+    export NSS_ENABLE_ECC=1
+
+    export OS_RELEASE=3.4
+    export OS_TARGET=Linux
+    export OS_ARCH=Linux
+
+    if [ "${TARGET_ARCH}" = "powerpc" ]; then
+        OS_TEST=ppc
+    elif [ "${TARGET_ARCH}" = "powerpc64" -o "${TARGET_ARCH}" = "powerpc64le" ]; then
+        OS_TEST=ppc64
+    elif [ "${TARGET_ARCH}" = "mips" -o "${TARGET_ARCH}" = "mipsel" -o "${TARGET_ARCH}" = "mips64" -o "${TARGET_ARCH}" = "mips64el" ]; then
+        OS_TEST=mips
+    elif [ "${TARGET_ARCH}" = "aarch64_be" ]; then
+        CPU_ARCH=aarch64
+        OS_TEST="aarch64"
+    else
+        OS_TEST="${TARGET_ARCH}"
+    fi
+    if [ "${SITEINFO_BITS}" = "64" ]; then
+        export USE_64=1
+    elif [ "${TARGET_ARCH}" = "x86_64" -a "${SITEINFO_BITS}" = "32" ]; then
+        export USE_X32=1
+    fi
+
+    export NSS_DISABLE_GTESTS=1
+
+    make -C ./nss \
+        CCC="${CXX}" \
+        OS_TEST=${OS_TEST} \
+        SOURCE_LIB_DIR="${TD}/${libdir}" \
+        SOURCE_BIN_DIR="${TD}/${bindir}" \
+        install
+
+    install -d ${D}/${libdir}/
+    for file in ${S}/dist/*.OBJ/lib/*.so; do
+        echo "Installing `basename $file`..."
+        cp $file  ${D}/${libdir}/
+    done
+
+    for shared_lib in ${TD}/${libdir}/*.so.*; do
+        if [ -f $shared_lib ]; then
+            cp $shared_lib ${D}/${libdir}
+            ln -sf $(basename $shared_lib) ${D}/${libdir}/$(basename $shared_lib .1oe)
+        fi
+    done
+    for shared_lib in ${TD}/${libdir}/*.so; do
+        if [ -f $shared_lib -a ! -e ${D}/${libdir}/$shared_lib ]; then
+            cp $shared_lib ${D}/${libdir}
+        fi
+    done
+
+    install -d ${D}/${includedir}/nss3
+    install -m 644 -t ${D}/${includedir}/nss3 dist/public/nss/*
+
+    install -d ${D}/${bindir}
+    for binary in ${TD}/${bindir}/*; do
+        install -m 755 -t ${D}/${bindir} $binary
+    done
+}
+
+do_install[vardepsexclude] += "SITEINFO_BITS"
+
+do_install:append() {
+    # Create empty .chk files for the NSS libraries at build time. They could
+    # be regenerated at target's boot time.
+    for file in libsoftokn3.chk libfreebl3.chk libnssdbm3.chk; do
+        touch ${D}/${libdir}/$file
+        chmod 755 ${D}/${libdir}/$file
+    done
+
+    install -d ${D}${libdir}/pkgconfig/
+    sed 's/%NSS_VERSION%/${PV}/' ${WORKDIR}/nss.pc.in | sed 's/%NSPR_VERSION%/4.9.2/' > ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OEPREFIX:${prefix}:g ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OEEXECPREFIX:${exec_prefix}:g ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OELIBDIR:${libdir}:g ${D}${libdir}/pkgconfig/nss.pc
+    sed -i s:OEINCDIR:${includedir}/nss3:g ${D}${libdir}/pkgconfig/nss.pc
+}
+
+do_install:append:class-target() {
+    # It used to call certutil to create a blank certificate with empty password at
+    # build time, but the checksum of key4.db changes every time when certutil is called.
+    # It causes non-determinism issue, so provide databases with a blank certificate
+    # which are originally from output of nss in qemux86-64 build. You can get these
+    # databases by:
+    # certutil -N -d sql:/database/path/ --empty-password
+    install -d ${D}${sysconfdir}/pki/nssdb/
+    install -m 0644 ${WORKDIR}/blank-cert9.db ${D}${sysconfdir}/pki/nssdb/cert9.db
+    install -m 0644 ${WORKDIR}/blank-key4.db ${D}${sysconfdir}/pki/nssdb/key4.db
+    install -m 0644 ${WORKDIR}/system-pkcs11.txt ${D}${sysconfdir}/pki/nssdb/pkcs11.txt
+}
+
+PACKAGE_WRITE_DEPS += "nss-native"
+
+pkg_postinst:${PN} () {
+    for I in $D${libdir}/lib*.chk; do
+        DN=`dirname $I`
+        BN=`basename $I .chk`
+        FN=$DN/$BN.so
+        shlibsign -i $FN
+        if [ $? -ne 0 ]; then
+            echo "shlibsign -i $FN failed"
+        fi
+    done
+}
+
+PACKAGES =+ "${PN}-smime"
+FILES:${PN}-smime = "\
+    ${bindir}/smime \
+"
+
+FILES:${PN} = "\
+    ${sysconfdir} \
+    ${bindir} \
+    ${libdir}/lib*.chk \
+    ${libdir}/lib*.so \
+    "
+
+FILES:${PN}-dev = "\
+    ${libdir}/nss \
+    ${libdir}/pkgconfig/* \
+    ${includedir}/* \
+    "
+
+RDEPENDS:${PN}-smime = "perl"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CVE_PRODUCT += "network_security_services"
+
+CVE_STATUS_GROUPS += "CVE_STATUS_NSS"
+CVE_STATUS_NSS[status] = "not-applicable-config: This only affect the legacy db (libnssdbm), only compiled with --enable-legacy-db"
+CVE_STATUS_NSS = "CVE-2017-11695 CVE-2017-11696 CVE-2017-11697 CVE-2017-11698"
+
+CVE_STATUS[CVE-2022-3479] = "not-applicable-config: vulnerability was introduced in 3.77 and fixed in 3.87"
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.24.0.bb b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.24.0.bb
deleted file mode 100644
index fd64cf9..0000000
--- a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.24.0.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-SUMMARY = "Smart card library and applications"
-DESCRIPTION = "OpenSC is a tool for accessing smart card devices. Basic\
-functionality (e.g. SELECT FILE, READ BINARY) should work on any ISO\
-7816-4 compatible smart card. Encryption and decryption using private\
-keys on the smart card is possible with PKCS\
-such as the FINEID (Finnish Electronic IDentity) card. Swedish Posten\
-eID cards have also been confirmed to work."
-
-HOMEPAGE = "https://github.com/OpenSC/OpenSC/wiki"
-SECTION = "System Environment/Libraries"
-LICENSE = "LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=cb8aedd3bced19bd8026d96a8b6876d7"
-
-#v0.21.0
-SRCREV = "f15d0c5295f3247ae56bf976cf411fec4b47b6ec"
-SRC_URI = "git://github.com/OpenSC/OpenSC;branch=master;protocol=https \
-          "
-DEPENDS = "virtual/libiconv openssl"
-
-S = "${WORKDIR}/git"
-inherit autotools pkgconfig bash-completion
-
-EXTRA_OECONF = " \
-    --disable-static \
-    --disable-ctapi \
-    --disable-doc \
-    --disable-strict \
-"
-EXTRA_OEMAKE = "DESTDIR=${D}"
-
-PACKAGECONFIG ??= "pcsc"
-
-PACKAGECONFIG[openct] = "--enable-openct,--disable-openct,openct"
-PACKAGECONFIG[pcsc] = "--enable-pcsc,--disable-pcsc,pcsc-lite,pcsc-lite pcsc-lite-lib"
-
-RDEPENDS:${PN} = "readline"
-
-FILES:${PN} += "\
-    ${libdir}/opensc-pkcs11.so \
-    ${libdir}/onepin-opensc-pkcs11.so \
-    ${libdir}/pkcs11-spy.so \
-"
-FILES:${PN}-dev += "\
-    ${libdir}/onepin-opensc-pkcs11.so \
-    ${libdir}/pkcs11/opensc-pkcs11.so \
-    ${libdir}/pkcs11/onepin-opensc-pkcs11.so \
-    ${libdir}/pkcs11/pkcs11-spy.so \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.25.0.bb b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.25.0.bb
new file mode 100644
index 0000000..02c9c7e
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/opensc/opensc_0.25.0.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Smart card library and applications"
+DESCRIPTION = "OpenSC is a tool for accessing smart card devices. Basic\
+functionality (e.g. SELECT FILE, READ BINARY) should work on any ISO\
+7816-4 compatible smart card. Encryption and decryption using private\
+keys on the smart card is possible with PKCS\
+such as the FINEID (Finnish Electronic IDentity) card. Swedish Posten\
+eID cards have also been confirmed to work."
+
+HOMEPAGE = "https://github.com/OpenSC/OpenSC/wiki"
+SECTION = "System Environment/Libraries"
+LICENSE = "LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=cb8aedd3bced19bd8026d96a8b6876d7"
+
+#v0.21.0
+SRCREV = "67986eda93a3a359a897f0b0be97f4315dde8d42"
+SRC_URI = "git://github.com/OpenSC/OpenSC;branch=master;protocol=https \
+          "
+DEPENDS = "virtual/libiconv openssl"
+
+S = "${WORKDIR}/git"
+inherit autotools pkgconfig bash-completion
+
+EXTRA_OECONF = " \
+    --disable-static \
+    --disable-ctapi \
+    --disable-doc \
+    --disable-strict \
+"
+EXTRA_OEMAKE = "DESTDIR=${D}"
+
+PACKAGECONFIG ??= "pcsc"
+
+PACKAGECONFIG[openct] = "--enable-openct,--disable-openct,openct"
+PACKAGECONFIG[pcsc] = "--enable-pcsc,--disable-pcsc,pcsc-lite,pcsc-lite pcsc-lite-lib"
+
+RDEPENDS:${PN} = "readline"
+
+FILES:${PN} += "\
+    ${libdir}/opensc-pkcs11.so \
+    ${libdir}/onepin-opensc-pkcs11.so \
+    ${libdir}/pkcs11-spy.so \
+"
+FILES:${PN}-dev += "\
+    ${libdir}/onepin-opensc-pkcs11.so \
+    ${libdir}/pkcs11/opensc-pkcs11.so \
+    ${libdir}/pkcs11/onepin-opensc-pkcs11.so \
+    ${libdir}/pkcs11/pkcs11-spy.so \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb b/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
index cd7f79e..c6a3079 100644
--- a/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
+++ b/meta-openembedded/meta-oe/recipes-support/p910nd/p910nd_0.97.bb
@@ -4,7 +4,6 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE.md;md5=3d82780e8917b360cbee7b9ec3e40734"
 
-PR = "r2"
 
 # v0.97
 SRCREV = "57ebc07ad8723ea4106090536c58c7f7160743e2"
diff --git a/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_2.0.1.bb b/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_2.0.1.bb
deleted file mode 100644
index 0862f95..0000000
--- a/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_2.0.1.bb
+++ /dev/null
@@ -1,58 +0,0 @@
-SUMMARY = "PC/SC Lite smart card framework and applications"
-HOMEPAGE = "https://pcsclite.apdu.fr/"
-LICENSE = "BSD-3-Clause & GPL-3.0-or-later"
-LICENSE:${PN} = "BSD-3-Clause"
-LICENSE:${PN}-lib = "BSD-3-Clause"
-LICENSE:${PN}-doc = "BSD-3-Clause"
-LICENSE:${PN}-dev = "BSD-3-Clause"
-LICENSE:${PN}-dbg = "BSD-3-Clause & GPL-3.0-or-later"
-LICENSE:${PN}-spy = "GPL-3.0-or-later"
-LICENSE:${PN}-spy-dev = "GPL-3.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=628c01ba985ecfa21677f5ee2d5202f6"
-DEPENDS = "autoconf-archive-native flex-native"
-
-SRC_URI = "https://pcsclite.apdu.fr/files/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "5edcaf5d4544403bdab6ee2b5d6c02c6f97ea64eebf0825b8d0fa61ba417dada"
-
-inherit autotools systemd pkgconfig perlnative
-
-EXTRA_OECONF = " \
-    --disable-libusb \
-    --enable-usbdropdir=${libdir}/pcsc/drivers \
-"
-
-S = "${WORKDIR}/pcsc-lite-${PV}"
-
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} udev"
-PACKAGECONFIG:class-native ??= ""
-
-PACKAGECONFIG[systemd]  = ",--disable-libsystemd,systemd,"
-PACKAGECONFIG[udev] = "--enable-libudev,--disable-libudev,udev"
-PACKAGECONFIG[polkit] = ",--disable-polkit,polkit"
-
-PACKAGES = "${PN} ${PN}-dbg ${PN}-dev ${PN}-lib ${PN}-doc ${PN}-spy ${PN}-spy-dev"
-
-RRECOMMENDS:${PN} = "ccid"
-RRECOMMENDS:${PN}:class-native = ""
-RPROVIDES:${PN}:class-native += "pcsc-lite-lib-native"
-
-FILES:${PN} = "${sbindir}/pcscd \
-               ${datadir}/polkit-1"
-FILES:${PN}-lib = "${libdir}/libpcsclite*${SOLIBS}"
-FILES:${PN}-dev = "${includedir} \
-                   ${libdir}/pkgconfig \
-                   ${libdir}/libpcsclite.la \
-                   ${libdir}/libpcsclite.so"
-
-FILES:${PN}-spy = "${bindir}/pcsc-spy \
-                   ${libdir}/libpcscspy*${SOLIBS}"
-FILES:${PN}-spy-dev = "${libdir}/libpcscspy.la \
-                       ${libdir}/libpcscspy.so "
-
-RPROVIDES:${PN} += "${PN}-systemd"
-RREPLACES:${PN} += "${PN}-systemd"
-RCONFLICTS:${PN} += "${PN}-systemd"
-SYSTEMD_SERVICE:${PN} = "pcscd.socket"
-RDEPENDS:${PN}-spy += "python3-core"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_2.0.3.bb b/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_2.0.3.bb
new file mode 100644
index 0000000..d5a560a
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/pcsc-lite/pcsc-lite_2.0.3.bb
@@ -0,0 +1,58 @@
+SUMMARY = "PC/SC Lite smart card framework and applications"
+HOMEPAGE = "https://pcsclite.apdu.fr/"
+LICENSE = "BSD-3-Clause & GPL-3.0-or-later"
+LICENSE:${PN} = "BSD-3-Clause"
+LICENSE:${PN}-lib = "BSD-3-Clause"
+LICENSE:${PN}-doc = "BSD-3-Clause"
+LICENSE:${PN}-dev = "BSD-3-Clause"
+LICENSE:${PN}-dbg = "BSD-3-Clause & GPL-3.0-or-later"
+LICENSE:${PN}-spy = "GPL-3.0-or-later"
+LICENSE:${PN}-spy-dev = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=628c01ba985ecfa21677f5ee2d5202f6"
+DEPENDS = "autoconf-archive-native flex-native"
+
+SRC_URI = "https://pcsclite.apdu.fr/files/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "f42ee9efa489e9ff5d328baefa26f9c515be65021856e78d99ad1f0ead9ec85d"
+
+inherit autotools systemd pkgconfig perlnative
+
+EXTRA_OECONF = " \
+    --disable-libusb \
+    --enable-usbdropdir=${libdir}/pcsc/drivers \
+"
+
+S = "${WORKDIR}/pcsc-lite-${PV}"
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd polkit', d)} udev"
+PACKAGECONFIG:class-native ??= ""
+
+PACKAGECONFIG[systemd]  = ",--disable-libsystemd,systemd,"
+PACKAGECONFIG[udev] = "--enable-libudev,--disable-libudev,udev"
+PACKAGECONFIG[polkit] = ",--disable-polkit,polkit"
+
+PACKAGES = "${PN} ${PN}-dbg ${PN}-dev ${PN}-lib ${PN}-doc ${PN}-spy ${PN}-spy-dev"
+
+RRECOMMENDS:${PN} = "ccid"
+RRECOMMENDS:${PN}:class-native = ""
+RPROVIDES:${PN}:class-native += "pcsc-lite-lib-native"
+
+FILES:${PN} = "${sbindir}/pcscd \
+               ${datadir}/polkit-1"
+FILES:${PN}-lib = "${libdir}/libpcsclite*${SOLIBS}"
+FILES:${PN}-dev = "${includedir} \
+                   ${libdir}/pkgconfig \
+                   ${libdir}/libpcsclite.la \
+                   ${libdir}/libpcsclite.so"
+
+FILES:${PN}-spy = "${bindir}/pcsc-spy \
+                   ${libdir}/libpcscspy*${SOLIBS}"
+FILES:${PN}-spy-dev = "${libdir}/libpcscspy.la \
+                       ${libdir}/libpcscspy.so "
+
+RPROVIDES:${PN} += "${PN}-systemd"
+RREPLACES:${PN} += "${PN}-systemd"
+RCONFLICTS:${PN} += "${PN}-systemd"
+SYSTEMD_SERVICE:${PN} = "pcscd.socket"
+RDEPENDS:${PN}-spy += "python3-core"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-oe/recipes-support/re2/re2_2023.03.01.bb b/meta-openembedded/meta-oe/recipes-support/re2/re2_2023.03.01.bb
deleted file mode 100644
index fe210d5..0000000
--- a/meta-openembedded/meta-oe/recipes-support/re2/re2_2023.03.01.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION = "A regular expression library"
-HOMEPAGE = "https://github.com/google/re2/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b5c31eb512bdf3cb11ffd5713963760"
-
-# tag 2023-03-01
-SRCREV = "241e2e430836e80f93d704d1f06cd3e7fe3100f5"
-
-SRC_URI = "git://github.com/google/re2.git;branch=main;protocol=https \
-           ${@bb.utils.contains('PTEST_ENABLED', '1', 'file://run-ptest', '', d)} \
-          "
-
-S = "${WORKDIR}/git"
-
-inherit cmake ptest
-RDEPENDS:${PN}-ptest += "cmake sed"
-
-EXTRA_OECMAKE += " \
-	-DBUILD_SHARED_LIBS=ON \
-        ${@bb.utils.contains('PTEST_ENABLED', '1', '-DRE2_BUILD_TESTING=ON', '-DRE2_BUILD_TESTING=OFF', d)} \
-"
-
-do_install_ptest () {
-    cp -r ${B}/*_test ${D}${PTEST_PATH}
-    cp -r ${B}/CTestTestfile.cmake ${D}${PTEST_PATH}
-    sed -i -e 's#${B}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
-    sed -i -e 's#${S}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
-}
-
-# ignore .so in /usr/lib64
-FILES:${PN} = "${libdir}"
-INSANE_SKIP:${PN} += "dev-so"
-
-# Don't include so files in dev package
-FILES:${PN}-dev = "${includedir} ${libdir}/cmake"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/re2/re2_2024.03.01.bb b/meta-openembedded/meta-oe/recipes-support/re2/re2_2024.03.01.bb
new file mode 100644
index 0000000..192fe26
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/re2/re2_2024.03.01.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "A regular expression library"
+HOMEPAGE = "https://github.com/google/re2/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b5c31eb512bdf3cb11ffd5713963760"
+
+# tag 2024-03-01
+SRCREV = "2d866a3d0753f4f4fce93cccc6c59c4b052d7db4"
+
+SRC_URI = "git://github.com/google/re2.git;branch=main;protocol=https \
+           ${@bb.utils.contains('PTEST_ENABLED', '1', 'file://run-ptest', '', d)} \
+          "
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "abseil-cpp ${@bb.utils.contains('PTEST_ENABLED', '1', 'gtest googlebenchmark', '', d)}"
+
+inherit cmake ptest
+RDEPENDS:${PN}-ptest += "cmake sed"
+RDEPENDS:${PN} += "abseil-cpp-dev"
+
+INSANE_SKIP:${PN} += "dev-deps"
+
+EXTRA_OECMAKE += " \
+	-DBUILD_SHARED_LIBS=ON \
+	${@bb.utils.contains('PTEST_ENABLED', '1', '-DRE2_BUILD_TESTING=ON', '-DRE2_BUILD_TESTING=OFF', d)} \
+"
+
+do_install_ptest () {
+    cp -r ${B}/*_test ${D}${PTEST_PATH}
+    cp -r ${B}/CTestTestfile.cmake ${D}${PTEST_PATH}
+    sed -i -e 's#${B}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
+    sed -i -e 's#${S}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
+    # ERROR: re2-2024.03.01-r0 do_package_qa: QA Issue: /usr/lib64/re2/ptest/string_generator_test contained in package re2-ptest requires libtesting.so()(64bit), but no providers found in RDEPENDS:re2-ptest? [file-rdeps]
+    cp -r ${B}/libtesting.so ${D}${PTEST_PATH}
+}
+
+# ignore .so in /usr/lib64
+FILES:${PN} = "${libdir}"
+INSANE_SKIP:${PN} += "dev-so"
+
+# Don't include so files in dev package
+FILES:${PN}-dev = "${includedir} ${libdir}/cmake"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.3.4.bb b/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.3.4.bb
deleted file mode 100644
index 960d066..0000000
--- a/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.3.4.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "the compiling PHP template engine"
-SECTION = "console/network"
-HOMEPAGE = "https://www.smarty.net/"
-
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2c0f216b2120ffc367e20f2b56df51b3"
-
-DEPENDS += "php"
-
-SRC_URI = "git://github.com/smarty-php/smarty.git;protocol=https;branch=support/4.3"
-
-SRCREV = "3931d8f54b8f7a4ffab538582d34d4397ba8daa5"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-        install -d ${D}${datadir}/php/smarty3/libs/
-        install -m 0644 ${S}/libs/*.php ${D}${datadir}/php/smarty3/libs/
-
-        install -d ${D}${datadir}/php/smarty3/libs/plugins
-        install -m 0644 ${S}/libs/plugins/*.php ${D}${datadir}/php/smarty3/libs/plugins/
-
-        install -d ${D}${datadir}/php/smarty3/libs/sysplugins
-        install -m 0644 ${S}/libs/sysplugins/*.php ${D}${datadir}/php/smarty3/libs/sysplugins/
-}
-FILES:${PN} = "${datadir}/php/smarty3/"
diff --git a/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.4.1.bb b/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.4.1.bb
new file mode 100644
index 0000000..1caa4cd
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/smarty/smarty_4.4.1.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "the compiling PHP template engine"
+SECTION = "console/network"
+HOMEPAGE = "https://www.smarty.net/"
+
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2c0f216b2120ffc367e20f2b56df51b3"
+
+DEPENDS += "php"
+
+SRC_URI = "git://github.com/smarty-php/smarty.git;protocol=https;branch=support/4.3"
+
+SRCREV = "f4152e9b814ae2369b6e4935c05e1e0c3654318d"
+
+S = "${WORKDIR}/git"
+
+do_install() {
+        install -d ${D}${datadir}/php/smarty3/libs/
+        install -m 0644 ${S}/libs/*.php ${D}${datadir}/php/smarty3/libs/
+
+        install -d ${D}${datadir}/php/smarty3/libs/plugins
+        install -m 0644 ${S}/libs/plugins/*.php ${D}${datadir}/php/smarty3/libs/plugins/
+
+        install -d ${D}${datadir}/php/smarty3/libs/sysplugins
+        install -m 0644 ${S}/libs/sysplugins/*.php ${D}${datadir}/php/smarty3/libs/sysplugins/
+}
+FILES:${PN} = "${datadir}/php/smarty3/"
diff --git a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc
index 52a8180..d71aa44 100644
--- a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc
+++ b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools-crates.inc
@@ -4,28 +4,26 @@
 SRC_URI += " \
     crate://crates.io/adler/1.0.2 \
     crate://crates.io/aho-corasick/1.1.2 \
-    crate://crates.io/anstyle/1.0.4 \
-    crate://crates.io/anyhow/1.0.75 \
+    crate://crates.io/anstyle/1.0.6 \
+    crate://crates.io/anyhow/1.0.80 \
     crate://crates.io/atty/0.2.14 \
     crate://crates.io/autocfg/1.1.0 \
-    crate://crates.io/base64/0.21.5 \
+    crate://crates.io/base64/0.21.7 \
     crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/bitflags/2.4.1 \
-    crate://crates.io/bytemuck/1.14.0 \
+    crate://crates.io/bitflags/2.4.2 \
+    crate://crates.io/bytemuck/1.14.3 \
     crate://crates.io/byteorder/1.5.0 \
     crate://crates.io/cassowary/0.3.0 \
     crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/clap/4.4.11 \
-    crate://crates.io/clap_builder/4.4.11 \
-    crate://crates.io/clap_lex/0.6.0 \
-    crate://crates.io/console/0.15.7 \
-    crate://crates.io/crc32c/0.6.4 \
-    crate://crates.io/crc32fast/1.3.2 \
+    crate://crates.io/clap/4.5.1 \
+    crate://crates.io/clap_builder/4.5.1 \
+    crate://crates.io/clap_lex/0.7.0 \
+    crate://crates.io/console/0.15.8 \
+    crate://crates.io/crc32c/0.6.5 \
+    crate://crates.io/crc32fast/1.4.0 \
     crate://crates.io/data-encoding/2.5.0 \
-    crate://crates.io/difflib/0.4.0 \
     crate://crates.io/downcast/0.11.0 \
-    crate://crates.io/duct/0.13.6 \
-    crate://crates.io/either/1.9.0 \
+    crate://crates.io/duct/0.13.7 \
     crate://crates.io/encode_unicode/0.3.6 \
     crate://crates.io/env_logger/0.8.4 \
     crate://crates.io/errno/0.3.8 \
@@ -33,130 +31,105 @@
     crate://crates.io/fastrand/2.0.1 \
     crate://crates.io/fixedbitset/0.4.2 \
     crate://crates.io/flate2/1.0.28 \
-    crate://crates.io/float-cmp/0.9.0 \
     crate://crates.io/fragile/2.0.0 \
-    crate://crates.io/getrandom/0.2.11 \
+    crate://crates.io/getrandom/0.2.12 \
     crate://crates.io/hermit-abi/0.1.19 \
-    crate://crates.io/hermit-abi/0.3.3 \
-    crate://crates.io/indicatif/0.17.7 \
+    crate://crates.io/hermit-abi/0.3.6 \
+    crate://crates.io/indicatif/0.17.8 \
     crate://crates.io/instant/0.1.12 \
     crate://crates.io/iovec/0.1.4 \
-    crate://crates.io/itertools/0.10.5 \
     crate://crates.io/lazy_static/1.4.0 \
-    crate://crates.io/libc/0.2.150 \
-    crate://crates.io/linux-raw-sys/0.4.12 \
+    crate://crates.io/libc/0.2.153 \
+    crate://crates.io/linux-raw-sys/0.4.13 \
     crate://crates.io/log/0.4.20 \
-    crate://crates.io/memchr/2.6.4 \
+    crate://crates.io/memchr/2.7.1 \
     crate://crates.io/minimal-lexical/0.2.1 \
-    crate://crates.io/miniz_oxide/0.7.1 \
-    crate://crates.io/mockall/0.11.4 \
-    crate://crates.io/mockall_derive/0.11.4 \
+    crate://crates.io/miniz_oxide/0.7.2 \
+    crate://crates.io/mockall/0.12.1 \
+    crate://crates.io/mockall_derive/0.12.1 \
     crate://crates.io/nom/7.1.3 \
-    crate://crates.io/normalize-line-endings/0.3.0 \
-    crate://crates.io/num-derive/0.4.1 \
-    crate://crates.io/num-traits/0.2.17 \
+    crate://crates.io/num-derive/0.4.2 \
+    crate://crates.io/num-traits/0.2.18 \
     crate://crates.io/num_cpus/1.16.0 \
     crate://crates.io/number_prefix/0.4.0 \
     crate://crates.io/numtoa/0.1.0 \
     crate://crates.io/once_cell/1.19.0 \
-    crate://crates.io/os_pipe/1.1.4 \
+    crate://crates.io/os_pipe/1.1.5 \
     crate://crates.io/portable-atomic/1.6.0 \
     crate://crates.io/ppv-lite86/0.2.17 \
-    crate://crates.io/predicates/2.1.5 \
+    crate://crates.io/predicates/3.1.0 \
     crate://crates.io/predicates-core/1.0.6 \
     crate://crates.io/predicates-tree/1.0.9 \
-    crate://crates.io/proc-macro2/1.0.70 \
-    crate://crates.io/quick-xml/0.29.0 \
+    crate://crates.io/proc-macro2/1.0.78 \
+    crate://crates.io/quick-xml/0.31.0 \
     crate://crates.io/quickcheck/1.0.3 \
     crate://crates.io/quickcheck_macros/1.0.0 \
-    crate://crates.io/quote/1.0.33 \
+    crate://crates.io/quote/1.0.35 \
     crate://crates.io/rand/0.8.5 \
     crate://crates.io/rand_chacha/0.3.1 \
     crate://crates.io/rand_core/0.6.4 \
-    crate://crates.io/rangemap/1.4.0 \
+    crate://crates.io/rangemap/1.5.0 \
     crate://crates.io/redox_syscall/0.2.16 \
-    crate://crates.io/redox_syscall/0.4.1 \
     crate://crates.io/redox_termios/0.1.3 \
-    crate://crates.io/regex/1.10.2 \
-    crate://crates.io/regex-automata/0.4.3 \
+    crate://crates.io/regex/1.10.3 \
+    crate://crates.io/regex-automata/0.4.5 \
     crate://crates.io/regex-syntax/0.8.2 \
-    crate://crates.io/retain_mut/0.1.7 \
-    crate://crates.io/roaring/0.10.2 \
+    crate://crates.io/roaring/0.10.3 \
     crate://crates.io/rustc_version/0.4.0 \
-    crate://crates.io/rustix/0.38.27 \
+    crate://crates.io/rustix/0.38.31 \
     crate://crates.io/safemem/0.3.3 \
-    crate://crates.io/semver/1.0.20 \
+    crate://crates.io/semver/1.0.22 \
     crate://crates.io/shared_child/1.0.0 \
-    crate://crates.io/strsim/0.10.0 \
+    crate://crates.io/strsim/0.11.0 \
     crate://crates.io/syn/1.0.109 \
-    crate://crates.io/syn/2.0.39 \
-    crate://crates.io/tempfile/3.8.1 \
+    crate://crates.io/syn/2.0.50 \
+    crate://crates.io/tempfile/3.10.0 \
     crate://crates.io/termion/1.5.6 \
     crate://crates.io/termtree/0.4.1 \
-    crate://crates.io/thiserror/1.0.50 \
-    crate://crates.io/thiserror-impl/1.0.50 \
+    crate://crates.io/thiserror/1.0.57 \
+    crate://crates.io/thiserror-impl/1.0.57 \
     crate://crates.io/threadpool/1.8.1 \
     crate://crates.io/tui/0.19.0 \
     crate://crates.io/unicode-ident/1.0.12 \
-    crate://crates.io/unicode-segmentation/1.10.1 \
+    crate://crates.io/unicode-segmentation/1.11.0 \
     crate://crates.io/unicode-width/0.1.11 \
     crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
     crate://crates.io/winapi/0.3.9 \
     crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
     crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/windows-sys/0.45.0 \
-    crate://crates.io/windows-sys/0.48.0 \
     crate://crates.io/windows-sys/0.52.0 \
-    crate://crates.io/windows-targets/0.42.2 \
-    crate://crates.io/windows-targets/0.48.5 \
-    crate://crates.io/windows-targets/0.52.0 \
-    crate://crates.io/windows_aarch64_gnullvm/0.42.2 \
-    crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
-    crate://crates.io/windows_aarch64_gnullvm/0.52.0 \
-    crate://crates.io/windows_aarch64_msvc/0.42.2 \
-    crate://crates.io/windows_aarch64_msvc/0.48.5 \
-    crate://crates.io/windows_aarch64_msvc/0.52.0 \
-    crate://crates.io/windows_i686_gnu/0.42.2 \
-    crate://crates.io/windows_i686_gnu/0.48.5 \
-    crate://crates.io/windows_i686_gnu/0.52.0 \
-    crate://crates.io/windows_i686_msvc/0.42.2 \
-    crate://crates.io/windows_i686_msvc/0.48.5 \
-    crate://crates.io/windows_i686_msvc/0.52.0 \
-    crate://crates.io/windows_x86_64_gnu/0.42.2 \
-    crate://crates.io/windows_x86_64_gnu/0.48.5 \
-    crate://crates.io/windows_x86_64_gnu/0.52.0 \
-    crate://crates.io/windows_x86_64_gnullvm/0.42.2 \
-    crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
-    crate://crates.io/windows_x86_64_gnullvm/0.52.0 \
-    crate://crates.io/windows_x86_64_msvc/0.42.2 \
-    crate://crates.io/windows_x86_64_msvc/0.48.5 \
-    crate://crates.io/windows_x86_64_msvc/0.52.0 \
+    crate://crates.io/windows-targets/0.52.3 \
+    crate://crates.io/windows_aarch64_gnullvm/0.52.3 \
+    crate://crates.io/windows_aarch64_msvc/0.52.3 \
+    crate://crates.io/windows_i686_gnu/0.52.3 \
+    crate://crates.io/windows_i686_msvc/0.52.3 \
+    crate://crates.io/windows_x86_64_gnu/0.52.3 \
+    crate://crates.io/windows_x86_64_gnullvm/0.52.3 \
+    crate://crates.io/windows_x86_64_msvc/0.52.3 \
 "
 
 SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 SRC_URI[aho-corasick-1.1.2.sha256sum] = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
-SRC_URI[anstyle-1.0.4.sha256sum] = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
-SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+SRC_URI[anstyle-1.0.6.sha256sum] = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+SRC_URI[anyhow-1.0.80.sha256sum] = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
 SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
 SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-SRC_URI[base64-0.21.5.sha256sum] = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-SRC_URI[bitflags-2.4.1.sha256sum] = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
-SRC_URI[bytemuck-1.14.0.sha256sum] = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+SRC_URI[bitflags-2.4.2.sha256sum] = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+SRC_URI[bytemuck-1.14.3.sha256sum] = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
 SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 SRC_URI[cassowary-0.3.0.sha256sum] = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53"
 SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-SRC_URI[clap-4.4.11.sha256sum] = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2"
-SRC_URI[clap_builder-4.4.11.sha256sum] = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb"
-SRC_URI[clap_lex-0.6.0.sha256sum] = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
-SRC_URI[console-0.15.7.sha256sum] = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
-SRC_URI[crc32c-0.6.4.sha256sum] = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74"
-SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+SRC_URI[clap-4.5.1.sha256sum] = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da"
+SRC_URI[clap_builder-4.5.1.sha256sum] = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb"
+SRC_URI[clap_lex-0.7.0.sha256sum] = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+SRC_URI[console-0.15.8.sha256sum] = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+SRC_URI[crc32c-0.6.5.sha256sum] = "89254598aa9b9fa608de44b3ae54c810f0f06d755e24c50177f1f8f31ff50ce2"
+SRC_URI[crc32fast-1.4.0.sha256sum] = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
 SRC_URI[data-encoding-2.5.0.sha256sum] = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
-SRC_URI[difflib-0.4.0.sha256sum] = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
 SRC_URI[downcast-0.11.0.sha256sum] = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1"
-SRC_URI[duct-0.13.6.sha256sum] = "37ae3fc31835f74c2a7ceda3aeede378b0ae2e74c8f1c36559fcc9ae2a4e7d3e"
-SRC_URI[either-1.9.0.sha256sum] = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+SRC_URI[duct-0.13.7.sha256sum] = "e4ab5718d1224b63252cd0c6f74f6480f9ffeb117438a2e0f5cf6d9a4798929c"
 SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
 SRC_URI[env_logger-0.8.4.sha256sum] = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
 SRC_URI[errno-0.3.8.sha256sum] = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
@@ -164,101 +137,78 @@
 SRC_URI[fastrand-2.0.1.sha256sum] = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
 SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 SRC_URI[flate2-1.0.28.sha256sum] = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
-SRC_URI[float-cmp-0.9.0.sha256sum] = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
 SRC_URI[fragile-2.0.0.sha256sum] = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa"
-SRC_URI[getrandom-0.2.11.sha256sum] = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
+SRC_URI[getrandom-0.2.12.sha256sum] = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
 SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-SRC_URI[hermit-abi-0.3.3.sha256sum] = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
-SRC_URI[indicatif-0.17.7.sha256sum] = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25"
+SRC_URI[hermit-abi-0.3.6.sha256sum] = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd"
+SRC_URI[indicatif-0.17.8.sha256sum] = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3"
 SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
 SRC_URI[iovec-0.1.4.sha256sum] = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
-SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
 SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-SRC_URI[libc-0.2.150.sha256sum] = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
-SRC_URI[linux-raw-sys-0.4.12.sha256sum] = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
+SRC_URI[libc-0.2.153.sha256sum] = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+SRC_URI[linux-raw-sys-0.4.13.sha256sum] = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
 SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
-SRC_URI[memchr-2.6.4.sha256sum] = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+SRC_URI[memchr-2.7.1.sha256sum] = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
 SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-SRC_URI[miniz_oxide-0.7.1.sha256sum] = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-SRC_URI[mockall-0.11.4.sha256sum] = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96"
-SRC_URI[mockall_derive-0.11.4.sha256sum] = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb"
+SRC_URI[miniz_oxide-0.7.2.sha256sum] = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+SRC_URI[mockall-0.12.1.sha256sum] = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48"
+SRC_URI[mockall_derive-0.12.1.sha256sum] = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2"
 SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-SRC_URI[normalize-line-endings-0.3.0.sha256sum] = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
-SRC_URI[num-derive-0.4.1.sha256sum] = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712"
-SRC_URI[num-traits-0.2.17.sha256sum] = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+SRC_URI[num-derive-0.4.2.sha256sum] = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
+SRC_URI[num-traits-0.2.18.sha256sum] = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 SRC_URI[num_cpus-1.16.0.sha256sum] = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
 SRC_URI[numtoa-0.1.0.sha256sum] = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
 SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-SRC_URI[os_pipe-1.1.4.sha256sum] = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177"
+SRC_URI[os_pipe-1.1.5.sha256sum] = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9"
 SRC_URI[portable-atomic-1.6.0.sha256sum] = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
 SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
-SRC_URI[predicates-2.1.5.sha256sum] = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd"
+SRC_URI[predicates-3.1.0.sha256sum] = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8"
 SRC_URI[predicates-core-1.0.6.sha256sum] = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174"
 SRC_URI[predicates-tree-1.0.9.sha256sum] = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf"
-SRC_URI[proc-macro2-1.0.70.sha256sum] = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
-SRC_URI[quick-xml-0.29.0.sha256sum] = "81b9228215d82c7b61490fec1de287136b5de6f5700f6e58ea9ad61a7964ca51"
+SRC_URI[proc-macro2-1.0.78.sha256sum] = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+SRC_URI[quick-xml-0.31.0.sha256sum] = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
 SRC_URI[quickcheck-1.0.3.sha256sum] = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
 SRC_URI[quickcheck_macros-1.0.0.sha256sum] = "b22a693222d716a9587786f37ac3f6b4faedb5b80c23914e7303ff5a1d8016e9"
-SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+SRC_URI[quote-1.0.35.sha256sum] = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
 SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
 SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
 SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-SRC_URI[rangemap-1.4.0.sha256sum] = "977b1e897f9d764566891689e642653e5ed90c6895106acd005eb4c1d0203991"
+SRC_URI[rangemap-1.5.0.sha256sum] = "795915a3930a5d6bafd9053d37602fea3e61be2e5d4d788983a8ba9654c1c6f2"
 SRC_URI[redox_syscall-0.2.16.sha256sum] = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
-SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
 SRC_URI[redox_termios-0.1.3.sha256sum] = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb"
-SRC_URI[regex-1.10.2.sha256sum] = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
-SRC_URI[regex-automata-0.4.3.sha256sum] = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+SRC_URI[regex-1.10.3.sha256sum] = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+SRC_URI[regex-automata-0.4.5.sha256sum] = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
 SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
-SRC_URI[retain_mut-0.1.7.sha256sum] = "8c31b5c4033f8fdde8700e4657be2c497e7288f01515be52168c631e2e4d4086"
-SRC_URI[roaring-0.10.2.sha256sum] = "6106b5cf8587f5834158895e9715a3c6c9716c8aefab57f1f7680917191c7873"
+SRC_URI[roaring-0.10.3.sha256sum] = "a1c77081a55300e016cb86f2864415b7518741879db925b8d488a0ee0d2da6bf"
 SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
-SRC_URI[rustix-0.38.27.sha256sum] = "bfeae074e687625746172d639330f1de242a178bf3189b51e35a7a21573513ac"
+SRC_URI[rustix-0.38.31.sha256sum] = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
 SRC_URI[safemem-0.3.3.sha256sum] = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
-SRC_URI[semver-1.0.20.sha256sum] = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
+SRC_URI[semver-1.0.22.sha256sum] = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
 SRC_URI[shared_child-1.0.0.sha256sum] = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef"
-SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[strsim-0.11.0.sha256sum] = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
 SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-SRC_URI[syn-2.0.39.sha256sum] = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
-SRC_URI[tempfile-3.8.1.sha256sum] = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+SRC_URI[syn-2.0.50.sha256sum] = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb"
+SRC_URI[tempfile-3.10.0.sha256sum] = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67"
 SRC_URI[termion-1.5.6.sha256sum] = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
 SRC_URI[termtree-0.4.1.sha256sum] = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76"
-SRC_URI[thiserror-1.0.50.sha256sum] = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
-SRC_URI[thiserror-impl-1.0.50.sha256sum] = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+SRC_URI[thiserror-1.0.57.sha256sum] = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
+SRC_URI[thiserror-impl-1.0.57.sha256sum] = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
 SRC_URI[threadpool-1.8.1.sha256sum] = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
 SRC_URI[tui-0.19.0.sha256sum] = "ccdd26cbd674007e649a272da4475fb666d3aa0ad0531da7136db6fab0e5bad1"
 SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-SRC_URI[unicode-segmentation-1.10.1.sha256sum] = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+SRC_URI[unicode-segmentation-1.11.0.sha256sum] = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 SRC_URI[unicode-width-0.1.11.sha256sum] = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
 SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
 SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-SRC_URI[windows-targets-0.42.2.sha256sum] = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-SRC_URI[windows-targets-0.52.0.sha256sum] = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
-SRC_URI[windows_aarch64_gnullvm-0.42.2.sha256sum] = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-SRC_URI[windows_aarch64_gnullvm-0.52.0.sha256sum] = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
-SRC_URI[windows_aarch64_msvc-0.42.2.sha256sum] = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-SRC_URI[windows_aarch64_msvc-0.52.0.sha256sum] = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
-SRC_URI[windows_i686_gnu-0.42.2.sha256sum] = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-SRC_URI[windows_i686_gnu-0.52.0.sha256sum] = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
-SRC_URI[windows_i686_msvc-0.42.2.sha256sum] = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
-SRC_URI[windows_x86_64_gnu-0.42.2.sha256sum] = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
-SRC_URI[windows_x86_64_gnullvm-0.42.2.sha256sum] = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
-SRC_URI[windows_x86_64_msvc-0.42.2.sha256sum] = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+SRC_URI[windows-targets-0.52.3.sha256sum] = "d380ba1dc7187569a8a9e91ed34b8ccfc33123bbacb8c0aed2d1ad7f3ef2dc5f"
+SRC_URI[windows_aarch64_gnullvm-0.52.3.sha256sum] = "68e5dcfb9413f53afd9c8f86e56a7b4d86d9a2fa26090ea2dc9e40fba56c6ec6"
+SRC_URI[windows_aarch64_msvc-0.52.3.sha256sum] = "8dab469ebbc45798319e69eebf92308e541ce46760b49b18c6b3fe5e8965b30f"
+SRC_URI[windows_i686_gnu-0.52.3.sha256sum] = "2a4e9b6a7cac734a8b4138a4e1044eac3404d8326b6c0f939276560687a033fb"
+SRC_URI[windows_i686_msvc-0.52.3.sha256sum] = "28b0ec9c422ca95ff34a78755cfa6ad4a51371da2a5ace67500cf7ca5f232c58"
+SRC_URI[windows_x86_64_gnu-0.52.3.sha256sum] = "704131571ba93e89d7cd43482277d6632589b18ecf4468f591fbae0a8b101614"
+SRC_URI[windows_x86_64_gnullvm-0.52.3.sha256sum] = "42079295511643151e98d61c38c0acc444e52dd42ab456f7ccfd5152e8ecf21c"
+SRC_URI[windows_x86_64_msvc-0.52.3.sha256sum] = "0770833d60a970638e989b3fa9fd2bb1aaadcf88963d1659fd7d9990196ed2d6"
diff --git a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.0.12.bb b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.0.12.bb
new file mode 100644
index 0000000..09b91f6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.0.12.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Tools of dm-thin device-mapper"
+DESCRIPTION = "A suite of tools for manipulating the metadata of the dm-thin device-mapper target."
+HOMEPAGE = "https://github.com/jthornber/thin-provisioning-tools"
+LICENSE = "GPL-3.0-only"
+SECTION = "devel"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+S = "${WORKDIR}/git"
+
+SRC_URI = " \
+    git://github.com/jthornber/thin-provisioning-tools;branch=main;protocol=https \
+    "
+
+SRCREV = "b2d57dad4c3378544d7b36f3fc61e60989c5c092"
+UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
+
+inherit cargo cargo-update-recipe-crates
+
+require ${BPN}-crates.inc
+require ${BPN}-git-crates.inc
+
+do_install:append() {
+	install -d ${D}${sbindir}
+	mv ${D}${bindir}/pdata_tools ${D}${sbindir}/pdata_tools
+	rmdir --ignore-fail-on-non-empty ${D}${bindir}
+
+	for tool in cache_check \
+	    cache_dump \
+	    cache_metadata_size \
+	    cache_repair \
+	    cache_restore \
+	    cache_writeback \
+	    thin_check \
+	    thin_delta \
+	    thin_dump \
+	    thin_ls \
+	    thin_repair \
+	    thin_restore \
+	    thin_rmap \
+	    thin_metadata_size \
+	    thin_metadata_pack \
+	    thin_metadata_unpack \
+	    thin_trim \
+	    era_check \
+	    era_dump \
+	    era_invalidate \
+	    era_restore; do
+                ln -sf pdata_tools ${D}${sbindir}/$tool
+            done
+}
diff --git a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.0.9.bb b/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.0.9.bb
deleted file mode 100644
index b79fdb1..0000000
--- a/meta-openembedded/meta-oe/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.0.9.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Tools of dm-thin device-mapper"
-DESCRIPTION = "A suite of tools for manipulating the metadata of the dm-thin device-mapper target."
-HOMEPAGE = "https://github.com/jthornber/thin-provisioning-tools"
-LICENSE = "GPL-3.0-only"
-SECTION = "devel"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-S = "${WORKDIR}/git"
-
-SRC_URI = " \
-    git://github.com/jthornber/thin-provisioning-tools;branch=main;protocol=https \
-    "
-
-SRCREV = "1d60839b0a920df6476712b80f933854fb32e160"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
-
-inherit cargo cargo-update-recipe-crates
-
-require ${BPN}-crates.inc
-require ${BPN}-git-crates.inc
-
-do_install:append() {
-	for tool in cache_check \
-	    cache_dump \
-	    cache_metadata_size \
-	    cache_repair \
-	    cache_restore \
-	    cache_writeback \
-	    thin_check \
-	    thin_delta \
-	    thin_dump \
-	    thin_ls \
-	    thin_repair \
-	    thin_restore \
-	    thin_rmap \
-	    thin_metadata_size \
-	    thin_metadata_pack \
-	    thin_metadata_unpack \
-	    thin_trim \
-	    era_check \
-	    era_dump \
-	    era_invalidate \
-	    era_restore; do
-                ln -sf pdata_tools ${D}${bindir}/$tool
-            done
-}
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
index d6d4a2b..06030c0 100644
--- a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
+++ b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch
@@ -1,4 +1,4 @@
-From 69d8e34f60e6a124f699365101e854076cfe0f1b Mon Sep 17 00:00:00 2001
+From e68e87c14243b1c8707c56883a53e841310974a1 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Tue, 27 Oct 2015 16:02:19 +0200
 Subject: [PATCH] FindGObjectIntrospection.cmake: prefix variables obtained
@@ -9,7 +9,6 @@
 
 Upstream-Status: Inappropriate [oe-core specific]
 Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-
 ---
  Source/cmake/FindGI.cmake | 3 +++
  1 file changed, 3 insertions(+)
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-LowLevelInterpreter.cpp-339-21-error-t6-was-not-decl.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-LowLevelInterpreter.cpp-339-21-error-t6-was-not-decl.patch
index 8909263..e6a43c2 100644
--- a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-LowLevelInterpreter.cpp-339-21-error-t6-was-not-decl.patch
+++ b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0001-LowLevelInterpreter.cpp-339-21-error-t6-was-not-decl.patch
@@ -1,4 +1,4 @@
-From 6c4ff2210c36d6410ec287737d6a49f20c412332 Mon Sep 17 00:00:00 2001
+From fb81a5de7798eb7f68e0de1c281671553e1aa19d Mon Sep 17 00:00:00 2001
 From: Michael Catanzaro <mcatanzaro@redhat.com>
 Date: Mon, 5 Feb 2024 11:00:49 -0600
 Subject: [PATCH] =?UTF-8?q?LowLevelInterpreter.cpp:339:21:=20error:=20?=
@@ -21,7 +21,7 @@
  1 file changed, 2 deletions(-)
 
 diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
-index 5064ead6..9a2e2653 100644
+index 75cecbbd..b1020ea4 100644
 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
 +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.cpp
 @@ -336,8 +336,6 @@ JSValue CLoop::execute(OpcodeID entryOpcodeID, void* executableAddress, VM* vm,
@@ -33,6 +33,3 @@
  
      struct StackPointerScope {
          StackPointerScope(CLoopStack& stack)
--- 
-2.43.2
-
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0d3344e17d258106617b0e6d783d073b188a2548.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0d3344e17d258106617b0e6d783d073b188a2548.patch
deleted file mode 100644
index d19d1e1..0000000
--- a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/0d3344e17d258106617b0e6d783d073b188a2548.patch
+++ /dev/null
@@ -1,312 +0,0 @@
-From e3c12b38037b4bb3053c440e4bd22c36c1dc576b Mon Sep 17 00:00:00 2001
-From: Adrian Perez de Castro <aperez@igalia.com>
-Date: Thu, 2 Jun 2022 11:19:06 +0300
-Subject: [PATCH] FELightningNEON.cpp fails to build, NEON fast path seems
-
- unused https://bugs.webkit.org/show_bug.cgi?id=241182
-
-Reviewed by NOBODY (OOPS!).
-
-Move the NEON fast path for the SVG lighting filter effects into
-FELightingSoftwareApplier, and arrange to actually use them by
-forwarding calls to applyPlatformGeneric() into applyPlatformNeon().
-
-Some changes were needed to adapt platformApplyNeon() to the current
-state of filters after r286140. This was not detected because the code
-bitrotted due to it being guarded with CPU(ARM_TRADITIONAL), which does
-not get used much these days: CPU(ARM_THUMB2) is more common. It should
-be possible to use the NEON fast paths also in Thumb mode, but that is
-left for a follow-up fix.
-
-* Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp:
-(WebCore::FELightingSoftwareApplier::platformApplyNeonWorker):
-(WebCore::FELightingSoftwareApplier::getPowerCoefficients):
-(WebCore::FELighting::platformApplyNeonWorker): Deleted.
-(WebCore::FELighting::getPowerCoefficients): Deleted.
-* Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h:
-(WebCore::FELightingSoftwareApplier::applyPlatformNeon):
-(WebCore::FELighting::platformApplyNeon): Deleted.
-* Source/WebCore/platform/graphics/filters/DistantLightSource.h:
-* Source/WebCore/platform/graphics/filters/FELighting.h:
-* Source/WebCore/platform/graphics/filters/PointLightSource.h:
-* Source/WebCore/platform/graphics/filters/SpotLightSource.h:
-* Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h:
-
-Upstream-Status: Submitted [https://github.com/WebKit/WebKit/pull/1233]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- .../cpu/arm/filters/FELightingNEON.cpp        |  4 +-
- .../graphics/cpu/arm/filters/FELightingNEON.h | 52 +++++++++----------
- .../graphics/filters/DistantLightSource.h     |  4 ++
- .../platform/graphics/filters/FELighting.h    |  7 ---
- .../graphics/filters/PointLightSource.h       |  4 ++
- .../graphics/filters/SpotLightSource.h        |  4 ++
- .../software/FELightingSoftwareApplier.h      | 16 ++++++
- 7 files changed, 56 insertions(+), 35 deletions(-)
-
-diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
-index f6ff8c20..42a97ffc 100644
---- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
-+++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
-@@ -49,7 +49,7 @@ short* feLightingConstantsForNeon()
-     return s_FELightingConstantsForNeon;
- }
- 
--void FELighting::platformApplyNeonWorker(FELightingPaintingDataForNeon* parameters)
-+void FELightingSoftwareApplier::platformApplyNeonWorker(FELightingPaintingDataForNeon* parameters)
- {
-     neonDrawLighting(parameters);
- }
-@@ -464,7 +464,7 @@ TOSTRING(neonDrawLighting) ":" NL
-     "b .lightStrengthCalculated" NL
- ); // NOLINT
- 
--int FELighting::getPowerCoefficients(float exponent)
-+int FELightingSoftwareApplier::getPowerCoefficients(float exponent)
- {
-     // Calling a powf function from the assembly code would require to save
-     // and reload a lot of NEON registers. Since the base is in range [0..1]
-diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
-index b17c603d..e4629cda 100644
---- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
-+++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
-@@ -24,14 +24,15 @@
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  */
- 
--#ifndef FELightingNEON_h
--#define FELightingNEON_h
-+#pragma once
- 
- #if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
- 
--#include "FELighting.h"
-+#include "FELightingSoftwareApplier.h"
-+#include "ImageBuffer.h"
- #include "PointLightSource.h"
- #include "SpotLightSource.h"
-+#include <wtf/ObjectIdentifier.h>
- #include <wtf/ParallelJobs.h>
- 
- namespace WebCore {
-@@ -93,14 +94,14 @@ extern "C" {
- void neonDrawLighting(FELightingPaintingDataForNeon*);
- }
- 
--inline void FELighting::platformApplyNeon(const LightingData& data, const LightSource::PaintingData& paintingData)
-+inline void FELightingSoftwareApplier::applyPlatformNeon(const FELightingSoftwareApplier::LightingData& data, const LightSource::PaintingData& paintingData)
- {
--    alignas(16) FELightingFloatArgumentsForNeon floatArguments;
--    FELightingPaintingDataForNeon neonData = {
-+    WebCore::FELightingFloatArgumentsForNeon alignas(16) floatArguments;
-+    WebCore::FELightingPaintingDataForNeon neonData = {
-         data.pixels->data(),
-         1,
--        data.widthDecreasedByOne - 1,
--        data.heightDecreasedByOne - 1,
-+        data.width - 2,
-+        data.height - 2,
-         0,
-         0,
-         0,
-@@ -111,23 +112,23 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
-     // Set light source arguments.
-     floatArguments.constOne = 1;
- 
--    auto color = m_lightingColor.toColorTypeLossy<SRGBA<uint8_t>>().resolved();
-+    auto color = data.lightingColor.toColorTypeLossy<SRGBA<uint8_t>>().resolved();
- 
-     floatArguments.colorRed = color.red;
-     floatArguments.colorGreen = color.green;
-     floatArguments.colorBlue = color.blue;
-     floatArguments.padding4 = 0;
- 
--    if (m_lightSource->type() == LS_POINT) {
-+    if (data.lightSource->type() == LS_POINT) {
-         neonData.flags |= FLAG_POINT_LIGHT;
--        PointLightSource& pointLightSource = static_cast<PointLightSource&>(m_lightSource.get());
-+        const auto& pointLightSource = *static_cast<const PointLightSource*>(data.lightSource);
-         floatArguments.lightX = pointLightSource.position().x();
-         floatArguments.lightY = pointLightSource.position().y();
-         floatArguments.lightZ = pointLightSource.position().z();
-         floatArguments.padding2 = 0;
--    } else if (m_lightSource->type() == LS_SPOT) {
-+    } else if (data.lightSource->type() == LS_SPOT) {
-         neonData.flags |= FLAG_SPOT_LIGHT;
--        SpotLightSource& spotLightSource = static_cast<SpotLightSource&>(m_lightSource.get());
-+        const auto& spotLightSource = *static_cast<const SpotLightSource*>(data.lightSource);
-         floatArguments.lightX = spotLightSource.position().x();
-         floatArguments.lightY = spotLightSource.position().y();
-         floatArguments.lightZ = spotLightSource.position().z();
-@@ -145,7 +146,7 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
-         if (spotLightSource.specularExponent() == 1)
-             neonData.flags |= FLAG_CONE_EXPONENT_IS_1;
-     } else {
--        ASSERT(m_lightSource->type() == LS_DISTANT);
-+        ASSERT(data.lightSource->type() == LS_DISTANT);
-         floatArguments.lightX = paintingData.initialLightingData.lightVector.x();
-         floatArguments.lightY = paintingData.initialLightingData.lightVector.y();
-         floatArguments.lightZ = paintingData.initialLightingData.lightVector.z();
-@@ -155,38 +156,39 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
-     // Set lighting arguments.
-     floatArguments.surfaceScale = data.surfaceScale;
-     floatArguments.minusSurfaceScaleDividedByFour = -data.surfaceScale / 4;
--    if (m_lightingType == FELighting::DiffuseLighting)
--        floatArguments.diffuseConstant = m_diffuseConstant;
-+    if (data.filterType == FilterEffect::Type::FEDiffuseLighting)
-+        floatArguments.diffuseConstant = data.diffuseConstant;
-     else {
-         neonData.flags |= FLAG_SPECULAR_LIGHT;
--        floatArguments.diffuseConstant = m_specularConstant;
--        neonData.specularExponent = getPowerCoefficients(m_specularExponent);
--        if (m_specularExponent == 1)
-+        floatArguments.diffuseConstant = data.specularConstant;
-+        neonData.specularExponent = getPowerCoefficients(data.specularExponent);
-+        if (data.specularExponent == 1)
-             neonData.flags |= FLAG_SPECULAR_EXPONENT_IS_1;
-     }
-     if (floatArguments.diffuseConstant == 1)
-         neonData.flags |= FLAG_DIFFUSE_CONST_IS_1;
- 
--    int optimalThreadNumber = ((data.widthDecreasedByOne - 1) * (data.heightDecreasedByOne - 1)) / s_minimalRectDimension;
-+    static constexpr int minimalRectDimension = 100 * 100; // Empirical data limit for parallel jobs
-+    int optimalThreadNumber = ((data.width - 2) * (data.height - 2)) / minimalRectDimension;
-     if (optimalThreadNumber > 1) {
-         // Initialize parallel jobs
--        ParallelJobs<FELightingPaintingDataForNeon> parallelJobs(&WebCore::FELighting::platformApplyNeonWorker, optimalThreadNumber);
-+        ParallelJobs<FELightingPaintingDataForNeon> parallelJobs(&FELightingSoftwareApplier::platformApplyNeonWorker, optimalThreadNumber);
- 
-         // Fill the parameter array
-         int job = parallelJobs.numberOfJobs();
-         if (job > 1) {
-             int yStart = 1;
--            int yStep = (data.heightDecreasedByOne - 1) / job;
-+            int yStep = (data.height - 2) / job;
-             for (--job; job >= 0; --job) {
-                 FELightingPaintingDataForNeon& params = parallelJobs.parameter(job);
-                 params = neonData;
-                 params.yStart = yStart;
--                params.pixels += (yStart - 1) * (data.widthDecreasedByOne + 1) * 4;
-+                params.pixels += (yStart - 1) * data.width * 4;
-                 if (job > 0) {
-                     params.absoluteHeight = yStep;
-                     yStart += yStep;
-                 } else
--                    params.absoluteHeight = data.heightDecreasedByOne - yStart;
-+                    params.absoluteHeight = (data.height - 1) - yStart;
-             }
-             parallelJobs.execute();
-             return;
-@@ -199,5 +201,3 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
- } // namespace WebCore
- 
- #endif // CPU(ARM_NEON) && COMPILER(GCC_COMPATIBLE)
--
--#endif // FELightingNEON_h
-diff --git a/Source/WebCore/platform/graphics/filters/DistantLightSource.h b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
-index 70f583b3..7d5d27e5 100644
---- a/Source/WebCore/platform/graphics/filters/DistantLightSource.h
-+++ b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
-@@ -26,6 +26,10 @@
- #include <wtf/ArgumentCoder.h>
- #include <wtf/Ref.h>
- 
-+namespace WTF {
-+class TextStream;
-+} // namespace WTF
-+
- namespace WebCore {
- 
- class DistantLightSource : public LightSource {
-diff --git a/Source/WebCore/platform/graphics/filters/FELighting.h b/Source/WebCore/platform/graphics/filters/FELighting.h
-index 179edf6d..694d712d 100644
---- a/Source/WebCore/platform/graphics/filters/FELighting.h
-+++ b/Source/WebCore/platform/graphics/filters/FELighting.h
-@@ -35,8 +35,6 @@
- 
- namespace WebCore {
- 
--struct FELightingPaintingDataForNeon;
--
- class FELighting : public FilterEffect {
- public:
-     bool operator==(const FELighting&) const;
-@@ -68,11 +66,6 @@ protected:
- 
-     std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;
- 
--#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
--    static int getPowerCoefficients(float exponent);
--    inline void platformApplyNeon(const LightingData&, const LightSource::PaintingData&);
--#endif
--
-     Color m_lightingColor;
-     float m_surfaceScale;
-     float m_diffuseConstant;
-diff --git a/Source/WebCore/platform/graphics/filters/PointLightSource.h b/Source/WebCore/platform/graphics/filters/PointLightSource.h
-index a8cfdab8..34f867bb 100644
---- a/Source/WebCore/platform/graphics/filters/PointLightSource.h
-+++ b/Source/WebCore/platform/graphics/filters/PointLightSource.h
-@@ -26,6 +26,10 @@
- #include "LightSource.h"
- #include <wtf/Ref.h>
- 
-+namespace WTF {
-+class TextStream;
-+} // namespace WTF
-+
- namespace WebCore {
- 
- class PointLightSource : public LightSource {
-diff --git a/Source/WebCore/platform/graphics/filters/SpotLightSource.h b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
-index 6404467a..5cac38f2 100644
---- a/Source/WebCore/platform/graphics/filters/SpotLightSource.h
-+++ b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
-@@ -26,6 +26,10 @@
- #include "LightSource.h"
- #include <wtf/Ref.h>
- 
-+namespace WTF {
-+class TextStream;
-+} // namespace WTF
-+
- namespace WebCore {
- 
- class SpotLightSource : public LightSource {
-diff --git a/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h b/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
-index c974d921..e2896660 100644
---- a/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
-+++ b/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
-@@ -36,6 +36,7 @@
- namespace WebCore {
- 
- class FELighting;
-+struct FELightingPaintingDataForNeon;
- 
- class FELightingSoftwareApplier final : public FilterEffectConcreteApplier<FELighting> {
-     WTF_MAKE_FAST_ALLOCATED;
-@@ -132,8 +133,23 @@ private:
- 
-     static void applyPlatformGenericPaint(const LightingData&, const LightSource::PaintingData&, int startY, int endY);
-     static void applyPlatformGenericWorker(ApplyParameters*);
-+
-+#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
-+    static int getPowerCoefficients(float exponent);
-+    static void platformApplyNeonWorker(FELightingPaintingDataForNeon*);
-+    inline static void applyPlatformNeon(const LightingData&, const LightSource::PaintingData&);
-+
-+    inline static void applyPlatformGeneric(const LightingData& data, const LightSource::PaintingData& paintingData)
-+    {
-+        applyPlatformNeon(data, paintingData);
-+    }
-+#else
-     static void applyPlatformGeneric(const LightingData&, const LightSource::PaintingData&);
-+#endif
-+
-     static void applyPlatform(const LightingData&);
- };
- 
- } // namespace WebCore
-+
-+#include "FELightingNEON.h"
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/2922af379dc70b4b1a63b01d67179eb431f03ac4.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/2922af379dc70b4b1a63b01d67179eb431f03ac4.patch
new file mode 100644
index 0000000..0f6b9a6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/2922af379dc70b4b1a63b01d67179eb431f03ac4.patch
@@ -0,0 +1,36 @@
+From 2922af379dc70b4b1a63b01d67179eb431f03ac4 Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro@redhat.com>
+Date: Mon, 18 Mar 2024 11:14:54 -0700
+Subject: [PATCH] REGRESSION(274077@main): failure to build on i586 (and likely
+ other 32bit arches): static assertion failed: Timer should stay small
+ https://bugs.webkit.org/show_bug.cgi?id=271108
+
+Unreviewed build fix. This changes SameSizeOfTimer to ensure it matches
+the size of Timer on 32-bit platforms.
+
+* Source/WebCore/platform/Timer.cpp:
+
+Canonical link: https://commits.webkit.org/276282@main
+
+Upstream-Status: Backport [https://github.com/WebKit/WebKit/commit/2922af379dc70b4b1a63b01d67179eb431f03ac4]
+---
+ Source/WebCore/platform/Timer.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/Source/WebCore/platform/Timer.cpp b/Source/WebCore/platform/Timer.cpp
+index 4f7c0f5c39ca9..0f3734cca2474 100644
+--- a/Source/WebCore/platform/Timer.cpp
++++ b/Source/WebCore/platform/Timer.cpp
+@@ -263,7 +263,11 @@ struct SameSizeAsTimer {
+ 
+     WeakPtr<TimerAlignment> timerAlignment;
+     double times[2];
+-    void* pointers[3];
++    void* pointers[2];
++#if CPU(ADDRESS32)
++    uint8_t bitfields;
++#endif
++    void* pointer;
+ };
+ 
+ static_assert(sizeof(Timer) == sizeof(SameSizeAsTimer), "Timer should stay small");
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch
new file mode 100644
index 0000000..b2e40a8
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch
@@ -0,0 +1,65 @@
+From 1523e00a2a76e285262c8aa3721b5d99f3f2d612 Mon Sep 17 00:00:00 2001
+From: Thomas Devoogdt <thomas.devoogdt@barco.com>
+Date: Mon, 16 Jan 2023 17:03:30 +0100
+Subject: [PATCH] REGRESSION(257865@main): B3Validate.cpp: fix
+
+ !ENABLE(WEBASSEMBLY_B3JIT)
+
+https://bugs.webkit.org/show_bug.cgi?id=250681
+
+Reviewed by NOBODY (OOPS!).
+
+WasmTypeDefinition.h isn't included if not ENABLE(WEBASSEMBLY_B3JIT).
+Also, toB3Type and simdScalarType are not defined if it is included.
+
+Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
+
+Upstream-Status: Inappropriate [https://bugs.launchpad.net/ubuntu/+source/webkit2gtk/+bug/2008798]
+---
+ Source/JavaScriptCore/b3/B3Validate.cpp | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/Source/JavaScriptCore/b3/B3Validate.cpp b/Source/JavaScriptCore/b3/B3Validate.cpp
+index eaaa3749..1d089783 100644
+--- a/Source/JavaScriptCore/b3/B3Validate.cpp
++++ b/Source/JavaScriptCore/b3/B3Validate.cpp
+@@ -47,6 +47,12 @@
+ #include <wtf/StringPrintStream.h>
+ #include <wtf/text/CString.h>
+ 
++#if ENABLE(WEBASSEMBLY) && ENABLE(WEBASSEMBLY_B3JIT)
++#define simdScalarTypeToB3Type(type) toB3Type(Wasm::simdScalarType(type))
++#else
++#define simdScalarTypeToB3Type(type) B3::Type()
++#endif
++
+ namespace JSC { namespace B3 {
+ 
+ namespace {
+@@ -454,7 +460,7 @@ public:
+             case VectorExtractLane:
+                 VALIDATE(!value->kind().hasExtraBits(), ("At ", *value));
+                 VALIDATE(value->numChildren() == 1, ("At ", *value));
+-                VALIDATE(value->type() == toB3Type(Wasm::simdScalarType(value->asSIMDValue()->simdLane())), ("At ", *value));
++                VALIDATE(value->type() == simdScalarTypeToB3Type(value->asSIMDValue()->simdLane()), ("At ", *value));
+                 VALIDATE(value->child(0)->type() == V128, ("At ", *value));
+                 break;
+             case VectorReplaceLane:
+@@ -462,7 +468,7 @@ public:
+                 VALIDATE(value->numChildren() == 2, ("At ", *value));
+                 VALIDATE(value->type() == V128, ("At ", *value));
+                 VALIDATE(value->child(0)->type() == V128, ("At ", *value));
+-                VALIDATE(value->child(1)->type() == toB3Type(Wasm::simdScalarType(value->asSIMDValue()->simdLane())), ("At ", *value));
++                VALIDATE(value->child(1)->type() == simdScalarTypeToB3Type(value->asSIMDValue()->simdLane()), ("At ", *value));
+                 break;
+             case VectorDupElement:
+                 VALIDATE(!value->kind().hasExtraBits(), ("At ", *value));
+@@ -484,7 +490,7 @@ public:
+                 VALIDATE(!value->kind().hasExtraBits(), ("At ", *value));
+                 VALIDATE(value->numChildren() == 1, ("At ", *value));
+                 VALIDATE(value->type() == V128, ("At ", *value));
+-                VALIDATE(value->child(0)->type() == toB3Type(Wasm::simdScalarType(value->asSIMDValue()->simdLane())), ("At ", *value));
++                VALIDATE(value->child(0)->type() == simdScalarTypeToB3Type(value->asSIMDValue()->simdLane()), ("At ", *value));
+                 break;
+ 
+             case VectorPopcnt:
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/check-GST_GL_HAVE_PLATFORM_GLX.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/check-GST_GL_HAVE_PLATFORM_GLX.patch
deleted file mode 100644
index ae99810..0000000
--- a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/check-GST_GL_HAVE_PLATFORM_GLX.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Add additional check on GST_GL_HAVE_PLATFORM_GLX before using gst_gl_display_x11_new_with_display
-
-This ensures that there is a compile time check for glx support in gstreamer as
-runtime check is not enough because gst_gl_display_x11_new_with_display() API comes from
-gst/gl/x11/gstgldisplay_x11.h which is only included when GST_GL_HAVE_PLATFORM_GLX is defined
-therefore make this check consistent to fix build with some platforms which use pvr gl drivers
-where this problem appear at compile time.
-
-
-/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/webkitgtk/2.40.2-r0/webkitgtk-2.40.2/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp:68:31: error: use of undeclared identifier 'gst_gl_display_x11_new_with_display'; did you mean 'gst_gl_display_egl_new_with_egl_display'?
-   68 |         return GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
-      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      |                               gst_gl_display_egl_new_with_egl_display
-
-This issue is 2.40 specific since GLX support is removed [1] from trunk upstream, therefore
-this patch wont be needed when upgrading to 2.42+
-
-[1] https://github.com/WebKit/WebKit/commit/320560f9e53ddcd53954059bd005e0c75eb91abf
-
-Upstream-Status: Inappropriate [GLX support is gone in 2.41+]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- a/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp	2023-02-20 01:22:18.917743700 -0800
-+++ b/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp	2023-07-08 08:45:09.739177065 -0700
-@@ -63,7 +63,7 @@
-     if (glPlatform == GST_GL_PLATFORM_EGL)
-         return GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(sharedDisplay.eglDisplay()));
- #endif
--#if USE(GLX)
-+#if USE(GLX) && GST_GL_HAVE_PLATFORM_GLX
-     if (is<PlatformDisplayX11>(sharedDisplay) && glPlatform == GST_GL_PLATFORM_GLX)
-         return GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
- #endif
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/no-musttail-arm.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/no-musttail-arm.patch
index c660baa..37bc653 100644
--- a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/no-musttail-arm.patch
+++ b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/no-musttail-arm.patch
@@ -1,4 +1,7 @@
-clang/arm: Do not use MUST_TAIL_CALL
+From c50f2277509f2e6f087cda2eaf323eaf569aad8d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Sep 2023 12:42:06 -0700
+Subject: [PATCH] clang/arm: Do not use MUST_TAIL_CALL
 
 This causes clang-17 to crash see [1]
 this code is new in webkit 2.42[2] thats why we do not see the crash in older webkit
@@ -8,9 +11,15 @@
 
 Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ Source/WTF/wtf/Compiler.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Source/WTF/wtf/Compiler.h b/Source/WTF/wtf/Compiler.h
+index 449ca502..daac29d7 100644
 --- a/Source/WTF/wtf/Compiler.h
 +++ b/Source/WTF/wtf/Compiler.h
-@@ -284,7 +284,7 @@
+@@ -321,7 +321,7 @@
  /* MUST_TAIL_CALL */
  
  #if !defined(MUST_TAIL_CALL) && defined(__cplusplus) && defined(__has_cpp_attribute)
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch
index 15e255e..0a5720c 100644
--- a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch
+++ b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3/reproducibility.patch
@@ -1,4 +1,4 @@
-From 3b25aac4240d8af8bed3b0113110b36980370a98 Mon Sep 17 00:00:00 2001
+From 7336dfd02c20ec9b2a984e1e42d17201af55c8f5 Mon Sep 17 00:00:00 2001
 From: Richard Purdie <richard.purdie@linuxfoundation.org>
 Date: Thu, 27 Jul 2023 22:09:06 +0200
 Subject: [PATCH] webkitgtk3: add recipe
@@ -11,7 +11,6 @@
 
 Upstream-Status: Pending [could be reworked]
 Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
 ---
  Source/JavaScriptCore/generator/GeneratedFile.rb | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.42.5.bb b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.42.5.bb
deleted file mode 100644
index 234ecfa..0000000
--- a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.42.5.bb
+++ /dev/null
@@ -1,184 +0,0 @@
-SUMMARY = "WebKit web rendering engine for the GTK+ platform"
-HOMEPAGE = "https://www.webkitgtk.org/"
-BUGTRACKER = "https://bugs.webkit.org/"
-
-LICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
-                    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
-                    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
-                    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
-                    "
-
-SRC_URI = "https://www.webkitgtk.org/releases/webkitgtk-${PV}.tar.xz \
-           file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
-           file://reproducibility.patch \
-           file://0d3344e17d258106617b0e6d783d073b188a2548.patch \
-           file://no-musttail-arm.patch \
-           file://0001-LowLevelInterpreter.cpp-339-21-error-t6-was-not-decl.patch \
-           "
-SRC_URI[sha256sum] = "b64278c1f20b8cfdbfb5ff573c37d871aba74a1db26d9b39f74e8953fe61e749"
-
-inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
-
-S = "${WORKDIR}/webkitgtk-${PV}"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
-
-CVE_PRODUCT = "webkitgtk webkitgtk\+"
-
-DEPENDS += " \
-          ruby-native \
-          gperf-native \
-          unifdef-native \
-          cairo \
-          harfbuzz \
-          jpeg \
-          atk \
-          libwebp \
-          gtk+3 \
-          libxslt \
-          libtasn1 \
-          libnotify \
-          gstreamer1.0 \
-          gstreamer1.0-plugins-base \
-          glib-2.0-native \
-          gettext-native \
-          "
-
-PACKAGECONFIG_SOUP ?= "soup3"
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
-                   enchant \
-                   libsecret \
-                   ${PACKAGECONFIG_SOUP} \
-                  "
-
-PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
-PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
-PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
-PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
-PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
-PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
-PACKAGECONFIG[jpegxl] = " -DUSE_JPEGXL=ON,-DUSE_JPEGXL=OFF,libjxl"
-PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl"
-PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl"
-PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
-PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
-PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
-PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
-PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
-PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
-PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
-PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
-PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
-PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
-PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
-PACKAGECONFIG[avif] = "-DUSE_AVIF_LOG=ON,-DUSE_AVIF=OFF,libavif"
-PACKAGECONFIG[media-recorder] = "-DENABLE_MEDIA_RECORDER=ON,-DENABLE_MEDIA_RECORDER=OFF,gstreamer1.0-plugins-bad"
-PACKAGECONFIG[gamepad] = "-DENABLE_GAMEPAD=ON,-DENABLE_GAMEPAD=OFF,libmanette"
-PACKAGECONFIG[webrtc] = "-DENABLE_WEB_RTC=ON,-DENABLE_WEB_RTC=OFF"
-PACKAGECONFIG[bubblewrap] = "-DENABLE_BUBBLEWRAP_SANDBOX=ON -DBWRAP_EXECUTABLE=${bindir}/bwrap -DDBUS_PROXY_EXECUTABLE=${bindir}/xdg-dbus-proxy,-DENABLE_BUBBLEWRAP_SANDBOX=OFF,,bubblewrap xdg-dbus-proxy"
-
-EXTRA_OECMAKE = " \
-		-DPORT=GTK \
-		${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
-		${@bb.utils.contains('GIDOCGEN_ENABLED', 'True', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
-		-DENABLE_MINIBROWSER=ON \
-		"
-# Unless DEBUG_BUILD is enabled, pass -g1 to massively reduce the size of the
-# debug symbols (4.3GB to 700M at time of writing)
-DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}"
-
-# Javascript JIT is not supported on ARC
-EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
-# By default 25-bit "medium" calls are used on ARC
-# which is not enough for binaries larger than 32 MiB
-CFLAGS:append:arc = " -mlong-calls"
-CXXFLAGS:append:arc = " -mlong-calls"
-
-# Needed for non-mesa graphics stacks when x11 is disabled
-CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
-
-# Javascript JIT is not supported on powerpc
-EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
-
-# ARM JIT code does not build on ARMv4/5/6 anymore
-EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
-
-# And for armv7* don't enable it for softfp, because after:
-# https://github.com/WebKit/WebKit/commit/a2ec4ef1997d6fafa6ffc607bffb54e76168a918
-# https://bugs.webkit.org/show_bug.cgi?id=242172
-# softfp armv7* fails because WEBASSEMBLY is left enabled by default and JIT gets
-# explicitly disabled causing:
-# http://errors.yoctoproject.org/Errors/Details/734587/
-# PR was sent upstream, but the end result is the same both JIT and WEBASSEMBLY disabled
-# https://github.com/WebKit/WebKit/pull/17447
-EXTRA_OECMAKE:append:armv7a = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
-EXTRA_OECMAKE:append:armv7r = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
-EXTRA_OECMAKE:append:armv7ve = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
-
-EXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF "
-EXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF "
-
-# JIT and gold linker does not work on RISCV
-EXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
-EXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF"
-
-# JIT not supported on MIPS either
-EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
-
-# JIT not supported on X32
-# An attempt was made to upstream JIT support for x32 in
-# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
-# unresolved due to limited X32 adoption.
-EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
-
-SECURITY_CFLAGS:remove:aarch64 = "-fpie"
-SECURITY_CFLAGS:append:aarch64 = " -fPIE"
-
-FILES:${PN} += "${libdir}/webkit2gtk-4.*/injected-bundle/libwebkit2gtkinjectedbundle.so"
-
-RRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
-
-# http://errors.yoctoproject.org/Errors/Details/20370/
-ARM_INSTRUCTION_SET:armv4 = "arm"
-ARM_INSTRUCTION_SET:armv5 = "arm"
-ARM_INSTRUCTION_SET:armv6 = "arm"
-
-# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
-# https://bugs.webkit.org/show_bug.cgi?id=159880
-# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
-# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
-ARM_INSTRUCTION_SET:armv7a = "thumb"
-ARM_INSTRUCTION_SET:armv7r = "thumb"
-ARM_INSTRUCTION_SET:armv7ve = "thumb"
-
-# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
-COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
-
-# introspection inside qemu-arm hangs forever on musl/arm builds
-# therefore disable GI_DATA
-GI_DATA_ENABLED:libc-musl:armv7a = "False"
-GI_DATA_ENABLED:libc-musl:armv7ve = "False"
-
-do_install:append() {
-	mv ${D}${bindir}/WebKitWebDriver ${D}${bindir}/WebKitWebDriver3
-}
-
-PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
-src_package_preprocess () {
-        # Trim build paths from comments in generated sources to ensure reproducibility
-        sed -i -e "s,${WORKDIR},,g" \
-            ${B}/JavaScriptCore/DerivedSources/*.h \
-            ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
-            ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
-            ${B}/WebCore/DerivedSources/*.cpp \
-            ${B}/WebKitGTK/DerivedSources/webkit/*.cpp
-}
-
diff --git a/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.44.0.bb b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.44.0.bb
new file mode 100644
index 0000000..34afaed
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/webkitgtk/webkitgtk3_2.44.0.bb
@@ -0,0 +1,189 @@
+SUMMARY = "WebKit web rendering engine for the GTK+ platform"
+HOMEPAGE = "https://www.webkitgtk.org/"
+BUGTRACKER = "https://bugs.webkit.org/"
+
+LICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
+                    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
+                    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
+                    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
+                    "
+
+SRC_URI = "https://www.webkitgtk.org/releases/webkitgtk-${PV}.tar.xz \
+           file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
+           file://reproducibility.patch \
+           file://no-musttail-arm.patch \
+           file://0001-LowLevelInterpreter.cpp-339-21-error-t6-was-not-decl.patch \
+           file://30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch \
+           file://2922af379dc70b4b1a63b01d67179eb431f03ac4.patch \
+           "
+SRC_URI[sha256sum] = "c66530e41ba59b1edba4ee89ef20b2188e273bed0497e95084729e3cfbe30c87"
+
+inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
+
+S = "${WORKDIR}/webkitgtk-${PV}"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}"
+
+CVE_PRODUCT = "webkitgtk webkitgtk\+"
+
+DEPENDS += " \
+          ruby-native \
+          gperf-native \
+          unifdef-native \
+          cairo \
+          harfbuzz \
+          jpeg \
+          atk \
+          libwebp \
+          gtk+3 \
+          libxslt \
+          libtasn1 \
+          libnotify \
+          gstreamer1.0 \
+          gstreamer1.0-plugins-base \
+          glib-2.0-native \
+          gettext-native \
+          "
+
+PACKAGECONFIG_SOUP ?= "soup3"
+PACKAGECONFIG ??= " \
+	   ${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
+	   ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
+	   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
+	   ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
+	   enchant \
+	   libsecret \
+	   ${PACKAGECONFIG_SOUP} \
+	   "
+
+PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
+PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
+PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
+PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
+PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
+PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
+PACKAGECONFIG[jpegxl] = " -DUSE_JPEGXL=ON,-DUSE_JPEGXL=OFF,libjxl"
+PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl"
+PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl"
+PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
+PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
+PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
+PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
+PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
+PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
+PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
+PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
+PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
+PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
+PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
+PACKAGECONFIG[avif] = "-DUSE_AVIF_LOG=ON,-DUSE_AVIF=OFF,libavif"
+PACKAGECONFIG[media-recorder] = "-DENABLE_MEDIA_RECORDER=ON,-DENABLE_MEDIA_RECORDER=OFF,gstreamer1.0-plugins-bad"
+PACKAGECONFIG[gamepad] = "-DENABLE_GAMEPAD=ON,-DENABLE_GAMEPAD=OFF,libmanette"
+PACKAGECONFIG[webrtc] = "-DENABLE_WEB_RTC=ON,-DENABLE_WEB_RTC=OFF"
+PACKAGECONFIG[bubblewrap] = "-DENABLE_BUBBLEWRAP_SANDBOX=ON -DBWRAP_EXECUTABLE=${bindir}/bwrap -DDBUS_PROXY_EXECUTABLE=${bindir}/xdg-dbus-proxy,-DENABLE_BUBBLEWRAP_SANDBOX=OFF,,bubblewrap xdg-dbus-proxy"
+PACKAGECONFIG[backtrace] = "-DUSE_LIBBACKTRACE=ON,-DUSE_LIBBACKTRACE=OFF,libbacktrace"
+
+EXTRA_OECMAKE = " \
+	-DPORT=GTK \
+	-DUSE_GTK4=OFF \
+	${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
+	${@bb.utils.contains('GIDOCGEN_ENABLED', 'True', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
+	-DENABLE_MINIBROWSER=ON \
+	-DCMAKE_EXPORT_COMPILE_COMMANDS=OFF \
+		"
+# Unless DEBUG_BUILD is enabled, pass -g1 to massively reduce the size of the
+# debug symbols (4.3GB to 700M at time of writing)
+DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}"
+
+# Javascript JIT is not supported on ARC
+EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
+# By default 25-bit "medium" calls are used on ARC
+# which is not enough for binaries larger than 32 MiB
+CFLAGS:append:arc = " -mlong-calls"
+CXXFLAGS:append:arc = " -mlong-calls"
+
+# Needed for non-mesa graphics stacks when x11 is disabled
+CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
+
+# Javascript JIT is not supported on powerpc
+EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
+
+# ARM JIT code does not build on ARMv4/5/6 anymore
+EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
+
+# And for armv7* don't enable it for softfp, because after:
+# https://github.com/WebKit/WebKit/commit/a2ec4ef1997d6fafa6ffc607bffb54e76168a918
+# https://bugs.webkit.org/show_bug.cgi?id=242172
+# softfp armv7* fails because WEBASSEMBLY is left enabled by default and JIT gets
+# explicitly disabled causing:
+# http://errors.yoctoproject.org/Errors/Details/734587/
+# PR was sent upstream, but the end result is the same both JIT and WEBASSEMBLY disabled
+# https://github.com/WebKit/WebKit/pull/17447
+EXTRA_OECMAKE:append:armv7a = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
+EXTRA_OECMAKE:append:armv7r = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
+EXTRA_OECMAKE:append:armv7ve = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
+
+EXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF "
+EXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF "
+
+# JIT and gold linker does not work on RISCV
+EXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
+EXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF"
+
+# JIT not supported on MIPS either
+EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
+
+# JIT not supported on X32
+# An attempt was made to upstream JIT support for x32 in
+# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
+# unresolved due to limited X32 adoption.
+EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
+
+SECURITY_CFLAGS:remove:aarch64 = "-fpie"
+SECURITY_CFLAGS:append:aarch64 = " -fPIE"
+
+FILES:${PN} += "${libdir}/webkit2gtk-4.*/injected-bundle/libwebkit2gtkinjectedbundle.so"
+
+RRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
+
+# http://errors.yoctoproject.org/Errors/Details/20370/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
+
+# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
+# https://bugs.webkit.org/show_bug.cgi?id=159880
+# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
+# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
+ARM_INSTRUCTION_SET:armv7a = "thumb"
+ARM_INSTRUCTION_SET:armv7r = "thumb"
+ARM_INSTRUCTION_SET:armv7ve = "thumb"
+
+# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
+COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
+
+# introspection inside qemu-arm hangs forever on musl/arm builds
+# therefore disable GI_DATA
+GI_DATA_ENABLED:libc-musl:armv7a = "False"
+GI_DATA_ENABLED:libc-musl:armv7ve = "False"
+
+do_install:append() {
+	mv ${D}${bindir}/WebKitWebDriver ${D}${bindir}/WebKitWebDriver3
+}
+
+PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
+src_package_preprocess () {
+        # Trim build paths from comments in generated sources to ensure reproducibility
+        sed -i -e "s,${WORKDIR},,g" \
+            ${B}/JavaScriptCore/DerivedSources/*.h \
+            ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
+            ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
+            ${B}/WebCore/DerivedSources/*.cpp \
+            ${B}/WebKitGTK/DerivedSources/webkit/*.cpp
+}
+
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/0001-Make-xmlError-struct-constant.patch b/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/0001-Make-xmlError-struct-constant.patch
new file mode 100644
index 0000000..a9d98db
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/xmlstarlet/files/0001-Make-xmlError-struct-constant.patch
@@ -0,0 +1,45 @@
+From f7a5ebc3a673b246a64c9a664df304c1520a3951 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Thu, 7 Mar 2024 12:35:17 -0800
+Subject: [PATCH] Make xmlError struct constant
+
+In libxml2 commit v2.12.0~14 the API changed so that
+xmlGetLastError() returns pointer to a constant xmlError struct.
+Reflect this change in our code.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/xml.c     | 2 +-
+ src/xmlstar.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/xml.c b/src/xml.c
+index cf47cc2..e6f19c1 100644
+--- a/src/xml.c
++++ b/src/xml.c
+@@ -104,7 +104,7 @@ void reportGenericError(void* ctx, const char * msg, ...) {
+ /* by default all errors are reported */
+ static ErrorInfo errorInfo = { NULL, NULL, VERBOSE, CONTINUE };
+ 
+-void reportError(void *ptr, xmlErrorPtr error)
++void reportError(void *ptr, const xmlError *error)
+ {
+     ErrorInfo *errorInfo = (ErrorInfo*) ptr;
+     assert(errorInfo);
+diff --git a/src/xmlstar.h b/src/xmlstar.h
+index 3e1eed3..7e41ac4 100644
+--- a/src/xmlstar.h
++++ b/src/xmlstar.h
+@@ -32,7 +32,7 @@ typedef struct _errorInfo {
+     ErrorStop stop;
+ } ErrorInfo;
+ 
+-void reportError(void *ptr, xmlErrorPtr error);
++void reportError(void *ptr, const xmlError* error);
+ void suppressErrors(void);
+ 
+ typedef struct _gOptions {
+-- 
+2.44.0
+
diff --git a/meta-openembedded/meta-oe/recipes-support/xmlstarlet/xmlstarlet_1.6.1.bb b/meta-openembedded/meta-oe/recipes-support/xmlstarlet/xmlstarlet_1.6.1.bb
index 930fbdd..61eeaaa 100644
--- a/meta-openembedded/meta-oe/recipes-support/xmlstarlet/xmlstarlet_1.6.1.bb
+++ b/meta-openembedded/meta-oe/recipes-support/xmlstarlet/xmlstarlet_1.6.1.bb
@@ -15,6 +15,7 @@
 SRC_URI = "${SOURCEFORGE_MIRROR}/xmlstar/${BP}.tar.gz \
            file://configure.ac.patch \
            file://0001-usage2c.awk-fix-wrong-basename-regexp.patch \
+           file://0001-Make-xmlError-struct-constant.patch \
            file://0001-Fix-hash_key_put-signature.patch"
 SRC_URI[sha256sum] = "15d838c4f3375332fd95554619179b69e4ec91418a3a5296e7c631b7ed19e7ca"
 
diff --git a/meta-openembedded/meta-oe/recipes-test/bats/bats_1.10.0.bb b/meta-openembedded/meta-oe/recipes-test/bats/bats_1.10.0.bb
deleted file mode 100644
index d2a93e1..0000000
--- a/meta-openembedded/meta-oe/recipes-test/bats/bats_1.10.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SUMMARY = "Bash Automated Testing System"
-DESCRIPTION = "Bats is a TAP-compliant testing framework for Bash. It \
-provides a simple way to verify that the UNIX programs you write behave as expected."
-HOMEPAGE = "https://github.com/bats-core/bats-core"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2970203aedf9e829edb96a137a4fe81b"
-
-SRC_URI = "\
-  git://github.com/bats-core/bats-core.git;branch=master;protocol=https \
-  "
-
-# v1.10.0
-SRCREV = "f7defb94362f2053a3e73d13086a167448ea9133"
-
-S = "${WORKDIR}/git"
-
-# Numerous scripts assume ${baselib} == lib, which is not true.
-#
-do_configure:prepend() {
-	for f in ${S}/libexec/bats-core/* ${S}/lib/bats-core/* ; do
-		sed -i 's:\$BATS_ROOT/lib/:\$BATS_ROOT/${baselib}/:g' $f
-	done
-}
-
-do_install() {
-	# Just a bunch of bash scripts to install
-	${S}/install.sh ${D}${prefix} ${baselib}
-}
-
-RDEPENDS:${PN} = "bash"
-FILES:${PN} += "${libdir}/bats-core/*"
-
-PACKAGECONFIG ??= "pretty"
-PACKAGECONFIG[pretty] = ",,,ncurses"
diff --git a/meta-openembedded/meta-oe/recipes-test/bats/bats_1.11.0.bb b/meta-openembedded/meta-oe/recipes-test/bats/bats_1.11.0.bb
new file mode 100644
index 0000000..f0615f7
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-test/bats/bats_1.11.0.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Bash Automated Testing System"
+DESCRIPTION = "Bats is a TAP-compliant testing framework for Bash. It \
+provides a simple way to verify that the UNIX programs you write behave as expected."
+HOMEPAGE = "https://github.com/bats-core/bats-core"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2970203aedf9e829edb96a137a4fe81b"
+
+SRC_URI = "\
+  git://github.com/bats-core/bats-core.git;branch=master;protocol=https \
+  "
+
+# v1.10.0
+SRCREV = "7531b575bb81487553553aecb654c41b237ae96c"
+
+S = "${WORKDIR}/git"
+
+# Numerous scripts assume ${baselib} == lib, which is not true.
+#
+do_configure:prepend() {
+	for f in ${S}/libexec/bats-core/* ${S}/lib/bats-core/* ; do
+		sed -i 's:\$BATS_ROOT/lib/:\$BATS_ROOT/${baselib}/:g' $f
+	done
+}
+
+do_install() {
+	# Just a bunch of bash scripts to install
+	${S}/install.sh ${D}${prefix} ${baselib}
+}
+
+RDEPENDS:${PN} = "bash"
+FILES:${PN} += "${libdir}/bats-core/*"
+
+PACKAGECONFIG ??= "pretty"
+PACKAGECONFIG[pretty] = ",,,ncurses"
diff --git a/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb b/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
index ef1b6e5..c5dfff2 100644
--- a/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
+++ b/meta-openembedded/meta-oe/recipes-test/cxxtest/cxxtest_4.4.bb
@@ -10,8 +10,6 @@
 
 inherit setuptools3
 
-PIP_INSTALL_DIST_PATH = "${B}/python/python3/dist"
-
 SETUPTOOLS_SETUP_PATH = "${S}/python"
 
 do_install:append() {
diff --git a/meta-openembedded/meta-oe/recipes-test/googletest/googletest_1.14.0.bb b/meta-openembedded/meta-oe/recipes-test/googletest/googletest_1.14.0.bb
index 1b05f3d..65468457 100644
--- a/meta-openembedded/meta-oe/recipes-test/googletest/googletest_1.14.0.bb
+++ b/meta-openembedded/meta-oe/recipes-test/googletest/googletest_1.14.0.bb
@@ -16,12 +16,15 @@
 #
 PACKAGECONFIG[shared] = "-DBUILD_SHARED_LIBS=ON,-DBUILD_SHARED_LIBS=OFF,,"
 
+CXXFLAGS:append = " -fPIC"
 
 ALLOW_EMPTY:${PN} = "1"
 ALLOW_EMPTY:${PN}-dbg = "1"
 
-ALLOW_EMPTY:${PN}-staticdev = "1"
-RDEPENDS:${PN}-dev += "${PN}-staticdev"
+# -staticdev will not be implicitly put into an SDK, so we add an rdepend
+# if we are not building shared libraries
+#
+RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG","shared","","${PN}-staticdev",d)}"
 
 BBCLASSEXTEND = "native nativesdk"
 
diff --git a/meta-openembedded/meta-perl/conf/include/ptest-packagelists-meta-perl.inc b/meta-openembedded/meta-perl/conf/include/ptest-packagelists-meta-perl.inc
index 29a2b2e..842f817 100644
--- a/meta-openembedded/meta-perl/conf/include/ptest-packagelists-meta-perl.inc
+++ b/meta-openembedded/meta-perl/conf/include/ptest-packagelists-meta-perl.inc
@@ -11,6 +11,7 @@
     libcgi-perl \
     libcrypt-openssl-random-perl \
     libdigest-hmac-perl \
+    liberror-perl \
     libextutils-config-perl \
     libextutils-installpaths-perl \
     libhtml-tagset-perl \
diff --git a/meta-openembedded/meta-perl/conf/layer.conf b/meta-openembedded/meta-perl/conf/layer.conf
index 1b130b9..20a6a42 100644
--- a/meta-openembedded/meta-perl/conf/layer.conf
+++ b/meta-openembedded/meta-perl/conf/layer.conf
@@ -15,4 +15,4 @@
 
 LAYERDEPENDS_perl-layer = "core openembedded-layer"
 
-LAYERSERIES_COMPAT_perl-layer = "nanbield"
+LAYERSERIES_COMPAT_perl-layer = "scarthgap"
diff --git a/poky/meta/recipes-devtools/perl/liberror-perl_0.17029.bb b/meta-openembedded/meta-perl/recipes-perl/liberror/liberror-perl_0.17029.bb
similarity index 100%
rename from poky/meta/recipes-devtools/perl/liberror-perl_0.17029.bb
rename to meta-openembedded/meta-perl/recipes-perl/liberror/liberror-perl_0.17029.bb
diff --git a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
index 3be2e92..538fa30 100644
--- a/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
+++ b/meta-openembedded/meta-perl/recipes-perl/libmodule/libmodule-pluggable-perl_5.2.bb
@@ -20,7 +20,6 @@
 SRC_URI[md5sum] = "87ce2971662efd0b69a81bb4dc9ea76c"
 SRC_URI[sha256sum] = "b3f2ad45e4fd10b3fb90d912d78d8b795ab295480db56dc64e86b9fa75c5a6df"
 
-PR = "r1"
 
 UPSTREAM_CHECK_REGEX = "Module\-Pluggable\-(?P<pver>(\d+\.\d+))"
 UPSTREAM_CHECK_URI = "https://metacpan.org/release/${SRCNAME}"
diff --git a/meta-openembedded/meta-python/conf/include/ptest-packagelists-meta-python.inc b/meta-openembedded/meta-python/conf/include/ptest-packagelists-meta-python.inc
index 5d9eb0f..2f7babe 100644
--- a/meta-openembedded/meta-python/conf/include/ptest-packagelists-meta-python.inc
+++ b/meta-openembedded/meta-python/conf/include/ptest-packagelists-meta-python.inc
@@ -7,6 +7,7 @@
 #
 # ptests which take less than ~30s each
 PTESTS_FAST_META_PYTHON = "\
+    python3-a2wsgi \
     python3-appdirs \
     python3-ansicolors \
     python3-asgiref \
@@ -19,9 +20,11 @@
     python3-execnet \
     python3-freezegun \
     python3-geojson \
+    python3-google-auth-oauthlib \
     python3-gpiod \
     python3-gunicorn \
     python3-html2text \
+    python3-httptools \
     python3-inflection \
     python3-inotify \
     python3-intervals \
@@ -37,6 +40,7 @@
     python3-parse-type \
     python3-platformdirs \
     python3-polyline \
+    python3-portalocker \
     python3-precise-runner \
     python3-prettytable \
     python3-pydantic \
@@ -50,6 +54,7 @@
     python3-pytest-mock \
     python3-pytoml \
     python3-pyyaml-include \
+    python3-pydbus \
     python3-rapidjson \
     python3-requests-file \
     python3-requests-toolbelt \
@@ -60,6 +65,7 @@
     python3-smpplib \
     python3-soupsieve \
     python3-sqlparse \
+    python3-tomli-w \
     python3-tomlkit \
     python3-trustme \
     python3-typeguard \
@@ -67,7 +73,9 @@
     python3-u-msgpack-python \
     python3-unidiff \
     python3-uritemplate \
+    python3-validators \
     python3-wrapt \
+    python3-wsproto \
     python3-xlrd \
     python3-xmltodict \
     python3-xxhash \
@@ -76,8 +84,11 @@
 
 PTESTS_SLOW_META_PYTHON = "\
     python3-arrow \
+    python3-google-auth \
     python3-lz4 \
     python3-marshmallow \
+    python3-pytest-localserver \
+    python3-traitlets \
     python3-yappi \
 "
 
diff --git a/meta-openembedded/meta-python/conf/layer.conf b/meta-openembedded/meta-python/conf/layer.conf
index add7801..f48b28b 100644
--- a/meta-openembedded/meta-python/conf/layer.conf
+++ b/meta-openembedded/meta-python/conf/layer.conf
@@ -14,6 +14,6 @@
 
 LAYERDEPENDS_meta-python = "core (>= 12) openembedded-layer"
 
-LAYERSERIES_COMPAT_meta-python = "nanbield"
+LAYERSERIES_COMPAT_meta-python = "scarthgap"
 
 LICENSE_PATH += "${LAYERDIR}/licenses"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.16.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.16.0.bb
deleted file mode 100644
index 63065e0..0000000
--- a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.16.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Python bindings for the Apache Thrift RPC system"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
-
-SRC_URI[sha256sum] = "2b5b6488fcded21f9d312aa23c9ff6a0195d0f6ae26ddbd5ad9e3e25dfc14408"
-
-inherit pypi setuptools3
-
-# Use different filename to prevent conflicts with thrift itself
-PYPI_SRC_URI:append = ";downloadfilename=${BP}.${PYPI_PACKAGE_EXT}"
-
-RDEPENDS:${PN} += "\
-    python3-logging \
-    python3-scons \
-    python3-six \
-    python3-stringold \
-    python3-threading \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.20.0.bb b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.20.0.bb
new file mode 100644
index 0000000..6a0a66a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-thrift/python3-thrift_0.20.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Python bindings for the Apache Thrift RPC system"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
+
+SRC_URI[sha256sum] = "4dd662eadf6b8aebe8a41729527bd69adf6ceaa2a8681cbef64d1273b3e8feba"
+
+inherit pypi setuptools3
+
+# Use different filename to prevent conflicts with thrift itself
+PYPI_SRC_URI:append = ";downloadfilename=${BP}.${PYPI_PACKAGE_EXT}"
+
+RDEPENDS:${PN} += "\
+    python3-logging \
+    python3-scons \
+    python3-six \
+    python3-stringold \
+    python3-threading \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb b/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
index ef63755..ab39606 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
+++ b/meta-openembedded/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb
@@ -17,5 +17,3 @@
 S = "${WORKDIR}/git"
 
 inherit setuptools3
-
-PIP_INSTALL_PACKAGE = "txWS"
diff --git a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb
index f5e2f67..31f6ae3 100644
--- a/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb
+++ b/meta-openembedded/meta-python/recipes-connectivity/telepathy/telepathy-python3_0.15.19.bb
@@ -11,7 +11,6 @@
            file://remove_duplicate_install.patch \
            file://telepathy-python_fix_for_automake_1.12.patch"
 
-PR = "r6"
 
 S = "${WORKDIR}/telepathy-python-${PV}"
 
diff --git a/meta-openembedded/meta-python/recipes-core/images/meta-python-image-ptest.bb b/meta-openembedded/meta-python/recipes-core/images/meta-python-image-ptest.bb
index 9c54285..002bd7a 100644
--- a/meta-openembedded/meta-python/recipes-core/images/meta-python-image-ptest.bb
+++ b/meta-openembedded/meta-python/recipes-core/images/meta-python-image-ptest.bb
@@ -27,6 +27,10 @@
 QB_MEM = "-m 1024"
 # If a particular ptest needs more memory, it can be customized:
 #QB_MEM:virtclass-mcextend-<pn> = "-m 4096"
+# python3-scrypt ptests run into OOMs on RISCV64 qemu
+QB_MEM:virtclass-mcextend-python3-scrypt = "-m 2048"
+QB_MEM:virtclass-mcextend-python3-fastjsonschema = "-m 2048"
+QB_MEM:virtclass-mcextend-python3-pillow = "-m 2048"
 
 TEST_SUITES = "ping ssh parselogs ptest"
 
diff --git a/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb b/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb
index eb5a264..e0446da 100644
--- a/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb
+++ b/meta-openembedded/meta-python/recipes-core/packagegroups/packagegroup-meta-python.bb
@@ -311,6 +311,7 @@
     python3-pycodestyle \
     python3-pyconnman \
     python3-pycurl \
+    python3-pydbus \
     python3-pydicti \
     python3-pyephem \
     python3-pyexpect \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python-libusb1_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python-libusb1_3.1.0.bb
new file mode 100644
index 0000000..a045dfa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python-libusb1_3.1.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Pure-python wrapper for libusb-1.0"
+HOMEPAGE = "http://github.com/vpelletier/python-libusb1"
+AUTHOR = "Vincent Pelletier <plr.vincent@gmail.com>"
+LICENSE = "GPL-2.0-only & LGPL-2.1-only"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+    file://COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c \
+"
+
+SRC_URI = "https://github.com/vpelletier/${BPN}/releases/download/${PV}/libusb1-${PV}.tar.gz"
+SRC_URI[md5sum] = "7b4f094786d1dfc8d011c7649d8ccb97"
+SRC_URI[sha256sum] = "4ee9b0a55f8bd0b3ea7017ae919a6c1f439af742c4a4b04543c5fd7af89b828c"
+
+S = "${WORKDIR}/libusb1-${PV}"
+
+RDEPENDS:${PN} = "libusb1"
+
+inherit setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-a2wsgi/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-a2wsgi/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-a2wsgi/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-a2wsgi_1.10.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-a2wsgi_1.10.4.bb
new file mode 100644
index 0000000..e6b9802
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-a2wsgi_1.10.4.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Convert WSGI app to ASGI app or ASGI app to WSGI app."
+HOMEPAGE = "https://github.com/abersheeran/a2wsgi"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e10d05d29ec6d8be8bfc503683f1bc9a"
+
+inherit pypi python_setuptools_build_meta ptest
+
+SRC_URI[sha256sum] = "50e81ac55aa609fa2c666e42bacc25c424c8884ce6072f1a7e902114b7ee5d63"
+
+DEPENDS += " \
+        python3-pdm-native \
+        python3-pdm-backend-native \
+"
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        python3-httpx \
+        python3-pytest \
+        python3-pytest-asyncio \
+        python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += " \
+        python3-asyncio \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.9.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.9.3.bb
index 2cdd352..10a3085 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.9.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp_3.9.3.bb
@@ -13,7 +13,9 @@
     python3-aiohappyeyeballs \
     python3-aiosignal \
     python3-async-timeout \
+    python3-attrs \
     python3-frozenlist \
+    python3-misc \
     python3-multidict \
     python3-yarl \
     python3-aiodns \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyio_4.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyio_4.2.0.bb
deleted file mode 100644
index 0bf907d..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyio_4.2.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "High level compatibility layer for multiple asynchronous event loop implementations"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c0a769411d2af7894099e8ff75058c9f"
-
-inherit pypi python_setuptools_build_meta
-
-SRC_URI[sha256sum] = "e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"
-
-DEPENDS += " \
-	python3-setuptools-scm-native \
-"
-
-# Don't provide "trio" PACKAGECONFIG as nothing provides "python3-trio" currently.
-# If somebody needs this please feel free to add python3-trio and enable the
-# packageconfig below:
-#PACKAGECONFIG ??= ""
-#PACKAGECONFIG[trio] = ",,,python3-trio"
-
-RDEPENDS:${PN} += "\
-    python3-idna \
-    python3-sniffio \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-anyio_4.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyio_4.3.0.bb
new file mode 100644
index 0000000..2c7a9f8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-anyio_4.3.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "High level compatibility layer for multiple asynchronous event loop implementations"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c0a769411d2af7894099e8ff75058c9f"
+
+inherit pypi python_setuptools_build_meta
+
+SRC_URI[sha256sum] = "f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"
+
+DEPENDS += " \
+	python3-setuptools-scm-native \
+"
+
+# Don't provide "trio" PACKAGECONFIG as nothing provides "python3-trio" currently.
+# If somebody needs this please feel free to add python3-trio and enable the
+# packageconfig below:
+#PACKAGECONFIG ??= ""
+#PACKAGECONFIG[trio] = ",,,python3-trio"
+
+RDEPENDS:${PN} += "\
+    python3-idna \
+    python3-sniffio \
+    python3-core \
+    python3-numbers \
+    python3-io \
+    python3-asyncio \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.0.bb
deleted file mode 100644
index 5bffa22..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "APIFlask is a lightweight Python web API framework based on Flask and marshmallow-code projects."
-HOMEPAGE = "https://github.com/apiflask/apiflask"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5f89d1b0dec37448d4f4163dc3c40e64"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE = "APIFlask"
-
-SRC_URI[sha256sum] = "e7616d902d446eb9e1c67d1d8a34691b437f9da4fe7a3b4d49c91ba88c85ee2a"
-
-RDEPENDS:${PN} += "\
-    python3-flask \
-    python3-flask-marshmallow \
-    python3-webargs \
-    python3-flask-httpauth \
-    python3-apispec \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.1.bb
new file mode 100644
index 0000000..94f2e37
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-apiflask_2.1.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "APIFlask is a lightweight Python web API framework based on Flask and marshmallow-code projects."
+HOMEPAGE = "https://github.com/apiflask/apiflask"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5f89d1b0dec37448d4f4163dc3c40e64"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "APIFlask"
+
+SRC_URI[sha256sum] = "88db5a539cc155e35d9636d99b434d00ca6c0b23e7c87c8321ec9dc980535366"
+
+RDEPENDS:${PN} += "\
+    python3-flask \
+    python3-flask-marshmallow \
+    python3-webargs \
+    python3-flask-httpauth \
+    python3-apispec \
+    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.2.bb
deleted file mode 100644
index 90560fa..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.2.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Argcomplete provides easy, extensible command line tab completion of arguments for your Python script."
-HOMEPAGE = "https://github.com/kislyuk/argcomplete"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2ee41112a44fe7014dce33e26468ba93"
-
-SRC_URI[sha256sum] = "f3e49e8ea59b4026ee29548e24488af46e30c9de57d48638e24f54a1ea1000a2"
-
-PYPI_PACKAGE = "argcomplete"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    python3-core \
-    python3-io \
-"
-
-BBCLASSEXTEND = "native nativesdk"
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.3.bb
new file mode 100644
index 0000000..8d8c8a4e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-argcomplete_3.2.3.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Argcomplete provides easy, extensible command line tab completion of arguments for your Python script."
+HOMEPAGE = "https://github.com/kislyuk/argcomplete"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI[sha256sum] = "bf7900329262e481be5a15f56f19736b376df6f82ed27576fa893652c5de6c23"
+
+PYPI_PACKAGE = "argcomplete"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    python3-core \
+    python3-io \
+"
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asgiref_3.7.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asgiref_3.7.2.bb
deleted file mode 100644
index b7fa9f0..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-asgiref_3.7.2.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-DESCRIPTION = "ASGI is a standard for Python asynchronous web apps and servers to communicate with each other, and positioned as an asynchronous successor to WSGI."
-HOMEPAGE = "https://pypi.org/project/asgiref/"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f09eb47206614a4954c51db8a94840fa"
-
-SRC_URI += "file://run-ptest \
-	    "
-
-SRC_URI[sha256sum] = "9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"
-
-export BUILD_SYS
-export HOST_SYS
-
-inherit pypi ptest setuptools3
-
-RDEPENDS:${PN}-ptest += " \
-    python3-asyncio \
-    python3-io \
-    python3-multiprocessing \
-    python3-pytest \
-    python3-unittest-automake-output \
-"
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-asgiref_3.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-asgiref_3.8.1.bb
new file mode 100644
index 0000000..3b90eda
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-asgiref_3.8.1.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "ASGI is a standard for Python asynchronous web apps and servers to communicate with each other, and positioned as an asynchronous successor to WSGI."
+HOMEPAGE = "https://pypi.org/project/asgiref/"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f09eb47206614a4954c51db8a94840fa"
+
+SRC_URI += "file://run-ptest \
+	    "
+
+SRC_URI[sha256sum] = "c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"
+
+export BUILD_SYS
+export HOST_SYS
+
+inherit pypi ptest setuptools3
+
+RDEPENDS:${PN}-ptest += " \
+    python3-asyncio \
+    python3-io \
+    python3-multiprocessing \
+    python3-pytest \
+    python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
index 54e43e3..bc3315f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astor_0.8.1.bb
@@ -10,7 +10,6 @@
 SRCREV ?= "c7553c79f9222e20783fe9bd8a553f932e918072"
 
 inherit setuptools3
-PIP_INSTALL_PACKAGE = "astor"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.3.bb
deleted file mode 100644
index b02b151..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.0.3.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "An abstract syntax tree for Python with inference support."
-HOMEPAGE = "https://pypi.python.org/pypi/astroid"
-SECTION = "devel/python"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
-
-SRC_URI[sha256sum] = "4148645659b08b70d72460ed1921158027a9e53ae8b7234149b1400eddacbb93"
-
-inherit pypi python_setuptools_build_meta
-
-DEPENDS += "\
-    python3-pytest-runner-native \
-    python3-wheel-native \
-"
-
-PACKAGES =+ "${PN}-tests"
-
-FILES:${PN}-tests += " \
-    ${PYTHON_SITEPACKAGES_DIR}/astroid/test* \
-    ${PYTHON_SITEPACKAGES_DIR}/astroid/__pycache__/test* \
-"
-
-RDEPENDS:${PN}:class-target += "\
-    python3-lazy-object-proxy \
-    python3-logging \
-    python3-six \
-    python3-wrapt \
-    python3-setuptools \
-    python3-typing-extensions \
-"
-
-RDEPENDS:${PN}-tests:class-target += "\
-    python3-unittest \
-    python3-xml \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.1.0.bb
new file mode 100644
index 0000000..3c68f1e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-astroid_3.1.0.bb
@@ -0,0 +1,37 @@
+SUMMARY = "An abstract syntax tree for Python with inference support."
+HOMEPAGE = "https://pypi.python.org/pypi/astroid"
+SECTION = "devel/python"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a70cf540abf41acb644ac3b621b2fad1"
+
+SRC_URI[sha256sum] = "ac248253bfa4bd924a0de213707e7ebeeb3138abeb48d798784ead1e56d419d4"
+
+inherit pypi python_setuptools_build_meta
+
+DEPENDS += "\
+    python3-pytest-runner-native \
+    python3-wheel-native \
+"
+
+PACKAGES =+ "${PN}-tests"
+
+FILES:${PN}-tests += " \
+    ${PYTHON_SITEPACKAGES_DIR}/astroid/test* \
+    ${PYTHON_SITEPACKAGES_DIR}/astroid/__pycache__/test* \
+"
+
+RDEPENDS:${PN}:class-target += "\
+    python3-lazy-object-proxy \
+    python3-logging \
+    python3-six \
+    python3-wrapt \
+    python3-setuptools \
+    python3-typing-extensions \
+"
+
+RDEPENDS:${PN}-tests:class-target += "\
+    python3-unittest \
+    python3-xml \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.7.bb
deleted file mode 100644
index 2de7fc7..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.7.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Security oriented static analyser for python code."
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
-
-SRC_URI[sha256sum] = "527906bec6088cb499aae31bc962864b4e77569e9d529ee51df3a93b4b8ab28a"
-
-DEPENDS = "python3-pbr-native python3-git python3-pbr python3-pyyaml python3-six python3-stevedore"
-
-inherit setuptools3 pypi
-
-RDEPENDS:${PN} += "\
-        python3-git \
-        python3-modules \
-        python3-pbr \
-        python3-pyyaml \
-        python3-rich \
-        python3-six \
-        python3-stevedore \
-        "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.8.bb
new file mode 100644
index 0000000..8b09688
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bandit_1.7.8.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Security oriented static analyser for python code."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
+
+SRC_URI[sha256sum] = "36de50f720856ab24a24dbaa5fee2c66050ed97c1477e0a1159deab1775eab6b"
+
+DEPENDS = "python3-pbr-native python3-git python3-pbr python3-pyyaml python3-six python3-stevedore"
+
+inherit setuptools3 pypi
+
+RDEPENDS:${PN} += "\
+        python3-git \
+        python3-modules \
+        python3-pbr \
+        python3-pyyaml \
+        python3-rich \
+        python3-six \
+        python3-stevedore \
+        "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.3.2.bb
deleted file mode 100644
index 22060ef..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.3.2.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Extensible memoizing collections and decorators"
-HOMEPAGE = "https://github.com/tkem/cachetools"
-DESCRIPTION = "This module provides various memoizing \
-collections and decorators, including variants of the \
-Python 3 Standard Library @lru_cache function decorator."
-SECTION = "devel/python"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1ec55353c80c662e4255f8889a0ca558"
-
-inherit pypi python_setuptools_build_meta ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN} += " \
-	python3-math \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    python3-pytest \
-    python3-unittest-automake-output \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-SRC_URI[sha256sum] = "086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.3.3.bb
new file mode 100644
index 0000000..3ef75d4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cachetools_5.3.3.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Extensible memoizing collections and decorators"
+HOMEPAGE = "https://github.com/tkem/cachetools"
+DESCRIPTION = "This module provides various memoizing \
+collections and decorators, including variants of the \
+Python 3 Standard Library @lru_cache function decorator."
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=539275e657c6b7af026bb908356f7541"
+
+inherit pypi python_setuptools_build_meta ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN} += " \
+	python3-math \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    python3-pytest \
+    python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+SRC_URI[sha256sum] = "ba29e2dfa0b8b556606f097407ed1aa62080ee108ab0dc5ec9d6a723a007d105"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.0.bb
deleted file mode 100644
index b8565d1..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "DataStax Python Driver for Apache Cassandra"
-DESCRIPTION = "A modern, feature-rich and highly-tunable Python client \
-library for Apache Cassandra (1.2+) and DataStax Enterprise (3.1+) using \
-exclusively Cassandra's binary protocol and Cassandra Query Language v3."
-HOMEPAGE = "https://github.com/datastax/python-driver"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
-SRCNAME = "cassandra-driver"
-
-SRC_URI[sha256sum] = "0a34f9534356e5fd33af8cdda109d5e945b6335cb50399b267c46368c4e93c98"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    python3-cython \
-    python3-geomet \
-    python3-json \
-    python3-misc \
-    python3-multiprocessing \
-    python3-numbers \
-    python3-six \
-    libevent \
-"
-
-DEPENDS += "\
-    python3-cython \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.1.bb
new file mode 100644
index 0000000..3003e84
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cassandra-driver_3.29.1.bb
@@ -0,0 +1,28 @@
+SUMMARY = "DataStax Python Driver for Apache Cassandra"
+DESCRIPTION = "A modern, feature-rich and highly-tunable Python client \
+library for Apache Cassandra (1.2+) and DataStax Enterprise (3.1+) using \
+exclusively Cassandra's binary protocol and Cassandra Query Language v3."
+HOMEPAGE = "https://github.com/datastax/python-driver"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+SRCNAME = "cassandra-driver"
+
+SRC_URI[sha256sum] = "38e9c2a2f2a9664bb03f1f852d5fccaeff2163942b5db35dffcf8bf32a51cfe5"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    python3-cython \
+    python3-geomet \
+    python3-json \
+    python3-misc \
+    python3-multiprocessing \
+    python3-numbers \
+    python3-six \
+    libevent \
+"
+
+DEPENDS += "\
+    python3-cython \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.6.1.bb
deleted file mode 100644
index e2493e4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.6.1.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "An implementation of RFC 7049 - Concise Binary Object Representation (CBOR)."
-DEPENDS +="python3-setuptools-scm-native"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI[sha256sum] = "752130e38644319f3dae7f91fabb08f58bc454ca671b72875e6228d423890efd"
-
-inherit pypi python_setuptools_build_meta ptest
-
-DEPENDS += "python3-setuptools-scm-native"
-
-SRC_URI += " \
-        file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    python3-hypothesis \
-    python3-pytest \
-    python3-unittest-automake-output \
-    python3-unixadmin \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-RDEPENDS:${PN} += " \
-    python3-datetime \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.6.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.6.2.bb
new file mode 100644
index 0000000..c0987a9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cbor2_5.6.2.bb
@@ -0,0 +1,33 @@
+DESCRIPTION = "An implementation of RFC 7049 - Concise Binary Object Representation (CBOR)."
+DEPENDS +="python3-setuptools-scm-native"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SRC_URI[sha256sum] = "b7513c2dea8868991fad7ef8899890ebcf8b199b9b4461c3c11d7ad3aef4820d"
+
+inherit pypi python_setuptools_build_meta ptest
+
+DEPENDS += "python3-setuptools-scm-native"
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    python3-hypothesis \
+    python3-pytest \
+    python3-unittest-automake-output \
+    python3-unixadmin \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += " \
+    python3-datetime \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_2.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_2.0.1.bb
deleted file mode 100644
index 7f418b0..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_2.0.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "croniter provides iteration for datetime object with cron like format"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b8ee59850b882cbf623188489ea748e2"
-
-PYPI_PACKAGE = "croniter"
-
-SRC_URI[sha256sum] = "d199b2ec3ea5e82988d1f72022433c5f9302b3b3ea9e6bfd6a1518f6ea5e700a"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " python3-dateutil python3-natsort"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_2.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_2.0.3.bb
new file mode 100644
index 0000000..ad80574
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-croniter_2.0.3.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "croniter provides iteration for datetime object with cron like format"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b8ee59850b882cbf623188489ea748e2"
+
+PYPI_PACKAGE = "croniter"
+
+SRC_URI[sha256sum] = "28763ad39c404e159140874f08010cfd8a18f4c2a7cea1ce73e9506a4380cfc1"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+	python3-dateutil \
+	python3-natsort \
+	python3-pytz \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb
index bcb68d7..ac76ccc 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb
@@ -7,7 +7,6 @@
 SRC_URI[sha256sum] = "78e73e19c63f5b20ffa567001531680d939dc042bf7850431877645523c66709"
 
 PYPI_PACKAGE = "python-dateutil"
-PIP_INSTALL_PACKAGE = "python_dateutil"
 inherit pypi python_setuptools_build_meta
 
 PACKAGES =+ "${PN}-zoneinfo"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb
index b1ba953..59da454 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dbussy_1.3.bb
@@ -12,8 +12,6 @@
 
 inherit setuptools3
 
-PIP_INSTALL_PACKAGE = "DBussy"
-
 RDEPENDS:${PN} += "\
     python3-asyncio \
     python3-core \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.10.bb
deleted file mode 100644
index c78c8aa..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.10.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-require python-django.inc
-inherit setuptools3
-
-SRC_URI[sha256sum] = "b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13"
-
-RDEPENDS:${PN} += "\
-    python3-sqlparse \
-    python3-asgiref \
-"
-
-# Set DEFAULT_PREFERENCE so that the LTS version of django is built by
-# default. To build the 4.x branch, 
-# PREFERRED_VERSION_python3-django = "4.0.2" can be added to local.conf
-DEFAULT_PREFERENCE = "-1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.11.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.11.bb
new file mode 100644
index 0000000..0642b7e
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_4.2.11.bb
@@ -0,0 +1,14 @@
+require python-django.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "6e6ff3db2d8dd0c986b4eec8554c8e4f919b5c1ff62a5b4390c17aff2ed6e5c4"
+
+RDEPENDS:${PN} += "\
+    python3-sqlparse \
+    python3-asgiref \
+"
+
+# Set DEFAULT_PREFERENCE so that the LTS version of django is built by
+# default. To build the 4.x branch, 
+# PREFERRED_VERSION_python3-django = "4.2.11" can be added to local.conf
+DEFAULT_PREFERENCE = "-1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.2.bb
deleted file mode 100644
index 3f61dab..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.2.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-require python-django.inc
-inherit setuptools3
-
-SRC_URI[sha256sum] = "b5bb1d11b2518a5f91372a282f24662f58f66749666b0a286ab057029f728080"
-
-RDEPENDS:${PN} += "\
-    python3-sqlparse \
-    python3-asgiref \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.3.bb
new file mode 100644
index 0000000..14c41a6
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-django_5.0.3.bb
@@ -0,0 +1,9 @@
+require python-django.inc
+inherit setuptools3
+
+SRC_URI[sha256sum] = "5fb37580dcf4a262f9258c1f4373819aacca906431f505e4688e37f3a99195df"
+
+RDEPENDS:${PN} += "\
+    python3-sqlparse \
+    python3-asgiref \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.14.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.14.0.bb
deleted file mode 100644
index c39f37f..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.14.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY =  "djangorestframework"
-DESCRIPTION = "pip3 install djangorestframework"
-HOMEPAGE = "https://pypi.python.org/pypi/djangorestframework"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=7879a5a716147a784f7e524c9cf103c1"
-
-SRC_URI[sha256sum] = "579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8"
-
-PYPI_PACKAGE = "djangorestframework"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    python3-django \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.15.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.15.1.bb
new file mode 100644
index 0000000..9515aa2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-djangorestframework_3.15.1.bb
@@ -0,0 +1,16 @@
+SUMMARY =  "djangorestframework"
+DESCRIPTION = "pip3 install djangorestframework"
+HOMEPAGE = "https://pypi.python.org/pypi/djangorestframework"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=7879a5a716147a784f7e524c9cf103c1"
+
+SRC_URI[sha256sum] = "f88fad74183dfc7144b2756d0d2ac716ea5b4c7c9840995ac3bfd8ec034333c1"
+
+PYPI_PACKAGE = "djangorestframework"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    python3-django \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.6.0.bb
deleted file mode 100644
index c014371..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.6.0.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-DESCRIPTION = "DNS toolkit for Python"
-HOMEPAGE = "http://www.dnspython.org/"
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5af50906b5929837f667dfe31052bd34"
-
-SRC_URI[sha256sum] = "233f871ff384d84c33b2eaf4358ffe7f8927eae3b257ad8467f9bdba7e7ac6bc"
-
-inherit pypi python_hatchling ptest
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    python3-pytest \
-    python3-unittest-automake-output \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-DEPENDS += "\
-    python3-wheel-native \
-    python3-setuptools-scm-native \
-"
-
-RDEPENDS:${PN} += " \
-    python3-crypt \
-    python3-io \
-    python3-math \
-    python3-netclient \
-    python3-numbers \
-    python3-threading \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.6.1.bb
new file mode 100644
index 0000000..13e31af
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-dnspython_2.6.1.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "DNS toolkit for Python"
+HOMEPAGE = "http://www.dnspython.org/"
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5af50906b5929837f667dfe31052bd34"
+
+SRC_URI[sha256sum] = "e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"
+
+inherit pypi python_hatchling ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    python3-pytest \
+    python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+DEPENDS += "\
+    python3-wheel-native \
+    python3-setuptools-scm-native \
+"
+
+RDEPENDS:${PN} += " \
+    python3-crypt \
+    python3-io \
+    python3-math \
+    python3-netclient \
+    python3-numbers \
+    python3-threading \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.18.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.18.0.bb
index d102289..12dd51e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.18.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ecdsa_0.18.0.bb
@@ -3,14 +3,12 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=66ffc5e30f76cbb5358fe54b645e5a1d"
 
-DEPENDS += "python3-pip python3-pbr"
-
 PYPI_PACKAGE = "ecdsa"
 SRC_URI[sha256sum] = "190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49"
 
 inherit pypi setuptools3 python3native
 
-RDEPENDS:${PN} += "python3-six python3-gmpy2 python3-pbr"
+RDEPENDS:${PN} += "python3-six python3-gmpy2"
 
 BBCLASSEXTEND = "native nativesdk"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.3.0.bb
deleted file mode 100644
index 3e7f70f..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.3.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Provide XPath 1.0 and 2.0 selectors for Python's ElementTree XML data structures, both for the standard ElementTree library and for the lxml.etree library."
-HOMEPAGE = "https://github.com/sissaschool/elementpath"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5dbb7fb7d72da3921202dd7b995d3ecf"
-
-SRC_URI[sha256sum] = "8d25db9150f5a6aa978c9f58e607fcd5ab6e6e3017140563439a9884ab1eb304"
-
-PYPI_PACKAGE = "elementpath"
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    python3-xml \
-    python3-core \
-    python3-numbers \
-    python3-datetime \
-    python3-stringold \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.4.0.bb
new file mode 100644
index 0000000..e095cb8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-elementpath_4.4.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Provide XPath 1.0 and 2.0 selectors for Python's ElementTree XML data structures, both for the standard ElementTree library and for the lxml.etree library."
+HOMEPAGE = "https://github.com/sissaschool/elementpath"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5dbb7fb7d72da3921202dd7b995d3ecf"
+
+SRC_URI[sha256sum] = "dfc4b8ca3d87966dcb0df40b5b6d04a98f053683271930fad9e7fa000924dfb2"
+
+PYPI_PACKAGE = "elementpath"
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    python3-xml \
+    python3-core \
+    python3-numbers \
+    python3-datetime \
+    python3-stringold \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-abi_5.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-abi_5.0.0.bb
deleted file mode 100644
index 50b1340..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-abi_5.0.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Python utilities for working with Ethereum ABI definitions, especially encoding and decoding."
-HOMEPAGE = "https://github.com/ethereum/eth-abi"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=731f4de9c79bfeba6d8d55f83d0d2423"
-
-SRC_URI[sha256sum] = "89c4454d794d9ed92ad5cb2794698c5cee6b7b3ca6009187d0e282adc7f9b6dc"
-
-PYPI_PACKAGE = "eth_abi"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    python3-eth-typing \
-    python3-eth-utils \
-    python3-parsimonious \
-    python3-setuptools \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-abi_5.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-abi_5.0.1.bb
new file mode 100644
index 0000000..a562961
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-abi_5.0.1.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Python utilities for working with Ethereum ABI definitions, especially encoding and decoding."
+HOMEPAGE = "https://github.com/ethereum/eth-abi"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=731f4de9c79bfeba6d8d55f83d0d2423"
+
+SRC_URI[sha256sum] = "e9425110c6120c585c9f0db2e8a33d76c4b886b148a65e68fc0035d3917a3b9c"
+
+PYPI_PACKAGE = "eth_abi"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    python3-eth-typing \
+    python3-eth-utils \
+    python3-parsimonious \
+    python3-setuptools \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_1.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_1.0.1.bb
deleted file mode 100644
index 7ee20b9..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_1.0.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "RLP definitions for common Ethereum objects in Python"
-HOMEPAGE = "https://github.com/ethereum/eth-rlp"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3d7bdfe69b1ffbde073ca6e96f5c53f7"
-
-SRC_URI[sha256sum] = "d61dbda892ee1220f28fb3663c08f6383c305db9f1f5624dc585c9cd05115027"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} = " \
-    python3-eth-utils \
-    python3-hexbytes \
-    python3-rlp \
-    python3-typing-extensions \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_2.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_2.1.0.bb
new file mode 100644
index 0000000..4bdc0c8
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-rlp_2.1.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "RLP definitions for common Ethereum objects in Python"
+HOMEPAGE = "https://github.com/ethereum/eth-rlp"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3d7bdfe69b1ffbde073ca6e96f5c53f7"
+
+SRC_URI[sha256sum] = "d5b408a8cd20ed496e8e66d0559560d29bc21cee482f893936a1f05d0dddc4a0"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} = " \
+    python3-eth-utils \
+    python3-hexbytes \
+    python3-rlp \
+    python3-typing-extensions \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-utils/0001-setup-don-t-use-setuptools-markdown.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-utils/0001-setup-don-t-use-setuptools-markdown.patch
deleted file mode 100644
index 6584e60..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eth-utils/0001-setup-don-t-use-setuptools-markdown.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From bc86d603e632ce61de4ae7a5d4bcef080cbdb160 Mon Sep 17 00:00:00 2001
-From: Bartosz Golaszewski <brgl@bgdev.pl>
-Date: Wed, 11 May 2022 13:45:06 +0200
-Subject: [PATCH] setup: don't use setuptools-markdown
-
-This project is deprecated and irrelevant for the functionality of
-eth-utils. We don't support it in meta-python so just drop it from
-the dependencies.
-
-Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
----
-Upstream-Status: Pending
-
- setup.py | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 5717d5b..cb62132 100644
---- a/setup.py
-+++ b/setup.py
-@@ -37,7 +37,6 @@ setup(
-     # *IMPORTANT*: Don't manually change the version here. Use the 'bumpversion' utility.
-     version='1.1.2',
-     description="""Common utility functions for ethereum codebases.""",
--    long_description_markdown_filename='README.md',
-     author='Piper Merriam',
-     author_email='pipermerriam@gmail.com',
-     url='https://github.com/ethereum/eth_utils',
-@@ -48,7 +47,6 @@ setup(
-         "toolz>0.8.2,<1;implementation_name=='pypy'",
-         "cytoolz>=0.8.2,<1.0.0;implementation_name=='cpython'",
-     ],
--    setup_requires=['setuptools-markdown'],
-     extras_require=extras_require,
-     py_modules=['eth_utils'],
-     license="MIT",
--- 
-2.34.1
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.35.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.35.1.bb
deleted file mode 100644
index eb7f76b..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.35.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "Highly concurrent networking library"
-HOMEPAGE = "http://pypi.python.org/pypi/eventlet"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=56472ad6de4caf50e05332a34b66e778"
-
-SRC_URI[sha256sum] = "3b2eede94d64538cb894eec50302a881e056ed7e057f0e24fb45b28a19d6b2e8"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-	python3-dnspython \
-	python3-six \
-	python3-greenlet \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.36.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.36.1.bb
new file mode 100644
index 0000000..f70099a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-eventlet_0.36.1.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Highly concurrent networking library"
+HOMEPAGE = "http://pypi.python.org/pypi/eventlet"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=56472ad6de4caf50e05332a34b66e778"
+
+SRC_URI[sha256sum] = "d227fe76a63d9e6a6cef53beb8ad0b2dc40a5e7737c801f4b474cfae1db07bc5"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+	python3-dnspython \
+	python3-six \
+	python3-greenlet \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-filelock_3.13.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-filelock_3.13.1.bb
deleted file mode 100644
index ab0b114..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-filelock_3.13.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-# SPDX-License-Identifier: MIT
-# Copyright (C) 2023 iris-GmbH infrared & intelligent sensors
-
-SUMMARY = "A single module, which implements a platform independent file lock in Python, which provides a simple way of inter-process communication"
-HOMEPAGE = "https://py-filelock.readthedocs.io/"
-LICENSE = "Unlicense"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=911690f51af322440237a253d695d19f"
-
-SRC_URI[sha256sum] = "521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"
-
-BBCLASSEXTEND = "native nativesdk"
-inherit pypi python_hatchling
-
-DEPENDS += "\
-    python3-hatch-vcs-native \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-filelock_3.13.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-filelock_3.13.3.bb
new file mode 100644
index 0000000..f1477d1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-filelock_3.13.3.bb
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: MIT
+# Copyright (C) 2023 iris-GmbH infrared & intelligent sensors
+
+SUMMARY = "A single module, which implements a platform independent file lock in Python, which provides a simple way of inter-process communication"
+HOMEPAGE = "https://py-filelock.readthedocs.io/"
+LICENSE = "Unlicense"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=911690f51af322440237a253d695d19f"
+
+SRC_URI[sha256sum] = "a79895a25bbefdf55d1a2a0a80968f7dbb28edcd6d4234a0afb3f37ecde4b546"
+
+BBCLASSEXTEND = "native nativesdk"
+inherit pypi python_hatchling
+
+DEPENDS += "\
+    python3-hatch-vcs-native \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-marshmallow_1.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-marshmallow_1.2.0.bb
deleted file mode 100644
index 573b202..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-marshmallow_1.2.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Flask + marshmallow for beautiful APIs"
-HOMEPAGE = "https://github.com/marshmallow-code/flask-marshmallow"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=27586b20700d7544c06933afe56f7df4"
-
-inherit pypi python_setuptools_build_meta
-
-PYPI_PACKAGE = "flask_marshmallow"
-
-SRC_URI[sha256sum] = "d0f79eb9743f0c530a3d9e848503e1f2228e6b35a819c91e913af02e68421805"
-
-RDEPENDS:${PN} += "\
-    python3-flask \
-    python3-marshmallow \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-marshmallow_1.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-marshmallow_1.2.1.bb
new file mode 100644
index 0000000..8408ebd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-marshmallow_1.2.1.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Flask + marshmallow for beautiful APIs"
+HOMEPAGE = "https://github.com/marshmallow-code/flask-marshmallow"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=27586b20700d7544c06933afe56f7df4"
+
+inherit pypi python_setuptools_build_meta
+
+PYPI_PACKAGE = "flask_marshmallow"
+
+SRC_URI[sha256sum] = "00ee96399ed664963afff3b5d6ee518640b0f91dbc2aace2b5abcf32f40ef23a"
+
+RDEPENDS:${PN} += "\
+    python3-flask \
+    python3-marshmallow \
+    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_4.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_4.0.5.bb
deleted file mode 100644
index 87553c1..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_4.0.5.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "SQLAlchemy database migrations for Flask applications using Alembic"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b69377f79f3f48c661701236d5a6a85"
-
-SRC_URI[sha256sum] = "d3f437a8b5f3849d1bb1b60e1b818efc564c66e3fefe90b62e5db08db295e1b1"
-
-PYPI_PACKAGE = "Flask-Migrate"
-
-inherit pypi python_setuptools_build_meta
-
-RDEPENDS:${PN} += "\
-    python3-flask-sqlalchemy \
-    python3-alembic \
-    python3-flask \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_4.0.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_4.0.7.bb
new file mode 100644
index 0000000..bfd854a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask-migrate_4.0.7.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "SQLAlchemy database migrations for Flask applications using Alembic"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b69377f79f3f48c661701236d5a6a85"
+
+SRC_URI[sha256sum] = "dff7dd25113c210b069af280ea713b883f3840c1e3455274745d7355778c8622"
+
+PYPI_PACKAGE = "Flask-Migrate"
+
+inherit pypi python_setuptools_build_meta
+
+RDEPENDS:${PN} += "\
+    python3-flask-sqlalchemy \
+    python3-alembic \
+    python3-flask \
+    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_7.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_7.0.bb
deleted file mode 100644
index 1a81a38..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_7.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "generate GCC code coverage reports"
-HOMEPAGE = "https://gcovr.com"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c5a58ca91c1758a53f896ba89d8aaac2"
-
-SRC_URI = "git://github.com/gcovr/gcovr.git;branch=main;protocol=https"
-SRCREV = "fc190bcb85a25f5738315434a11f8e993edce515"
-
-S = "${WORKDIR}/git"
-
-inherit setuptools3
-PIP_INSTALL_PACKAGE = "gcovr"
-
-RDEPENDS:${PN} += "python3-jinja2 python3-lxml python3-setuptools python3-pygments python3-multiprocessing"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_7.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_7.2.bb
new file mode 100644
index 0000000..8a61a2d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gcovr_7.2.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "generate GCC code coverage reports"
+HOMEPAGE = "https://gcovr.com"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c5a58ca91c1758a53f896ba89d8aaac2"
+
+SRC_URI = "git://github.com/gcovr/gcovr.git;branch=main;protocol=https"
+SRCREV = "c4b74b0859611283be646d590c7915e787911b6f"
+
+S = "${WORKDIR}/git"
+
+inherit setuptools3
+
+RDEPENDS:${PN} += "python3-jinja2 python3-lxml python3-setuptools python3-pygments python3-multiprocessing"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-geomet_1.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-geomet_1.1.0.bb
index bdf4fc5..ceba10b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-geomet_1.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-geomet_1.1.0.bb
@@ -13,7 +13,6 @@
 SRCREV = "6ac73c312b52aca328db2e61d90c5e363b62639f"
 
 inherit setuptools3
-PIP_INSTALL_PACKAGE = "geomet"
 
 RDEPENDS:${PN} += "\
     python3-click \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.16.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.16.2.bb
deleted file mode 100644
index ecb15ba..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.16.2.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-DESCRIPTION = "Google API client core library"
-HOMEPAGE = "https://github.com/googleapis/python-api-core"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "032d37b45d1d6bdaf68fb11ff621e2593263a239fa9246e2e94325f9c47876d2"
-
-RDEPENDS:${PN} += "\
-    python3-asyncio \
-    python3-datetime \
-    python3-logging \
-    python3-math \
-"
-
-RDEPENDS:${PN} += "\
-    python3-googleapis-common-protos \
-    python3-google-auth \
-    python3-grpcio \
-    python3-protobuf \
-    python3-pytz \
-    python3-requests \
-    python3-six \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.18.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.18.0.bb
new file mode 100644
index 0000000..b4cbafa
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-core_2.18.0.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Google API client core library"
+HOMEPAGE = "https://github.com/googleapis/python-api-core"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "62d97417bfc674d6cef251e5c4d639a9655e00c45528c4364fbfebb478ce72a9"
+
+RDEPENDS:${PN} += "\
+    python3-asyncio \
+    python3-datetime \
+    python3-logging \
+    python3-math \
+"
+
+RDEPENDS:${PN} += "\
+    python3-googleapis-common-protos \
+    python3-google-auth \
+    python3-grpcio \
+    python3-protobuf \
+    python3-pytz \
+    python3-requests \
+    python3-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.118.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.118.0.bb
deleted file mode 100644
index 6a27006..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.118.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "The Google API Client for Python is a client library for accessing the Plus, \
-Moderator, and many other Google APIs."
-HOMEPAGE = "https://github.com/googleapis/google-api-python-client"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI[sha256sum] = "ebf4927a3f5184096647be8f705d090e7f06d48ad82b0fa431a2fe80c2cbe182"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    python3-logging \
-    python3-six \
-    python3-json \
-    python3-core \
-    python3-netclient \
-    python3-httplib2 \
-    python3-uritemplate \
-    python3-google-api-core \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.124.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.124.0.bb
new file mode 100644
index 0000000..99b07d3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.124.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "The Google API Client for Python is a client library for accessing the Plus, \
+Moderator, and many other Google APIs."
+HOMEPAGE = "https://github.com/googleapis/google-api-python-client"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRC_URI[sha256sum] = "f6d3258420f7c76b0f5266b5e402e6f804e30351b018a10083f4a46c3ec33773"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "\
+    python3-logging \
+    python3-six \
+    python3-json \
+    python3-core \
+    python3-netclient \
+    python3-httplib2 \
+    python3-uritemplate \
+    python3-google-api-core \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth-oauthlib/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth-oauthlib/run-ptest
new file mode 100644
index 0000000..f1c8729
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth-oauthlib/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+pytest --automake
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth-oauthlib_1.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth-oauthlib_1.2.0.bb
index 5c071ac..70e843a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth-oauthlib_1.2.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth-oauthlib_1.2.0.bb
@@ -6,9 +6,26 @@
 
 SRC_URI[sha256sum] = "292d2d3783349f2b0734a0a0207b1e1e322ac193c2c09d8f7c613fb7cc501ea8"
 
-inherit pypi setuptools3
+inherit pypi setuptools3 ptest
 
-RDEPENDS:${PN} = " \
-    python3-google-auth \
-    python3-requests-oauthlib \
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        python3-click \
+        python3-mock \
+        python3-pytest \
+        python3-unittest-automake-output \
+        python3-unixadmin \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += " \
+        python3-google-auth \
+        python3-requests-oauthlib \
 "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth/run-ptest
new file mode 100644
index 0000000..f1c8729
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth/run-ptest
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+pytest --automake
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.28.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.28.1.bb
deleted file mode 100644
index 4524cca..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.28.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-DESCRIPTION = "Google Authentication Library"
-HOMEPAGE = "https://github.com/googleapis/google-auth-library-python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "34fc3046c257cedcf1622fc4b31fc2be7923d9b4d44973d481125ecc50d83885"
-
-RDEPENDS:${PN} += "\
-    python3-asyncio \
-    python3-datetime \
-    python3-io \
-    python3-json \
-    python3-logging \
-    python3-netclient \
-    python3-numbers \
-"
-
-RDEPENDS:${PN} += "\
-    python3-aiohttp \
-    python3-cachetools \
-    python3-pyasn1-modules \
-    python3-rsa \
-    python3-six \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.29.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.29.0.bb
new file mode 100644
index 0000000..e8d438d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.29.0.bb
@@ -0,0 +1,41 @@
+DESCRIPTION = "Google Authentication Library"
+HOMEPAGE = "https://github.com/googleapis/google-auth-library-python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[sha256sum] = "672dff332d073227550ffc7457868ac4218d6c500b155fe6cc17d2b13602c360"
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        python3-cryptography \
+        python3-flask \
+        python3-freezegun \
+        python3-grpcio \
+        python3-mock \
+        python3-oauth2client \
+        python3-pyopenssl \
+        python3-pytest \
+        python3-pytest-localserver \
+        python3-pyu2f \
+        python3-requests \
+        python3-responses \
+        python3-unittest-automake-output \
+        python3-unixadmin \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += "\
+        python3-cachetools \
+        python3-json \
+        python3-pyasn1-modules \
+        python3-rsa \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.62.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.62.0.bb
deleted file mode 100644
index 5df1210..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.62.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "Common protobufs used in Google APIs"
-HOMEPAGE = "https://github.com/googleapis/python-api-common-protos"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"
-
-RDEPENDS:${PN} += "\
-    python3-grpcio \
-    python3-protobuf \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.63.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.63.0.bb
new file mode 100644
index 0000000..aee2337
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-googleapis-common-protos_1.63.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Common protobufs used in Google APIs"
+HOMEPAGE = "https://github.com/googleapis/python-api-common-protos"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "17ad01b11d5f1d0171c06d3ba5c04c54474e883b66b949722b4938ee2694ef4e"
+
+RDEPENDS:${PN} += "\
+    python3-grpcio \
+    python3-protobuf \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-graphviz_0.20.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-graphviz_0.20.1.bb
deleted file mode 100644
index d381699..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-graphviz_0.20.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "Graphviz protocol implementation"
-HOMEPAGE = "https://graphviz.readthedocs.io/en/stable/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=951dd0868a9606c867ffda0ea3ea6da2"
-
-SRC_URI[sha256sum] = "8c58f14adaa3b947daf26c19bc1e98c4e0702cdc31cf99153e6f06904d492bf8"
-
-inherit pypi setuptools3
-
-PYPI_PACKAGE_EXT = "zip"
-
-RDEPENDS:${PN} += " \
-    python3-logging \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-graphviz_0.20.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-graphviz_0.20.3.bb
new file mode 100644
index 0000000..0fd81b0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-graphviz_0.20.3.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "Graphviz protocol implementation"
+HOMEPAGE = "https://graphviz.readthedocs.io/en/stable/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=bcdc1cf20245c598f9a563b550605785"
+
+SRC_URI[sha256sum] = "09d6bc81e6a9fa392e7ba52135a9d49f1ed62526f96499325930e87ca1b5925d"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE_EXT = "zip"
+
+RDEPENDS:${PN} += " \
+    python3-logging \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.60.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.60.1.bb
deleted file mode 100644
index 07f5fe4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.60.1.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Google gRPC tools"
-HOMEPAGE = "http://www.grpc.io/"
-SECTION = "devel/python"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
-
-inherit pypi setuptools3
-
-DEPENDS += "python3-grpcio"
-
-SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch \
-            file://0001-protobuf-Disable-musttail-attribute-on-mips.patch \
-            "
-SRC_URI[sha256sum] = "da08224ab8675c6d464b988bd8ca02cccd2bf0275bceefe8f6219bfd4a4f5e85"
-
-RDEPENDS:${PN} = "python3-grpcio"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.62.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.62.1.bb
new file mode 100644
index 0000000..ffa2f84
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio-tools_1.62.1.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Google gRPC tools"
+HOMEPAGE = "http://www.grpc.io/"
+SECTION = "devel/python"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=7145f7cdd263359b62d342a02f005515"
+
+inherit pypi setuptools3
+
+DEPENDS += "python3-grpcio"
+
+SRC_URI += "file://0001-setup.py-Do-not-mix-C-and-C-compiler-options.patch \
+            file://0001-protobuf-Disable-musttail-attribute-on-mips.patch \
+            "
+SRC_URI[sha256sum] = "a4991e5ee8a97ab791296d3bf7e8700b1445635cc1828cc98df945ca1802d7f2"
+
+RDEPENDS:${PN} = "python3-grpcio"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch
index a5e7670..34ef787 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch
@@ -1,4 +1,4 @@
-From 6ede7d01b18a4d9eeaccd25f5c1ab9985cb65307 Mon Sep 17 00:00:00 2001
+From 671618df3e48619f0c7a5a3acd8982374a5e43db Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sun, 12 Feb 2023 21:25:04 -0800
 Subject: [PATCH] zlib: Include unistd.h for open/close C APIs
@@ -6,16 +6,15 @@
 Upstream-Status: Pending
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
 ---
  third_party/zlib/gzguts.h | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/third_party/zlib/gzguts.h b/third_party/zlib/gzguts.h
-index 57faf37..3c700c2 100644
+index f937504..341a68d 100644
 --- a/third_party/zlib/gzguts.h
 +++ b/third_party/zlib/gzguts.h
-@@ -19,6 +19,7 @@
+@@ -18,6 +18,7 @@
  #endif
  
  #include <stdio.h>
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
index 4bb60b6..f39a961 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio/abseil-ppc-fixes.patch
@@ -1,4 +1,4 @@
-From 9cec6297effa9fab6f0c71e342046daceecd7d4d Mon Sep 17 00:00:00 2001
+From 102dcce6610e6606fffd3a4986f84eb52177f8c8 Mon Sep 17 00:00:00 2001
 From: Khem Raj <raj.khem@gmail.com>
 Date: Sat, 13 Mar 2021 10:26:25 -0800
 Subject: [PATCH] An all-in-one patch that fixes several issues:
@@ -13,7 +13,6 @@
 Upstream-Status: Pending
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Signed-off-by: Xu Huan <xuhuan.fnst@fujitsu.com>
-
 ---
  .../abseil-cpp/absl/base/internal/unscaledcycleclock.cc   | 4 ++--
  .../absl/base/internal/unscaledcycleclock_config.h        | 3 ++-
@@ -22,7 +21,7 @@
  4 files changed, 12 insertions(+), 5 deletions(-)
 
 diff --git a/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc b/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc
-index b1c396c..d62bfd6 100644
+index 05e0e7b..f11fecb 100644
 --- a/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc
 +++ b/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc
 @@ -20,7 +20,7 @@
@@ -58,10 +57,10 @@
  #define ABSL_HAVE_UNSCALED_CYCLECLOCK_IMPLEMENTATION 1
  #else
 diff --git a/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc b/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc
-index 5786322..72c7c46 100644
+index 3dd6ba1..9f0601c 100644
 --- a/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc
 +++ b/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc
-@@ -33,6 +33,10 @@
+@@ -36,6 +36,10 @@
  #include <csignal>
  #include <cstdio>
  
@@ -72,7 +71,7 @@
  #include "absl/base/attributes.h"
  #include "absl/base/internal/raw_logging.h"
  #include "absl/base/macros.h"
-@@ -174,8 +178,10 @@ void* GetProgramCounter(void* const vuc) {
+@@ -177,8 +181,10 @@ void* GetProgramCounter(void* const vuc) {
      return reinterpret_cast<void*>(context->uc_mcontext.pc);
  #elif defined(__powerpc64__)
      return reinterpret_cast<void*>(context->uc_mcontext.gp_regs[32]);
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.60.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.60.1.bb
deleted file mode 100644
index b00f868..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.60.1.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-DESCRIPTION = "Google gRPC"
-HOMEPAGE = "http://www.grpc.io/"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0 & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=731e401b36f8077ae0c134b59be5c906"
-
-DEPENDS += "python3-protobuf"
-
-SRC_URI += "file://0001-Include-missing-cstdint-header.patch \
-           file://abseil-ppc-fixes.patch \
-           file://0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch \
-           "
-SRC_URI[sha256sum] = "dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"
-
-RDEPENDS:${PN} = "python3-protobuf \
-                  python3-setuptools \
-                  python3-six \
-"
-
-inherit setuptools3
-inherit pypi
-
-CFLAGS:append:libc-musl = " -D_LARGEFILE64_SOURCE"
-
-export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY = "1"
-
-BORING_SSL_PLATFORM:arm = "linux-arm"
-BORING_SSL_PLATFORM:x86-64 = "linux-x86_64"
-BORING_SSL_PLATFORM:aarch64 = "linux-aarch64"
-BORING_SSL_PLATFORM ?= "unsupported"
-export GRPC_BORING_SSL_PLATFORM = "${BORING_SSL_PLATFORM}"
-export GRPC_BUILD_OVERRIDE_BORING_SSL_ASM_PLATFORM = "${BORING_SSL_PLATFORM}"
-
-BORING_SSL:arm = "1"
-BORING_SSL:x86-64 = "1"
-BORING_SSL:aarch64 = "1"
-BORING_SSL ?= "0"
-export GRPC_BUILD_WITH_BORING_SSL_ASM = "${BORING_SSL}"
-
-GRPC_CFLAGS ?= ""
-GRPC_CFLAGS:append:toolchain-clang = " -fvisibility=hidden -fno-wrapv -fno-exceptions"
-export GRPC_PYTHON_CFLAGS = "${GRPC_CFLAGS}"
-
-CLEANBROKEN = "1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-CCACHE_DISABLE = "1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.62.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.62.1.bb
new file mode 100644
index 0000000..8405ebe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-grpcio_1.62.1.bb
@@ -0,0 +1,45 @@
+DESCRIPTION = "Google gRPC"
+HOMEPAGE = "http://www.grpc.io/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0 & BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=731e401b36f8077ae0c134b59be5c906"
+
+DEPENDS += "python3-protobuf"
+
+SRC_URI += "file://0001-Include-missing-cstdint-header.patch \
+           file://abseil-ppc-fixes.patch \
+           file://0001-zlib-Include-unistd.h-for-open-close-C-APIs.patch \
+           "
+SRC_URI[sha256sum] = "6c455e008fa86d9e9a9d85bb76da4277c0d7d9668a3bfa70dbe86e9f3c759947"
+
+RDEPENDS:${PN} = "python3-protobuf"
+
+inherit setuptools3
+inherit pypi
+
+CFLAGS:append:libc-musl = " -D_LARGEFILE64_SOURCE"
+
+export GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY = "1"
+
+BORING_SSL_PLATFORM:arm = "linux-arm"
+BORING_SSL_PLATFORM:x86-64 = "linux-x86_64"
+BORING_SSL_PLATFORM:aarch64 = "linux-aarch64"
+BORING_SSL_PLATFORM ?= "unsupported"
+export GRPC_BORING_SSL_PLATFORM = "${BORING_SSL_PLATFORM}"
+export GRPC_BUILD_OVERRIDE_BORING_SSL_ASM_PLATFORM = "${BORING_SSL_PLATFORM}"
+
+BORING_SSL:arm = "1"
+BORING_SSL:x86-64 = "1"
+BORING_SSL:aarch64 = "1"
+BORING_SSL ?= "0"
+export GRPC_BUILD_WITH_BORING_SSL_ASM = "${BORING_SSL}"
+
+GRPC_CFLAGS ?= ""
+GRPC_CFLAGS:append:toolchain-clang = " -fvisibility=hidden -fno-wrapv -fno-exceptions"
+export GRPC_PYTHON_CFLAGS = "${GRPC_CFLAGS}"
+
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+CCACHE_DISABLE = "1"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httptools/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-httptools/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-httptools/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httptools_0.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httptools_0.6.1.bb
new file mode 100644
index 0000000..4192697
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-httptools_0.6.1.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A collection of framework independent HTTP protocol utils."
+HOMEPAGE = "https://github.com/MagicStack/httptools"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0a2d82955bf3facdf04cb882655e840e"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[sha256sum] = "c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        python3-pytest \
+        python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httpx_0.26.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httpx_0.26.0.bb
deleted file mode 100644
index 50bff7f..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-httpx_0.26.0.bb
+++ /dev/null
@@ -1,44 +0,0 @@
-SUMMARY = "A next generation HTTP client for Python."
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c624803bdf6fc1c4ce39f5ae11d7bd05"
-
-inherit pypi python_hatchling
-
-SRC_URI[sha256sum] = "451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"
-
-DEPENDS += "\
-    python3-hatch-fancy-pypi-readme-native \
-"
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[brotli] = ",,,python3-brotli"
-PACKAGECONFIG[http2] = ",,,python3-h2"
-PACKAGECONFIG[socks] = ",,,python3-socksio"
-
-RDEPENDS:${PN} += "\
-    python3-anyio \
-    python3-certifi \
-    python3-httpcore \
-    python3-idna \
-    python3-sniffio \
-"
-
-PACKAGES += "\
-    ${PN}-cli \
-"
-
-RDEPENDS:${PN}-cli += "\
-    ${PN} \
-    python3-click \
-    python3-pygments \
-    python3-rich \
-"
-
-FILES:${PN} = "\
-    ${libdir}/${PYTHON_DIR} \
-"
-
-FILES:${PN}-cli = "\
-    ${bindir}/httpx \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-httpx_0.27.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-httpx_0.27.0.bb
new file mode 100644
index 0000000..e4d3cbe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-httpx_0.27.0.bb
@@ -0,0 +1,48 @@
+SUMMARY = "A next generation HTTP client for Python."
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=c624803bdf6fc1c4ce39f5ae11d7bd05"
+
+inherit pypi python_hatchling
+
+SRC_URI[sha256sum] = "a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"
+
+DEPENDS += "\
+    python3-hatch-fancy-pypi-readme-native \
+"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[brotli] = ",,,python3-brotli"
+PACKAGECONFIG[http2] = ",,,python3-h2"
+PACKAGECONFIG[socks] = ",,,python3-socksio"
+
+RDEPENDS:${PN} += "\
+    python3-anyio \
+    python3-certifi \
+    python3-httpcore \
+    python3-idna \
+    python3-sniffio \
+    python3-json \
+    python3-core \
+    python3-netclient \
+    python3-compression \
+"
+
+PACKAGES += "\
+    ${PN}-cli \
+"
+
+RDEPENDS:${PN}-cli += "\
+    ${PN} \
+    python3-click \
+    python3-pygments \
+    python3-rich \
+"
+
+FILES:${PN} = "\
+    ${libdir}/${PYTHON_DIR} \
+"
+
+FILES:${PN}-cli = "\
+    ${bindir}/httpx \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-icecream_2.1.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-icecream_2.1.3.bb
new file mode 100644
index 0000000..ec3a4b9
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-icecream_2.1.3.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Never use print() to debug again; inspect variables, expressions, and program execution with a single, simple function call."
+HOMEPAGE = "https://github.com/gruns/icecream"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=eca5ce1610d64ed40920efdce85ff8d1"
+
+SRC_URI[sha256sum] = "0aa4a7c3374ec36153a1d08f81e3080e83d8ac1eefd97d2f4fe9544e8f9b49de"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+        python3-asttokens \
+        python3-colorama \
+        python3-executing \
+        python3-numbers \
+        python3-pygments \
+        python3-pprint \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-inotify_git.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-inotify_git.bb
index 657f610..582599b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-inotify_git.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-inotify_git.bb
@@ -16,9 +16,6 @@
 S = "${WORKDIR}/git"
 
 inherit setuptools3 ptest
-PIP_INSTALL_PACKAGE = "inotify"
-PIP_INSTALL_DIST_PATH = "${S}/dist"
-
 
 RDEPENDS:${PN} += " \
     python3-ctypes \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-invoke_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-invoke_2.2.0.bb
new file mode 100644
index 0000000..3f2e623
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-invoke_2.2.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Pythonic task execution"
+HOMEPAGE = "https://www.pyinvoke.org/"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a8815068973f31b78c328dc067e297ab"
+
+SRC_URI[sha256sum] = "ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+        python3-fcntl \
+        python3-json \
+        python3-logging \
+        python3-pprint \
+        python3-terminal \
+        python3-unittest \
+        python3-unixadmin \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.21.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.21.0.bb
deleted file mode 100644
index 7f5dde7..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.21.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "IPython: Productive Interactive Computing"
-HOMEPAGE = "https://ipython.org"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING.rst;md5=59b20262b8663cdd094005bddf47af5f"
-
-PYPI_PACKAGE = "ipython"
-
-SRC_URI[sha256sum] = "48fbc236fbe0e138b88773fa0437751f14c3645fb483f1d4c5dee58b37e5ce73"
-
-RDEPENDS:${PN} = "\
-    python3-setuptools \
-    python3-jedi \
-    python3-decorator \
-    python3-pickleshare \
-    python3-traitlets \
-    python3-prompt-toolkit \
-    python3-pygments \
-    python3-backcall \
-    python3-pydoc \
-    python3-debugger \
-    python3-pexpect \
-    python3-unixadmin \
-    python3-misc \
-    python3-sqlite3 \
-    python3-stack-data \
-"
-
-inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.22.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.22.2.bb
new file mode 100644
index 0000000..b8595fe
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-ipython_8.22.2.bb
@@ -0,0 +1,28 @@
+SUMMARY = "IPython: Productive Interactive Computing"
+HOMEPAGE = "https://ipython.org"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://COPYING.rst;md5=59b20262b8663cdd094005bddf47af5f"
+
+PYPI_PACKAGE = "ipython"
+
+SRC_URI[sha256sum] = "2dcaad9049f9056f1fef63514f176c7d41f930daa78d05b82a176202818f2c14"
+
+RDEPENDS:${PN} = "\
+    python3-setuptools \
+    python3-jedi \
+    python3-decorator \
+    python3-pickleshare \
+    python3-traitlets \
+    python3-prompt-toolkit \
+    python3-pygments \
+    python3-backcall \
+    python3-pydoc \
+    python3-debugger \
+    python3-pexpect \
+    python3-unixadmin \
+    python3-misc \
+    python3-sqlite3 \
+    python3-stack-data \
+"
+
+inherit setuptools3 pypi
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.1.bb
deleted file mode 100644
index 22a7985..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_4.1.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "Jalali implementation of Python's datetime module"
-HOMEPAGE = "https://github.com/slashmili/python-jalali"
-LICENSE = "Python-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c80be45b33471b4a23cf53d06a8172be"
-
-SRC_URI[sha256sum] = "1dd0ee210160c7bd30002803c443e6260ac602ea65b065652a1d567d3bfdca7a"
-
-PYPI_PACKAGE = "jdatetime"
-
-inherit pypi setuptools3
-
-CLEANBROKEN = "1"
-
-RDEPENDS:${PN} += " \
-        python3-modules \
-"
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_5.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_5.0.0.bb
new file mode 100644
index 0000000..f1dd368
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-jdatetime_5.0.0.bb
@@ -0,0 +1,17 @@
+DESCRIPTION = "Jalali implementation of Python's datetime module"
+HOMEPAGE = "https://github.com/slashmili/python-jalali"
+LICENSE = "Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c80be45b33471b4a23cf53d06a8172be"
+
+SRC_URI[sha256sum] = "2cc603d913c0d8e328928454d3d295261cb037e9950227f67c9629ab4710fdf9"
+
+PYPI_PACKAGE = "jdatetime"
+
+inherit pypi setuptools3
+
+CLEANBROKEN = "1"
+
+RDEPENDS:${PN} += " \
+        python3-modules \
+"
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
index 6c2af0d..ba18199 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-keras-applications_1.0.8.bb
@@ -7,11 +7,8 @@
 SRC_URI = "git://github.com/keras-team/keras-applications.git;branch=master;protocol=https"
 SRCREV ?= "3b180cb10eda683dda7913ecee2e6487288d292d"
 
-
 inherit setuptools3
 
-PIP_INSTALL_PACKAGE = "Keras_Applications"
-
 S = "${WORKDIR}/git"
 
 BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.3.0.bb
index 9e791c6..991aa0f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.3.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.3.0.bb
@@ -5,7 +5,6 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=6d3bc49400e35d5a2279d14c40dcfb09"
 
 inherit setuptools3 pkgconfig features_check
-PIP_INSTALL_PACKAGE = "Kivy"
 
 # Kivy's setup files only look for GLES libraries for Android, iOS, RPi,
 # and mali-based OS's. We need to patch the setup file to tell Kivy setup
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
index 673d32c..8cd60d3 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lrparsing_1.0.17.bb
@@ -17,7 +17,6 @@
 "
 
 inherit setuptools3
-PIP_INSTALL_PACKAGE = "lrparsing"
 
 S = "${WORKDIR}/lrparsing-${PV}"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.21.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.21.1.bb
index 5a0a79a..bf1d8dd 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.21.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-marshmallow_3.21.1.bb
@@ -10,8 +10,6 @@
 
 inherit python_flit_core pypi ptest
 
-PIP_INSTALL_PACKAGE = "marshmallow"
-
 SRC_URI += " \
         file://run-ptest \
 "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb
index 2af7b57..aacc32a 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-monotonic_1.6.bb
@@ -11,5 +11,3 @@
 S = "${WORKDIR}/git"
 
 inherit setuptools3
-
-PIP_INSTALL_PACKAGE = "monotonic"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict/0001-Extend-aio-libs-multidict-909-to-3.12-as-well-to-add.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict/0001-Extend-aio-libs-multidict-909-to-3.12-as-well-to-add.patch
deleted file mode 100644
index c3cee46..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict/0001-Extend-aio-libs-multidict-909-to-3.12-as-well-to-add.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-From 44eaa60cc6c86951ce36811e80c3411d1b1e4c39 Mon Sep 17 00:00:00 2001
-From: Charles Duffy <charles@dyfis.net>
-Date: Fri, 19 Jan 2024 17:47:59 -0600
-Subject: [PATCH] Extend aio-libs/multidict#909 to 3.12 as well to address aio-libs/multidict#926
-
-Upstream-Status: Submitted [https://github.com/aio-libs/multidict/pull/929]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- multidict/_multidict.c | 68 +++++++++++++++++++++---------------------
- 1 file changed, 34 insertions(+), 34 deletions(-)
-
-diff --git a/multidict/_multidict.c b/multidict/_multidict.c
-index 228d4df..6086495 100644
---- a/multidict/_multidict.c
-+++ b/multidict/_multidict.c
-@@ -9,7 +9,7 @@
- #include "_multilib/iter.h"
- #include "_multilib/views.h"
- 
--#if PY_MAJOR_VERSION < 3 || PY_MINOR_VERSION < 13
-+#if PY_MAJOR_VERSION < 3 || PY_MINOR_VERSION < 12
- #ifndef _PyArg_UnpackKeywords
- #define FASTCALL_OLD
- #endif
-@@ -444,7 +444,7 @@ fail:
- static inline PyObject *
- multidict_getall(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -458,7 +458,7 @@ multidict_getall(
-              *key      = NULL,
-              *_default = NULL;
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *getall_keywords[] = {"key", "default", NULL};
- 
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:getall",
-@@ -509,7 +509,7 @@ skip_optional_pos:
- static inline PyObject *
- multidict_getone(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -522,7 +522,7 @@ multidict_getone(
-     PyObject *key      = NULL,
-              *_default = NULL;
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *getone_keywords[] = {"key", "default", NULL};
- 
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:getone",
-@@ -563,7 +563,7 @@ skip_optional_pos:
- static inline PyObject *
- multidict_get(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -577,7 +577,7 @@ multidict_get(
-              *_default = Py_None,
-              *ret;
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *getone_keywords[] = {"key", "default", NULL};
- 
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:getone",
-@@ -833,7 +833,7 @@ multidict_tp_init(MultiDictObject *self, PyObject *args, PyObject *kwds)
- static inline PyObject *
- multidict_add(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -846,7 +846,7 @@ multidict_add(
-     PyObject *key = NULL,
-              *val = NULL;
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *kwlist[] = {"key", "value", NULL};
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO:add",
-                                      kwlist, &key, &val))
-@@ -913,7 +913,7 @@ multidict_clear(MultiDictObject *self)
- static inline PyObject *
- multidict_setdefault(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -926,7 +926,7 @@ multidict_setdefault(
-     PyObject *key      = NULL,
-              *_default = NULL;
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *setdefault_keywords[] = {"key", "default", NULL};
- 
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:setdefault",
-@@ -967,7 +967,7 @@ skip_optional_pos:
- static inline PyObject *
- multidict_popone(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -981,7 +981,7 @@ multidict_popone(
-              *_default = NULL,
-              *ret_val  = NULL;
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *popone_keywords[] = {"key", "default", NULL};
- 
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:popone",
-@@ -1046,7 +1046,7 @@ skip_optional_pos:
- static inline PyObject *
- multidict_pop(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -1060,7 +1060,7 @@ multidict_pop(
-              *_default = NULL,
-              *ret_val  = NULL;
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *pop_keywords[] = {"key", "default", NULL};
- 
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:popone",
-@@ -1113,7 +1113,7 @@ skip_optional_pos:
- static inline PyObject *
- multidict_popall(
-     MultiDictObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -1128,7 +1128,7 @@ multidict_popall(
-              *ret_val  = NULL;
- 
- 
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     static char *popall_keywords[] = {"key", "default", NULL};
- 
-     if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:popall",
-@@ -1270,7 +1270,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "getall",
-         (PyCFunction)multidict_getall,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1281,7 +1281,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "getone",
-         (PyCFunction)multidict_getone,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1292,7 +1292,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "get",
-         (PyCFunction)multidict_get,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1321,7 +1321,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "add",
-         (PyCFunction)multidict_add,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1350,7 +1350,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "setdefault",
-         (PyCFunction)multidict_setdefault,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1361,7 +1361,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "popone",
-         (PyCFunction)multidict_popone,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1372,7 +1372,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "pop",
-         (PyCFunction)multidict_pop,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1383,7 +1383,7 @@ static PyMethodDef multidict_methods[] = {
-     {
-         "popall",
-         (PyCFunction)multidict_popall,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1559,7 +1559,7 @@ multidict_proxy_tp_init(MultiDictProxyObject *self, PyObject *args,
- static inline PyObject *
- multidict_proxy_getall(
-     MultiDictProxyObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -1572,7 +1572,7 @@ multidict_proxy_getall(
-     return multidict_getall(
-         self->md,
-         args,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         kwds
- #else
-         nargs,
-@@ -1584,7 +1584,7 @@ multidict_proxy_getall(
- static inline PyObject *
- multidict_proxy_getone(
-     MultiDictProxyObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -1596,7 +1596,7 @@ multidict_proxy_getone(
- {
-     return multidict_getone(
-         self->md, args,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         kwds
- #else
-         nargs, kwnames
-@@ -1607,7 +1607,7 @@ multidict_proxy_getone(
- static inline PyObject *
- multidict_proxy_get(
-     MultiDictProxyObject *self,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-     PyObject *args,
-     PyObject *kwds
- #else
-@@ -1620,7 +1620,7 @@ multidict_proxy_get(
-     return multidict_get(
-         self->md,
-         args,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         kwds
- #else
-         nargs,
-@@ -1734,7 +1734,7 @@ static PyMethodDef multidict_proxy_methods[] = {
-     {
-         "getall",
-         (PyCFunction)multidict_proxy_getall,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1745,7 +1745,7 @@ static PyMethodDef multidict_proxy_methods[] = {
-     {
-         "getone",
-         (PyCFunction)multidict_proxy_getone,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
-@@ -1756,7 +1756,7 @@ static PyMethodDef multidict_proxy_methods[] = {
-     {
-         "get",
-         (PyCFunction)multidict_proxy_get,
--#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
-+#if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 12
-         METH_VARARGS
- #else
-         METH_FASTCALL
--- 
-2.43.0
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_6.0.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_6.0.4.bb
deleted file mode 100644
index 19b94de..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_6.0.4.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Multidicts are useful for working with HTTP headers, URL query args etc."
-HOMEPAGE = "https://github.com/aio-libs/multidict/"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b4fef6e4b0828c2401fb983363985b39"
-
-inherit pypi setuptools3 ptest
-
-PV .= "+git"
-
-SRCREV = "82b559cdd0b41548f3dadc5561a9aaaa7f93ae14"
-PYPI_SRC_URI = "git://github.com/aio-libs/multidict;branch=master;protocol=https"
-S = "${WORKDIR}/git"
-
-SRC_URI += " \
-  file://0001-Extend-aio-libs-multidict-909-to-3.12-as-well-to-add.patch \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    python3-pytest \
-    python3-pytest-cov \
-    python3-unittest-automake-output \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_6.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_6.0.5.bb
new file mode 100644
index 0000000..b12e180
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-multidict_6.0.5.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Multidicts are useful for working with HTTP headers, URL query args etc."
+HOMEPAGE = "https://github.com/aio-libs/multidict/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b4fef6e4b0828c2401fb983363985b39"
+
+inherit pypi setuptools3 ptest
+
+PV .= "+git"
+
+SRCREV = "a9b281b2ef4ab25d95d6b268aa88c428e75c3696"
+PYPI_SRC_URI = "git://github.com/aio-libs/multidict;branch=master;protocol=https"
+S = "${WORKDIR}/git"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    python3-pytest \
+    python3-pytest-cov \
+    python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.8.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.8.0.bb
deleted file mode 100644
index 2e6c7cc..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.8.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Optional static typing for Python 3 and 2 (PEP 484)"
-HOMEPAGE = "https://github.com/python/mypy"
-LICENSE = "MIT & Python-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8d62fd8f8648cb018e52857347e340b9"
-
-inherit pypi python_setuptools_build_meta
-
-SRC_URI[sha256sum] = "6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"
-
-BBCLASSEXTEND = "native"
-
-DEPENDS += " \
-    python3-mypy-extensions-native \
-    python3-types-psutil-native \
-    python3-types-setuptools-native \
-    python3-typing-extensions-native \
-"
-
-RDEPENDS:${PN} += " \
-    python3-modules \
-    python3-mypy-extensions \
-    python3-typing-extensions \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.9.0.bb
new file mode 100644
index 0000000..e51264f
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-mypy_1.9.0.bb
@@ -0,0 +1,23 @@
+SUMMARY = "Optional static typing for Python 3 and 2 (PEP 484)"
+HOMEPAGE = "https://github.com/python/mypy"
+LICENSE = "MIT & Python-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=8d62fd8f8648cb018e52857347e340b9"
+
+inherit pypi python_setuptools_build_meta
+
+SRC_URI[sha256sum] = "3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"
+
+BBCLASSEXTEND = "native"
+
+DEPENDS += " \
+    python3-mypy-extensions-native \
+    python3-types-psutil-native \
+    python3-types-setuptools-native \
+    python3-typing-extensions-native \
+"
+
+RDEPENDS:${PN} += " \
+    python3-modules \
+    python3-mypy-extensions \
+    python3-typing-extensions \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.6.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.6.1.bb
deleted file mode 100644
index 9055772..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_1.6.1.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "MQTT version 3.1/3.1.1 client library"
-LICENSE = "EPL-1.0 | EDL-1.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8e5f264c6988aec56808a3a11e77b913 \
-                    file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
-"
-SRCNAME = "paho-mqtt"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "2a8291c81623aec00372b5a85558a372c747cbca8e9934dfe218638b8eefc26f"
-
-DEPENDS += "python3-pytest-runner-native"
-
-do_install:append() {
-        install -d -m0755 ${D}${datadir}/${BPN}/examples
-        cp --preserve=mode,timestamps -R ${S}/examples/* ${D}${datadir}/${BPN}/examples
-}
-
-PACKAGES =+ "${PN}-examples"
-
-RDEPENDS:${PN}-examples += "${PN} python3-core"
-
-FILES:${PN}-examples = "${datadir}/${BPN}/examples"
-
-RDEPENDS:${PN} = "\
-    python3-io \
-    python3-logging \
-    python3-math \
-    python3-netclient \
-    python3-threading \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_2.0.0.bb
new file mode 100644
index 0000000..e4cf77a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-paho-mqtt_2.0.0.bb
@@ -0,0 +1,37 @@
+SUMMARY = "MQTT version 3.1/3.1.1 client library"
+LICENSE = "EPL-1.0 | EDL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8e5f264c6988aec56808a3a11e77b913 \
+                    file://edl-v10;md5=c09f121939f063aeb5235972be8c722c \
+"
+SRCNAME = "paho-mqtt"
+
+inherit pypi python_hatchling python_setuptools_build_meta
+
+SRC_URI[sha256sum] = "13b205f29251e4f2c66a6c923c31fc4fd780561e03b2d775cff8e4f2915cf947"
+
+PYPI_SRC_URI = "https://files.pythonhosted.org/packages/73/b7/a4df0f93bbdae237e16ba402752151eceee576cbe80c235a2475fbf81eea/paho_mqtt-${PV}.tar.gz"
+
+S = "${WORKDIR}/paho_mqtt-${PV}"
+
+DEPENDS += "python3-pytest-runner-native"
+
+do_install:append() {
+        install -d -m0755 ${D}${datadir}/${BPN}/examples
+        cp --preserve=mode,timestamps -R ${S}/examples/* ${D}${datadir}/${BPN}/examples
+}
+
+PACKAGES =+ "${PN}-examples"
+
+RDEPENDS:${PN}-examples += "${PN} python3-core"
+
+FILES:${PN}-examples = "${datadir}/${BPN}/examples"
+
+RDEPENDS:${PN} = "\
+    python3-io \
+    python3-logging \
+    python3-math \
+    python3-netclient \
+    python3-threading \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.12.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.12.3.bb
deleted file mode 100644
index 0862eab..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.12.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "A modern Python package and dependency manager supporting the latest PEP standards"
-HOMEPAGE = "https://pdm-project.org/latest/"
-LICENSE = "MIT"
-SECTION = "devel/python"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2"
-
-SRC_URI[sha256sum] = "53cdab727c1469fdc196efd8d7ff8404a3ca91ee43c0a5714736f2020d0a5ddf"
-
-inherit pypi python_setuptools_build_meta
-
-DEPENDS += " \
-    python3-pdm-backend-native \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.13.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.13.2.bb
new file mode 100644
index 0000000..387f14b
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.13.2.bb
@@ -0,0 +1,15 @@
+SUMMARY = "A modern Python package and dependency manager supporting the latest PEP standards"
+HOMEPAGE = "https://pdm-project.org/latest/"
+LICENSE = "MIT"
+SECTION = "devel/python"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2"
+
+SRC_URI[sha256sum] = "e282bf1caf0a083fc0fb5e89ad6f79d7c579ff52c7bb58ee8587ea3d5bb9e14a"
+
+inherit pypi python_setuptools_build_meta
+
+DEPENDS += " \
+    python3-pdm-backend-native \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pefile_2023.2.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pefile_2023.2.7.bb
index f3e0711..50dae7b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pefile_2023.2.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pefile_2023.2.7.bb
@@ -7,9 +7,6 @@
 inherit setuptools3 pypi ptest
 SRC_URI[sha256sum] = "82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"
 
-PIP_INSTALL_PACKAGE = "pefile"
-PIP_INSTALL_DIST_PATH = "${S}/dist"
-
 BBCLASSEXTEND = "native nativesdk"
 
 RDEPENDS:${PN} += " \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb
index 91b02ea..e795bd4 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pillow_10.1.0.bb
@@ -14,9 +14,6 @@
 
 inherit setuptools3 ptest
 
-PIP_INSTALL_PACKAGE = "Pillow"
-PIP_INSTALL_DIST_PATH = "${S}/dist"
-
 DEPENDS += " \
     zlib \
     jpeg \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb
index a45ef45..a473299 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-prctl_1.8.1.bb
@@ -15,7 +15,6 @@
            file://0001-support-cross-complication.patch \
 "
 inherit setuptools3 python3native
-PIP_INSTALL_PACKAGE = "python_prctl"
 
 DEPENDS += "libcap"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.3.0.bb
deleted file mode 100644
index ccd6025..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.3.0.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "A collection of ASN.1-based protocols modules."
-DESCRIPTION = "A collection of ASN.1 modules expressed in form of pyasn1\
- classes. Includes protocols PDUs definition (SNMP, LDAP etc.) and various\
- data structures (X.509, PKCS etc.)."
-HOMEPAGE = "https://github.com/etingof/pyasn1-modules"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=190f79253908c986e6cacf380c3a5f6d"
-
-SRC_URI[sha256sum] = "5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c"
-
-PYPI_PACKAGE = "pyasn1_modules"
-
-inherit pypi ptest setuptools3
-
-RDEPENDS:${PN} = "python3-pyasn1"
-
-BBCLASSEXTEND = "native nativesdk"
-
-SRC_URI += " \
-	file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    python3-pytest \
-    python3-unittest-automake-output \
-"
-
-do_install_ptest() {
-	install -d ${D}${PTEST_PATH}/tests
-	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.4.0.bb
new file mode 100644
index 0000000..34f3639
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyasn1-modules_0.4.0.bb
@@ -0,0 +1,31 @@
+SUMMARY = "A collection of ASN.1-based protocols modules."
+DESCRIPTION = "A collection of ASN.1 modules expressed in form of pyasn1\
+ classes. Includes protocols PDUs definition (SNMP, LDAP etc.) and various\
+ data structures (X.509, PKCS etc.)."
+HOMEPAGE = "https://github.com/etingof/pyasn1-modules"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=190f79253908c986e6cacf380c3a5f6d"
+
+SRC_URI[sha256sum] = "831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6"
+
+PYPI_PACKAGE = "pyasn1_modules"
+
+inherit pypi ptest setuptools3
+
+RDEPENDS:${PN} = "python3-pyasn1"
+
+BBCLASSEXTEND = "native nativesdk"
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    python3-pytest \
+    python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11/0001-Do-not-strip-binaries.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11/0001-Do-not-strip-binaries.patch
index 37cb78a..91575d2 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11/0001-Do-not-strip-binaries.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pybind11/0001-Do-not-strip-binaries.patch
@@ -7,6 +7,8 @@
 
 Signed-off-by: Philip Balister <philip@balister.org>
 Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
+
+Upstream-Status: Pending
 ---
  tools/pybind11NewTools.cmake | 7 -------
  tools/pybind11Tools.cmake    | 6 ------
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.16.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.16.3.bb
index b264784..2086091 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.16.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.16.3.bb
@@ -17,9 +17,7 @@
 
 inherit pypi cargo-update-recipe-crates python_maturin
 
-S = "${WORKDIR}/pydantic_core-${PV}"
-
-PYPI_ARCHIVE_NAME = "pydantic_core-${PV}.${PYPI_PACKAGE_EXT}"
+PYPI_PACKAGE = "pydantic_core"
 
 RDEPENDS:${PN} += "python3-typing-extensions"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.6.3.bb
deleted file mode 100644
index 246f67c..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.6.3.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Data validation using Python type hinting"
-DESCRIPTION = "Data validation and settings management using Python \
-type hints.\
-\
-Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. \
-Define how data should be in pure, canonical Python 3.7+; validate it with \
-Pydantic."
-HOMEPAGE = "https://github.com/samuelcolvin/pydantic"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=09280955509d1c4ca14bae02f21d49a6"
-
-inherit pypi python_hatchling
-
-SRC_URI[sha256sum] = "e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f"
-
-DEPENDS += "python3-hatch-fancy-pypi-readme-native"
-
-RDEPENDS:${PN} += "\
-    python3-annotated-types \
-    python3-core \
-    python3-datetime \
-    python3-image \
-    python3-io \
-    python3-json \
-    python3-logging \
-    python3-netclient \
-    python3-numbers \
-    python3-profile \
-    python3-pydantic-core \
-    python3-typing-extensions \
-"
-
-inherit ptest
-SRC_URI += "file://run-ptest"
-RDEPENDS:${PN}-ptest += "\
-    python3-cloudpickle \
-    python3-dirty-equals \
-    python3-pytest \
-    python3-pytest-mock \
-    python3-unittest-automake-output \
-"
-
-do_install_ptest() {
-    cp -rf ${S}/tests/ ${D}${PTEST_PATH}/
-    # Requires 'ruff' (python3-ruff) which we cannot build
-    # until we have Rust 1.71+ in oe-core
-    rm -f ${D}${PTEST_PATH}/tests/test_docs.py
-    # We are not trying to support mypy
-    rm -f ${D}${PTEST_PATH}/tests/test_mypy.py
-    # We are not trying to run benchmarks
-    rm -rf ${D}${PTEST_PATH}/tests/benchmarks
-}
-
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.6.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.6.4.bb
new file mode 100644
index 0000000..ddc24d0
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic_2.6.4.bb
@@ -0,0 +1,53 @@
+SUMMARY = "Data validation using Python type hinting"
+DESCRIPTION = "Data validation and settings management using Python \
+type hints.\
+\
+Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. \
+Define how data should be in pure, canonical Python 3.7+; validate it with \
+Pydantic."
+HOMEPAGE = "https://github.com/samuelcolvin/pydantic"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=09280955509d1c4ca14bae02f21d49a6"
+
+inherit pypi python_hatchling
+
+SRC_URI[sha256sum] = "b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"
+
+DEPENDS += "python3-hatch-fancy-pypi-readme-native"
+
+RDEPENDS:${PN} += "\
+    python3-annotated-types \
+    python3-core \
+    python3-datetime \
+    python3-image \
+    python3-io \
+    python3-json \
+    python3-logging \
+    python3-netclient \
+    python3-numbers \
+    python3-profile \
+    python3-pydantic-core \
+    python3-typing-extensions \
+"
+
+inherit ptest
+SRC_URI += "file://run-ptest"
+RDEPENDS:${PN}-ptest += "\
+    python3-cloudpickle \
+    python3-dirty-equals \
+    python3-pytest \
+    python3-pytest-mock \
+    python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+    cp -rf ${S}/tests/ ${D}${PTEST_PATH}/
+    # Requires 'ruff' (python3-ruff) which we cannot build
+    # until we have Rust 1.71+ in oe-core
+    rm -f ${D}${PTEST_PATH}/tests/test_docs.py
+    # We are not trying to support mypy
+    rm -f ${D}${PTEST_PATH}/tests/test_mypy.py
+    # We are not trying to run benchmarks
+    rm -rf ${D}${PTEST_PATH}/tests/benchmarks
+}
+
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-make-direction-attribute-conforming-to-introspect.dt.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-make-direction-attribute-conforming-to-introspect.dt.patch
new file mode 100644
index 0000000..1bd1798
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0001-make-direction-attribute-conforming-to-introspect.dt.patch
@@ -0,0 +1,40 @@
+From 5fe65a35e0e7106347639f0258206fadb451c439 Mon Sep 17 00:00:00 2001
+From: Hiroaki KAWAI <hiroaki.kawai@gmail.com>
+Date: Wed, 1 Feb 2017 18:00:33 +0900
+Subject: [PATCH 1/3] make direction attribute conforming to introspect.dtd
+
+direction attribute defaults to "in" as
+in the DTD(*1), direction attribute is defined as following:
+
+```
+<!ATTRLIST arg direction (in|out) "in">
+```
+
+*1) http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd
+
+Adapted from Fedora [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/]
+
+Upstream-Status: Inactive-Upstream (Last release 12/18/2016; Last commit 05/6/2018)
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+---
+ pydbus/proxy_method.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py
+index 8798edd..3e6e6ee 100644
+--- a/pydbus/proxy_method.py
++++ b/pydbus/proxy_method.py
+@@ -33,8 +33,8 @@ class ProxyMethod(object):
+ 		self.__name__ = method.attrib["name"]
+ 		self.__qualname__ = self._iface_name + "." + self.__name__
+ 
+-		self._inargs  = [(arg.attrib.get("name", ""), arg.attrib["type"]) for arg in method if arg.tag == "arg" and arg.attrib["direction"] == "in"]
+-		self._outargs = [arg.attrib["type"] for arg in method if arg.tag == "arg" and arg.attrib["direction"] == "out"]
++		self._inargs  = [(arg.attrib.get("name", ""), arg.attrib["type"]) for arg in method if arg.tag == "arg" and arg.attrib.get("direction", "in") == "in"]
++		self._outargs = [arg.attrib["type"] for arg in method if arg.tag == "arg" and arg.attrib.get("direction", "in") == "out"]
+ 		self._sinargs  = "(" + "".join(x[1] for x in self._inargs) + ")"
+ 		self._soutargs = "(" + "".join(self._outargs) + ")"
+ 
+-- 
+2.13.5
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-asynchronous-calls-58.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-asynchronous-calls-58.patch
new file mode 100644
index 0000000..b3c57ed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0002-Support-asynchronous-calls-58.patch
@@ -0,0 +1,206 @@
+From 31d6dd7893a5e1bb9eb14bfcee861a5b62f64960 Mon Sep 17 00:00:00 2001
+From: Vendula Poncova <vponcova@redhat.com>
+Date: Thu, 27 Jul 2017 18:41:29 +0200
+Subject: [PATCH 2/3] Support asynchronous calls (#58)
+
+Added support for asynchronous calls of methods. A method is called
+synchronously unless its callback parameter is specified. A callback
+is a function f(*args, returned=None, error=None), where args is
+callback_args specified in the method call, returned is a return
+value of the method and error is an exception raised by the method.
+
+Example of an asynchronous call:
+
+def func(x, y, returned=None, error=None):
+  pass
+
+proxy.Method(a, b, callback=func, callback_args=(x, y))
+
+Adapted from Fedora [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/]
+
+Upstream-Status: Inactive-Upstream (Last release 12/18/2016; Last commit 05/6/2018)
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+---
+ doc/tutorial.rst       | 11 ++++++++-
+ pydbus/proxy_method.py | 44 ++++++++++++++++++++++++++++++-----
+ tests/publish_async.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/run.sh           |  1 +
+ 4 files changed, 112 insertions(+), 7 deletions(-)
+ create mode 100644 tests/publish_async.py
+
+diff --git a/doc/tutorial.rst b/doc/tutorial.rst
+index 7474de3..b8479cf 100644
+--- a/doc/tutorial.rst
++++ b/doc/tutorial.rst
+@@ -84,7 +84,8 @@ All objects have methods, properties and signals.
+ Setting up an event loop
+ ========================
+ 
+-To handle signals emitted by exported objects, or to export your own objects, you need to setup an event loop.
++To handle signals emitted by exported objects, to asynchronously call methods
++or to export your own objects, you need to setup an event loop.
+ 
+ The only main loop supported by ``pydbus`` is GLib.MainLoop.
+ 
+@@ -156,6 +157,14 @@ To call a method::
+ 
+     dev.Disconnect()
+ 
++To asynchronously call a method::
++
++    def print_result(returned=None, error=None):
++        print(returned, error)
++
++    dev.GetAppliedConnection(0, callback=print_result)
++    loop.run()
++
+ To read a property::
+ 
+     print(dev.Autoconnect)
+diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py
+index 3e6e6ee..442fe07 100644
+--- a/pydbus/proxy_method.py
++++ b/pydbus/proxy_method.py
+@@ -65,15 +65,34 @@ class ProxyMethod(object):
+ 
+ 		# Python 2 sux
+ 		for kwarg in kwargs:
+-			if kwarg not in ("timeout",):
++			if kwarg not in ("timeout", "callback", "callback_args"):
+ 				raise TypeError(self.__qualname__ + " got an unexpected keyword argument '{}'".format(kwarg))
+ 		timeout = kwargs.get("timeout", None)
++		callback = kwargs.get("callback", None)
++		callback_args = kwargs.get("callback_args", tuple())
++
++		call_args = (
++			instance._bus_name,
++			instance._path,
++			self._iface_name,
++			self.__name__,
++			GLib.Variant(self._sinargs, args),
++			GLib.VariantType.new(self._soutargs),
++			0,
++			timeout_to_glib(timeout),
++			None
++		)
++
++		if callback:
++			call_args += (self._finish_async_call, (callback, callback_args))
++			instance._bus.con.call(*call_args)
++			return None
++		else:
++			ret = instance._bus.con.call_sync(*call_args)
++			return self._unpack_return(ret)
+ 
+-		ret = instance._bus.con.call_sync(
+-			instance._bus_name, instance._path,
+-			self._iface_name, self.__name__, GLib.Variant(self._sinargs, args), GLib.VariantType.new(self._soutargs),
+-			0, timeout_to_glib(timeout), None).unpack()
+-
++	def _unpack_return(self, values):
++		ret = values.unpack()
+ 		if len(self._outargs) == 0:
+ 			return None
+ 		elif len(self._outargs) == 1:
+@@ -81,6 +100,19 @@ class ProxyMethod(object):
+ 		else:
+ 			return ret
+ 
++	def _finish_async_call(self, source, result, user_data):
++		error = None
++		return_args = None
++
++		try:
++			ret = source.call_finish(result)
++			return_args = self._unpack_return(ret)
++		except Exception as err:
++			error = err
++
++		callback, callback_args = user_data
++		callback(*callback_args, returned=return_args, error=error)
++
+ 	def __get__(self, instance, owner):
+ 		if instance is None:
+ 			return self
+diff --git a/tests/publish_async.py b/tests/publish_async.py
+new file mode 100644
+index 0000000..3f79b62
+--- /dev/null
++++ b/tests/publish_async.py
+@@ -0,0 +1,63 @@
++from pydbus import SessionBus
++from gi.repository import GLib
++from threading import Thread
++import sys
++
++done = 0
++loop = GLib.MainLoop()
++
++class TestObject(object):
++	'''
++<node>
++	<interface name='net.lew21.pydbus.tests.publish_async'>
++		<method name='HelloWorld'>
++			<arg type='i' name='x' direction='in'/>
++			<arg type='s' name='response' direction='out'/>
++		</method>
++	</interface>
++</node>
++	'''
++	def __init__(self, id):
++		self.id = id
++
++	def HelloWorld(self, x):
++		res = self.id + ": " + str(x)
++		print(res)
++		return res
++
++bus = SessionBus()
++
++with bus.publish("net.lew21.pydbus.tests.publish_async", TestObject("Obj")):
++	remote = bus.get("net.lew21.pydbus.tests.publish_async")
++
++	def callback(x, returned=None, error=None):
++		print("asyn: " + returned)
++		assert (returned is not None)
++		assert(error is None)
++		assert(x == int(returned.split()[1]))
++
++		global done
++		done += 1
++		if done == 3:
++			loop.quit()
++
++	def t1_func():
++		remote.HelloWorld(1, callback=callback, callback_args=(1,))
++		remote.HelloWorld(2, callback=callback, callback_args=(2,))
++		print("sync: " + remote.HelloWorld(3))
++		remote.HelloWorld(4, callback=callback, callback_args=(4,))
++
++	t1 = Thread(None, t1_func)
++	t1.daemon = True
++
++	def handle_timeout():
++		print("ERROR: Timeout.")
++		sys.exit(1)
++
++	GLib.timeout_add_seconds(2, handle_timeout)
++
++	t1.start()
++
++	loop.run()
++
++	t1.join()
+diff --git a/tests/run.sh b/tests/run.sh
+index 8d93644..271c58a 100755
+--- a/tests/run.sh
++++ b/tests/run.sh
+@@ -15,4 +15,5 @@ then
+ 	"$PYTHON" $TESTS_DIR/publish.py
+ 	"$PYTHON" $TESTS_DIR/publish_properties.py
+ 	"$PYTHON" $TESTS_DIR/publish_multiface.py
++	"$PYTHON" $TESTS_DIR/publish_async.py
+ fi
+-- 
+2.13.5
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0003-Support-transformation-between-D-Bus-errors-and-exce.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0003-Support-transformation-between-D-Bus-errors-and-exce.patch
new file mode 100644
index 0000000..a1b8a6c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/0003-Support-transformation-between-D-Bus-errors-and-exce.patch
@@ -0,0 +1,495 @@
+From 773858e1afd21cdf3ceef2cd35509f0b4882bf16 Mon Sep 17 00:00:00 2001
+From: Vendula Poncova <vponcova@redhat.com>
+Date: Tue, 1 Aug 2017 16:54:24 +0200
+Subject: [PATCH 3/3] Support transformation between D-Bus errors and
+ exceptions.
+
+Exceptions can be registered with decorators, raised in a remote
+method and recreated after return from the remote call.
+
+Adapted from Fedora [https://src.fedoraproject.org/cgit/rpms/python-pydbus.git/]
+
+Upstream-Status: Inactive-Upstream (Last release 12/18/2016; Last commit 05/6/2018)
+
+Signed-off-by: Derek Straka <derek@asterius.io>
+---
+ doc/tutorial.rst       |  47 ++++++++++++++++++
+ pydbus/error.py        |  97 ++++++++++++++++++++++++++++++++++++
+ pydbus/proxy_method.py |  18 +++++--
+ pydbus/registration.py |  16 ++++--
+ tests/error.py         |  67 +++++++++++++++++++++++++
+ tests/publish_error.py | 132 +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/run.sh           |   2 +
+ 7 files changed, 371 insertions(+), 8 deletions(-)
+ create mode 100644 pydbus/error.py
+ create mode 100644 tests/error.py
+ create mode 100644 tests/publish_error.py
+
+diff --git a/doc/tutorial.rst b/doc/tutorial.rst
+index b8479cf..7fe55e1 100644
+--- a/doc/tutorial.rst
++++ b/doc/tutorial.rst
+@@ -341,6 +341,53 @@ See ``help(bus.request_name)`` and ``help(bus.register_object)`` for details.
+ 
+ .. --------------------------------------------------------------------
+ 
++Error handling
++==============
++
++You can map D-Bus errors to your exception classes for better error handling.
++To handle D-Bus errors, use the ``@map_error`` decorator::
++
++    from pydbus.error import map_error
++
++    @map_error("org.freedesktop.DBus.Error.InvalidArgs")
++    class InvalidArgsException(Exception):
++        pass
++
++    try:
++        ...
++    catch InvalidArgsException as e:
++        print(e)
++
++To register new D-Bus errors, use the ``@register_error`` decorator::
++
++    from pydbus.error import register_error
++
++    @map_error("net.lew21.pydbus.TutorialExample.MyError", MY_DOMAIN, MY_EXCEPTION_CODE)
++    class MyException(Exception):
++        pass
++
++Then you can raise ``MyException`` from the D-Bus method of the remote object::
++
++    def Method():
++        raise MyException("Message")
++
++And catch the same exception on the client side::
++
++    try:
++        proxy.Method()
++    catch MyException as e:
++        print(e)
++
++To handle all unknown D-Bus errors, use the ``@map_by_default`` decorator to specify the default exception::
++
++    from pydbus.error import map_by_default
++
++    @map_by_default
++    class DefaultException(Exception):
++        pass
++
++.. --------------------------------------------------------------------
++
+ Data types
+ ==========
+ 
+diff --git a/pydbus/error.py b/pydbus/error.py
+new file mode 100644
+index 0000000..aaa3510
+--- /dev/null
++++ b/pydbus/error.py
+@@ -0,0 +1,97 @@
++from gi.repository import GLib, Gio
++
++
++def register_error(name, domain, code):
++	"""Register and map decorated exception class to a DBus error."""
++	def decorated(cls):
++		error_registration.register_error(cls, name, domain, code)
++		return cls
++
++	return decorated
++
++
++def map_error(error_name):
++	"""Map decorated exception class to a DBus error."""
++	def decorated(cls):
++		error_registration.map_error(cls, error_name)
++		return cls
++
++	return decorated
++
++
++def map_by_default(cls):
++	"""Map decorated exception class to all unknown DBus errors."""
++	error_registration.map_by_default(cls)
++	return cls
++
++
++class ErrorRegistration(object):
++	"""Class for mapping exceptions to DBus errors."""
++
++	_default = None
++	_map = dict()
++	_reversed_map = dict()
++
++	def map_by_default(self, exception_cls):
++		"""Set the exception class as a default."""
++		self._default = exception_cls
++
++	def map_error(self, exception_cls, name):
++		"""Map the exception class to a DBus name."""
++		self._map[name] = exception_cls
++		self._reversed_map[exception_cls] = name
++
++	def register_error(self, exception_cls, name, domain, code):
++		"""Map and register the exception class to a DBus name."""
++		self.map_error(exception_cls, name)
++		return Gio.DBusError.register_error(domain, code, name)
++
++	def is_registered_exception(self, obj):
++		"""Is the exception registered?"""
++		return obj.__class__ in self._reversed_map
++
++	def get_dbus_name(self, obj):
++		"""Get the DBus name of the exception."""
++		return self._reversed_map.get(obj.__class__)
++
++	def get_exception_class(self, name):
++		"""Get the exception class mapped to the DBus name."""
++		return self._map.get(name, self._default)
++
++	def transform_message(self, name, message):
++		"""Transform the message of the exception."""
++		prefix = "{}:{}: ".format("GDBus.Error", name)
++
++		if message.startswith(prefix):
++			return message[len(prefix):]
++
++		return message
++
++	def transform_exception(self, e):
++		"""Transform the remote error to the exception."""
++		if not isinstance(e, GLib.Error):
++			return e
++
++		if not Gio.DBusError.is_remote_error(e):
++			return e
++
++		# Get DBus name of the error.
++		name = Gio.DBusError.get_remote_error(e)
++		# Get the exception class.
++		exception_cls = self.get_exception_class(name)
++
++		# Return the original exception.
++		if not exception_cls:
++			return e
++
++		# Return new exception.
++		message = self.transform_message(name, e.message)
++		exception = exception_cls(message)
++		exception.dbus_name = name
++		exception.dbus_domain = e.domain
++		exception.dbus_code = e.code
++		return exception
++
++
++# Default error registration.
++error_registration = ErrorRegistration()
+diff --git a/pydbus/proxy_method.py b/pydbus/proxy_method.py
+index 442fe07..a73f9eb 100644
+--- a/pydbus/proxy_method.py
++++ b/pydbus/proxy_method.py
+@@ -2,6 +2,7 @@ from gi.repository import GLib
+ from .generic import bound_method
+ from .identifier import filter_identifier
+ from .timeout import timeout_to_glib
++from .error import error_registration
+ 
+ try:
+ 	from inspect import Signature, Parameter
+@@ -87,9 +88,20 @@ class ProxyMethod(object):
+ 			call_args += (self._finish_async_call, (callback, callback_args))
+ 			instance._bus.con.call(*call_args)
+ 			return None
++
+ 		else:
+-			ret = instance._bus.con.call_sync(*call_args)
+-			return self._unpack_return(ret)
++			result = None
++			error = None
++
++			try:
++				result = instance._bus.con.call_sync(*call_args)
++			except Exception as e:
++				error = error_registration.transform_exception(e)
++
++			if error:
++				raise error
++
++			return self._unpack_return(result)
+ 
+ 	def _unpack_return(self, values):
+ 		ret = values.unpack()
+@@ -108,7 +120,7 @@ class ProxyMethod(object):
+ 			ret = source.call_finish(result)
+ 			return_args = self._unpack_return(ret)
+ 		except Exception as err:
+-			error = err
++			error = error_registration.transform_exception(err)
+ 
+ 		callback, callback_args = user_data
+ 		callback(*callback_args, returned=return_args, error=error)
+diff --git a/pydbus/registration.py b/pydbus/registration.py
+index f531539..1d2cbcb 100644
+--- a/pydbus/registration.py
++++ b/pydbus/registration.py
+@@ -5,6 +5,7 @@ from . import generic
+ from .exitable import ExitableWithAliases
+ from functools import partial
+ from .method_call_context import MethodCallContext
++from .error import error_registration
+ import logging
+ 
+ try:
+@@ -91,11 +92,16 @@ class ObjectWrapper(ExitableWithAliases("unwrap")):
+ 			logger = logging.getLogger(__name__)
+ 			logger.exception("Exception while handling %s.%s()", interface_name, method_name)
+ 
+-			#TODO Think of a better way to translate Python exception types to DBus error types.
+-			e_type = type(e).__name__
+-			if not "." in e_type:
+-				e_type = "unknown." + e_type
+-			invocation.return_dbus_error(e_type, str(e))
++			if error_registration.is_registered_exception(e):
++				name = error_registration.get_dbus_name(e)
++				invocation.return_dbus_error(name, str(e))
++			else:
++				logger.info("name is not registered")
++				e_type = type(e).__name__
++				if not "." in e_type:
++					e_type = "unknown." + e_type
++
++				invocation.return_dbus_error(e_type, str(e))
+ 
+ 	def Get(self, interface_name, property_name):
+ 		type = self.readable_properties[interface_name + "." + property_name]
+diff --git a/tests/error.py b/tests/error.py
+new file mode 100644
+index 0000000..3ec507d
+--- /dev/null
++++ b/tests/error.py
+@@ -0,0 +1,67 @@
++from pydbus.error import ErrorRegistration
++
++
++class ExceptionA(Exception):
++	pass
++
++
++class ExceptionB(Exception):
++	pass
++
++
++class ExceptionC(Exception):
++	pass
++
++
++class ExceptionD(Exception):
++	pass
++
++
++class ExceptionE(Exception):
++	pass
++
++
++def test_error_mapping():
++	r = ErrorRegistration()
++	r.map_error(ExceptionA, "net.lew21.pydbus.tests.ErrorA")
++	r.map_error(ExceptionB, "net.lew21.pydbus.tests.ErrorB")
++	r.map_error(ExceptionC, "net.lew21.pydbus.tests.ErrorC")
++
++	assert r.is_registered_exception(ExceptionA("Test"))
++	assert r.is_registered_exception(ExceptionB("Test"))
++	assert r.is_registered_exception(ExceptionC("Test"))
++	assert not r.is_registered_exception(ExceptionD("Test"))
++	assert not r.is_registered_exception(ExceptionE("Test"))
++
++	assert r.get_dbus_name(ExceptionA("Test")) == "net.lew21.pydbus.tests.ErrorA"
++	assert r.get_dbus_name(ExceptionB("Test")) == "net.lew21.pydbus.tests.ErrorB"
++	assert r.get_dbus_name(ExceptionC("Test")) == "net.lew21.pydbus.tests.ErrorC"
++
++	assert r.get_exception_class("net.lew21.pydbus.tests.ErrorA") == ExceptionA
++	assert r.get_exception_class("net.lew21.pydbus.tests.ErrorB") == ExceptionB
++	assert r.get_exception_class("net.lew21.pydbus.tests.ErrorC") == ExceptionC
++	assert r.get_exception_class("net.lew21.pydbus.tests.ErrorD") is None
++	assert r.get_exception_class("net.lew21.pydbus.tests.ErrorE") is None
++
++	r.map_by_default(ExceptionD)
++	assert not r.is_registered_exception(ExceptionD("Test"))
++	assert r.get_exception_class("net.lew21.pydbus.tests.ErrorD") == ExceptionD
++	assert r.get_exception_class("net.lew21.pydbus.tests.ErrorE") == ExceptionD
++
++
++def test_transform_message():
++	r = ErrorRegistration()
++	n1 = "net.lew21.pydbus.tests.ErrorA"
++	m1 = "GDBus.Error:net.lew21.pydbus.tests.ErrorA: Message1"
++
++	n2 = "net.lew21.pydbus.tests.ErrorB"
++	m2 = "GDBus.Error:net.lew21.pydbus.tests.ErrorB: Message2"
++
++	assert r.transform_message(n1, m1) == "Message1"
++	assert r.transform_message(n2, m2) == "Message2"
++	assert r.transform_message(n1, m2) == m2
++	assert r.transform_message(n2, m1) == m1
++
++
++test_error_mapping()
++test_transform_message()
+diff --git a/tests/publish_error.py b/tests/publish_error.py
+new file mode 100644
+index 0000000..aa8a18a
+--- /dev/null
++++ b/tests/publish_error.py
+@@ -0,0 +1,132 @@
++import sys
++from threading import Thread
++from gi.repository import GLib, Gio
++from pydbus import SessionBus
++from pydbus.error import register_error, map_error, map_by_default, error_registration
++
++import logging
++logger = logging.getLogger('pydbus.registration')
++logger.disabled = True
++
++loop = GLib.MainLoop()
++DOMAIN = Gio.DBusError.quark()  # TODO: Register new domain.
++
++
++@register_error("net.lew21.pydbus.tests.ErrorA", DOMAIN, 1000)
++class ExceptionA(Exception):
++	pass
++
++
++@register_error("net.lew21.pydbus.tests.ErrorB", DOMAIN, 2000)
++class ExceptionB(Exception):
++	pass
++
++
++@map_error("org.freedesktop.DBus.Error.InvalidArgs")
++class ExceptionC(Exception):
++	pass
++
++
++@map_by_default
++class ExceptionD(Exception):
++	pass
++
++
++class ExceptionE(Exception):
++	pass
++
++
++class TestObject(object):
++	'''
++<node>
++	<interface name='net.lew21.pydbus.tests.TestInterface'>
++		<method name='RaiseA'>
++			<arg type='s' name='msg' direction='in'/>
++		</method>
++		<method name='RaiseB'>
++			<arg type='s' name='msg' direction='in'/>
++		</method>
++		<method name='RaiseD'>
++			<arg type='s' name='msg' direction='in'/>
++		</method>
++		<method name='RaiseE'>
++			<arg type='s' name='msg' direction='in'/>
++		</method>
++	</interface>
++</node>
++	'''
++
++	def RaiseA(self, msg):
++		raise ExceptionA(msg)
++
++	def RaiseB(self, msg):
++		raise ExceptionB(msg)
++
++	def RaiseD(self, msg):
++		raise ExceptionD(msg)
++
++	def RaiseE(self, msg):
++		raise ExceptionE(msg)
++
++bus = SessionBus()
++
++with bus.publish("net.lew21.pydbus.tests.Test", TestObject()):
++	remote = bus.get("net.lew21.pydbus.tests.Test")
++
++	def t_func():
++		# Test new registered errors.
++		try:
++			remote.RaiseA("Test A")
++		except ExceptionA as e:
++			assert str(e) == "Test A"
++
++		try:
++			remote.RaiseB("Test B")
++		except ExceptionB as e:
++			assert str(e) == "Test B"
++
++		# Test mapped errors.
++		try:
++			remote.Get("net.lew21.pydbus.tests.TestInterface", "Foo")
++		except ExceptionC as e:
++			assert str(e) == "No such property 'Foo'"
++
++		# Test default errors.
++		try:
++			remote.RaiseD("Test D")
++		except ExceptionD as e:
++			assert str(e) == "Test D"
++
++		try:
++			remote.RaiseE("Test E")
++		except ExceptionD as e:
++			assert str(e) == "Test E"
++
++		# Test with no default errors.
++		error_registration.map_by_default(None)
++
++		try:
++			remote.RaiseD("Test D")
++		except Exception as e:
++			assert not isinstance(e, ExceptionD)
++
++		try:
++			remote.RaiseE("Test E")
++		except Exception as e:
++			assert not isinstance(e, ExceptionD)
++			assert not isinstance(e, ExceptionE)
++
++		loop.quit()
++
++	t = Thread(None, t_func)
++	t.daemon = True
++
++	def handle_timeout():
++		print("ERROR: Timeout.")
++		sys.exit(1)
++
++	GLib.timeout_add_seconds(4, handle_timeout)
++
++	t.start()
++	loop.run()
++	t.join()
+diff --git a/tests/run.sh b/tests/run.sh
+index 271c58a..a08baf8 100755
+--- a/tests/run.sh
++++ b/tests/run.sh
+@@ -10,10 +10,11 @@ PYTHON=${1:-python}
+ 
+ "$PYTHON" $TESTS_DIR/context.py
+ "$PYTHON" $TESTS_DIR/identifier.py
++"$PYTHON" $TESTS_DIR/error.py
+ if [ "$2" != "dontpublish" ]
+ then
+ 	"$PYTHON" $TESTS_DIR/publish.py
+ 	"$PYTHON" $TESTS_DIR/publish_properties.py
+ 	"$PYTHON" $TESTS_DIR/publish_multiface.py
+ 	"$PYTHON" $TESTS_DIR/publish_async.py
+ fi
+-- 
+2.13.5
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/run-ptest
new file mode 100644
index 0000000..782ceed
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus/run-ptest
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+for case in `find tests -type f -name '*.sh'`; do
+    bash $case python3 >$case.output 2>&1
+    ret=$?
+    if [ $ret -ne 0 ]; then
+        cat $case.output
+        echo "FAIL: ${case}"
+    elif grep -i 'SKIP' $case.output; then
+        echo "SKIP: ${case}"
+    else
+        echo "PASS: ${case}"
+    fi
+    rm -f $case.output
+done
\ No newline at end of file
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
new file mode 100644
index 0000000..7399ae1
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydbus_0.6.0.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Pythonic DBus library"
+HOMEPAGE = "https://pypi.python.org/pypi/pydbus/"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a916467b91076e631dd8edb7424769c7"
+
+SRCREV = "f2e6355a88351e7d644ccb2b4d67b19305507312"
+SRC_URI = " \
+    git://github.com/LEW21/pydbus.git;protocol=https;branch=master \
+    file://0001-make-direction-attribute-conforming-to-introspect.dt.patch \
+    file://0002-Support-asynchronous-calls-58.patch \
+    file://0003-Support-transformation-between-D-Bus-errors-and-exce.patch \
+    file://run-ptest \
+"
+
+inherit ptest setuptools3
+
+S = "${WORKDIR}/git"
+
+RDEPENDS:${PN} = "python3-pygobject \
+                  python3-io \
+                  python3-logging"
+
+RDEPENDS:${PN}-ptests = "bash"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint/0001-Adjust-test-expectations-for-ptest.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint/0001-Adjust-test-expectations-for-ptest.patch
new file mode 100644
index 0000000..8edecbf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint/0001-Adjust-test-expectations-for-ptest.patch
@@ -0,0 +1,44 @@
+From f3a213cf4922c122e554277ea2031c0c54cd3fe5 Mon Sep 17 00:00:00 2001
+From: Dan McGregor <dan.mcgregor@vecima.com>
+Date: Wed, 13 Mar 2024 14:08:25 -0600
+Subject: [PATCH] Adjust test expectations for ptest
+
+Because of the way we install ptests, some first party imports
+became third party. Reflect that in the test case.
+
+Upstream-Status: Inappropriate (embedded specific)
+Signed-off-by: Dan McGregor <dan.mcgregor@vecima.com>
+---
+ tests/functional/w/wrong_import_order.txt | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/tests/functional/w/wrong_import_order.txt b/tests/functional/w/wrong_import_order.txt
+index 068d2140d..9594ff9e0 100644
+--- a/tests/functional/w/wrong_import_order.txt
++++ b/tests/functional/w/wrong_import_order.txt
+@@ -3,14 +3,14 @@ wrong-import-order:14:0:14:10::"standard import ""sys"" should be placed before
+ wrong-import-order:15:0:15:15::"standard import ""datetime"" should be placed before third party imports ""six"", ""astroid.are_exclusive""":UNDEFINED

+ wrong-import-order:18:0:18:22::"third party import ""totally_missing"" should be placed before local import ""package.Class""":UNDEFINED

+ wrong-import-order:20:0:20:14::"third party import ""astroid"" should be placed before local imports ""package.Class"", "".package""":UNDEFINED

+-wrong-import-order:22:0:22:22::"first party import ""pylint.checkers"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

+-wrong-import-order:23:0:23:25::"first party import ""pylint.config"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

+-wrong-import-order:24:0:24:17::"first party import ""pylint.sys"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

+-wrong-import-order:25:0:25:28::"first party import ""pylint.pyreverse"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

+-wrong-import-order:30:0:30:40::"third party import ""six.moves.urllib.parse.quote"" should be placed before first party imports ""pylint.checkers"", ""pylint.config"", ""pylint.sys"", ""pylint.pyreverse"" and local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

+-wrong-import-order:31:0:31:23::"first party import ""pylint.constants"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

+-wrong-import-order:32:0:32:19::"standard import ""re"" should be placed before third party imports ""six"", ""astroid.are_exclusive"", ""unused_import"", ""totally_missing"", ""astroid"", ""six.moves.urllib.parse.quote"", first party imports ""pylint.checkers"", ""pylint.config"", ""pylint.sys"", ""pylint.pyreverse"", ""pylint.constants"", and local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

+-wrong-import-order:32:0:32:19::"third party import ""requests"" should be placed before first party imports ""pylint.checkers"", ""pylint.config"", ""pylint.sys"", ""pylint.pyreverse"", ""pylint.constants"" and local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

+-wrong-import-order:33:0:33:24::"first party import ""pylint.exceptions"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

+-wrong-import-order:34:0:34:21::"first party import ""pylint.message"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

+-wrong-import-order:35:0:35:11::"standard import ""time"" should be placed before third party imports ""six"", ""astroid.are_exclusive"", ""unused_import"" (...) ""astroid"", ""six.moves.urllib.parse.quote"", ""requests"", first party imports ""pylint.checkers"", ""pylint.config"", ""pylint.sys"" (...) ""pylint.constants"", ""pylint.exceptions"", ""pylint.message"", and local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

++wrong-import-order:22:0:22:22::"third party import ""pylint.checkers"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

++wrong-import-order:23:0:23:25::"third party import ""pylint.config"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

++wrong-import-order:24:0:24:17::"third party import ""pylint.sys"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

++wrong-import-order:25:0:25:28::"third party import ""pylint.pyreverse"" should be placed before local imports ""package.Class"", "".package"", "".package2""":UNDEFINED

++wrong-import-order:30:0:30:40::"third party import ""six.moves.urllib.parse.quote"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

++wrong-import-order:31:0:31:23::"third party import ""pylint.constants"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

++wrong-import-order:32:0:32:19::"standard import ""re"" should be placed before third party imports ""six"", ""astroid.are_exclusive"", ""unused_import"" (...) ""pylint.pyreverse"", ""six.moves.urllib.parse.quote"", ""pylint.constants"" and local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

++wrong-import-order:32:0:32:19::"third party import ""requests"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

++wrong-import-order:33:0:33:24::"third party import ""pylint.exceptions"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

++wrong-import-order:34:0:34:21::"third party import ""pylint.message"" should be placed before local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

++wrong-import-order:35:0:35:11::"standard import ""time"" should be placed before third party imports ""six"", ""astroid.are_exclusive"", ""unused_import"" (...) ""requests"", ""pylint.exceptions"", ""pylint.message"" and local imports ""package.Class"", "".package"", "".package2"" (...) ""package3.Class3"", "".package4"", ""package4.Class4""":UNDEFINED

diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
deleted file mode 100644
index eb4b9e8..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
+++ /dev/null
@@ -1,56 +0,0 @@
-SUMMARY="Pylint is a Python source code analyzer"
-HOMEPAGE= "http://www.pylint.org/"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c107cf754550e65755c42985a5d4e9c9"
-
-SRC_URI += "git://github.com/pylint-dev/pylint;branch=maintenance/3.0.x;protocol=https \
-           file://run-ptest \
-           "
-SRCREV = "1a5ffc1f447b77071ffe18a9c6836c09147ee2ed"
-
-inherit python_setuptools_build_meta ptest
-
-RDEPENDS:${PN} += "\
-    python3-astroid \
-    python3-difflib \
-    python3-dill \
-    python3-isort \
-    python3-json \
-    python3-mccabe \
-    python3-netserver \
-    python3-numbers \
-    python3-pkgutil \
-    python3-platformdirs \
-    python3-shell \
-    python3-tomlkit \
-    "
-
-RDEPENDS:${PN}-ptest += " \
-    python3-core \
-    python3-git \
-    python3-py \
-    python3-pytest \
-    python3-pytest-benchmark \
-    python3-pytest-runner \
-    python3-pytest-timeout \
-    python3-pytest-xdist \
-    python3-requests \
-    python3-statistics \
-    python3-tomllib \
-    python3-typing-extensions \
-    python3-unittest-automake-output \
-    "
-
-S = "${WORKDIR}/git"
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-    install -Dm 0644 ${S}/tests/.pylint_primer_tests/.gitkeep ${D}${PTEST_PATH}/tests/.pylint_primer_tests/.gitkeep
-    sed -i 's#/usr/bin/python$#/usr/bin/python3#g' ${D}${PTEST_PATH}/tests/data/ascript
-    # regression_distutil_import_error_73.py fails to run see
-    # https://lists.openembedded.org/g/openembedded-devel/topic/103181847
-    rm ${D}${PTEST_PATH}/tests/functional/r/regression_02/regression_distutil_import_error_73.py
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.1.0.bb
new file mode 100644
index 0000000..12f4f90
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.1.0.bb
@@ -0,0 +1,57 @@
+SUMMARY="Pylint is a Python source code analyzer"
+HOMEPAGE= "http://www.pylint.org/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c107cf754550e65755c42985a5d4e9c9"
+
+SRC_URI += "git://github.com/pylint-dev/pylint;branch=maintenance/3.1.x;protocol=https \
+           file://0001-Adjust-test-expectations-for-ptest.patch \
+           file://run-ptest \
+           "
+SRCREV = "053c2c3a25f97f043e10cdd41d2609e495a68f57"
+
+inherit python_setuptools_build_meta ptest
+
+RDEPENDS:${PN} += "\
+    python3-astroid \
+    python3-difflib \
+    python3-dill \
+    python3-isort \
+    python3-json \
+    python3-mccabe \
+    python3-netserver \
+    python3-numbers \
+    python3-pkgutil \
+    python3-platformdirs \
+    python3-shell \
+    python3-tomlkit \
+    "
+
+RDEPENDS:${PN}-ptest += " \
+    python3-core \
+    python3-git \
+    python3-py \
+    python3-pytest \
+    python3-pytest-benchmark \
+    python3-pytest-runner \
+    python3-pytest-timeout \
+    python3-pytest-xdist \
+    python3-requests \
+    python3-statistics \
+    python3-tomllib \
+    python3-typing-extensions \
+    python3-unittest-automake-output \
+    "
+
+S = "${WORKDIR}/git"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+    install -Dm 0644 ${S}/tests/.pylint_primer_tests/.gitkeep ${D}${PTEST_PATH}/tests/.pylint_primer_tests/.gitkeep
+    sed -i 's#/usr/bin/python$#/usr/bin/python3#g' ${D}${PTEST_PATH}/tests/data/ascript
+    # regression_distutil_import_error_73.py fails to run see
+    # https://lists.openembedded.org/g/openembedded-devel/topic/103181847
+    rm ${D}${PTEST_PATH}/tests/functional/r/regression_02/regression_distutil_import_error_73.py
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.12.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.12.0.bb
index 97985a8..5be6e63 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.12.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymetno_0.12.0.bb
@@ -9,8 +9,6 @@
 
 inherit setuptools3
 
-PIP_INSTALL_PACKAGE = "PyMetno"
-
 RDEPENDS:${PN} = "\
 	python3-aiohttp (>=3.6.1) \
 	python3-async-timeout (>=3.0.1) \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.185.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.185.bb
deleted file mode 100644
index ce4671d..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.185.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-DESCRIPTION = "Python API for MISP"
-HOMEPAGE = "https://github.com/MISP/PyMISP"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
-
-SRC_URI[sha256sum] = "3ccdc6ee48d26d82c77ba3f5d8fd41a79eaaef0ad5619f37a65b060e92f6da4c"
-
-inherit python_poetry_core pypi
-
-PIP_INSTALL_PACKAGE = "pymisp"
-
-RDEPENDS:${PN} += " \
-    python3-dateutil \
-    python3-json \
-    python3-jsonschema \
-    python3-requests \
-    python3-six \
-    python3-deprecated \
-    python3-wrapt \
-"
-
-# Fixes: python3-pymisp requires /bin/bash, but no
-# providers found in RDEPENDS:python3-pymisp? [file-rdep]
-RDEPENDS:${PN} += "bash"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.188.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.188.bb
new file mode 100644
index 0000000..59a00be
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.188.bb
@@ -0,0 +1,22 @@
+DESCRIPTION = "Python API for MISP"
+HOMEPAGE = "https://github.com/MISP/PyMISP"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
+
+SRC_URI[sha256sum] = "c2313d059a9f4d1221243fcda64fb8ae11603c1745e92d57c4071aad04336696"
+
+inherit python_poetry_core pypi
+
+RDEPENDS:${PN} += " \
+    python3-dateutil \
+    python3-json \
+    python3-jsonschema \
+    python3-requests \
+    python3-six \
+    python3-deprecated \
+    python3-wrapt \
+"
+
+# Fixes: python3-pymisp requires /bin/bash, but no
+# providers found in RDEPENDS:python3-pymisp? [file-rdep]
+RDEPENDS:${PN} += "bash"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.6.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.6.4.bb
deleted file mode 100644
index 4f53d01..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.6.4.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "A fully featured modbus protocol stack in python"
-HOMEPAGE = "https://github.com/riptideio/pymodbus/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=eba8057aa82c058d2042b4b0a0e9cc63"
-
-SRC_URI[sha256sum] = "6eee2c7eedb794317784c967096fa1fe42200357e9b5a349d838ee9159624fe2"
-
-inherit pypi python_setuptools_build_meta
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[repl] = ",,,python3-aiohttp python3-click python3-prompt-toolkit python3-pygments python3-pyserial-asyncio"
-PACKAGECONFIG[asyncio] = ",,,python3-pyserial-asyncio"
-PACKAGECONFIG[tornado] = ",,,python3-tornado"
-PACKAGECONFIG[twisted] = ",,,python3-twisted-conch"
-PACKAGECONFIG[redis] = ",,,python3-redis"
-PACKAGECONFIG[sql] = ",,,python3-sqlalchemy"
-
-RDEPENDS:${PN} += " \
-    python3-asyncio \
-    python3-core \
-    python3-io \
-    python3-json \
-    python3-logging \
-    python3-math \
-    python3-netserver \
-"
-
-RDEPENDS:${PN} += " \
-    python3-pyserial \
-    python3-six \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.6.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.6.6.bb
new file mode 100644
index 0000000..8e18164
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymodbus_3.6.6.bb
@@ -0,0 +1,31 @@
+SUMMARY = "A fully featured modbus protocol stack in python"
+HOMEPAGE = "https://github.com/riptideio/pymodbus/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=eba8057aa82c058d2042b4b0a0e9cc63"
+
+SRC_URI[sha256sum] = "c4d556a0954d00a9e1c8f1d0de03f41c4800336e6d785e820f2917eeb4ee7736"
+
+inherit pypi python_setuptools_build_meta
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[repl] = ",,,python3-aiohttp python3-click python3-prompt-toolkit python3-pygments python3-pyserial-asyncio"
+PACKAGECONFIG[asyncio] = ",,,python3-pyserial-asyncio"
+PACKAGECONFIG[tornado] = ",,,python3-tornado"
+PACKAGECONFIG[twisted] = ",,,python3-twisted-conch"
+PACKAGECONFIG[redis] = ",,,python3-redis"
+PACKAGECONFIG[sql] = ",,,python3-sqlalchemy"
+
+RDEPENDS:${PN} += " \
+    python3-asyncio \
+    python3-core \
+    python3-io \
+    python3-json \
+    python3-logging \
+    python3-math \
+    python3-netserver \
+"
+
+RDEPENDS:${PN} += " \
+    python3-pyserial \
+    python3-six \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.6.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.6.2.bb
deleted file mode 100644
index 84c61ec..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.6.2.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "A toolkit to write, run and analyze benchmarks"
-DESCRIPTION = " \
-The Python pyperf module is a toolkit to write, run and analyze benchmarks. \
-Features: \
-    * Simple API to run reliable benchmarks \
-    * Automatically calibrate a benchmark for a time budget. \
-    * Spawn multiple worker processes. \
-    * Compute the mean and standard deviation. \
-    * Detect if a benchmark result seems unstable. \
-    * JSON format to store benchmark results. \
-    * Support multiple units: seconds, bytes and integer. \
-"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=78bc2e6e87c8c61272937b879e6dc2f8"
-
-SRC_URI[sha256sum] = "64d8fadce6a74f478f29832c1eaa2a04856655ebff17292d5237fc8317c3a3c5"
-
-DEPENDS += "python3-six-native"
-
-PYPI_PACKAGE = "pyperf"
-inherit pypi python_setuptools_build_meta
-
-RDEPENDS:${PN} += "python3-misc python3-statistics"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.6.3.bb
new file mode 100644
index 0000000..6b37e18
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyperf_2.6.3.bb
@@ -0,0 +1,23 @@
+SUMMARY = "A toolkit to write, run and analyze benchmarks"
+DESCRIPTION = " \
+The Python pyperf module is a toolkit to write, run and analyze benchmarks. \
+Features: \
+    * Simple API to run reliable benchmarks \
+    * Automatically calibrate a benchmark for a time budget. \
+    * Spawn multiple worker processes. \
+    * Compute the mean and standard deviation. \
+    * Detect if a benchmark result seems unstable. \
+    * JSON format to store benchmark results. \
+    * Support multiple units: seconds, bytes and integer. \
+"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=78bc2e6e87c8c61272937b879e6dc2f8"
+
+SRC_URI[sha256sum] = "9752fe749c21e460a564bb3f52fc319b892c62ee61c5138b4a9bbf94ad2755e6"
+
+DEPENDS += "python3-six-native"
+
+PYPI_PACKAGE = "pyperf"
+inherit pypi python_setuptools_build_meta
+
+RDEPENDS:${PN} += "python3-misc python3-statistics"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.2.1.bb
index 7a96635..2807c05 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyruvate_1.2.1.bb
@@ -24,8 +24,6 @@
 
 inherit python_setuptools3_rust cargo-update-recipe-crates
 
-PIP_INSTALL_DIST_PATH = "${S}/dist"
-
 # crossbeam-* -> std::sync::atomic AtomicI64, AtomicU64
 # not supported on mips/powerpc with 32-bit pointers
 # https://doc.rust-lang.org/std/sync/atomic/#portability
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.5.bb
deleted file mode 100644
index 2eda16f..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.5.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "pytest-asyncio is an Apache2 licensed library, written in Python, for testing asyncio code with pytest"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=136e4f49dbf29942c572a3a8f6e88a77"
-
-SRC_URI[sha256sum] = "3a048872a9c4ba14c3e90cc1aa20cbc2def7d01c7c8db3777ec281ba9c057675"
-
-inherit pypi python_setuptools_build_meta
-
-DEPENDS += "python3-setuptools-scm-native"
-
-RDEPENDS:${PN} += " \
-    python3-pytest \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.6.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.6.bb
new file mode 100644
index 0000000..4920204
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.6.bb
@@ -0,0 +1,16 @@
+DESCRIPTION = "pytest-asyncio is an Apache2 licensed library, written in Python, for testing asyncio code with pytest"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=136e4f49dbf29942c572a3a8f6e88a77"
+
+SRC_URI[sha256sum] = "ffe523a89c1c222598c76856e76852b787504ddb72dd5d9b6617ffa8aa2cde5f"
+
+inherit pypi python_setuptools_build_meta
+
+DEPENDS += "python3-setuptools-scm-native"
+
+RDEPENDS:${PN} += " \
+    python3-pytest \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_4.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_4.1.0.bb
deleted file mode 100644
index 0be97e5..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_4.1.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Pytest plugin for measuring coverage."
-HOMEPAGE = "https://github.com/pytest-dev/pytest-cov"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = " \
-    file://LICENSE;md5=cbc4e25353c748c817db2daffe605e43 \
-"
-
-SRC_URI[sha256sum] = "3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"
-
-inherit pypi setuptools3
-
-DEPENDS += "python3-setuptools-scm-native"
-RDEPENDS:${PN} += "python3-coverage python3-pytest"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_5.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_5.0.0.bb
new file mode 100644
index 0000000..e3e4aff
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_5.0.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Pytest plugin for measuring coverage."
+HOMEPAGE = "https://github.com/pytest-dev/pytest-cov"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=cbc4e25353c748c817db2daffe605e43 \
+"
+
+SRC_URI[sha256sum] = "5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"
+
+inherit pypi setuptools3
+
+DEPENDS += "python3-setuptools-scm-native"
+RDEPENDS:${PN} += "python3-coverage python3-pytest"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixtures_1.0.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixtures_1.0.5.bb
deleted file mode 100644
index dcf662a..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixtures_1.0.5.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Allows you to use fixtures in @pytest.mark.parametrize."
-DESCRIPTION = "Use your fixtures in @pytest.mark.parametrize. \
-\
-This project was inspired by pytest-lazy-fixture.\
-\
-Improvements that have been made in this project:\
-\
-* You can use fixtures in any data structures\
-* You can access the attributes of fixtures\
-* You can use functions in fixtures"
-HOMEPAGE = "https://github.com/dev-petrov/pytest-lazy-fixtures"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4475e66fcfabe27395e6764c8f69c876"
-
-SRC_URI[sha256sum] = "066b253a94c249e6d9cdfad465e2503d2219139fb468d8f687243dfde39ab9cb"
-
-inherit pypi python_poetry_core
-
-PYPI_PACKAGE = "pytest_lazy_fixtures"
-
-RDEPENDS:${PN} = "python3-pytest"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixtures_1.0.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixtures_1.0.7.bb
new file mode 100644
index 0000000..f5e6dbf
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-lazy-fixtures_1.0.7.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Allows you to use fixtures in @pytest.mark.parametrize."
+DESCRIPTION = "Use your fixtures in @pytest.mark.parametrize. \
+\
+This project was inspired by pytest-lazy-fixture.\
+\
+Improvements that have been made in this project:\
+\
+* You can use fixtures in any data structures\
+* You can access the attributes of fixtures\
+* You can use functions in fixtures"
+HOMEPAGE = "https://github.com/dev-petrov/pytest-lazy-fixtures"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=4475e66fcfabe27395e6764c8f69c876"
+
+SRC_URI[sha256sum] = "87ef7424dc0229ff9cb72d482f49b7806535c3500641f612c13ddf243c9adacb"
+
+inherit pypi python_poetry_core
+
+PYPI_PACKAGE = "pytest_lazy_fixtures"
+
+RDEPENDS:${PN} = "python3-pytest"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-localserver/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-localserver/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-localserver/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-localserver_0.8.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-localserver_0.8.1.bb
new file mode 100644
index 0000000..6698178
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-localserver_0.8.1.bb
@@ -0,0 +1,29 @@
+SUMMARY = "pytest plugin to test server connections locally."
+HOMEPAGE = "https://github.com/pytest-dev/pytest-localserver"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b8da7a541d738b054dcbf70c31530432"
+
+DEPENDS += "python3-setuptools-scm-native"
+
+inherit pypi python_setuptools_build_meta ptest
+
+SRC_URI[sha256sum] = "66569c34fef31a5750b16effd1cd1288a7a90b59155d005e7f916accd3dee4f1"
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	python3-pytest \
+	python3-requests \
+	python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += " \
+	python3-werkzeug \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.2.0.bb
deleted file mode 100644
index a7daa05..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.2.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "py.test plugin to abort hanging tests"
-HOMEPAGE = "https://github.com/pytest-dev/pytest-timeout/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d8048cd156eda3df2e7f111b0ae9ceff"
-
-PYPI_PACKAGE = "pytest-timeout"
-
-SRC_URI[sha256sum] = "3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} = "python3-pytest"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.3.1.bb
new file mode 100644
index 0000000..b56c26a
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-timeout_2.3.1.bb
@@ -0,0 +1,12 @@
+SUMMARY = "py.test plugin to abort hanging tests"
+HOMEPAGE = "https://github.com/pytest-dev/pytest-timeout/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d8048cd156eda3df2e7f111b0ae9ceff"
+
+PYPI_PACKAGE = "pytest-timeout"
+
+SRC_URI[sha256sum] = "12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} = "python3-pytest"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzstd_0.15.10.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzstd_0.15.10.bb
new file mode 100644
index 0000000..c094a8d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzstd_0.15.10.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Pyzstd module provides classes and functions for compressing and \
+decompressing data, using Facebook’s Zstandard (or zstd as short name) algorithm."
+HOMEPAGE = "https://github.com/animalize/pyzstd"
+SECTION = "devel/python"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aedb5a2679cd1552fb61c181ef974b9e"
+
+PYPI_PACKAGE = "pyzstd"
+
+SRC_URI[sha256sum] = "83603a97fdbcf2139f475c940789f09e32703f931f29f4a8ddf3551e6700108b"
+
+inherit pypi setuptools3
+
+# clang-16 with -flto segfaults on arm, therefore ignore flto for now
+do_configure:append:arm:toolchain-clang() {
+    sed -i -e "s|'-flto'|''|" ${S}/setup.py
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzstd_0.15.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzstd_0.15.9.bb
deleted file mode 100644
index 81bffac..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyzstd_0.15.9.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Pyzstd module provides classes and functions for compressing and \
-decompressing data, using Facebook’s Zstandard (or zstd as short name) algorithm."
-HOMEPAGE = "https://github.com/animalize/pyzstd"
-SECTION = "devel/python"
-
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8458383225d7107f3383ee5c521628d2"
-
-PYPI_PACKAGE = "pyzstd"
-
-SRC_URI[sha256sum] = "cbfdde6c5768ffa5d2f14127bbc1d7c3c2d03c0ceaeb0736946197e06275ccc7"
-
-inherit pypi setuptools3
-
-# clang-16 with -flto segfaults on arm, therefore ignore flto for now
-do_configure:append:arm:toolchain-clang() {
-    sed -i -e "s|'-flto'|''|" ${S}/setup.py
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_1.3.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_1.3.1.bb
deleted file mode 100644
index 8c2f891..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_1.3.1.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=22d117a849df10d047ed9b792838e863"
-
-SRC_URI[sha256sum] = "75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "python3-requests python3-oauthlib"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_2.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_2.0.0.bb
new file mode 100644
index 0000000..71cafb5
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-requests-oauthlib_2.0.0.bb
@@ -0,0 +1,8 @@
+LICENSE = "ISC"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=22d117a849df10d047ed9b792838e863"
+
+SRC_URI[sha256sum] = "b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-requests python3-oauthlib"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-responses_0.25.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-responses_0.25.0.bb
new file mode 100644
index 0000000..f4b59c7
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-responses_0.25.0.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "A utility library for mocking out the requests Python library."
+HOMEPAGE = "https://github.com/getsentry/responses"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0e601511a8517f4daf688a8eb95be7a2"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "01ae6a02b4f34e39bffceb0fc6786b67a25eae919c6368d05eabc8d9576c2a66"
+
+RDEPENDS:${PN} += " \
+	python3-mock \
+	python3-pyyaml \
+	python3-requests \
+	python3-urllib3 \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch
index d535e43..3678d46 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt/0001-py-scrypt-remove-the-hard-coded-include-paths.patch
@@ -1,4 +1,4 @@
-From d8db473ce9346cd6254c90e13ac45b3bbde494c4 Mon Sep 17 00:00:00 2001
+From 47ede0950740e8919c28774840e77f223d5f3124 Mon Sep 17 00:00:00 2001
 From: Derek Straka <derek@asterius.io>
 Date: Sun, 11 Mar 2018 19:55:38 -0400
 Subject: [PATCH] py-scrypt: remove the hard coded include paths
@@ -11,16 +11,14 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/setup.py b/setup.py
-index e36adc4..2ebfbf1 100644
+index 419a982..3f1fe52 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -24,7 +24,6 @@ if sys.platform.startswith('linux'):
-                      ('HAVE_SYS_SYSINFO_H', '1'),
-                      ('_FILE_OFFSET_BITS', '64')]
+@@ -26,7 +26,6 @@ if sys.platform.startswith('linux'):
+         ('_FILE_OFFSET_BITS', '64'),
+     ]
      libraries = ['crypto', 'rt']
 -    includes = ['/usr/local/include', '/usr/include']
      CFLAGS.append('-O2')
- elif sys.platform.startswith('win32'):
-     define_macros = [('inline', '__inline')]
--- 
-2.7.4
+ elif sys.platform.startswith('win32') and os.environ.get('MSYSTEM'):
+     msys2_env = os.getenv('MSYSTEM')
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.20.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.20.bb
deleted file mode 100644
index ce0d4de..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.20.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "Bindings for the scrypt key derivation function library"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=05b5ac2824a7ae7489193b0f6a6f2cd1"
-HOMEPAGE="https://github.com/holgern/py-scrypt"
-
-SRC_URI += "file://0001-py-scrypt-remove-the-hard-coded-include-paths.patch"
-
-SRC_URI[sha256sum] = "0d226c1c6744fb2e308b391410669b1df5cfe82637ffcb5ed489bf82b2d2eb78"
-
-inherit pypi ptest setuptools3 dos2unix
-
-SRC_URI += " \
-    file://run-ptest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    python3-pytest \
-    python3-unittest-automake-output \
-"
-
-RDEPENDS:${PN} += " \
-    python3-ctypes \
-"
-
-do_install_ptest() {
-    install -d ${D}${PTEST_PATH}/tests
-    cp -rf ${S}/scrypt/tests/* ${D}${PTEST_PATH}/tests/
-}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.24.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.24.bb
new file mode 100644
index 0000000..94c83e4
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-scrypt_0.8.24.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "Bindings for the scrypt key derivation function library"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=05b5ac2824a7ae7489193b0f6a6f2cd1"
+HOMEPAGE="https://github.com/holgern/py-scrypt"
+
+SRC_URI += "file://0001-py-scrypt-remove-the-hard-coded-include-paths.patch"
+
+SRC_URI[sha256sum] = "98ffde45e4a95461d73ded54ba7a26857679920d4f8ff320f6f7ade6e29531bd"
+
+inherit pypi ptest setuptools3 dos2unix
+
+SRC_URI += " \
+    file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    python3-pytest \
+    python3-unittest-automake-output \
+"
+
+RDEPENDS:${PN} += " \
+    python3-ctypes \
+"
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -rf ${S}/scrypt/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.40.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.40.4.bb
deleted file mode 100644
index f3f2a5d..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.40.4.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "The new Python SDK for Sentry.io"
-DESCRIPTION = "This is the next line of the Python SDK \
-for Sentry, intended to replace the raven package on PyPI."
-HOMEPAGE = "https://github.com/getsentry/sentry-python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=03dc788d9a9486be5e6a1d99c2c1ce3a"
-
-RDEPENDS:${PN} += "\
-	python3-urllib3 \
-	python3-core \
-	python3-json \
-	python3-logging \
-	python3-threading \
-	python3-compression \
-	python3-datetime \
-"
-
-SRC_URI[sha256sum] = "657abae98b0050a0316f0873d7149f951574ae6212f71d2e3a1c4c88f62d6456"
-
-PYPI_PACKAGE = "sentry-sdk"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.44.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.44.0.bb
new file mode 100644
index 0000000..1b371ef
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sentry-sdk_1.44.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "The new Python SDK for Sentry.io"
+DESCRIPTION = "This is the next line of the Python SDK \
+for Sentry, intended to replace the raven package on PyPI."
+HOMEPAGE = "https://github.com/getsentry/sentry-python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=03dc788d9a9486be5e6a1d99c2c1ce3a"
+
+RDEPENDS:${PN} += "\
+	python3-urllib3 \
+	python3-core \
+	python3-json \
+	python3-logging \
+	python3-threading \
+	python3-compression \
+	python3-datetime \
+"
+
+SRC_URI[sha256sum] = "f7125a9235795811962d52ff796dc032cd1d0dd98b59beaced8380371cd9c13c"
+
+PYPI_PACKAGE = "sentry-sdk"
+
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
index 7373b02..b668056 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb
@@ -34,4 +34,3 @@
 CLEANBROKEN = "1"
 
 inherit setuptools3
-PIP_INSTALL_PACKAGE = "slip"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.11.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.11.1.bb
deleted file mode 100644
index 91feec9..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.11.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Socket.IO server"
-HOMEPAGE = "https://github.com/miguelgrinberg/python-socketio/"
-SECTION = "devel/python"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
-
-inherit pypi python_setuptools_build_meta
-
-PYPI_PACKAGE = "python-socketio"
-
-SRC_URI[sha256sum] = "bbcbd758ed8c183775cb2853ba001361e2fa018babf5cbe11a5b77e91c2ec2a2"
-
-PACKAGECONFIG ?= "asyncio_client client"
-PACKAGECONFIG[asyncio_client] = ",,,python3-aiohttp python3-websockets"
-PACKAGECONFIG[client] = ",,,python3-requests python3-websocket-client"
-
-RDEPENDS:${PN} += "\
-    python3-engineio \
-    python3-logging \
-    python3-math \
-    python3-pickle \
-    python3-json \
-    python3-threading \
-    python3-six \
-    python3-attrs \
-    python3-bidict \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.11.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.11.2.bb
new file mode 100644
index 0000000..4251a81
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-socketio_5.11.2.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Socket.IO server"
+HOMEPAGE = "https://github.com/miguelgrinberg/python-socketio/"
+SECTION = "devel/python"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=42d0a9e728978f0eeb759c3be91536b8"
+
+inherit pypi python_setuptools_build_meta
+
+PYPI_PACKAGE = "python-socketio"
+
+SRC_URI[sha256sum] = "ae6a1de5c5209ca859dc574dccc8931c4be17ee003e74ce3b8d1306162bb4a37"
+
+PACKAGECONFIG ?= "asyncio_client client"
+PACKAGECONFIG[asyncio_client] = ",,,python3-aiohttp python3-websockets"
+PACKAGECONFIG[client] = ",,,python3-requests python3-websocket-client"
+
+RDEPENDS:${PN} += "\
+    python3-engineio \
+    python3-logging \
+    python3-math \
+    python3-pickle \
+    python3-json \
+    python3-threading \
+    python3-six \
+    python3-attrs \
+    python3-bidict \
+    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tomli-w/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-tomli-w/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tomli-w/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tomli-w_1.0.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tomli-w_1.0.0.bb
new file mode 100644
index 0000000..8a8a484
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tomli-w_1.0.0.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Tomli-W is a Python library for writing TOML. It is a write-only counterpart to Tomli, which is a read-only TOML parser."
+HOMEPAGE = "https://github.com/hukkin/tomli-w"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5"
+
+SRCREV = "19099125f32e7c491603e393263754262b356956"
+PYPI_SRC_URI = "git://github.com/hukkin/tomli-w.git;protocol=https;branch=master"
+
+inherit pypi python_flit_core ptest
+
+S = "${WORKDIR}/git"
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        python3-pytest \
+        python3-tomli \
+        python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        install -d ${D}${PTEST_PATH}/benchmark
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+        cp -rf ${S}/benchmark/* ${D}${PTEST_PATH}/benchmark/
+}
+
+RDEPENDS:${PN} += " \
+        python3-datetime \
+        python3-numbers \
+        python3-stringold \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.13.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.13.0.bb
deleted file mode 100644
index dd352e4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.13.0.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-# SPDX-License-Identifier: MIT
-# Copyright (C) 2023 iris-GmbH infrared & intelligent sensors
-
-SUMMARY = "Automate and standardize testing in Python. It is part of a larger vision of easing the packaging, testing and release process of Python software (alongside pytest and devpi)."
-HOMEPAGE = "http://tox.readthedocs.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=11610a9d8fd95649cf8159be12b98cb7"
-
-SRC_URI[sha256sum] = "dd789a554c16c4b532924ba393c92fc8991323c4b3d466712bfecc8c9b9f24f7"
-
-BBCLASSEXTEND = "native nativesdk"
-inherit pypi python_hatchling
-
-DEPENDS += "\
-    python3-hatch-vcs-native \
-"
-
-RDEPENDS:${PN} += "\
-    python3-cachetools \
-    python3-chardet \
-    python3-colorama \
-    python3-filelock \
-    python3-packaging \
-    python3-platformdirs \
-    python3-pluggy \
-    python3-pyproject-api \
-    python3-tomli \
-    python3-virtualenv \
-"
-
-# Install all built-in python3 modules, as the software tested with tox might
-# depend on it. Tox will attempt to install all required dependencies
-# in a virtualenv using pip, but this obviously does not include the built-in modules.
-RDEPENDS:${PN} += "python3-modules"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.14.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.14.2.bb
new file mode 100644
index 0000000..f451de3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-tox_4.14.2.bb
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: MIT
+# Copyright (C) 2023 iris-GmbH infrared & intelligent sensors
+
+SUMMARY = "Automate and standardize testing in Python. It is part of a larger vision of easing the packaging, testing and release process of Python software (alongside pytest and devpi)."
+HOMEPAGE = "http://tox.readthedocs.org/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=11610a9d8fd95649cf8159be12b98cb7"
+
+SRC_URI[sha256sum] = "0defb44f6dafd911b61788325741cc6b2e12ea71f987ac025ad4d649f1f1a104"
+
+BBCLASSEXTEND = "native nativesdk"
+inherit pypi python_hatchling
+
+DEPENDS += "\
+    python3-hatch-vcs-native \
+"
+
+RDEPENDS:${PN} += "\
+    python3-cachetools \
+    python3-chardet \
+    python3-colorama \
+    python3-filelock \
+    python3-packaging \
+    python3-platformdirs \
+    python3-pluggy \
+    python3-pyproject-api \
+    python3-tomli \
+    python3-virtualenv \
+"
+
+# Install all built-in python3 modules, as the software tested with tox might
+# depend on it. Tox will attempt to install all required dependencies
+# in a virtualenv using pip, but this obviously does not include the built-in modules.
+RDEPENDS:${PN} += "python3-modules"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.1.bb
deleted file mode 100644
index e650906..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "Traitlets Python config system"
-HOMEPAGE = "http://ipython.org"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=13bed0ee6f46a6f6dbf1f9f9572f250a"
-
-SRC_URI[sha256sum] = "8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"
-
-inherit pypi python_hatchling
-
-RDEPENDS:${PN} = "\
-    python3-ipython-genutils \
-    python3-decorator \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.2.bb
new file mode 100644
index 0000000..af5a2f3
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.2.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Traitlets Python config system"
+HOMEPAGE = "https://github.com/ipython/traitlets"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=13bed0ee6f46a6f6dbf1f9f9572f250a"
+
+SRC_URI[sha256sum] = "8cdd83c040dab7d1dee822678e5f5d100b514f7b72b01615b26fc5718916fdf9"
+
+inherit pypi python_hatchling ptest
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        python3-argcomplete \
+        bash \
+        python3-mypy \
+        python3-pytest \
+        python3-pytest-mock \
+        python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_4.1.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_4.1.5.bb
deleted file mode 100644
index 1e9f668..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_4.1.5.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-SUMMARY = "Run-time type checker for Python"
-HOMEPAGE = "https://pypi.org/project/typeguard/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f0e423eea5c91e7aa21bdb70184b3e53"
-
-SRC_URI[sha256sum] = "ea0a113bbc111bcffc90789ebb215625c963411f7096a7e9062d4e4630c155fd"
-
-inherit pypi python_setuptools_build_meta ptest
-
-SRC_URI += " \
-        file://run-ptest \
-"
-
-RDEPENDS:${PN} += " \
-    python3-compression \
-    python3-unittest \
-"
-
-RDEPENDS:${PN}-ptest += " \
-    python3-pytest \
-    python3-typing-extensions \
-    python3-unittest-automake-output \
-    python3-unixadmin \
-    python3-mypy \
-"
-
-do_install_ptest() {
-        install -d ${D}${PTEST_PATH}/tests
-        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
-}
-
-DEPENDS += "\
-    python3-distutils-extra-native \
-    python3-setuptools-scm-native \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_4.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_4.2.1.bb
new file mode 100644
index 0000000..e0e84df
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-typeguard_4.2.1.bb
@@ -0,0 +1,39 @@
+SUMMARY = "Run-time type checker for Python"
+HOMEPAGE = "https://pypi.org/project/typeguard/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f0e423eea5c91e7aa21bdb70184b3e53"
+
+SRC_URI[sha256sum] = "c556a1b95948230510070ca53fa0341fb0964611bd05d598d87fb52115d65fee"
+
+inherit pypi python_setuptools_build_meta ptest
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN} += " \
+    python3-core \
+    python3-compression \
+    python3-unittest \
+    python3-typing-extensions \
+"
+
+RDEPENDS:${PN}-ptest += " \
+    python3-pytest \
+    python3-typing-extensions \
+    python3-unittest-automake-output \
+    python3-unixadmin \
+    python3-mypy \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+DEPENDS += "\
+    python3-distutils-extra-native \
+    python3-setuptools-scm-native \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-psutil_5.9.5.20240205.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-psutil_5.9.5.20240205.bb
deleted file mode 100644
index 736024d..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-psutil_5.9.5.20240205.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "Typing stubs for psutil"
-HOMEPAGE = "https://github.com/python/typeshed"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=ef4dc1e740f5c928f1608a4a9c7b578e"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "51df36a361aa597bf483dcc5b58f2ab7aa87452a36d2da97c90994d6a81ef743"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-psutil_5.9.5.20240316.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-psutil_5.9.5.20240316.bb
new file mode 100644
index 0000000..c6f1569
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-psutil_5.9.5.20240316.bb
@@ -0,0 +1,10 @@
+SUMMARY = "Typing stubs for psutil"
+HOMEPAGE = "https://github.com/python/typeshed"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=ef4dc1e740f5c928f1608a4a9c7b578e"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "5636f5714bb930c64bb34c4d47a59dc92f9d610b778b5364a31daa5584944848"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-python-dateutil_2.8.19.20240106.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-python-dateutil_2.8.19.20240106.bb
deleted file mode 100644
index 2075d96..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-python-dateutil_2.8.19.20240106.bb
+++ /dev/null
@@ -1,8 +0,0 @@
-SUMMARY = "Typing stubs for python-dateutil"
-HOMEPAGE = "https://github.com/python/typeshed"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=ef4dc1e740f5c928f1608a4a9c7b578e"
-
-SRC_URI[sha256sum] = "1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"
-
-inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-types-python-dateutil_2.9.0.20240316.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-python-dateutil_2.9.0.20240316.bb
new file mode 100644
index 0000000..4b78606
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-types-python-dateutil_2.9.0.20240316.bb
@@ -0,0 +1,8 @@
+SUMMARY = "Typing stubs for python-dateutil"
+HOMEPAGE = "https://github.com/python/typeshed"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=6;endline=6;md5=ef4dc1e740f5c928f1608a4a9c7b578e"
+
+SRC_URI[sha256sum] = "5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202"
+
+inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-validators/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-validators/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-validators/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-validators_0.22.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-validators_0.22.0.bb
deleted file mode 100644
index 1da7ee4..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-validators_0.22.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "Python Data Validation for Humans"
-HOMEPAGE = "https://python-validators.github.io/validators"
-LICENSE = "MIT"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fcf28bd09a60e145c3171c531b9e677d"
-SRC_URI[sha256sum] = "77b2689b172eeeb600d9605ab86194641670cdb73b60afd577142a9397873370"
-
-inherit pypi python_setuptools_build_meta
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-validators_0.24.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-validators_0.24.0.bb
new file mode 100644
index 0000000..78261dd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-validators_0.24.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Python Data Validation for Humans"
+HOMEPAGE = "https://python-validators.github.io/validators"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b3fb4b9e6db86c69a33d5e3ee013ab59"
+SRC_URI[sha256sum] = "cd23defb36de42d14e7559cf0757f761bb46b10d9de2998e6ef805f769d859e3"
+
+inherit pypi python_setuptools_build_meta ptest
+
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	python3-pytest \
+	python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += " \
+	python3-crypt \
+	python3-datetime \
+	python3-netclient \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.15.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.15.1.bb
deleted file mode 100644
index 4eea0f0..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.15.1.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "A Python library for interacting with Ethereum."
-HOMEPAGE = "https://github.com/ethereum/web3.py"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=373fede350846fdffd23648fba504635"
-
-SRC_URI[sha256sum] = "f9e7eefc1b3c3d194868a4ef9583b625c18ea3f31a48ebe143183db74898f381"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    python3-aiohttp \
-    python3-eth-abi \
-    python3-eth-account \
-    python3-eth-hash \
-    python3-eth-typing \
-    python3-eth-utils \
-    python3-hexbytes \
-    python3-jsonschema \
-    python3-protobuf \
-    python3-pydantic \
-    python3-requests \
-    python3-typing-extensions \
-    python3-websockets \
-    python3-pyunormalize \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.16.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.16.0.bb
new file mode 100644
index 0000000..01738f2
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-web3_6.16.0.bb
@@ -0,0 +1,26 @@
+SUMMARY = "A Python library for interacting with Ethereum."
+HOMEPAGE = "https://github.com/ethereum/web3.py"
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=373fede350846fdffd23648fba504635"
+
+SRC_URI[sha256sum] = "b10c93476c106acc44b8428e47c61c385b7d0885e82cdc24049d27f521833552"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += " \
+    python3-aiohttp \
+    python3-eth-abi \
+    python3-eth-account \
+    python3-eth-hash \
+    python3-eth-typing \
+    python3-eth-utils \
+    python3-hexbytes \
+    python3-jsonschema \
+    python3-protobuf \
+    python3-pydantic \
+    python3-requests \
+    python3-typing-extensions \
+    python3-websockets \
+    python3-pyunormalize \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wsproto/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-wsproto/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wsproto/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wsproto_1.2.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wsproto_1.2.0.bb
new file mode 100644
index 0000000..09f5565
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wsproto_1.2.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "WebSockets state-machine based protocol implementation"
+HOMEPAGE = "https://github.com/python-hyper/wsproto/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=69fabf732409f4ac61875827b258caaf"
+
+inherit pypi setuptools3 ptest
+
+SRC_URI[sha256sum] = "ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"
+
+SRC_URI += " \
+        file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+        python3-pytest \
+        python3-unittest-automake-output \
+"
+
+do_install_ptest() {
+        install -d ${D}${PTEST_PATH}/tests
+        cp -rf ${S}/test/* ${D}${PTEST_PATH}/tests/
+}
+
+RDEPENDS:${PN} += " \
+        python3-h11 \
+        python3-netclient \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb
index 8a9af14..aedf483 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-xlrd_2.0.1.bb
@@ -17,8 +17,6 @@
 S = "${WORKDIR}/git"
 
 inherit ptest setuptools3
-PIP_INSTALL_PACKAGE = "xlrd"
-PIP_INSTALL_DIST_PATH = "${S}/dist"
 
 RDEPENDS:${PN} += " \
     python3-compression \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_6.0.2.bb b/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_6.0.2.bb
deleted file mode 100644
index 18338df..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_6.0.2.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "Google Spreadsheets Python API"
-HOMEPAGE = "https://github.com/burnash/gspread"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9488e21983675fa56dc05af558b83e2f"
-
-SRC_URI[sha256sum] = "0982beeb07fa3ec4482a3aaa96ca13a1e6b427a0aca4058beab4cdc33c0cbb64"
-
-RDEPENDS:${PN} = " \
-	python3-google-auth \
-	python3-google-auth-oauthlib \
-	python3-strenum \
-	"
-
-inherit pypi python_flit_core
diff --git a/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_6.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_6.1.0.bb
new file mode 100644
index 0000000..4821558
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python3-gspread/python3-gspread_6.1.0.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Google Spreadsheets Python API"
+HOMEPAGE = "https://github.com/burnash/gspread"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=9488e21983675fa56dc05af558b83e2f"
+
+SRC_URI[sha256sum] = "576b72b628b251d2ee41e02b982d3c714d511d2a5aa3a88e587ed9efc4d6e752"
+
+RDEPENDS:${PN} = " \
+	python3-google-auth \
+	python3-google-auth-oauthlib \
+	python3-strenum \
+	"
+
+inherit pypi python_flit_core
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch
index 5b38859..d277e8b 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0002-run_program-support-timeout.patch
@@ -1,4 +1,4 @@
-From 713cf821ebe17f9e1771502a85e0905ea04dafae Mon Sep 17 00:00:00 2001
+From 8a18a6c1dea7cce6669d0eeb4230e85aa88d8e44 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Fri, 23 Nov 2018 17:03:58 +0800
 Subject: [PATCH 02/11] run_program support timeout
@@ -7,14 +7,14 @@
 
 Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
 ---
- blivet/util.py | 70 ++++++++++++++++++++++++++++++++++------------------------
+ blivet/util.py | 70 +++++++++++++++++++++++++++++---------------------
  1 file changed, 41 insertions(+), 29 deletions(-)
 
 diff --git a/blivet/util.py b/blivet/util.py
-index 4eac8b9..4f05076 100644
+index f8a8f88..a5da7b6 100644
 --- a/blivet/util.py
 +++ b/blivet/util.py
-@@ -158,6 +158,30 @@ class Path(str):
+@@ -171,6 +171,30 @@ class Path(str):
      def __hash__(self):
          return self._path.__hash__()
  
@@ -45,7 +45,7 @@
  
  def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=False, binary_output=False):
      if env_prune is None:
-@@ -180,35 +204,23 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
+@@ -193,35 +217,23 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
              stderr_dir = subprocess.STDOUT
          else:
              stderr_dir = subprocess.PIPE
@@ -98,6 +98,3 @@
  
  
  def run_program(*args, **kwargs):
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch
index 861b2cd..8ab65a3 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0003-support-infinit-timeout.patch
@@ -1,4 +1,4 @@
-From 5d5436dfa3bdde7b4e87ce5a40cbc724199847d6 Mon Sep 17 00:00:00 2001
+From 112b825541f498762f373cfc9918e444dda74095 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Mon, 8 May 2017 16:18:02 +0800
 Subject: [PATCH 03/11] support infinit timeout
@@ -11,10 +11,10 @@
  1 file changed, 8 insertions(+), 4 deletions(-)
 
 diff --git a/blivet/util.py b/blivet/util.py
-index 4f05076..7e89949 100644
+index a5da7b6..58117ae 100644
 --- a/blivet/util.py
 +++ b/blivet/util.py
-@@ -158,6 +158,7 @@ class Path(str):
+@@ -171,6 +171,7 @@ class Path(str):
      def __hash__(self):
          return self._path.__hash__()
  
@@ -22,7 +22,7 @@
  def timeout_command(argv, timeout, *args, **kwargs):
      """call shell-command and either return its output or kill it
      if it doesn't normally exit within timeout seconds and return None"""
-@@ -169,7 +170,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
+@@ -182,7 +183,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
          while proc.poll() is None:
              time.sleep(0.1)
              now = datetime.datetime.now()
@@ -31,7 +31,7 @@
                  os.kill(proc.pid, signal.SIGKILL)
                  os.waitpid(-1, os.WNOHANG)
                  program_log.debug("%d seconds timeout" % timeout)
-@@ -183,7 +184,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
+@@ -196,7 +197,7 @@ def timeout_command(argv, timeout, *args, **kwargs):
      program_log.debug("Return code: %d", proc.returncode)
      return (proc.returncode, proc.stdout.read())
  
@@ -40,7 +40,7 @@
      if env_prune is None:
          env_prune = []
  
-@@ -192,7 +193,10 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
+@@ -205,7 +206,10 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
              os.chroot(root)
  
      with program_log_lock:  # pylint: disable=not-context-manager
@@ -52,7 +52,7 @@
  
          env = os.environ.copy()
          env.update({"LC_ALL": "C",
-@@ -205,7 +209,7 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
+@@ -218,7 +222,7 @@ def _run_program(argv, root='/', stdin=None, env_prune=None, stderr_to_stdout=Fa
          else:
              stderr_dir = subprocess.PIPE
  
@@ -61,6 +61,3 @@
                                     stdin=stdin,
                                     stdout=subprocess.PIPE,
                                     stderr=stderr_dir,
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-fix-incorrect-timeout-while-system-time-changed.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-fix-incorrect-timeout-while-system-time-changed.patch
index 9c5d53b..795e4f1 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-fix-incorrect-timeout-while-system-time-changed.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0005-fix-incorrect-timeout-while-system-time-changed.patch
@@ -1,4 +1,4 @@
-From f783b9b00da5df176fcd7927b752f574ca6db319 Mon Sep 17 00:00:00 2001
+From c645c83628b2290855cbd225e13c038ab75a7f74 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Fri, 26 Aug 2016 02:02:49 -0400
 Subject: [PATCH 05/11] fix incorrect timeout while system time changed
@@ -22,10 +22,10 @@
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/blivet/util.py b/blivet/util.py
-index 7e89949..5571e73 100644
+index 58117ae..5bc5804 100644
 --- a/blivet/util.py
 +++ b/blivet/util.py
-@@ -163,14 +163,14 @@ def timeout_command(argv, timeout, *args, **kwargs):
+@@ -176,14 +176,14 @@ def timeout_command(argv, timeout, *args, **kwargs):
      """call shell-command and either return its output or kill it
      if it doesn't normally exit within timeout seconds and return None"""
      import subprocess, datetime, os, time, signal
@@ -43,6 +43,3 @@
                  os.kill(proc.pid, signal.SIGKILL)
                  os.waitpid(-1, os.WNOHANG)
                  program_log.debug("%d seconds timeout" % timeout)
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-tweak-btrfs-packages.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-tweak-btrfs-packages.patch
index 2e53a64..6c53f03 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-tweak-btrfs-packages.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0006-tweak-btrfs-packages.patch
@@ -1,7 +1,7 @@
-From 8932ae933f2b6acf5e98c9956beff69ae430eed2 Mon Sep 17 00:00:00 2001
+From b55b1023f8f1ad3121928eb9d0ee9902f5474752 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Mon, 8 May 2017 16:33:15 +0800
-Subject: [PATCH 06/11] tweak btrfs packages
+Subject: [PATCH] tweak btrfs packages
 
 In oe-cre/yocto, we name btrfs package with btrfs-tools,
 rather than btrfs-progs.
@@ -15,10 +15,10 @@
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/blivet/devices/btrfs.py b/blivet/devices/btrfs.py
-index cada940..7e4d4b8 100644
+index c446e7e..37c183e 100644
 --- a/blivet/devices/btrfs.py
 +++ b/blivet/devices/btrfs.py
-@@ -55,7 +55,7 @@ class BTRFSDevice(StorageDevice):
+@@ -58,7 +58,7 @@ class BTRFSDevice(StorageDevice):
  
      """ Base class for BTRFS volume and sub-volume devices. """
      _type = "btrfs"
@@ -28,10 +28,10 @@
  
      def __init__(self, *args, **kwargs):
 diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py
-index 81e367f..55e5d57 100644
+index 1e102b6..f16941e 100644
 --- a/blivet/formats/fs.py
 +++ b/blivet/formats/fs.py
-@@ -926,7 +926,7 @@ class BTRFS(FS):
+@@ -1050,7 +1050,7 @@ class BTRFS(FS):
      _formattable = True
      _linux_native = True
      _supported = True
@@ -40,6 +40,3 @@
      _min_size = Size("256 MiB")
      _max_size = Size("16 EiB")
      _mkfs_class = fsmkfs.BTRFSMkfs
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-invoking-mount-with-infinite-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-invoking-mount-with-infinite-timeout.patch
index b2606d7..809f4e1 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-invoking-mount-with-infinite-timeout.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0007-invoking-mount-with-infinite-timeout.patch
@@ -1,4 +1,4 @@
-From f53481dc4a56b8a996628733553e080bb0aafdd7 Mon Sep 17 00:00:00 2001
+From f159d71d742ace5640c7810bcc27365f8fde95a3 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Fri, 23 Nov 2018 17:07:22 +0800
 Subject: [PATCH 07/11] invoking mount with infinite timeout
@@ -14,10 +14,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/blivet/util.py b/blivet/util.py
-index 5571e73..02c8033 100644
+index 5bc5804..9de77e1 100644
 --- a/blivet/util.py
 +++ b/blivet/util.py
-@@ -258,7 +258,7 @@ def mount(device, mountpoint, fstype, options=None):
+@@ -271,7 +271,7 @@ def mount(device, mountpoint, fstype, options=None):
          makedirs(mountpoint)
  
      argv = ["mount", "-t", fstype, "-o", options, device, mountpoint]
@@ -26,6 +26,3 @@
  
  
  def umount(mountpoint):
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-use-oe-variable-to-replace-hardcoded-dir.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-use-oe-variable-to-replace-hardcoded-dir.patch
index 1e8bcac..d3ab8f8 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-use-oe-variable-to-replace-hardcoded-dir.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0008-use-oe-variable-to-replace-hardcoded-dir.patch
@@ -1,4 +1,4 @@
-From 12e2579333258d1a690f8718e91b0f217078e886 Mon Sep 17 00:00:00 2001
+From 6a85945c060154581f5a129a6a946258bf9333c4 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Mon, 8 May 2017 03:54:12 -0400
 Subject: [PATCH 08/11] use oe variable to replace hardcoded dir
@@ -15,10 +15,10 @@
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/setup.py b/setup.py
-index b745a79..b5b4258 100644
+index e6bb3f3..700085b 100644
 --- a/setup.py
 +++ b/setup.py
-@@ -61,10 +61,10 @@ class blivet_sdist(sdist):
+@@ -73,10 +73,10 @@ class blivet_sdist(sdist):
  
  
  data_files = [
@@ -33,6 +33,3 @@
  ]
  
  
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-invoking-mkfs-with-infinite-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-invoking-mkfs-with-infinite-timeout.patch
index c441acd..394a818 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-invoking-mkfs-with-infinite-timeout.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0010-invoking-mkfs-with-infinite-timeout.patch
@@ -1,4 +1,4 @@
-From 33844f6773a676bd57240954e402ae9a843663a4 Mon Sep 17 00:00:00 2001
+From abadd821acffd5dbc870f86dad3c3a6bf3f2f74f Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Fri, 16 Jun 2017 15:43:00 +0800
 Subject: [PATCH 10/11] invoking mkfs with infinite timeout
@@ -18,10 +18,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/blivet/tasks/fsmkfs.py b/blivet/tasks/fsmkfs.py
-index e4a6aaa8..9730f7e5 100644
+index e9daa9e..2174cc3 100644
 --- a/blivet/tasks/fsmkfs.py
 +++ b/blivet/tasks/fsmkfs.py
-@@ -203,7 +203,7 @@ class FSMkfs(task.BasicApplication, FSMkfsTask):
+@@ -207,7 +207,7 @@ class FSMkfs(task.BasicApplication, FSMkfsTask):
          options = options or []
          cmd = self._mkfs_command(options, label, set_uuid, nodiscard)
          try:
@@ -30,6 +30,3 @@
          except OSError as e:
              raise FSError(e)
  
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-dd-with-infinite-timeout.patch b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-dd-with-infinite-timeout.patch
index 13c2933..ea4cffa 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-dd-with-infinite-timeout.patch
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet/0011-invoking-dd-with-infinite-timeout.patch
@@ -1,7 +1,7 @@
-From 21ca2b859a49e96a230d55a7866dfc7ed5d1366c Mon Sep 17 00:00:00 2001
+From 5ee527fab06f9d33b162a6cd0c068d7b3ac2ecb0 Mon Sep 17 00:00:00 2001
 From: Hongxu Jia <hongxu.jia@windriver.com>
 Date: Tue, 6 Mar 2018 17:28:56 +0800
-Subject: [PATCH 11/11] invoking dd with infinite timeout
+Subject: [PATCH] invoking dd with infinite timeout
 
 This large timeout is needed when running on machines with
 lots of disks, or with slow disks.
@@ -14,10 +14,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/blivet/devices/partition.py b/blivet/devices/partition.py
-index 623e1c9..141d8ad 100644
+index 2d67be8..a4cf9a0 100644
 --- a/blivet/devices/partition.py
 +++ b/blivet/devices/partition.py
-@@ -618,7 +618,7 @@ class PartitionDevice(StorageDevice):
+@@ -677,7 +677,7 @@ class PartitionDevice(StorageDevice):
          cmd = ["dd", "if=/dev/zero", "of=%s" % device, "bs=%d" % bs,
                 "seek=%d" % start, "count=%d" % count]
          try:
@@ -26,6 +26,3 @@
          except OSError as e:
              log.error(str(e))
          finally:
--- 
-2.7.4
-
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.8.2.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.8.2.bb
deleted file mode 100644
index 52b3aa7..0000000
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.8.2.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-DESCRIPTION = "A python module for system storage configuration"
-HOMEPAGE = "http://fedoraproject.org/wiki/blivet"
-LICENSE = "LGPL-2.0-or-later"
-SECTION = "devel/python"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI += "\
-           file://0002-run_program-support-timeout.patch \
-           file://0003-support-infinit-timeout.patch \
-           file://0005-fix-incorrect-timeout-while-system-time-changed.patch \
-           file://0006-tweak-btrfs-packages.patch \
-           file://0007-invoking-mount-with-infinite-timeout.patch \
-           file://0008-use-oe-variable-to-replace-hardcoded-dir.patch \
-           file://0009-invoking-fsck-with-infinite-timeout.patch \
-           file://0010-invoking-mkfs-with-infinite-timeout.patch \
-           file://0011-invoking-dd-with-infinite-timeout.patch \
-"
-SRC_URI[sha256sum] = "88d1500c76c4660aec7da9e9aa54f7f574546571b52c07a67e1417883c2cb25b"
-
-inherit pypi features_check systemd setuptools3_legacy
-
-REQUIRED_DISTRO_FEATURES = "systemd"
-
-RDEPENDS:${PN} += "python3-pykickstart python3-pyudev \
-                   parted python3-pyparted multipath-tools \
-                   lsof cryptsetup libblockdev \
-                   libbytesize \
-"
-
-FILES:${PN} += " \
-    ${datadir}/dbus-1/system-services \
-"
-
-SYSTEMD_AUTO_ENABLE = "disable"
-SYSTEMD_SERVICE:${PN} = "blivet.service"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.9.2.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.9.2.bb
new file mode 100644
index 0000000..f0ce981
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivet_3.9.2.bb
@@ -0,0 +1,36 @@
+DESCRIPTION = "A python module for system storage configuration"
+HOMEPAGE = "http://fedoraproject.org/wiki/blivet"
+LICENSE = "LGPL-2.0-or-later"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI += "\
+           file://0002-run_program-support-timeout.patch \
+           file://0003-support-infinit-timeout.patch \
+           file://0005-fix-incorrect-timeout-while-system-time-changed.patch \
+           file://0006-tweak-btrfs-packages.patch \
+           file://0007-invoking-mount-with-infinite-timeout.patch \
+           file://0008-use-oe-variable-to-replace-hardcoded-dir.patch \
+           file://0009-invoking-fsck-with-infinite-timeout.patch \
+           file://0010-invoking-mkfs-with-infinite-timeout.patch \
+           file://0011-invoking-dd-with-infinite-timeout.patch \
+"
+SRC_URI[sha256sum] = "9d97e37ebba01db28a1e6155cbd71c54fb55e9c2be5921982dc85bed316d8cfe"
+
+inherit pypi features_check systemd setuptools3_legacy
+
+REQUIRED_DISTRO_FEATURES = "systemd"
+
+RDEPENDS:${PN} += "python3-pykickstart python3-pyudev \
+                   parted python3-pyparted multipath-tools \
+                   lsof cryptsetup libblockdev \
+                   libbytesize \
+"
+
+FILES:${PN} += " \
+    ${datadir}/dbus-1/system-services \
+"
+
+SYSTEMD_AUTO_ENABLE = "disable"
+SYSTEMD_SERVICE:${PN} = "blivet.service"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.4.2.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.4.2.bb
deleted file mode 100644
index b6e04e0..0000000
--- a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.4.2.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-DESCRIPTION = "GUI tool for storage configuration using blivet library"
-HOMEPAGE = "https://github.com/rhinstaller/blivet-gui"
-LICENSE = "GPL-2.0-or-later"
-SECTION = "devel/python"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-SRC_URI = "git://github.com/storaged-project/blivet-gui.git;branch=main;protocol=https"
-SRCREV = "9b6a83a7aef546ddacafcc656984c9bbed67a8ec"
-
-S = "${WORKDIR}/git"
-
-inherit features_check setuptools3
-REQUIRED_DISTRO_FEATURES = "x11 systemd gobject-introspection-data"
-
-PIP_INSTALL_PACKAGE = "blivet_gui"
-
-RDEPENDS:${PN} = "python3-pygobject python3 \
-                  python3-blivet gtk+3  \
-                  python3-pid libreport \
-"
-
-FILES:${PN} += "${datadir}/*"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.5.0.bb b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.5.0.bb
new file mode 100644
index 0000000..124f36c
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python-blivet/python3-blivetgui_2.5.0.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "GUI tool for storage configuration using blivet library"
+HOMEPAGE = "https://github.com/rhinstaller/blivet-gui"
+LICENSE = "GPL-2.0-or-later"
+SECTION = "devel/python"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/storaged-project/blivet-gui.git;branch=main;protocol=https"
+SRCREV = "626b44610a30ad26734dd20642538caab5a9178a"
+
+S = "${WORKDIR}/git"
+
+inherit features_check setuptools3
+REQUIRED_DISTRO_FEATURES = "x11 systemd gobject-introspection-data"
+
+RDEPENDS:${PN} = "python3-pygobject python3 \
+                  python3-blivet gtk+3  \
+                  python3-pid libreport \
+"
+
+FILES:${PN} += "${datadir}/*"
diff --git a/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb b/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb
index aba1d8f..489733c 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-cson/python3-cson_git.bb
@@ -18,8 +18,6 @@
 
 inherit setuptools3
 
-PIP_INSTALL_PACKAGE = "python_cson"
-
 do_configure:prepend() {
     echo "__version__=${PV}" > ${S}/version.py
 }
diff --git a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.48.bb b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.48.bb
index 3c6c478..953068f 100644
--- a/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.48.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python-pykickstart/python3-pykickstart_3.48.bb
@@ -23,5 +23,3 @@
 UPSTREAM_CHECK_GITTAGREGEX = "r(?P<pver>\d+(\.\d+)+(-\d+)*)"
 
 inherit setuptools3
-PIP_INSTALL_PACKAGE = "pykickstart"
-PIP_INSTALL_DIST_PATH = "${S}/dist"
diff --git a/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker/run-ptest b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker/run-ptest
new file mode 100644
index 0000000..8d2017d
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+pytest --automake
diff --git a/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.8.2.bb b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.8.2.bb
index 69578ba..c45a3fc 100644
--- a/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.8.2.bb
+++ b/meta-openembedded/meta-python/recipes-extended/python3-portalocker/python3-portalocker_2.8.2.bb
@@ -8,11 +8,29 @@
 
 DEPENDS += "python3-setuptools-scm-native"
 
-inherit pypi python_setuptools_build_meta
+inherit pypi python_setuptools_build_meta ptest
 
-BBCLASSEXTEND = "native nativesdk"
+SRC_URI += " \
+	file://run-ptest \
+"
+
+RDEPENDS:${PN}-ptest += " \
+	python3-multiprocessing \
+	python3-pytest \
+	python3-redis \
+	python3-unittest-automake-output \
+	redis \
+"
+
+do_install_ptest() {
+	install -d ${D}${PTEST_PATH}/tests
+	cp -rf ${S}/portalocker_tests/* ${D}${PTEST_PATH}/tests/
+	rm -rf ${D}${PTEST_PATH}/tests/test_combined.py
+}
 
 RDEPENDS:${PN} += " \
-        python3-fcntl \
-        python3-logging \
+	python3-fcntl \
+	python3-logging \
 "
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.6.2.bb b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.6.2.bb
deleted file mode 100644
index f607de7..0000000
--- a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.6.2.bb
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "Python WBEM Client and Provider Interface"
-DESCRIPTION = "\
-A Python library for making CIM (Common Information Model) operations over \
-HTTP using the WBEM CIM-XML protocol. It is based on the idea that a good \
-WBEM client should be easy to use and not necessarily require a large amount \
-of programming knowledge. It is suitable for a large range of tasks from \
-simply poking around to writing web and GUI applications. \
-\
-WBEM, or Web Based Enterprise Management is a manageability protocol, like \
-SNMP, standardised by the Distributed Management Task Force (DMTF) available \
-at http://www.dmtf.org/standards/wbem. \
-\
-It also provides a Python provider interface, and is the fastest and easiest \
-way to write providers on the planet."
-HOMEPAGE = "http://pywbem.github.io"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=fbc093901857fcd118f065f900982c24"
-
-SRC_URI[sha256sum] = "26e8179bc17e3176b4cd576b9f5a7730f848d51be0513768fd7f31fd9b270a96"
-
-inherit pypi setuptools3 update-alternatives
-
-DEPENDS += " \
-    python3-ply-native \
-    python3-pyyaml-native \
-    python3-six-native \
-    python3-wheel-native \
-"
-
-RDEPENDS:${PN} += "\
-    python3-datetime \
-    python3-io \
-    python3-logging \
-    python3-netclient \
-    python3-nocasedict \
-    python3-nocaselist \
-    python3-ply \
-    python3-pyyaml \
-    python3-requests \
-    python3-six \
-    python3-stringold \
-    python3-threading \
-    python3-unixadmin \
-    python3-xml \
-    python3-yamlloader \
-"
-
-ALTERNATIVE:${PN} = "mof_compiler"
-ALTERNATIVE_TARGET[mof_compiler] = "${bindir}/mof_compiler"
-
-ALTERNATIVE_PRIORITY = "60"
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.6.3.bb b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.6.3.bb
new file mode 100644
index 0000000..7d1ff28
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/pywbem/python3-pywbem_1.6.3.bb
@@ -0,0 +1,51 @@
+SUMMARY = "Python WBEM Client and Provider Interface"
+DESCRIPTION = "\
+A Python library for making CIM (Common Information Model) operations over \
+HTTP using the WBEM CIM-XML protocol. It is based on the idea that a good \
+WBEM client should be easy to use and not necessarily require a large amount \
+of programming knowledge. It is suitable for a large range of tasks from \
+simply poking around to writing web and GUI applications. \
+\
+WBEM, or Web Based Enterprise Management is a manageability protocol, like \
+SNMP, standardised by the Distributed Management Task Force (DMTF) available \
+at http://www.dmtf.org/standards/wbem. \
+\
+It also provides a Python provider interface, and is the fastest and easiest \
+way to write providers on the planet."
+HOMEPAGE = "http://pywbem.github.io"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=fbc093901857fcd118f065f900982c24"
+
+SRC_URI[sha256sum] = "78df30dee98c508620b599b8951f322a81c6c0a9d7b78ffe5e017b9417cd97b9"
+
+inherit pypi setuptools3 update-alternatives
+
+DEPENDS += " \
+    python3-ply-native \
+    python3-pyyaml-native \
+    python3-six-native \
+    python3-wheel-native \
+"
+
+RDEPENDS:${PN} += "\
+    python3-datetime \
+    python3-io \
+    python3-logging \
+    python3-netclient \
+    python3-nocasedict \
+    python3-nocaselist \
+    python3-ply \
+    python3-pyyaml \
+    python3-requests \
+    python3-six \
+    python3-stringold \
+    python3-threading \
+    python3-unixadmin \
+    python3-xml \
+    python3-yamlloader \
+"
+
+ALTERNATIVE:${PN} = "mof_compiler"
+ALTERNATIVE_TARGET[mof_compiler] = "${bindir}/mof_compiler"
+
+ALTERNATIVE_PRIORITY = "60"
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.0.bb b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.0.bb
deleted file mode 100644
index 89c05c2..0000000
--- a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "A set of tools using pywbem"
-DESCRIPTION = "A set of tools using pywbem to communicate with WBEM servers"
-HOMEPAGE = "https://pywbemtools.readthedocs.io/en/stable/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
-
-SRC_URI[sha256sum] = "921fb57ea2ae3ae2806e18895bb0457697f27221b345c8b05afa4cb304a7f939"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN}:class-target += "\
-    python3-ply \
-    python3-pyyaml \
-    python3-six \
-    python3-pywbem \
-    python3-click \
-    python3-requests \
-    python3-prompt-toolkit \
-    python3-mock \
-    python3-packaging \
-    python3-nocasedict \
-    python3-yamlloader \
-    python3-click-repl \
-    python3-click-spinner \
-    python3-asciitree \
-    python3-tabulate \
-    python3-pydicti \
-    python3-nocaselist \
-    python3-custom-inherit \
-"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.1.bb b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.1.bb
new file mode 100644
index 0000000..c0a5368
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.2.1.bb
@@ -0,0 +1,32 @@
+SUMMARY = "A set of tools using pywbem"
+DESCRIPTION = "A set of tools using pywbem to communicate with WBEM servers"
+HOMEPAGE = "https://pywbemtools.readthedocs.io/en/stable/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
+
+SRC_URI[sha256sum] = "d2ad6c383490ddb3bbb0f737d23a07c7e8c345df65f8309bc554d8455cc913dc"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN}:class-target += "\
+    python3-ply \
+    python3-pyyaml \
+    python3-six \
+    python3-pywbem \
+    python3-click \
+    python3-requests \
+    python3-prompt-toolkit \
+    python3-mock \
+    python3-packaging \
+    python3-nocasedict \
+    python3-yamlloader \
+    python3-click-repl \
+    python3-click-spinner \
+    python3-asciitree \
+    python3-tabulate \
+    python3-pydicti \
+    python3-nocaselist \
+    python3-custom-inherit \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/meta-openembedded/meta-webserver/conf/layer.conf b/meta-openembedded/meta-webserver/conf/layer.conf
index 066165b..c0896f1 100644
--- a/meta-openembedded/meta-webserver/conf/layer.conf
+++ b/meta-openembedded/meta-webserver/conf/layer.conf
@@ -17,7 +17,7 @@
 
 LAYERDEPENDS_webserver = "core openembedded-layer"
 
-LAYERSERIES_COMPAT_webserver = "nanbield"
+LAYERSERIES_COMPAT_webserver = "scarthgap"
 
 LICENSE_PATH += "${LAYERDIR}/licenses"
 
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache-mod/mod-dnssd_0.6.bb b/meta-openembedded/meta-webserver/recipes-httpd/apache-mod/mod-dnssd_0.6.bb
new file mode 100644
index 0000000..5fac0a6
--- /dev/null
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache-mod/mod-dnssd_0.6.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Avahi Module for Apache2."
+HOMEPAGE = "https://0pointer.de/lennart/projects/mod_dnssd/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+DEPENDS = "apache2 avahi"
+
+SRC_URI = "git://git.0pointer.de/mod_dnssd;protocol=git;branch=master"
+SRCREV = "be2fb9f6158f800685de7a1bc01c39b6cf1fa12c"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF = "--disable-lynx"
+
+inherit autotools pkgconfig
+
+do_install() {
+	install -Dm755 ${S}/src/.libs/mod_dnssd.so ${D}${libexecdir}/apache2/modules/mod_dnssd.so
+}
+
diff --git a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.58.bb b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.58.bb
index e4f7e1c..a6cdfd1 100644
--- a/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.58.bb
+++ b/meta-openembedded/meta-webserver/recipes-httpd/apache2/apache2_2.4.58.bb
@@ -63,6 +63,7 @@
     --with-berkeley-db=no \
     --enable-info \
     --enable-rewrite \
+    --with-mpm=prefork \
     --enable-mpms-shared \
     ap_cv_void_ptr_lt_long=no \
     ac_cv_have_threadsafe_pollset=no \
diff --git a/meta-openembedded/meta-xfce/conf/layer.conf b/meta-openembedded/meta-xfce/conf/layer.conf
index aeaf961..944bd57 100644
--- a/meta-openembedded/meta-xfce/conf/layer.conf
+++ b/meta-openembedded/meta-xfce/conf/layer.conf
@@ -19,7 +19,7 @@
 LAYERDEPENDS_xfce-layer += "meta-python"
 LAYERDEPENDS_xfce-layer += "networking-layer"
 
-LAYERSERIES_COMPAT_xfce-layer = "nanbield"
+LAYERSERIES_COMPAT_xfce-layer = "scarthgap"
 
 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "\
   openzone->gdk-pixbuf \
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
index c56af6f..c4b7b34 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-base.bb
@@ -1,6 +1,5 @@
 SUMMARY = "All packages required for a base installation of XFCE"
 SECTION = "x11/wm"
-PR = "r5"
 
 # librsvg-gtk gets debian renamed to librsvg-2-gtk
 PACKAGE_ARCH = "${TUNE_PKGARCH}"
diff --git a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
index 711059c..f2e04f7 100644
--- a/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
+++ b/meta-openembedded/meta-xfce/recipes-xfce/packagegroups/packagegroup-xfce-extended.bb
@@ -1,7 +1,6 @@
 SUMMARY = "All packages for full XFCE installation"
 SECTION = "x11/wm"
 
-PR = "r10"
 
 inherit packagegroup features_check
 
diff --git a/meta-raspberrypi/conf/machine/include/rpi-base.inc b/meta-raspberrypi/conf/machine/include/rpi-base.inc
index e36b460..a5fd1a4 100644
--- a/meta-raspberrypi/conf/machine/include/rpi-base.inc
+++ b/meta-raspberrypi/conf/machine/include/rpi-base.inc
@@ -31,6 +31,7 @@
     overlays/hifiberry-amp4pro.dtbo \
     overlays/hifiberry-dac.dtbo \
     overlays/hifiberry-dacplus.dtbo \
+    overlays/hifiberry-dacplusadc.dtbo \
     overlays/hifiberry-dacplusadcpro.dtbo \
     overlays/hifiberry-dacplusdsp.dtbo \
     overlays/hifiberry-dacplushd.dtbo \
@@ -69,23 +70,23 @@
     "
 
 RPI_KERNEL_DEVICETREE ?= " \
-    bcm2708-rpi-zero.dtb \
-    bcm2708-rpi-zero-w.dtb \
-    bcm2708-rpi-b.dtb \
-    bcm2708-rpi-b-rev1.dtb \
-    bcm2708-rpi-b-plus.dtb \
-    bcm2709-rpi-2-b.dtb \
-    bcm2710-rpi-2-b.dtb \
-    bcm2710-rpi-3-b.dtb \
-    bcm2710-rpi-3-b-plus.dtb \
-    bcm2710-rpi-zero-2.dtb \
-    bcm2711-rpi-4-b.dtb \
-    bcm2711-rpi-400.dtb \
-    bcm2708-rpi-cm.dtb \
-    bcm2710-rpi-cm3.dtb \
-    bcm2711-rpi-cm4.dtb \
-    bcm2711-rpi-cm4s.dtb \
-    bcm2712-rpi-5-b.dtb \
+    broadcom/bcm2708-rpi-zero.dtb \
+    broadcom/bcm2708-rpi-zero-w.dtb \
+    broadcom/bcm2708-rpi-b.dtb \
+    broadcom/bcm2708-rpi-b-rev1.dtb \
+    broadcom/bcm2708-rpi-b-plus.dtb \
+    broadcom/bcm2709-rpi-2-b.dtb \
+    broadcom/bcm2710-rpi-2-b.dtb \
+    broadcom/bcm2710-rpi-3-b.dtb \
+    broadcom/bcm2710-rpi-3-b-plus.dtb \
+    broadcom/bcm2710-rpi-zero-2.dtb \
+    broadcom/bcm2711-rpi-4-b.dtb \
+    broadcom/bcm2711-rpi-400.dtb \
+    broadcom/bcm2708-rpi-cm.dtb \
+    broadcom/bcm2710-rpi-cm3.dtb \
+    broadcom/bcm2711-rpi-cm4.dtb \
+    broadcom/bcm2711-rpi-cm4s.dtb \
+    broadcom/bcm2712-rpi-5-b.dtb \
     "
 
 KERNEL_DEVICETREE ??= " \
diff --git a/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc b/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
index 2f76db9..6def274 100644
--- a/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
+++ b/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc
@@ -1,4 +1,4 @@
 # RaspberryPi BSP default versions
 
-PREFERRED_VERSION_linux-raspberrypi ??= "6.1.%"
+PREFERRED_VERSION_linux-raspberrypi ??= "6.6.%"
 PREFERRED_VERSION_linux-raspberrypi-v7 ??= "${PREFERRED_VERSION_linux-raspberrypi}"
diff --git a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb
index f1248ee..b04f24b 100644
--- a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb
+++ b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb
@@ -5,7 +5,16 @@
 
 inherit deploy nopackages
 
-include recipes-bsp/common/raspberrypi-firmware.inc
+RPIFW_DATE ?= "20240319"
+SRCREV = "9f24f4bc2bdd07ffd158cfbb4bce88a2efc4c1f5"
+SHORTREV = "${@d.getVar("SRCREV", False).__str__()[:7]}"
+RPIFW_SRC_URI ?= "https://api.github.com/repos/raspberrypi/firmware/tarball/9f24f4bc2bdd07ffd158cfbb4bce88a2efc4c1f5;downloadfilename=raspberrypi-firmware-${SHORTREV}.tar.gz"
+RPIFW_S ?= "${WORKDIR}/raspberrypi-firmware-${SHORTREV}"
+
+SRC_URI = "${RPIFW_SRC_URI}"
+SRC_URI[sha256sum] = "4b436f8946b139c6a1202375ef55d4848e3bcd8c1a9cb47000e06d7ecec828f7"
+
+PV = "${RPIFW_DATE}"
 
 INHIBIT_DEFAULT_DEPS = "1"
 
diff --git a/meta-raspberrypi/recipes-graphics/userland/files/0025-CMakeLists.txt-.pc-respect-CMAKE_INSTALL_LIBDIR.patch b/meta-raspberrypi/recipes-graphics/userland/files/0025-CMakeLists.txt-.pc-respect-CMAKE_INSTALL_LIBDIR.patch
new file mode 100644
index 0000000..6f4c722
--- /dev/null
+++ b/meta-raspberrypi/recipes-graphics/userland/files/0025-CMakeLists.txt-.pc-respect-CMAKE_INSTALL_LIBDIR.patch
@@ -0,0 +1,725 @@
+From 8f7fba136391e2020cd0fc9dca76932d3faa21eb Mon Sep 17 00:00:00 2001
+From: Martin Jansa <martin.jansa@gmail.com>
+Date: Fri, 8 Mar 2024 16:29:22 +0100
+Subject: [PATCH] CMakeLists.txt, *.pc: respect CMAKE_INSTALL_LIBDIR
+
+* and CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_INCLUDEDIR as well
+* fixes installation paths with multilib
+  lib32-userland fails with:
+
+ERROR: QA Issue: lib32-userland: Files/directories were installed but not shipped in any package:
+  /usr/lib/libbrcmEGL.so
+  /usr/lib/libvchiq_arm.so
+...
+  /usr/lib/pkgconfig/wayland-egl.pc
+Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
+lib32-userland: 66 installed and not shipped files. [installed-vs-shipped]
+
+Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
+---
+Upstream-Status: Pending
+
+ CMakeLists.txt                                |  2 +-
+ containers/CMakeLists.txt                     |  2 +-
+ containers/test/CMakeLists.txt                | 24 +++++++++----------
+ helpers/dtoverlay/CMakeLists.txt              |  2 +-
+ .../linux/apps/dtmerge/CMakeLists.txt         |  2 +-
+ .../linux/apps/dtoverlay/CMakeLists.txt       |  6 ++---
+ .../linux/apps/gencmd/CMakeLists.txt          |  2 +-
+ .../apps/hello_pi/hello_audio/CMakeLists.txt  |  2 +-
+ .../hello_pi/hello_dispmanx/CMakeLists.txt    |  2 +-
+ .../apps/hello_pi/hello_encode/CMakeLists.txt |  2 +-
+ .../apps/hello_pi/hello_font/CMakeLists.txt   |  2 +-
+ .../apps/hello_pi/hello_jpeg/CMakeLists.txt   |  2 +-
+ .../apps/hello_pi/hello_teapot/CMakeLists.txt |  2 +-
+ .../apps/hello_pi/hello_tiger/CMakeLists.txt  |  2 +-
+ .../hello_pi/hello_triangle/CMakeLists.txt    |  2 +-
+ .../hello_pi/hello_triangle2/CMakeLists.txt   |  2 +-
+ .../apps/hello_pi/hello_video/CMakeLists.txt  |  2 +-
+ .../hello_pi/hello_videocube/CMakeLists.txt   |  2 +-
+ .../hello_pi/hello_wayland/CMakeLists.txt     |  2 +-
+ .../apps/hello_pi/hello_world/CMakeLists.txt  |  2 +-
+ .../linux/apps/raspicam/CMakeLists.txt        |  2 +-
+ .../linux/apps/smem/CMakeLists.txt            |  2 +-
+ .../linux/apps/tvservice/CMakeLists.txt       |  2 +-
+ .../linux/apps/vcmailbox/CMakeLists.txt       |  2 +-
+ .../linux/libs/bcm_host/CMakeLists.txt        |  2 +-
+ .../linux/libs/debug_sym/CMakeLists.txt       |  6 ++---
+ .../linux/libs/sm/CMakeLists.txt              |  4 ++--
+ interface/khronos/CMakeLists.txt              | 10 ++++----
+ interface/mmal/CMakeLists.txt                 |  4 ++--
+ interface/mmal/components/CMakeLists.txt      |  2 +-
+ interface/mmal/core/CMakeLists.txt            |  4 ++--
+ interface/mmal/util/CMakeLists.txt            |  4 ++--
+ interface/mmal/vc/CMakeLists.txt              |  6 ++---
+ interface/vchiq_arm/CMakeLists.txt            |  4 ++--
+ interface/vcos/CMakeLists.txt                 |  2 +-
+ interface/vcos/generic/CMakeLists.txt         |  2 +-
+ interface/vcos/pthreads/CMakeLists.txt        |  4 ++--
+ interface/vmcs_host/CMakeLists.txt            |  2 +-
+ makefiles/cmake/vmcs.cmake                    |  2 +-
+ middleware/openmaxil/CMakeLists.txt           |  2 +-
+ pkgconfig/bcm_host.pc.in                      |  2 +-
+ pkgconfig/brcmegl.pc.in                       |  2 +-
+ pkgconfig/brcmglesv2.pc.in                    |  2 +-
+ pkgconfig/brcmvg.pc.in                        |  2 +-
+ pkgconfig/mmal.pc.in                          |  2 +-
+ pkgconfig/vcsm.pc.in                          |  2 +-
+ 46 files changed, 73 insertions(+), 73 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3e3c90e..0bb54b7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -136,7 +136,7 @@ if(PKG_CONFIG_FOUND)
+ 	foreach(PCFILE bcm_host.pc brcmegl.pc brcmglesv2.pc brcmvg.pc vcsm.pc mmal.pc openmaxil.pc)
+ 		configure_file("pkgconfig/${PCFILE}.in" "${PCFILE}" @ONLY)
+ 		install(FILES       "${CMAKE_CURRENT_BINARY_DIR}/${PCFILE}"
+-			DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
++			DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ 	endforeach()
+ endif()
+ # Remove cache entry, if one added by command line
+diff --git a/containers/CMakeLists.txt b/containers/CMakeLists.txt
+index 5570038..6c3d39c 100644
+--- a/containers/CMakeLists.txt
++++ b/containers/CMakeLists.txt
+@@ -66,7 +66,7 @@ set(packetizers_SRCS ${packetizers_SRCS} ${SOURCE_DIR}/h264/avc1_packetizer.c)
+ 
+ add_library(containers ${LIBRARY_TYPE} ${core_SRCS} ${io_SRCS} ${net_SRCS} ${packetizers_SRCS})
+ target_link_libraries(containers vcos)
+-install(TARGETS containers DESTINATION lib)
++install(TARGETS containers DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+ set(container_readers)
+ set(container_writers)
+diff --git a/containers/test/CMakeLists.txt b/containers/test/CMakeLists.txt
+index 7d36352..832ad0f 100644
+--- a/containers/test/CMakeLists.txt
++++ b/containers/test/CMakeLists.txt
+@@ -1,17 +1,17 @@
+ # Generate test application
+ add_executable(containers_test test.c)
+ target_link_libraries(containers_test -Wl,--no-whole-archive containers)
+-install(TARGETS containers_test DESTINATION bin)
++install(TARGETS containers_test DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ # Generate test application
+ add_executable(containers_check_frame_int check_frame_int.c)
+ target_link_libraries(containers_check_frame_int -Wl,--no-whole-archive containers)
+-install(TARGETS containers_check_frame_int DESTINATION bin)
++install(TARGETS containers_check_frame_int DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ # Generate autotest application
+ #add_executable(containers_autotest autotest.cpp crc_32.c)
+ #target_link_libraries(containers_autotest -Wl,--no-whole-archive containers})
+-#install(TARGETS containers_autotest DESTINATION bin)
++#install(TARGETS containers_autotest DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ # Helper code to provide non-blocking console input
+ if (WIN32)
+@@ -28,39 +28,39 @@ add_dependencies(containers_test containers_test_extra)
+ # Generate net test applications
+ add_executable(containers_stream_client stream_client.c ${NB_IO_SOURCE})
+ target_link_libraries(containers_stream_client containers)
+-install(TARGETS containers_stream_client DESTINATION bin)
++install(TARGETS containers_stream_client DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ add_executable(containers_stream_server stream_server.c)
+ target_link_libraries(containers_stream_server containers)
+-install(TARGETS containers_stream_server DESTINATION bin)
++install(TARGETS containers_stream_server DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ add_executable(containers_datagram_sender datagram_sender.c)
+ target_link_libraries(containers_datagram_sender containers)
+-install(TARGETS containers_datagram_sender DESTINATION bin)
++install(TARGETS containers_datagram_sender DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ add_executable(containers_datagram_receiver datagram_receiver.c)
+ target_link_libraries(containers_datagram_receiver containers)
+-install(TARGETS containers_datagram_receiver DESTINATION bin)
++install(TARGETS containers_datagram_receiver DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ add_executable(containers_rtp_decoder rtp_decoder.c ${NB_IO_SOURCE})
+ target_link_libraries(containers_rtp_decoder containers)
+-install(TARGETS containers_rtp_decoder DESTINATION bin)
++install(TARGETS containers_rtp_decoder DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ # Generate URI test application
+ add_executable(containers_test_uri test_uri.c)
+ target_link_libraries(containers_test_uri containers)
+-install(TARGETS containers_test_uri DESTINATION bin)
++install(TARGETS containers_test_uri DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ # Generate URI pipe application
+ add_executable(containers_uri_pipe uri_pipe.c ${NB_IO_SOURCE})
+ target_link_libraries(containers_uri_pipe containers)
+-install(TARGETS containers_uri_pipe DESTINATION bin)
++install(TARGETS containers_uri_pipe DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ # Generate bit stream test application
+ add_executable(containers_test_bits test_bits.c)
+ target_link_libraries(containers_test_bits containers)
+-install(TARGETS containers_test_bits DESTINATION bin)
++install(TARGETS containers_test_bits DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+ # Generate packet file dump application
+ add_executable(containers_dump_pktfile dump_pktfile.c)
+-install(TARGETS containers_dump_pktfile DESTINATION bin)
++install(TARGETS containers_dump_pktfile DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/helpers/dtoverlay/CMakeLists.txt b/helpers/dtoverlay/CMakeLists.txt
+index b3bd30f..7e83780 100644
+--- a/helpers/dtoverlay/CMakeLists.txt
++++ b/helpers/dtoverlay/CMakeLists.txt
+@@ -22,4 +22,4 @@ add_library (dtovl ${SHARED}
+ 
+ target_link_libraries(dtovl fdt)
+ 
+-install (TARGETS dtovl DESTINATION lib)
++install (TARGETS dtovl DESTINATION ${CMAKE_INSTALL_LIBDIR})
+diff --git a/host_applications/linux/apps/dtmerge/CMakeLists.txt b/host_applications/linux/apps/dtmerge/CMakeLists.txt
+index d3f7e36..daa91e5 100755
+--- a/host_applications/linux/apps/dtmerge/CMakeLists.txt
++++ b/host_applications/linux/apps/dtmerge/CMakeLists.txt
+@@ -17,5 +17,5 @@ include_directories (
+ add_executable(dtmerge dtmerge.c)
+ target_link_libraries(dtmerge dtovl)
+ 
+-install(TARGETS dtmerge RUNTIME DESTINATION bin)
++install(TARGETS dtmerge RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES dtmerge.1 DESTINATION man/man1)
+diff --git a/host_applications/linux/apps/dtoverlay/CMakeLists.txt b/host_applications/linux/apps/dtoverlay/CMakeLists.txt
+index 97bcadc..238296d 100755
+--- a/host_applications/linux/apps/dtoverlay/CMakeLists.txt
++++ b/host_applications/linux/apps/dtoverlay/CMakeLists.txt
+@@ -16,12 +16,12 @@ include_directories (
+ 
+ add_executable(dtoverlay dtoverlay_main.c utils.c)
+ target_link_libraries(dtoverlay dtovl)
+-install(TARGETS dtoverlay RUNTIME DESTINATION bin)
++install(TARGETS dtoverlay RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES dtoverlay.1 DESTINATION man/man1)
+ 
+ add_custom_command(TARGET dtoverlay POST_BUILD COMMAND ln;-sf;dtoverlay;dtparam)
+-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtparam DESTINATION bin)
++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dtparam DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES dtparam.1 DESTINATION man/man1)
+ 
+ set(DTOVERLAY_SCRIPTS dtoverlay-pre dtoverlay-post)
+-install(PROGRAMS ${DTOVERLAY_SCRIPTS} DESTINATION bin)
++install(PROGRAMS ${DTOVERLAY_SCRIPTS} DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/gencmd/CMakeLists.txt b/host_applications/linux/apps/gencmd/CMakeLists.txt
+index 0c2c32a..fdd2f00 100644
+--- a/host_applications/linux/apps/gencmd/CMakeLists.txt
++++ b/host_applications/linux/apps/gencmd/CMakeLists.txt
+@@ -16,5 +16,5 @@ include_directories( ../../../..
+ 
+ add_executable(vcgencmd gencmd.c)
+ target_link_libraries(vcgencmd vcos vchiq_arm vchostif)
+-install(TARGETS vcgencmd RUNTIME DESTINATION bin)
++install(TARGETS vcgencmd RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES vcgencmd.1 DESTINATION man/man1)
+diff --git a/host_applications/linux/apps/hello_pi/hello_audio/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_audio/CMakeLists.txt
+index 03207c5..8f4d06c 100644
+--- a/host_applications/linux/apps/hello_pi/hello_audio/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_audio/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_dispmanx/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_dispmanx/CMakeLists.txt
+index 0471a1d..fd8b85e 100644
+--- a/host_applications/linux/apps/hello_pi/hello_dispmanx/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_dispmanx/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_encode/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_encode/CMakeLists.txt
+index 147623b..98a197a 100644
+--- a/host_applications/linux/apps/hello_pi/hello_encode/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_encode/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_font/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_font/CMakeLists.txt
+index 448d2cf..1d89f4c 100644
+--- a/host_applications/linux/apps/hello_pi/hello_font/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_font/CMakeLists.txt
+@@ -6,4 +6,4 @@ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ target_link_libraries(${EXEC} vgfont freetype z)
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_jpeg/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_jpeg/CMakeLists.txt
+index a56dda5..f611f8e 100644
+--- a/host_applications/linux/apps/hello_pi/hello_jpeg/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_jpeg/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_teapot/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_teapot/CMakeLists.txt
+index cdb8413..a60da3e 100644
+--- a/host_applications/linux/apps/hello_pi/hello_teapot/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_teapot/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_tiger/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_tiger/CMakeLists.txt
+index b253f3f..1104a8b 100644
+--- a/host_applications/linux/apps/hello_pi/hello_tiger/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_tiger/CMakeLists.txt
+@@ -6,4 +6,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_triangle/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_triangle/CMakeLists.txt
+index 4e8128e..4b738bb 100644
+--- a/host_applications/linux/apps/hello_pi/hello_triangle/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_triangle/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_triangle2/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_triangle2/CMakeLists.txt
+index 390980a..c8c534f 100644
+--- a/host_applications/linux/apps/hello_pi/hello_triangle2/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_triangle2/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_video/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_video/CMakeLists.txt
+index 42187af..6b15ca2 100644
+--- a/host_applications/linux/apps/hello_pi/hello_video/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_video/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_videocube/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_videocube/CMakeLists.txt
+index d7fb059..9612ffe 100644
+--- a/host_applications/linux/apps/hello_pi/hello_videocube/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_videocube/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt
+index 9a2f75c..9a468a6 100644
+--- a/host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_wayland/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS} -lwayland-client -lwayland-egl)
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/hello_pi/hello_world/CMakeLists.txt b/host_applications/linux/apps/hello_pi/hello_world/CMakeLists.txt
+index b0120fe..97d90f6 100644
+--- a/host_applications/linux/apps/hello_pi/hello_world/CMakeLists.txt
++++ b/host_applications/linux/apps/hello_pi/hello_world/CMakeLists.txt
+@@ -5,4 +5,4 @@ add_executable(${EXEC} ${SRCS})
+ target_link_libraries(${EXEC} ${HELLO_PI_LIBS})
+ 
+ install(TARGETS ${EXEC}
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/host_applications/linux/apps/raspicam/CMakeLists.txt b/host_applications/linux/apps/raspicam/CMakeLists.txt
+index f73a4d0..4a9cd88 100644
+--- a/host_applications/linux/apps/raspicam/CMakeLists.txt
++++ b/host_applications/linux/apps/raspicam/CMakeLists.txt
+@@ -66,6 +66,6 @@ target_link_libraries(raspiyuv   ${MMAL_LIBS} vcos bcm_host m)
+ target_link_libraries(raspivid   ${MMAL_LIBS} vcos bcm_host m)
+ target_link_libraries(raspividyuv   ${MMAL_LIBS} vcos bcm_host m)
+ 
+-install(TARGETS raspistill raspiyuv raspivid raspividyuv RUNTIME DESTINATION bin)
++install(TARGETS raspistill raspiyuv raspivid raspividyuv RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES raspistill.1 raspiyuv.1 raspivid.1 raspividyuv.1 DESTINATION man/man1)
+ install(FILES raspicam.7 DESTINATION man/man7)
+diff --git a/host_applications/linux/apps/smem/CMakeLists.txt b/host_applications/linux/apps/smem/CMakeLists.txt
+index 0fa8328..60c9c61 100644
+--- a/host_applications/linux/apps/smem/CMakeLists.txt
++++ b/host_applications/linux/apps/smem/CMakeLists.txt
+@@ -16,5 +16,5 @@ include_directories (
+ add_executable(vcsmem smem.c)
+ target_link_libraries(vcsmem vcos vcsm vchostif)
+ 
+-install(TARGETS vcsmem RUNTIME DESTINATION bin)
++install(TARGETS vcsmem RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ 
+diff --git a/host_applications/linux/apps/tvservice/CMakeLists.txt b/host_applications/linux/apps/tvservice/CMakeLists.txt
+index 0190774..fad5a6b 100644
+--- a/host_applications/linux/apps/tvservice/CMakeLists.txt
++++ b/host_applications/linux/apps/tvservice/CMakeLists.txt
+@@ -3,5 +3,5 @@ add_executable(tvservice tvservice.c)
+ target_link_libraries(tvservice vchostif bcm_host)
+ 
+ install(TARGETS tvservice
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES tvservice.1 DESTINATION man/man1)
+diff --git a/host_applications/linux/apps/vcmailbox/CMakeLists.txt b/host_applications/linux/apps/vcmailbox/CMakeLists.txt
+index d153363..2731724 100644
+--- a/host_applications/linux/apps/vcmailbox/CMakeLists.txt
++++ b/host_applications/linux/apps/vcmailbox/CMakeLists.txt
+@@ -2,6 +2,6 @@ add_executable(vcmailbox vcmailbox.c)
+ target_link_libraries(vcmailbox vchostif)
+ 
+ install(TARGETS vcmailbox
+-        RUNTIME DESTINATION bin)
++        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES vcmailbox.1 DESTINATION man/man1)
+ install(FILES vcmailbox.7 raspiotp.7 raspirev.7 DESTINATION man/man7)
+diff --git a/host_applications/linux/libs/bcm_host/CMakeLists.txt b/host_applications/linux/libs/bcm_host/CMakeLists.txt
+index 7a4ab06..3614943 100644
+--- a/host_applications/linux/libs/bcm_host/CMakeLists.txt
++++ b/host_applications/linux/libs/bcm_host/CMakeLists.txt
+@@ -19,5 +19,5 @@ add_library(bcm_host ${SHARED} bcm_host.c)
+ 
+ target_link_libraries(bcm_host vcos vchostif)
+ 
+-install(TARGETS bcm_host DESTINATION lib)
++install(TARGETS bcm_host DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+diff --git a/host_applications/linux/libs/debug_sym/CMakeLists.txt b/host_applications/linux/libs/debug_sym/CMakeLists.txt
+index d437b99..37eb759 100644
+--- a/host_applications/linux/libs/debug_sym/CMakeLists.txt
++++ b/host_applications/linux/libs/debug_sym/CMakeLists.txt
+@@ -11,6 +11,6 @@ include_directories (
+ add_library(debug_sym ${SHARED} debug_sym.c)
+ add_library(debug_sym_static STATIC debug_sym.c)
+ 
+-install(TARGETS debug_sym DESTINATION lib)
+-install(TARGETS debug_sym_static DESTINATION lib)
+-install(FILES debug_sym.h DESTINATION include/interface/debug_sym)
++install(TARGETS debug_sym DESTINATION ${CMAKE_INSTALL_LIBDIR})
++install(TARGETS debug_sym_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
++install(FILES debug_sym.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/debug_sym)
+diff --git a/host_applications/linux/libs/sm/CMakeLists.txt b/host_applications/linux/libs/sm/CMakeLists.txt
+index 5ce5aca..84d8123 100644
+--- a/host_applications/linux/libs/sm/CMakeLists.txt
++++ b/host_applications/linux/libs/sm/CMakeLists.txt
+@@ -14,5 +14,5 @@ add_library(vcsm ${SHARED} user-vcsm.c)
+ 
+ target_link_libraries(vcsm vcos)
+ 
+-install(TARGETS vcsm DESTINATION lib)
+-install(FILES user-vcsm.h DESTINATION include/interface/vcsm)
++install(TARGETS vcsm DESTINATION ${CMAKE_INSTALL_LIBDIR})
++install(FILES user-vcsm.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/vcsm)
+diff --git a/interface/khronos/CMakeLists.txt b/interface/khronos/CMakeLists.txt
+index 95c0e11..00316a5 100644
+--- a/interface/khronos/CMakeLists.txt
++++ b/interface/khronos/CMakeLists.txt
+@@ -94,11 +94,11 @@ if (BUILD_WAYLAND)
+    )
+ 
+    add_library(wayland-egl ${SHARED} ${WAYLAND_EGL_SOURCE})
+-   install(TARGETS wayland-egl DESTINATION lib)
++   install(TARGETS wayland-egl DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+    configure_file ("wayland-egl/wayland-egl.pc.in" "wayland-egl/wayland-egl.pc" @ONLY)
+    install (FILES "${CMAKE_CURRENT_BINARY_DIR}/wayland-egl/wayland-egl.pc"
+-            DESTINATION lib/pkgconfig)
++            DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+ endif ()
+ 
+ add_library(EGL ${SHARED} ${EGL_SOURCE})
+@@ -126,8 +126,8 @@ target_link_libraries(GLESv2 EGL khrn_client vcos)
+ target_link_libraries(WFC EGL)
+ target_link_libraries(OpenVG EGL)
+ 
+-install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION lib)
+-install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION lib)
++install(TARGETS EGL GLESv2 OpenVG WFC khrn_client DESTINATION ${CMAKE_INSTALL_LIBDIR})
++install(TARGETS EGL_static GLESv2_static khrn_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+ # recommended names to use to avoid conflicts with mesa libs
+ add_library(brcmEGL ${SHARED} ${EGL_SOURCE})
+@@ -140,4 +140,4 @@ target_link_libraries(brcmGLESv2 brcmEGL khrn_client vcos)
+ target_link_libraries(brcmWFC brcmEGL)
+ target_link_libraries(brcmOpenVG brcmEGL)
+ 
+-install(TARGETS brcmEGL brcmGLESv2 brcmOpenVG brcmWFC DESTINATION lib)
++install(TARGETS brcmEGL brcmGLESv2 brcmOpenVG brcmWFC DESTINATION ${CMAKE_INSTALL_LIBDIR})
+diff --git a/interface/mmal/CMakeLists.txt b/interface/mmal/CMakeLists.txt
+index c5c1642..fe784e8 100644
+--- a/interface/mmal/CMakeLists.txt
++++ b/interface/mmal/CMakeLists.txt
+@@ -16,7 +16,7 @@ add_subdirectory(client)
+ 
+ target_link_libraries(mmal mmal_core mmal_util mmal_vc_client vcos mmal_components)
+ 
+-install(TARGETS mmal DESTINATION lib)
++install(TARGETS mmal DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(FILES
+    mmal.h
+    mmal_buffer.h
+@@ -36,7 +36,7 @@ install(FILES
+    mmal_pool.h mmal_port.h
+    mmal_queue.h
+    mmal_types.h
+-   DESTINATION include/interface/mmal
++   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/mmal
+ )
+ 
+ # Test apps
+diff --git a/interface/mmal/components/CMakeLists.txt b/interface/mmal/components/CMakeLists.txt
+index d65fa37..4c85de0 100644
+--- a/interface/mmal/components/CMakeLists.txt
++++ b/interface/mmal/components/CMakeLists.txt
+@@ -30,5 +30,5 @@ set(container_libs ${container_libs} containers)
+ target_link_libraries(mmal_components ${container_libs} mmal_util)
+ target_link_libraries(mmal_components mmal_core)
+ 
+-install(TARGETS mmal_components DESTINATION lib)
++install(TARGETS mmal_components DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+diff --git a/interface/mmal/core/CMakeLists.txt b/interface/mmal/core/CMakeLists.txt
+index efa14d9..4fe0779 100644
+--- a/interface/mmal/core/CMakeLists.txt
++++ b/interface/mmal/core/CMakeLists.txt
+@@ -13,7 +13,7 @@ add_library (mmal_core ${LIBRARY_TYPE}
+ 
+ target_link_libraries (mmal_core vcos mmal_vc_client)
+ 
+-install(TARGETS mmal_core DESTINATION lib)
++install(TARGETS mmal_core DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(FILES
+    mmal_buffer_private.h
+    mmal_clock_private.h
+@@ -21,5 +21,5 @@ install(FILES
+    mmal_core_private.h
+    mmal_port_private.h
+    mmal_events_private.h
+-   DESTINATION include/interface/mmal/core
++   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/mmal/core
+ )
+diff --git a/interface/mmal/util/CMakeLists.txt b/interface/mmal/util/CMakeLists.txt
+index b2a6858..e51afd0 100644
+--- a/interface/mmal/util/CMakeLists.txt
++++ b/interface/mmal/util/CMakeLists.txt
+@@ -12,7 +12,7 @@ add_library (mmal_util ${LIBRARY_TYPE}
+ 
+ target_link_libraries (mmal_util vcos)
+ 
+-install(TARGETS mmal_util DESTINATION lib)
++install(TARGETS mmal_util DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(FILES
+    mmal_component_wrapper.h
+    mmal_connection.h
+@@ -24,5 +24,5 @@ install(FILES
+    mmal_util.h
+    mmal_util_params.h
+    mmal_util_rational.h
+-   DESTINATION include/interface/mmal/util
++   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/mmal/util
+ )
+diff --git a/interface/mmal/vc/CMakeLists.txt b/interface/mmal/vc/CMakeLists.txt
+index d6e80db..3b9ec64 100644
+--- a/interface/mmal/vc/CMakeLists.txt
++++ b/interface/mmal/vc/CMakeLists.txt
+@@ -8,12 +8,12 @@ target_link_libraries(mmal_vc_client vchiq_arm vcos vcsm)
+ if(BUILD_MMAL_APPS)
+ add_executable(mmal_vc_diag mmal_vc_diag.c)
+ target_link_libraries(mmal_vc_diag mmal mmal_vc_client debug_sym vcos)
+-install(TARGETS mmal_vc_diag RUNTIME DESTINATION bin)
++install(TARGETS mmal_vc_diag RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ endif(BUILD_MMAL_APPS)
+ 
+ include_directories ( ../../../host_applications/linux/libs/sm )
+ 
+-install(TARGETS mmal_vc_client DESTINATION lib)
++install(TARGETS mmal_vc_client DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ install(FILES
+    mmal_vc_api.h
+    mmal_vc_api_drm.h
+@@ -22,5 +22,5 @@ install(FILES
+    mmal_vc_msgs.h
+    mmal_vc_opaque_alloc.h
+    mmal_vc_shm.h
+-   DESTINATION include/interface/mmal/vc
++   DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/mmal/vc
+ )
+diff --git a/interface/vchiq_arm/CMakeLists.txt b/interface/vchiq_arm/CMakeLists.txt
+index 7af383d..e5a3224 100644
+--- a/interface/vchiq_arm/CMakeLists.txt
++++ b/interface/vchiq_arm/CMakeLists.txt
+@@ -5,7 +5,7 @@ add_library(vchiq_arm SHARED
+ # pull in VCHI cond variable emulation
+ target_link_libraries(vchiq_arm vcos)
+ 
+-install(TARGETS vchiq_arm DESTINATION lib)
++install(TARGETS vchiq_arm DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ #install(FILES etc/10-vchiq.rules DESTINATION /etc/udev/rules.d)
+ 
+ include_directories(../..)
+@@ -17,4 +17,4 @@ target_link_libraries(vchiq_test
+                       vchiq_arm
+                       vcos)
+ 
+-install(TARGETS vchiq_test RUNTIME DESTINATION bin)
++install(TARGETS vchiq_test RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+diff --git a/interface/vcos/CMakeLists.txt b/interface/vcos/CMakeLists.txt
+index 23a8d72..b0924a4 100644
+--- a/interface/vcos/CMakeLists.txt
++++ b/interface/vcos/CMakeLists.txt
+@@ -65,4 +65,4 @@ if (WIN32)
+    configure_file (build_all.bat.in build_all.bat @ONLY)
+ endif ()
+ 
+-#install (FILES ${HEADERS} DESTINATION include/interface/vcos)
++#install (FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/vcos)
+diff --git a/interface/vcos/generic/CMakeLists.txt b/interface/vcos/generic/CMakeLists.txt
+index c09f376..8af98fd 100644
+--- a/interface/vcos/generic/CMakeLists.txt
++++ b/interface/vcos/generic/CMakeLists.txt
+@@ -18,4 +18,4 @@ foreach (header ${HEADERS})
+    configure_file ("${header}" "${VCOS_HEADERS_BUILD_DIR}/generic/${header}" COPYONLY)
+ endforeach ()
+ 
+-install (FILES ${HEADERS} DESTINATION include/interface/vcos/generic)
++install (FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/interface/vcos/generic)
+diff --git a/interface/vcos/pthreads/CMakeLists.txt b/interface/vcos/pthreads/CMakeLists.txt
+index d6cd415..821b3f3 100644
+--- a/interface/vcos/pthreads/CMakeLists.txt
++++ b/interface/vcos/pthreads/CMakeLists.txt
+@@ -50,5 +50,5 @@ else ()
+ endif ()
+ 
+ 
+-#install(FILES ${HEADERS} DESTINATION include)
+-install(TARGETS vcos DESTINATION lib)
++#install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_LIBDIR})
++install(TARGETS vcos DESTINATION ${CMAKE_INSTALL_LIBDIR})
+diff --git a/interface/vmcs_host/CMakeLists.txt b/interface/vmcs_host/CMakeLists.txt
+index 76813c9..0984d8a 100755
+--- a/interface/vmcs_host/CMakeLists.txt
++++ b/interface/vmcs_host/CMakeLists.txt
+@@ -35,5 +35,5 @@ target_link_libraries(vchostif vchiq_arm vcos)
+ 
+ #target_link_libraries(bufman WFC)
+ 
+-install(TARGETS ${INSTALL_TARGETS} DESTINATION lib)
++install(TARGETS ${INSTALL_TARGETS} DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ 
+diff --git a/makefiles/cmake/vmcs.cmake b/makefiles/cmake/vmcs.cmake
+index 7c97463..a1eb911 100644
+--- a/makefiles/cmake/vmcs.cmake
++++ b/makefiles/cmake/vmcs.cmake
+@@ -16,7 +16,7 @@ endif()
+ SET(CMAKE_INSTALL_PREFIX "${VMCS_INSTALL_PREFIX}" CACHE INTERNAL "Prefix
+     prepended to install directories" FORCE)
+ if(NOT DEFINED VMCS_PLUGIN_DIR)
+-  SET(VMCS_PLUGIN_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKE_SHARED_LIBRARY_PREFIX}/plugins)
++  SET(VMCS_PLUGIN_DIR ${CMAKE_INSTALL_LIBDIR}/plugins)
+ endif()
+ 
+ # What kind of system are we?
+diff --git a/middleware/openmaxil/CMakeLists.txt b/middleware/openmaxil/CMakeLists.txt
+index 3e9c5f9..c063740 100644
+--- a/middleware/openmaxil/CMakeLists.txt
++++ b/middleware/openmaxil/CMakeLists.txt
+@@ -49,4 +49,4 @@ else ()
+ 
+ endif ()
+ 
+-install (TARGETS openmaxil DESTINATION lib)
++install (TARGETS openmaxil DESTINATION ${CMAKE_INSTALL_LIBDIR})
+diff --git a/pkgconfig/bcm_host.pc.in b/pkgconfig/bcm_host.pc.in
+index c7237c5..2988b42 100644
+--- a/pkgconfig/bcm_host.pc.in
++++ b/pkgconfig/bcm_host.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${exec_prefix}/lib
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+ includedir=${prefix}/include
+ 
+ Name: bcm_host
+diff --git a/pkgconfig/brcmegl.pc.in b/pkgconfig/brcmegl.pc.in
+index 5dd3d5b..a45bf22 100644
+--- a/pkgconfig/brcmegl.pc.in
++++ b/pkgconfig/brcmegl.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${exec_prefix}/lib
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+ includedir=${prefix}/include
+ 
+ Name: brcmEGL
+diff --git a/pkgconfig/brcmglesv2.pc.in b/pkgconfig/brcmglesv2.pc.in
+index e0e36f5..902fbf3 100644
+--- a/pkgconfig/brcmglesv2.pc.in
++++ b/pkgconfig/brcmglesv2.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${exec_prefix}/lib
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+ includedir=${prefix}/include
+ 
+ Name: brcmGLESv2
+diff --git a/pkgconfig/brcmvg.pc.in b/pkgconfig/brcmvg.pc.in
+index 763a44b..98489ee 100644
+--- a/pkgconfig/brcmvg.pc.in
++++ b/pkgconfig/brcmvg.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${exec_prefix}/lib
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+ includedir=${prefix}/include
+ 
+ Name: brcmOpenVG
+diff --git a/pkgconfig/mmal.pc.in b/pkgconfig/mmal.pc.in
+index 37d344c..1ffa4f5 100644
+--- a/pkgconfig/mmal.pc.in
++++ b/pkgconfig/mmal.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${exec_prefix}/lib
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+ includedir=${prefix}/include
+ 
+ Name: MMAL
+diff --git a/pkgconfig/vcsm.pc.in b/pkgconfig/vcsm.pc.in
+index b12c56f..6f762cb 100644
+--- a/pkgconfig/vcsm.pc.in
++++ b/pkgconfig/vcsm.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${exec_prefix}/lib
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+ includedir=${prefix}/include
+ 
+ Name: VCSM
diff --git a/meta-raspberrypi/recipes-graphics/userland/userland_git.bb b/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
index 198ad77..bd50bf8 100644
--- a/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
+++ b/meta-raspberrypi/recipes-graphics/userland/userland_git.bb
@@ -46,6 +46,7 @@
     file://0022-all-host_applications-remove-non-existent-projects.patch \
     file://0023-hello_pi-optionally-build-wayland-specific-app.patch \
     file://0024-userland-Sync-needed-defines-for-weston-build.patch \
+    file://0025-CMakeLists.txt-.pc-respect-CMAKE_INSTALL_LIBDIR.patch \
 "
 
 SRC_URI:remove:toolchain-clang = "file://0021-cmake-Disable-format-overflow-warning-as-error.patch"
diff --git a/meta-raspberrypi/recipes-kernel/bluez-firmware-rpidistro/bluez-firmware-rpidistro_git.bb b/meta-raspberrypi/recipes-kernel/bluez-firmware-rpidistro/bluez-firmware-rpidistro_git.bb
index d3d4e7d..bd5ed62 100644
--- a/meta-raspberrypi/recipes-kernel/bluez-firmware-rpidistro/bluez-firmware-rpidistro_git.bb
+++ b/meta-raspberrypi/recipes-kernel/bluez-firmware-rpidistro/bluez-firmware-rpidistro_git.bb
@@ -16,7 +16,7 @@
 # [^1]: https://github.com/RPi-Distro/bluez-firmware/issues/1
 LICENSE = "Firmware-cypress-rpidistro"
 LIC_FILES_CHKSUM = "\
-    file://LICENCE.cypress-rpidistro;md5=c5d12ae0b24ef7177902a8e288751a4e \
+    file://LICENCE.cypress-rpidistro;md5=be80828daf682762f392131141288a74 \
 "
 
 # These are not common licenses, set NO_GENERIC_LICENSE for them
@@ -24,10 +24,10 @@
 NO_GENERIC_LICENSE[Firmware-cypress-rpidistro] = "LICENCE.cypress-rpidistro"
 
 SRC_URI = " \
-    git://github.com/RPi-Distro/bluez-firmware;branch=master;protocol=https \
+    git://github.com/RPi-Distro/bluez-firmware;branch=bookworm;protocol=https \
 "
-SRCREV = "9556b08ace2a1735127894642cc8ea6529c04c90"
-PV = "1.2-4+rpt10"
+SRCREV = "78d6a07730e2d20c035899521ab67726dc028e1c"
+PV = "1.2-9+rpt3"
 
 S = "${WORKDIR}/git"
 
@@ -51,19 +51,21 @@
     install -d ${D}${nonarch_base_libdir}/firmware/brcm
 
     cp LICENCE.cypress-rpidistro ${D}${nonarch_base_libdir}/firmware
-    install -m 0644 broadcom/BCM434*.hcd ${D}${nonarch_base_libdir}/firmware/brcm/
+    install -m 0644 debian/firmware/broadcom/BCM434*.hcd ${D}${nonarch_base_libdir}/firmware/brcm/
 }
 
 PACKAGES = "\
     ${PN}-cypress-license \
     ${PN}-bcm43430a1-hcd \
     ${PN}-bcm43430b0-hcd \
+    ${PN}-bcm4343a2-hcd \
     ${PN}-bcm4345c0-hcd \
     ${PN}-bcm4345c5-hcd \
 "
 
 LICENSE:${PN}-bcm43430a1-hcd = "Firmware-cypress-rpidistro"
 LICENSE:${PN}-bcm43430b0-hcd = "Firmware-cypress-rpidistro"
+LICENSE:${PN}-bcm4343a2-hcd = "Firmware-cypress-rpidistro"
 LICENSE:${PN}-bcm4345c0-hcd = "Firmware-cypress-rpidistro"
 LICENSE:${PN}-bcm4345c5-hcd = "Firmware-cypress-rpidistro"
 LICENSE:${PN}-cypress-license = "Firmware-cypress-rpidistro"
@@ -77,6 +79,9 @@
 FILES:${PN}-bcm43430b0-hcd = "\
     ${nonarch_base_libdir}/firmware/brcm/BCM43430B0.hcd \
 "
+FILES:${PN}-bcm4343a2-hcd = "\
+    ${nonarch_base_libdir}/firmware/brcm/BCM4343A2.hcd \
+"
 FILES:${PN}-bcm4345c0-hcd = "\
     ${nonarch_base_libdir}/firmware/brcm/BCM4345C0.hcd \
 "
@@ -86,12 +91,15 @@
 
 RDEPENDS:${PN}-bcm43430a1-hcd += "${PN}-cypress-license"
 RDEPENDS:${PN}-bcm43430b0-hcd += "${PN}-cypress-license"
+RDEPENDS:${PN}-bcm4343a2-hcd += "${PN}-cypress-license"
 RDEPENDS:${PN}-bcm4345c0-hcd += "${PN}-cypress-license"
 RDEPENDS:${PN}-bcm4345c5-hcd += "${PN}-cypress-license"
 RCONFLICTS:${PN}-bcm43430a1-hcd = "linux-firmware-bcm43430a1-hcd"
 RREPLACES:${PN}-bcm43430a1-hcd = "linux-firmware-bcm43430a1-hcd"
 RCONFLICTS:${PN}-bcm43430b0-hcd = "linux-firmware-bcm43430b0-hcd"
 RREPLACES:${PN}-bcm43430b0-hcd = "linux-firmware-bcm43430b0-hcd"
+RCONFLICTS:${PN}-bcm4343a2-hcd = "linux-firmware-bcm4343a2-hcd"
+RREPLACES:${PN}-bcm4343a2-hcd = "linux-firmware-bcm4343a2-hcd"
 RCONFLICTS:${PN}-bcm43435c0-hcd = "linux-firmware-bcm4345c0-hcd"
 RREPLACES:${PN}-bcm43435c0-hcd = "linux-firmware-bcm4345c0-hcd"
 RCONFLICTS:${PN}-bcm43435c5-hcd = "linux-firmware-bcm4345c5-hcd"
diff --git a/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb b/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb
index 0955164..959513d 100644
--- a/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb
+++ b/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb
@@ -7,7 +7,7 @@
 
 LICENSE = "GPL-2.0-only & binary-redist-Cypress-rpidistro & Synaptics-rpidistro"
 LIC_FILES_CHKSUM = "\
-    file://debian/copyright;md5=03475efdcf4c53c8f2d8fb4bc1fc6965 \
+    file://debian/copyright;md5=291ee5385b4cf74b10c5fb5a46a7bbc6 \
 "
 # Where these are no common licenses, set NO_GENERIC_LICENSE so that the
 # license files will be copied from the fetched source.
@@ -15,11 +15,11 @@
 NO_GENERIC_LICENSE[Synaptics-rpidistro] = "debian/copyright"
 LICENSE_FLAGS = "synaptics-killswitch"
 
-SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree;branch=bullseye;protocol=https \
+SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree;branch=bookworm;protocol=https \
     file://0001-Default-43455-firmware-to-standard-variant.patch \
 "
-SRCREV = "2c3a8701193ba23d0ef85cdf0d0c9e47baf03dfc"
-PV = "20230210-5_bpo11+1"
+SRCREV = "223ccf3a3ddb11b3ea829749fbbba4d65b380897"
+PV = "20230625-2+rpt2"
 S = "${WORKDIR}/git"
 
 inherit allarch
@@ -71,7 +71,10 @@
 "
 FILES:${PN}-bcm43436 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43436-*"
 FILES:${PN}-bcm43436s = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43436s*"
-FILES:${PN}-bcm43439 = "${nonarch_base_libdir}/firmware/cypress/43439A0-7.95.49.00.combined"
+FILES:${PN}-bcm43439 = " \
+    ${nonarch_base_libdir}/firmware/cypress/43439A0-7.95.49.00.combined \
+    ${nonarch_base_libdir}/firmware/cypress/cyfmac43439-sdio* \
+"
 FILES:${PN}-bcm43455 = " \
     ${nonarch_base_libdir}/firmware/brcm/brcmfmac43455* \
     ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio* \
diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-v7_6.6.bb b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-v7_6.6.bb
new file mode 100644
index 0000000..a5695f6
--- /dev/null
+++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-v7_6.6.bb
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com>
+#
+# SPDX-License-Identifier: MIT
+
+require linux-raspberrypi-v7.inc
+require linux-raspberrypi_6.6.bb
diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb
new file mode 100644
index 0000000..b4d9953
--- /dev/null
+++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb
@@ -0,0 +1,31 @@
+LINUX_VERSION ?= "6.6.22"
+LINUX_RPI_BRANCH ?= "rpi-6.6.y"
+LINUX_RPI_KMETA_BRANCH ?= "yocto-6.6"
+
+SRCREV_machine = "c04af98514c26014a4f29ec87b3ece95626059bd"
+SRCREV_meta = "6a24861d6504575a4a9f92366285332d47c7e111"
+
+KMETA = "kernel-meta"
+
+SRC_URI = " \
+    git://github.com/raspberrypi/linux.git;name=machine;branch=${LINUX_RPI_BRANCH};protocol=https \
+    git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${LINUX_RPI_KMETA_BRANCH};destsuffix=${KMETA} \
+    file://powersave.cfg \
+    file://android-drivers.cfg \
+    "
+
+require linux-raspberrypi.inc
+
+KERNEL_DTC_FLAGS += "-@ -H epapr"
+
+RDEPENDS:${KERNEL_PACKAGE_NAME}:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-base:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-base"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-image:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-image"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-dev:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-dev"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-vmlinux:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-vmlinux"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-modules:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-modules"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-dbg:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-dbg"
+
+DEPLOYDEP = ""
+DEPLOYDEP:raspberrypi-armv7 = "${RASPBERRYPI_v7_KERNEL}:do_deploy"
+do_deploy[depends] += "${DEPLOYDEP}"
diff --git a/meta-raspberrypi/recipes-multimedia/picamera-libs/picamera-libs.bb b/meta-raspberrypi/recipes-multimedia/picamera-libs/picamera-libs.bb
index 2ebe413..f873a19 100644
--- a/meta-raspberrypi/recipes-multimedia/picamera-libs/picamera-libs.bb
+++ b/meta-raspberrypi/recipes-multimedia/picamera-libs/picamera-libs.bb
@@ -6,7 +6,7 @@
 
 include recipes-bsp/common/raspberrypi-firmware.inc
 
-S = "${WORKDIR}/raspberrypi-firmware-1.${PV}"
+S = "${RPIFW_S}"
 
 do_install(){
     install -m 0755 -d ${D}${libdir}
diff --git a/meta-security/classes/dm-verity-img.bbclass b/meta-security/classes/dm-verity-img.bbclass
index 2f212d6..7f79548 100644
--- a/meta-security/classes/dm-verity-img.bbclass
+++ b/meta-security/classes/dm-verity-img.bbclass
@@ -111,10 +111,10 @@
     # Create wks.in fragment with build specific UUIDs for partitions.
     # Unfortunately the wks.in does not support line continuations...
     # First, the unappended filesystem data partition.
-    echo 'part / --source rawcopy --ondisk sda --sourceparams="file=${DM_VERITY_DEPLOY_DIR}/${DM_VERITY_IMAGE}-${MACHINE}.rootfs.${DM_VERITY_IMAGE_TYPE}.verity" --part-name verityroot --part-type="${DM_VERITY_ROOT_GUID}"'" --uuid=\"$ROOT_UUID\"" > $WKS_INC
+    echo 'part / --source rawcopy --ondisk sda --sourceparams="file=${DM_VERITY_DEPLOY_DIR}/${DM_VERITY_IMAGE}-${MACHINE}${IMAGE_NAME_SUFFIX}.${DM_VERITY_IMAGE_TYPE}.verity" --part-name verityroot --part-type="${DM_VERITY_ROOT_GUID}"'" --uuid=\"$ROOT_UUID\"" > $WKS_INC
 
     # note: no default mount point for hash data partition
-    echo 'part --source rawcopy --ondisk sda --sourceparams="file=${DM_VERITY_DEPLOY_DIR}/${DM_VERITY_IMAGE}-${MACHINE}.${DM_VERITY_IMAGE_TYPE}.vhash" --part-name verityhash --part-type="${DM_VERITY_RHASH_GUID}"'" --uuid=\"$RHASH_UUID\"" >> $WKS_INC
+    echo 'part --source rawcopy --ondisk sda --sourceparams="file=${DM_VERITY_DEPLOY_DIR}/${DM_VERITY_IMAGE}-${MACHINE}${IMAGE_NAME_SUFFIX}.${DM_VERITY_IMAGE_TYPE}.vhash" --part-name verityhash --part-type="${DM_VERITY_RHASH_GUID}"'" --uuid=\"$RHASH_UUID\"" >> $WKS_INC
 }
 
 verity_setup() {
@@ -162,7 +162,7 @@
 verity_hash() {
     cd ${IMGDEPLOYDIR}
     ln -sf ${IMAGE_NAME}.${DM_VERITY_IMAGE_TYPE}.vhash \
-        ${IMAGE_BASENAME}-${MACHINE}.${DM_VERITY_IMAGE_TYPE}.vhash
+        ${IMAGE_BASENAME}-${MACHINE}${IMAGE_NAME_SUFFIX}.${DM_VERITY_IMAGE_TYPE}.vhash
 }
 
 VERITY_TYPES = " \
@@ -177,6 +177,24 @@
 CONVERSION_DEPENDS_verity = "cryptsetup-native"
 IMAGE_CMD:vhash = "verity_hash"
 
+def get_verity_fstypes(d):
+    verity_image = d.getVar('DM_VERITY_IMAGE')
+    verity_type = d.getVar('DM_VERITY_IMAGE_TYPE')
+    verity_hash = d.getVar('DM_VERITY_SEPARATE_HASH')
+    pn = d.getVar('PN')
+
+    fstypes = ""
+    if not pn.endswith(verity_image):
+        return fstypes # This doesn't concern this image
+
+    fstypes = verity_type + ".verity"
+    if verity_hash == "1":
+        fstypes += " vhash"
+
+    return fstypes
+
+IMAGE_FSTYPES += "${@get_verity_fstypes(d)}"
+
 python __anonymous() {
     verity_image = d.getVar('DM_VERITY_IMAGE')
     verity_type = d.getVar('DM_VERITY_IMAGE_TYPE')
@@ -188,16 +206,12 @@
         bb.warn('dm-verity-img class inherited but not used')
         return
 
-    if verity_image != pn:
+    if not pn.endswith(verity_image):
         return # This doesn't concern this image
 
     if len(verity_type.split()) != 1:
         bb.fatal('DM_VERITY_IMAGE_TYPE must contain exactly one type')
 
-    d.appendVar('IMAGE_FSTYPES', ' %s.verity' % verity_type)
-    if verity_hash == "1":
-        d.appendVar('IMAGE_FSTYPES', ' vhash')
-
     # If we're using wic: we'll have to use partition images and not the rootfs
     # source plugin so add the appropriate dependency.
     if 'wic' in image_fstypes:
diff --git a/meta-security/conf/layer.conf b/meta-security/conf/layer.conf
index 3e8db1f..471674c 100644
--- a/meta-security/conf/layer.conf
+++ b/meta-security/conf/layer.conf
@@ -9,7 +9,7 @@
 BBFILE_PATTERN_security = "^${LAYERDIR}/"
 BBFILE_PRIORITY_security = "8"
 
-LAYERSERIES_COMPAT_security = "nanbield"
+LAYERSERIES_COMPAT_security = "nanbield scarthgap"
 
 LAYERDEPENDS_security = "core openembedded-layer"
 
diff --git a/meta-security/docs/dm-verity.txt b/meta-security/docs/dm-verity.txt
index c2dce73..a538fa2 100644
--- a/meta-security/docs/dm-verity.txt
+++ b/meta-security/docs/dm-verity.txt
@@ -3,7 +3,7 @@
 The dm-verity feature provides a level of data integrity and resistance to
 data tampering.  It does this by creating a hash for each data block of
 the underlying device as the base of a hash tree.  There are many
-documents out there to further explain the implementaion, such as the
+documents out there to further explain the implementation, such as the
 in-kernel one itself:
 
 https://docs.kernel.org/admin-guide/device-mapper/verity.html
diff --git a/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb b/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb
index 377ad02..ba0f974 100644
--- a/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb
+++ b/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-flask-script_2.0.6.bb
@@ -10,5 +10,5 @@
 inherit pypi setuptools3
 
 RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-flask \
+    python3-flask \
     "
diff --git a/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-pyinotify/0001-Make-asyncore-support-optional-for-Python-3.patch b/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-pyinotify/0001-Make-asyncore-support-optional-for-Python-3.patch
new file mode 100644
index 0000000..075a035
--- /dev/null
+++ b/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-pyinotify/0001-Make-asyncore-support-optional-for-Python-3.patch
@@ -0,0 +1,92 @@
+From 478d595a7d086423733e9f5da5edfe9f1df48682 Mon Sep 17 00:00:00 2001
+From: Troy Curtis Jr <troy@troycurtisjr.com>
+Date: Thu, 10 Aug 2023 21:51:15 -0400
+Subject: [PATCH] Make asyncore support optional for Python 3.
+
+Fixes #204.
+
+Upstream-Status: Submitted [https://github.com/seb-m/pyinotify/pull/205]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+
+---
+ python3/pyinotify.py | 50 +++++++++++++++++++++++++-------------------
+ 1 file changed, 28 insertions(+), 22 deletions(-)
+
+diff --git a/python3/pyinotify.py b/python3/pyinotify.py
+index bc24313..f4a5a90 100755
+--- a/python3/pyinotify.py
++++ b/python3/pyinotify.py
+@@ -68,7 +68,6 @@ from collections import deque
+ from datetime import datetime, timedelta
+ import time
+ import re
+-import asyncore
+ import glob
+ import locale
+ import subprocess
+@@ -1494,33 +1493,40 @@ class ThreadedNotifier(threading.Thread, Notifier):
+         self.loop()
+ 
+ 
+-class AsyncNotifier(asyncore.file_dispatcher, Notifier):
+-    """
+-    This notifier inherits from asyncore.file_dispatcher in order to be able to
+-    use pyinotify along with the asyncore framework.
++try:
++    import asyncore
+ 
+-    """
+-    def __init__(self, watch_manager, default_proc_fun=None, read_freq=0,
+-                 threshold=0, timeout=None, channel_map=None):
++    class AsyncNotifier(asyncore.file_dispatcher, Notifier):
+         """
+-        Initializes the async notifier. The only additional parameter is
+-        'channel_map' which is the optional asyncore private map. See
+-        Notifier class for the meaning of the others parameters.
++        This notifier inherits from asyncore.file_dispatcher in order to be able to
++        use pyinotify along with the asyncore framework.
+ 
+         """
+-        Notifier.__init__(self, watch_manager, default_proc_fun, read_freq,
+-                          threshold, timeout)
+-        asyncore.file_dispatcher.__init__(self, self._fd, channel_map)
++        def __init__(self, watch_manager, default_proc_fun=None, read_freq=0,
++                     threshold=0, timeout=None, channel_map=None):
++            """
++            Initializes the async notifier. The only additional parameter is
++            'channel_map' which is the optional asyncore private map. See
++            Notifier class for the meaning of the others parameters.
+ 
+-    def handle_read(self):
+-        """
+-        When asyncore tells us we can read from the fd, we proceed processing
+-        events. This method can be overridden for handling a notification
+-        differently.
++            """
++            Notifier.__init__(self, watch_manager, default_proc_fun, read_freq,
++                              threshold, timeout)
++            asyncore.file_dispatcher.__init__(self, self._fd, channel_map)
+ 
+-        """
+-        self.read_events()
+-        self.process_events()
++        def handle_read(self):
++            """
++            When asyncore tells us we can read from the fd, we proceed processing
++            events. This method can be overridden for handling a notification
++            differently.
++
++            """
++            self.read_events()
++            self.process_events()
++except ImportError:
++    # asyncore was removed in Python 3.12, but try the import instead of a
++    # version check in case the compatibility package is installed.
++    pass
+ 
+ 
+ class TornadoAsyncNotifier(Notifier):
+-- 
+2.25.1
+
diff --git a/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb b/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
index 963fcfe..ff1b611 100644
--- a/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
+++ b/meta-security/dynamic-layers/meta-python/recipes-devtools/python/python3-pyinotify_0.9.6.bb
@@ -3,16 +3,20 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=ab173cade7965b411528464589a08382"
 
 RDEPENDS:${PN} += "\
-    ${PYTHON_PN}-ctypes \
-    ${PYTHON_PN}-fcntl \
-    ${PYTHON_PN}-io \
-    ${PYTHON_PN}-logging \
-    ${PYTHON_PN}-misc \
-    ${PYTHON_PN}-shell \
-    ${PYTHON_PN}-threading \
+    python3-ctypes \
+    python3-fcntl \
+    python3-io \
+    python3-logging \
+    python3-misc \
+    python3-shell \
+    python3-threading \
 "
 
 SRC_URI[md5sum] = "8e580fa1ff3971f94a6f81672b76c406"
 SRC_URI[sha256sum] = "9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4"
 
+SRC_URI += " \
+           file://0001-Make-asyncore-support-optional-for-Python-3.patch \
+"
+
 inherit pypi setuptools3
diff --git a/meta-security/dynamic-layers/meta-python/recipes-security/fail2ban/python3-fail2ban_1.0.2.bb b/meta-security/dynamic-layers/meta-python/recipes-security/fail2ban/python3-fail2ban_1.0.2.bb
index 135e97c..bf5f87d 100644
--- a/meta-security/dynamic-layers/meta-python/recipes-security/fail2ban/python3-fail2ban_1.0.2.bb
+++ b/meta-security/dynamic-layers/meta-python/recipes-security/fail2ban/python3-fail2ban_1.0.2.bb
@@ -54,7 +54,7 @@
 do_install_ptest:append () {
     install -d ${D}${PTEST_PATH}
     install -d ${D}${PTEST_PATH}/bin
-    sed -i -e 's/##PYTHON##/${PYTHON_PN}/g' ${D}${PTEST_PATH}/run-ptest
+    sed -i -e 's/##PYTHON##/python3/g' ${D}${PTEST_PATH}/run-ptest
     install -D ${S}/bin/* ${D}${PTEST_PATH}/bin
     rm -f ${D}${PTEST_PATH}/bin/fail2ban-python
 }
diff --git a/meta-security/meta-hardening/conf/layer.conf b/meta-security/meta-hardening/conf/layer.conf
index c499e60..8da050b 100644
--- a/meta-security/meta-hardening/conf/layer.conf
+++ b/meta-security/meta-hardening/conf/layer.conf
@@ -8,7 +8,7 @@
 BBFILE_PATTERN_harden-layer = "^${LAYERDIR}/"
 BBFILE_PRIORITY_harden-layer = "6"
 
-LAYERSERIES_COMPAT_harden-layer = "nanbield"
+LAYERSERIES_COMPAT_harden-layer = "nanbield scarthgap"
 
 LAYERDEPENDS_harden-layer = "core openembedded-layer"
 
diff --git a/meta-security/meta-integrity/conf/layer.conf b/meta-security/meta-integrity/conf/layer.conf
index d00298a..aab9652 100644
--- a/meta-security/meta-integrity/conf/layer.conf
+++ b/meta-security/meta-integrity/conf/layer.conf
@@ -20,7 +20,7 @@
 # interactive shell is enough.
 OE_TERMINAL_EXPORTS += "INTEGRITY_BASE"
 
-LAYERSERIES_COMPAT_integrity = "nanbield"
+LAYERSERIES_COMPAT_integrity = "nanbield scarthgap"
 # ima-evm-utils depends on keyutils from meta-oe
 LAYERDEPENDS_integrity = "core openembedded-layer"
 
diff --git a/meta-security/meta-parsec/conf/layer.conf b/meta-security/meta-parsec/conf/layer.conf
index 503953a..e9d0230 100644
--- a/meta-security/meta-parsec/conf/layer.conf
+++ b/meta-security/meta-parsec/conf/layer.conf
@@ -8,7 +8,7 @@
 BBFILE_PATTERN_parsec-layer = "^${LAYERDIR}/"
 BBFILE_PRIORITY_parsec-layer = "5"
 
-LAYERSERIES_COMPAT_parsec-layer = "nanbield"
+LAYERSERIES_COMPAT_parsec-layer = "nanbield scarthgap"
 
 LAYERDEPENDS_parsec-layer = "core clang-layer"
 BBLAYERS_LAYERINDEX_NAME_parsec-layer = "meta-parsec"
diff --git a/meta-security/meta-tpm/conf/layer.conf b/meta-security/meta-tpm/conf/layer.conf
index 8075706..58b61d4 100644
--- a/meta-security/meta-tpm/conf/layer.conf
+++ b/meta-security/meta-tpm/conf/layer.conf
@@ -8,7 +8,7 @@
 BBFILE_PATTERN_tpm-layer = "^${LAYERDIR}/"
 BBFILE_PRIORITY_tpm-layer = "6"
 
-LAYERSERIES_COMPAT_tpm-layer = "nanbield"
+LAYERSERIES_COMPAT_tpm-layer = "nanbield scarthgap"
 
 LAYERDEPENDS_tpm-layer = " \
     core \
diff --git a/meta-security/meta-tpm/recipes-tpm2/tpm2-pkcs11/tpm2-pkcs11_1.9.0.bb b/meta-security/meta-tpm/recipes-tpm2/tpm2-pkcs11/tpm2-pkcs11_1.9.0.bb
index e0def0f..9dea957 100644
--- a/meta-security/meta-tpm/recipes-tpm2/tpm2-pkcs11/tpm2-pkcs11_1.9.0.bb
+++ b/meta-security/meta-tpm/recipes-tpm2/tpm2-pkcs11/tpm2-pkcs11_1.9.0.bb
@@ -24,9 +24,9 @@
 do_install:append() {
     cd ${S}/tools
     export PYTHONPATH="${D}${PYTHON_SITEPACKAGES_DIR}"
-    ${PYTHON_PN} setup.py install --root="${D}" --prefix="${prefix}" --install-lib="${PYTHON_SITEPACKAGES_DIR}" --optimize=1 --skip-build
+    python3 setup.py install --root="${D}" --prefix="${prefix}" --install-lib="${PYTHON_SITEPACKAGES_DIR}" --optimize=1 --skip-build
 
-    sed -i -e "s:${PYTHON}:${USRBINPATH}/env ${PYTHON_PN}:g" "${D}${bindir}"/tpm2_ptool
+    sed -i -e "s:${PYTHON}:${USRBINPATH}/env python3:g" "${D}${bindir}"/tpm2_ptool
 }
 
 PACKAGES =+ "${PN}-tools"
@@ -44,4 +44,4 @@
 INSANE_SKIP:${PN}   += "dev-so"
 
 RDEPENDS:${PN} = "p11-kit tpm2-tools "
-RDEPENDS:${PN}-tools = "${PYTHON_PN}-pyyaml ${PYTHON_PN}-cryptography ${PYTHON_PN}-pyasn1-modules"
+RDEPENDS:${PN}-tools = "python3-pyyaml python3-cryptography python3-pyasn1-modules"
diff --git a/meta-security/recipes-compliance/openscap/files/0001-Replace-distutils.sysconfig-with-sysconfig.patch b/meta-security/recipes-compliance/openscap/files/0001-Replace-distutils.sysconfig-with-sysconfig.patch
deleted file mode 100644
index f3f8cf7..0000000
--- a/meta-security/recipes-compliance/openscap/files/0001-Replace-distutils.sysconfig-with-sysconfig.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 9a8e01f8421f92f40b4cbff6cf055538e9a0b0ae Mon Sep 17 00:00:00 2001
-From: Evgeny Kolesnikov <ekolesni@redhat.com>
-Date: Thu, 25 Jan 2024 21:37:05 +0100
-Subject: [PATCH] Replace distutils.sysconfig with sysconfig
-
-Upstream-Status: Backport
-[https://github.com/OpenSCAP/openscap/commit/9a8e01f8421f92f40b4cbff6cf055538e9a0b0ae]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
----
- docs/developer/developer.adoc | 2 +-
- swig/python3/CMakeLists.txt   | 2 +-
- utils/CMakeLists.txt          | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/docs/developer/developer.adoc b/docs/developer/developer.adoc
-index 77c6d5161..e923069cc 100644
---- a/docs/developer/developer.adoc
-+++ b/docs/developer/developer.adoc
-@@ -113,7 +113,7 @@ On Ubuntu 18.04 and potentially other distro, the python3 dist-packages path is
- If the following command:
- 
- ----
--$ python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
-+$ python3 -c "import sysconfig; print(sysconfig.get_path('platlib'))"
- ----
- 
- returns "/usr/local/lib/python3/dist-packages" instead of a path like
-diff --git a/swig/python3/CMakeLists.txt b/swig/python3/CMakeLists.txt
-index 2594cf000..5f301326c 100644
---- a/swig/python3/CMakeLists.txt
-+++ b/swig/python3/CMakeLists.txt
-@@ -26,7 +26,7 @@ add_custom_target(python3_compile ALL DEPENDS ${PYTHON_COMPILED_FILES})
- 
- if(NOT PYTHON_SITE_PACKAGES_INSTALL_DIR)
- execute_process(COMMAND
--	${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}'))"
-+	${PYTHON_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_path('platlib'))"
- 	OUTPUT_VARIABLE PYTHON_SITE_PACKAGES_INSTALL_DIR
- 	OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
-index 93ce1f2a9..9347c2976 100644
---- a/utils/CMakeLists.txt
-+++ b/utils/CMakeLists.txt
-@@ -91,7 +91,7 @@ if(ENABLE_OSCAP_UTIL_DOCKER)
- 
- 	if(NOT PYTHON_SITE_PACKAGES_INSTALL_DIR)
- 	execute_process(COMMAND
--		${OSCAP_DOCKER_PYTHON} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(False, False, prefix='${CMAKE_INSTALL_PREFIX}'))"
-+		${OSCAP_DOCKER_PYTHON} -c "import sysconfig; print(sysconfig.get_path('purelib'))"
- 		OUTPUT_VARIABLE PYTHON_SITE_PACKAGES_INSTALL_DIR
- 		OUTPUT_STRIP_TRAILING_WHITESPACE
- 	)
--- 
-2.25.1
-
diff --git a/meta-security/recipes-compliance/openscap/openscap_1.3.9.bb b/meta-security/recipes-compliance/openscap/openscap_1.3.9.bb
index d956ff1..b35ce9f 100644
--- a/meta-security/recipes-compliance/openscap/openscap_1.3.9.bb
+++ b/meta-security/recipes-compliance/openscap/openscap_1.3.9.bb
@@ -9,11 +9,9 @@
 DEPENDS = "dbus acl bzip2 pkgconfig gconf procps curl libxml2 libxslt libcap swig libpcre  xmlsec1"
 DEPENDS:class-native = "pkgconfig-native swig-native curl-native libxml2-native libxslt-native libcap-native libpcre-native xmlsec1-native"
 
-#Jun 22th, 2023
-SRCREV = "9b3e7563575f7e5b419f8a09999b40f30e3e7c29"
-SRC_URI = "git://github.com/OpenSCAP/openscap.git;branch=maint-1.3;protocol=https \
-           file://0001-Replace-distutils.sysconfig-with-sysconfig.patch \
-          "
+#March 18th, 2024
+SRCREV = "0e7f654570971c1acee6dd3f34b17121372d6152"
+SRC_URI = "git://github.com/OpenSCAP/openscap.git;branch=maint-1.3;protocol=https "
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-security/recipes-core/images/dm-verity-image-initramfs.bb b/meta-security/recipes-core/images/dm-verity-image-initramfs.bb
index 78f7b49..4256e19 100644
--- a/meta-security/recipes-core/images/dm-verity-image-initramfs.bb
+++ b/meta-security/recipes-core/images/dm-verity-image-initramfs.bb
@@ -18,6 +18,8 @@
 IMAGE_FEATURES = ""
 IMAGE_LINGUAS = ""
 
+IMAGE_NAME_SUFFIX ?= ""
+
 # Can we somehow inspect reverse dependencies to avoid these variables?
 python __anonymous() {
     verity_image = d.getVar('DM_VERITY_IMAGE')
diff --git a/meta-security/recipes-ids/suricata/suricata_7.0.0.bb b/meta-security/recipes-ids/suricata/suricata_7.0.0.bb
index a52f081..a01b3d9 100644
--- a/meta-security/recipes-ids/suricata/suricata_7.0.0.bb
+++ b/meta-security/recipes-ids/suricata/suricata_7.0.0.bb
@@ -104,9 +104,9 @@
     # Remove /var/run as it is created on startup
     rm -rf ${D}${localstatedir}/run
 
-    sed -i -e "s:#!.*$:#!${USRBINPATH}/env ${PYTHON_PN}:g" ${D}${bindir}/suricatasc
-    sed -i -e "s:#!.*$:#!${USRBINPATH}/env ${PYTHON_PN}:g" ${D}${bindir}/suricatactl
-    sed -i -e "s:#!.*$:#!${USRBINPATH}/env ${PYTHON_PN}:g" ${D}${libdir}/suricata/python/suricata/sc/suricatasc.py
+    sed -i -e "s:#!.*$:#!${USRBINPATH}/env python3:g" ${D}${bindir}/suricatasc
+    sed -i -e "s:#!.*$:#!${USRBINPATH}/env python3:g" ${D}${bindir}/suricatactl
+    sed -i -e "s:#!.*$:#!${USRBINPATH}/env python3:g" ${D}${libdir}/suricata/python/suricata/sc/suricatasc.py
 }
 
 pkg_postinst_ontarget:${PN} () {
diff --git a/meta-security/recipes-scanners/arpwatch/arpwatch_3.3.bb b/meta-security/recipes-scanners/arpwatch/arpwatch_3.3.bb
index 7a0a776..e547938 100644
--- a/meta-security/recipes-scanners/arpwatch/arpwatch_3.3.bb
+++ b/meta-security/recipes-scanners/arpwatch/arpwatch_3.3.bb
@@ -23,7 +23,7 @@
 
 PACKAGECONFIG ??= ""
 
-PACKACONFIG[email] = "-with-watcher=email=${APRWATCH_FROM} --with-watchee=email=${ARPWATH_REPLY}, , postfix, postfix postfix-cfg"
+PACKAGECONFIG[email] = "-with-watcher=email=${APRWATCH_FROM} --with-watchee=email=${ARPWATH_REPLY}, , postfix, postfix postfix-cfg"
 
 CONFIGUREOPTS = " --build=${BUILD_SYS} \
           --host=${HOST_SYS} \
@@ -42,6 +42,7 @@
           --infodir=${infodir} \
           --mandir=${mandir} \
           --srcdir=${S} \
+          --with-sendmail=${sbindir}/sendmail \
           "
 
 do_configure () {
@@ -51,7 +52,7 @@
 do_install () {
     install -d ${D}${bindir}
     install -d ${D}${sbindir}
-    install -d ${D}${mandir}
+    install -d ${D}${mandir}/man8
     install -d ${D}${sysconfdir}
     install -d ${D}${sysconfdir}/default
     install -d ${D}${sysconfdir}/init.d
diff --git a/meta-security/recipes-security/cryptmount/cryptmount_6.2.0.bb b/meta-security/recipes-security/cryptmount/cryptmount_6.2.0.bb
index d815e1d..d69d88b 100644
--- a/meta-security/recipes-security/cryptmount/cryptmount_6.2.0.bb
+++ b/meta-security/recipes-security/cryptmount/cryptmount_6.2.0.bb
@@ -25,7 +25,9 @@
 do_install:append () {
     if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
         install -D -m 0644 ${S}/sysinit/cryptmount.service ${D}${systemd_system_unitdir}/cryptmount.service
-        rm -fr ${D}/usr/lib
+        if ${@bb.utils.contains('DISTRO_FEATURES','usrmerge','false','true',d)}; then
+           rm -fr ${D}/usr/lib
+        fi
     fi
 }
 
diff --git a/meta-security/wic/beaglebone-yocto-verity.wks.in b/meta-security/wic/beaglebone-yocto-verity.wks.in
index d2923de..2d332d8 100644
--- a/meta-security/wic/beaglebone-yocto-verity.wks.in
+++ b/meta-security/wic/beaglebone-yocto-verity.wks.in
@@ -12,5 +12,5 @@
 # This .wks only works with the dm-verity-img class.
 
 part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 4 --fixed-size 32 --sourceparams="loader=u-boot" --use-uuid
-part / --source rawcopy --ondisk mmcblk0 --sourceparams="file=${IMGDEPLOYDIR}/${DM_VERITY_IMAGE}-${MACHINE}.${DM_VERITY_IMAGE_TYPE}.verity"
+part / --source rawcopy --ondisk mmcblk0 --sourceparams="file=${IMGDEPLOYDIR}/${DM_VERITY_IMAGE}-${MACHINE}${IMAGE_NAME_SUFFIX}.${DM_VERITY_IMAGE_TYPE}.verity"
 bootloader --append="console=ttyS0,115200"
diff --git a/meta-security/wic/systemd-bootdisk-dmverity.wks.in b/meta-security/wic/systemd-bootdisk-dmverity.wks.in
index 8466368..0ac9cca 100644
--- a/meta-security/wic/systemd-bootdisk-dmverity.wks.in
+++ b/meta-security/wic/systemd-bootdisk-dmverity.wks.in
@@ -10,7 +10,7 @@
 
 part /boot --source bootimg-efi --sourceparams="loader=systemd-boot,initrd=microcode.cpio" --ondisk sda --label msdos --active --align 1024 --use-uuid
 
-part / --source rawcopy --ondisk sda  --sourceparams="file=${IMGDEPLOYDIR}/${DM_VERITY_IMAGE}-${MACHINE}.${DM_VERITY_IMAGE_TYPE}.verity" --use-uuid
+part / --source rawcopy --ondisk sda  --sourceparams="file=${IMGDEPLOYDIR}/${DM_VERITY_IMAGE}-${MACHINE}${IMAGE_NAME_SUFFIX}.${DM_VERITY_IMAGE_TYPE}.verity" --use-uuid
 
 part swap --ondisk sda --size 44 --label swap1 --fstype=swap --use-uuid
 
diff --git a/poky/bitbake/bin/bitbake-hashclient b/poky/bitbake/bin/bitbake-hashclient
index 47dd27c..610787e 100755
--- a/poky/bitbake/bin/bitbake-hashclient
+++ b/poky/bitbake/bin/bitbake-hashclient
@@ -346,6 +346,8 @@
                 login, _, password = auth
         except FileNotFoundError:
             pass
+        except netrc.NetrcParseError as e:
+            sys.stderr.write(f"Error parsing {e.filename}:{e.lineno}: {e.msg}\n")
 
     func = getattr(args, 'func', None)
     if func:
diff --git a/poky/bitbake/bin/bitbake-worker b/poky/bitbake/bin/bitbake-worker
index eba9c56..e8073f2 100755
--- a/poky/bitbake/bin/bitbake-worker
+++ b/poky/bitbake/bin/bitbake-worker
@@ -183,7 +183,7 @@
     if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not dry_run:
         fakeroot = True
         envvars = (runtask['fakerootenv'] or "").split()
-        for key, value in (var.split('=') for var in envvars):
+        for key, value in (var.split('=',1) for var in envvars):
             envbackup[key] = os.environ.get(key)
             os.environ[key] = value
             fakeenv[key] = value
@@ -195,7 +195,7 @@
                         (fn, taskname, ', '.join(fakedirs)))
     else:
         envvars = (runtask['fakerootnoenv'] or "").split()
-        for key, value in (var.split('=') for var in envvars):
+        for key, value in (var.split('=',1) for var in envvars):
             envbackup[key] = os.environ.get(key)
             os.environ[key] = value
             fakeenv[key] = value
@@ -237,11 +237,13 @@
             # Let SIGHUP exit as SIGTERM
             signal.signal(signal.SIGHUP, sigterm_handler)
 
-            # No stdin
-            newsi = os.open(os.devnull, os.O_RDWR)
-            os.dup2(newsi, sys.stdin.fileno())
+            # No stdin & stdout
+            # stdout is used as a status report channel and must not be used by child processes.
+            dumbio = os.open(os.devnull, os.O_RDWR)
+            os.dup2(dumbio, sys.stdin.fileno())
+            os.dup2(dumbio, sys.stdout.fileno())
 
-            if umask:
+            if umask is not None:
                 os.umask(umask)
 
             try:
@@ -305,6 +307,10 @@
                 if not quieterrors:
                     logger.critical(traceback.format_exc())
                 os._exit(1)
+
+            sys.stdout.flush()
+            sys.stderr.flush()
+
             try:
                 if dry_run:
                     return 0
diff --git a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst
index 4fa3ca4..d58fbb3 100644
--- a/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst
+++ b/poky/bitbake/doc/bitbake-user-manual/bitbake-user-manual-execution.rst
@@ -586,10 +586,11 @@
 simplest parameter to pass is "none", which causes a set of signature
 information to be written out into ``STAMPS_DIR`` corresponding to the
 targets specified. The other currently available parameter is
-"printdiff", which causes BitBake to try to establish the closest
+"printdiff", which causes BitBake to try to establish the most recent
 signature match it can (e.g. in the sstate cache) and then run
-``bitbake-diffsigs`` over the matches to determine the stamps and delta
-where these two stamp trees diverge.
+compare the matched signatures to determine the stamps and delta
+where these two stamp trees diverge. This can be used to determine why
+tasks need to be re-run in situations where that is not expected.
 
 .. note::
 
diff --git a/poky/bitbake/lib/bb/fetch2/__init__.py b/poky/bitbake/lib/bb/fetch2/__init__.py
index 3529531..5bf2c4b 100644
--- a/poky/bitbake/lib/bb/fetch2/__init__.py
+++ b/poky/bitbake/lib/bb/fetch2/__init__.py
@@ -290,12 +290,12 @@
 
     def _param_str_split(self, string, elmdelim, kvdelim="="):
         ret = collections.OrderedDict()
-        for k, v in [x.split(kvdelim, 1) for x in string.split(elmdelim) if x]:
+        for k, v in [x.split(kvdelim, 1) if kvdelim in x else (x, None) for x in string.split(elmdelim) if x]:
             ret[k] = v
         return ret
 
     def _param_str_join(self, dict_, elmdelim, kvdelim="="):
-        return elmdelim.join([kvdelim.join([k, v]) for k, v in dict_.items()])
+        return elmdelim.join([kvdelim.join([k, v]) if v else k for k, v in dict_.items()])
 
     @property
     def hostport(self):
@@ -943,7 +943,10 @@
         elif e.stderr:
             output = "output:\n%s" % e.stderr
         else:
-            output = "no output"
+            if log:
+                output = "see logfile for output"
+            else:
+                output = "no output"
         error_message = "Fetch command %s failed with exit code %s, %s" % (e.command, e.exitcode, output)
     except bb.process.CmdError as e:
         error_message = "Fetch command %s could not be run:\n%s" % (e.command, e.msg)
diff --git a/poky/bitbake/lib/bb/fetch2/git.py b/poky/bitbake/lib/bb/fetch2/git.py
index b9dc576..c7ff769 100644
--- a/poky/bitbake/lib/bb/fetch2/git.py
+++ b/poky/bitbake/lib/bb/fetch2/git.py
@@ -277,7 +277,7 @@
                     ud.unresolvedrev[name] = ud.revisions[name]
                 ud.revisions[name] = self.latest_revision(ud, d, name)
 
-        gitsrcname = '%s%s' % (ud.host.replace(':', '.'), ud.path.replace('/', '.').replace('*', '.').replace(' ','_'))
+        gitsrcname = '%s%s' % (ud.host.replace(':', '.'), ud.path.replace('/', '.').replace('*', '.').replace(' ','_').replace('(', '_').replace(')', '_'))
         if gitsrcname.startswith('.'):
             gitsrcname = gitsrcname[1:]
 
@@ -673,7 +673,7 @@
             elif not need_lfs:
                 bb.note("Repository %s has LFS content but it is not being fetched" % (repourl))
             else:
-                runfetchcmd("%s lfs install" % ud.basecmd, d, workdir=destdir)
+                runfetchcmd("%s lfs install --local" % ud.basecmd, d, workdir=destdir)
 
         if not ud.nocheckout:
             if subpath:
diff --git a/poky/bitbake/lib/bb/main.py b/poky/bitbake/lib/bb/main.py
index 92d8dc0..bca8ebf 100755
--- a/poky/bitbake/lib/bb/main.py
+++ b/poky/bitbake/lib/bb/main.py
@@ -217,7 +217,9 @@
                              "execution. The SIGNATURE_HANDLER parameter is passed to the "
                              "handler. Two common values are none and printdiff but the handler "
                              "may define more/less. none means only dump the signature, printdiff"
-                             " means compare the dumped signature with the cached one.")
+                             " means recursively compare the dumped signature with the most recent"
+                             " one in a local build or sstate cache (can be used to find out why tasks re-run"
+                             " when that is not expected)")
 
     exec_group.add_argument("--revisions-changed", action="store_true",
                         help="Set the exit code depending on whether upstream floating "
diff --git a/poky/bitbake/lib/bb/msg.py b/poky/bitbake/lib/bb/msg.py
index 93575d8..3e18596 100644
--- a/poky/bitbake/lib/bb/msg.py
+++ b/poky/bitbake/lib/bb/msg.py
@@ -230,7 +230,7 @@
     console = logging.StreamHandler(output)
     console.addFilter(bb.msg.LogFilterShowOnce())
     format = bb.msg.BBLogFormatter("%(levelname)s: %(message)s")
-    if color == 'always' or (color == 'auto' and output.isatty()):
+    if color == 'always' or (color == 'auto' and output.isatty() and os.environ.get('NO_COLOR', '') == ''):
         format.enable_color()
     console.setFormatter(format)
     if preserve_handlers:
diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py
index 6987de3..bc7e181 100644
--- a/poky/bitbake/lib/bb/runqueue.py
+++ b/poky/bitbake/lib/bb/runqueue.py
@@ -1359,7 +1359,7 @@
             fakerootcmd = shlex.split(mcdata.getVar("FAKEROOTCMD"))
             fakerootenv = (mcdata.getVar("FAKEROOTBASEENV") or "").split()
             env = os.environ.copy()
-            for key, value in (var.split('=') for var in fakerootenv):
+            for key, value in (var.split('=',1) for var in fakerootenv):
                 env[key] = value
             worker = subprocess.Popen(fakerootcmd + [sys.executable, workerscript, magic], stdout=subprocess.PIPE, stdin=subprocess.PIPE, env=env)
             fakerootlogs = self.rqdata.dataCaches[mc].fakerootlogs
diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py
index 3ab8431..2a0ecf5 100644
--- a/poky/bitbake/lib/bb/siggen.py
+++ b/poky/bitbake/lib/bb/siggen.py
@@ -535,23 +535,34 @@
         # hashes to appear over time, but much less likely for them to
         # disappear
         self.unihash_exists_cache = set()
+        self.username = None
+        self.password = None
         super().__init__(data)
 
     def get_taskdata(self):
-        return (self.server, self.method, self.extramethod, self.max_parallel) + super().get_taskdata()
+        return (self.server, self.method, self.extramethod, self.max_parallel, self.username, self.password) + super().get_taskdata()
 
     def set_taskdata(self, data):
-        self.server, self.method, self.extramethod, self.max_parallel = data[:4]
-        super().set_taskdata(data[4:])
+        self.server, self.method, self.extramethod, self.max_parallel, self.username, self.password = data[:6]
+        super().set_taskdata(data[6:])
+
+    def get_hashserv_creds(self):
+        if self.username and self.password:
+            return {
+                "username": self.username,
+                "password": self.password,
+            }
+
+        return {}
 
     def client(self):
         if getattr(self, '_client', None) is None:
-            self._client = hashserv.create_client(self.server)
+            self._client = hashserv.create_client(self.server, **self.get_hashserv_creds())
         return self._client
 
     def client_pool(self):
         if getattr(self, '_client_pool', None) is None:
-            self._client_pool = hashserv.client.ClientPool(self.server, self.max_parallel)
+            self._client_pool = hashserv.client.ClientPool(self.server, self.max_parallel, **self.get_hashserv_creds())
         return self._client_pool
 
     def reset(self, data):
diff --git a/poky/bitbake/lib/bb/tests/fetch.py b/poky/bitbake/lib/bb/tests/fetch.py
index e988e26..85c1f79 100644
--- a/poky/bitbake/lib/bb/tests/fetch.py
+++ b/poky/bitbake/lib/bb/tests/fetch.py
@@ -308,6 +308,21 @@
             'params': {"someparam" : "1"},
             'query': {},
             'relative': True
+        },
+        "https://www.innodisk.com/Download_file?9BE0BF6657;downloadfilename=EGPL-T101.zip": {
+            'uri': 'https://www.innodisk.com/Download_file?9BE0BF6657;downloadfilename=EGPL-T101.zip',
+            'scheme': 'https',
+            'hostname': 'www.innodisk.com',
+            'port': None,
+            'hostport': 'www.innodisk.com',
+            'path': '/Download_file',
+            'userinfo': '',
+            'userinfo': '',
+            'username': '',
+            'password': '',
+            'params': {"downloadfilename" : "EGPL-T101.zip"},
+            'query': {"9BE0BF6657": None},
+            'relative': False
         }
 
     }
diff --git a/poky/bitbake/lib/bb/ui/knotty.py b/poky/bitbake/lib/bb/ui/knotty.py
index 5a97d04..f86999b 100644
--- a/poky/bitbake/lib/bb/ui/knotty.py
+++ b/poky/bitbake/lib/bb/ui/knotty.py
@@ -179,7 +179,7 @@
             new[3] = new[3] & ~termios.ECHO
             termios.tcsetattr(fd, termios.TCSADRAIN, new)
             curses.setupterm()
-            if curses.tigetnum("colors") > 2:
+            if curses.tigetnum("colors") > 2 and os.environ.get('NO_COLOR', '') == '':
                 for h in handlers:
                     try:
                         h.formatter.enable_color()
diff --git a/poky/bitbake/lib/bb/utils.py b/poky/bitbake/lib/bb/utils.py
index ad13d04..ebee65d 100644
--- a/poky/bitbake/lib/bb/utils.py
+++ b/poky/bitbake/lib/bb/utils.py
@@ -1142,7 +1142,10 @@
 
 
 def cpu_count():
-    return multiprocessing.cpu_count()
+    try:
+        return len(os.sched_getaffinity(0))
+    except OSError:
+        return multiprocessing.cpu_count()
 
 def nonblockingfd(fd):
     fcntl.fcntl(fd, fcntl.F_SETFL, fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK)
diff --git a/poky/documentation/.gitignore b/poky/documentation/.gitignore
index 494b4f4..b23d598 100644
--- a/poky/documentation/.gitignore
+++ b/poky/documentation/.gitignore
@@ -7,3 +7,5 @@
 .vscode/
 */svg/*.png
 */svg/*.pdf
+styles/*
+!styles/config
diff --git a/poky/documentation/.vale.ini b/poky/documentation/.vale.ini
new file mode 100644
index 0000000..02042bb
--- /dev/null
+++ b/poky/documentation/.vale.ini
@@ -0,0 +1,7 @@
+StylesPath = styles
+MinAlertLevel = suggestion
+Packages = RedHat, proselint, write-good, alex, Readability, Joblint
+Vocab = Yocto, OpenSource
+[*.rst]
+BasedOnStyles = Vale, RedHat, proselint, write-good, alex, Readability, Joblint
+
diff --git a/poky/documentation/Makefile b/poky/documentation/Makefile
index 9fb6814..c930d2d 100644
--- a/poky/documentation/Makefile
+++ b/poky/documentation/Makefile
@@ -5,6 +5,9 @@
 # from the environment for the first two.
 SPHINXOPTS    ?= -W --keep-going -j auto
 SPHINXBUILD   ?= sphinx-build
+# Release notes are excluded because they contain contributor names and commit messages which can't be modified
+VALEOPTS      ?= --no-wrap --glob '!migration-guides/release-notes-*.rst'
+VALEDOCS      ?= .
 SOURCEDIR     = .
 IMAGEDIRS     = */svg
 BUILDDIR      = _build
@@ -20,7 +23,7 @@
 help:
 	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
 
-.PHONY: all help Makefile clean publish epub latexpdf
+.PHONY: all help Makefile clean stylecheck publish epub latexpdf
 
 publish: Makefile html singlehtml
 	rm -rf $(BUILDDIR)/$(DESTDIR)/
@@ -44,7 +47,15 @@
 	$(SVG2PNG) --export-filename=$@ $<
 
 clean:
-	@rm -rf $(BUILDDIR) $(PNGs) $(PDFs) poky.yaml sphinx-static/switchers.js
+	@rm -rf $(BUILDDIR) $(PNGs) $(PDFs) poky.yaml sphinx-static/switchers.js releases.rst
+
+stylecheck:
+	vale sync
+	vale $(VALEOPTS) $(VALEDOCS)
+
+stylecheck:
+	vale sync
+	vale $(VALEOPTS) $(VALEDOCS)
 
 epub: $(PNGs)
 	$(SOURCEDIR)/set_versions.py
diff --git a/poky/documentation/README b/poky/documentation/README
index 4d31036..8035418 100644
--- a/poky/documentation/README
+++ b/poky/documentation/README
@@ -151,6 +151,20 @@
  $ pipenv install
  $ pipenv run make html
 
+Style checking the Yocto Project documentation
+==============================================
+
+The project is starting to use Vale (https://vale.sh/)
+to validate the text style.
+
+To install Vale:
+
+ $ pip install vale
+
+To run Vale:
+
+ $ make stylecheck
+
 Sphinx theme and CSS customization
 ==================================
 
diff --git a/poky/documentation/contributor-guide/submit-changes.rst b/poky/documentation/contributor-guide/submit-changes.rst
index 59f3c1e..dfeb030 100644
--- a/poky/documentation/contributor-guide/submit-changes.rst
+++ b/poky/documentation/contributor-guide/submit-changes.rst
@@ -432,7 +432,7 @@
    :oe_lists:`bitbake-devel </g/bitbake-devel>`
    mailing list.
 
--  *"meta-\*" trees:* These trees contain Metadata. Use the
+-  *meta-poky* and *meta-yocto-bsp* trees: These trees contain Metadata. Use the
    :yocto_lists:`poky </g/poky>` mailing list.
 
 -  *Documentation*: For changes to the Yocto Project documentation, use the
diff --git a/poky/documentation/dev-manual/building.rst b/poky/documentation/dev-manual/building.rst
index 7fcac33..fe50269 100644
--- a/poky/documentation/dev-manual/building.rst
+++ b/poky/documentation/dev-manual/building.rst
@@ -775,10 +775,9 @@
       in the script for information on how to use the tool.
 
    -  *BitBake's "-S printdiff" Option:* Using this option causes
-      BitBake to try to establish the closest signature match it can
-      (e.g. in the shared state cache) and then run ``bitbake-diffsigs``
-      over the matches to determine the stamps and delta where these two
-      stamp trees diverge.
+      BitBake to try to establish the most recent signature match
+      (e.g. in the shared state cache) and then compare matched signatures
+      to determine the stamps and delta where these two stamp trees diverge.
 
 Building Software from an External Source
 =========================================
diff --git a/poky/documentation/dev-manual/custom-template-configuration-directory.rst b/poky/documentation/dev-manual/custom-template-configuration-directory.rst
index 9bffef3..06fcada 100644
--- a/poky/documentation/dev-manual/custom-template-configuration-directory.rst
+++ b/poky/documentation/dev-manual/custom-template-configuration-directory.rst
@@ -42,11 +42,11 @@
    TEMPLATECONF=${TEMPLATECONF:-meta-poky/conf/templates/default}
 
 If you look at a configuration template directory, you will
-see the ``bblayers.conf.sample``, ``local.conf.sample``, and
+see the ``bblayers.conf.sample``, ``local.conf.sample``, ``conf-summary.txt`` and
 ``conf-notes.txt`` files. The build system uses these files to form the
 respective ``bblayers.conf`` file, ``local.conf`` file, and show
-users a note about the build they're setting up
+users usage information about the build they're setting up
 when running the ``oe-init-build-env`` setup script. These can be
 edited further if needed to improve or change the build configurations
-available to the users.
+available to the users, and provide useful summaries and detailed usage notes.
 
diff --git a/poky/documentation/dev-manual/debugging.rst b/poky/documentation/dev-manual/debugging.rst
index ce29815..e20637e 100644
--- a/poky/documentation/dev-manual/debugging.rst
+++ b/poky/documentation/dev-manual/debugging.rst
@@ -339,7 +339,10 @@
    :term:`BB_BASEHASH_IGNORE_VARS`
    information.
 
-There is also a ``bitbake-diffsigs`` command for comparing two
+Debugging signature construction and unexpected task executions
+===============================================================
+
+There is a ``bitbake-diffsigs`` command for comparing two
 ``siginfo`` or ``sigdata`` files. This command can be helpful when
 trying to figure out what changed between two versions of a task. If you
 call ``bitbake-diffsigs`` with just one file, the command behaves like
@@ -356,8 +359,12 @@
 .. note::
 
    Two common values for `SIGNATURE_HANDLER` are "none" and "printdiff", which
-   dump only the signature or compare the dumped signature with the cached one,
-   respectively.
+   dump only the signature or compare the dumped signature with the most recent one,
+   respectively. "printdiff" will try to establish the most recent
+   signature match (e.g. in the sstate cache) and then
+   compare the matched signatures to determine the stamps and delta
+   where these two stamp trees diverge. This can be used to determine why
+   tasks need to be re-run in situations where that is not expected.
 
 Using BitBake with either of these options causes BitBake to dump out
 ``sigdata`` files in the ``stamps`` directory for every task it would
diff --git a/poky/documentation/migration-guides/index.rst b/poky/documentation/migration-guides/index.rst
index a3bddb3..d8edd05 100644
--- a/poky/documentation/migration-guides/index.rst
+++ b/poky/documentation/migration-guides/index.rst
@@ -12,6 +12,7 @@
 .. toctree::
 
    migration-general
+   release-5.0
    release-4.3
    release-4.2
    release-4.1
diff --git a/poky/documentation/migration-guides/migration-5.0.rst b/poky/documentation/migration-guides/migration-5.0.rst
new file mode 100644
index 0000000..32581d7
--- /dev/null
+++ b/poky/documentation/migration-guides/migration-5.0.rst
@@ -0,0 +1,105 @@
+.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
+
+Release 5.0 LTS (scarthgap)
+===========================
+
+Migration notes for 5.0 (scarthgap)
+------------------------------------
+
+This section provides migration information for moving to the Yocto
+Project 5.0 Release (codename "scarthgap") from the prior release.
+
+To migrate from an earlier LTS release, you **also** need to check all
+the previous migration notes from your release to this new one:
+
+-  :doc:`/migration-guides/migration-4.3`
+-  :doc:`/migration-guides/migration-4.2`
+-  :doc:`/migration-guides/migration-4.1`
+-  :doc:`/migration-guides/migration-4.0`
+-  :doc:`/migration-guides/migration-3.4`
+-  :doc:`/migration-guides/migration-3.3`
+-  :doc:`/migration-guides/migration-3.2`
+
+.. _migration-5.0-supported-kernel-versions:
+
+Supported kernel versions
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The :term:`OLDEST_KERNEL` setting is still "5.15" in this release, meaning that
+out the box, older kernels are not supported. See :ref:`4.3 migration notes
+<migration-4.3-supported-kernel-versions>` for details.
+
+.. _migration-5.0-supported-distributions:
+
+Supported distributions
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Compared to the previous releases, running BitBake is supported on new
+GNU/Linux distributions:
+
+-  Rocky 9
+
+On the other hand, some earlier distributions are no longer supported:
+
+-  Fedora 37
+-  Ubuntu 22.10
+-  OpenSUSE Leap 15.3
+
+See :ref:`all supported distributions <system-requirements-supported-distros>`.
+
+.. _migration-5.0-go-changes:
+
+Go language changes
+~~~~~~~~~~~~~~~~~~~
+
+.. _migration-5.0-systemd-changes:
+
+systemd changes
+~~~~~~~~~~~~~~~
+
+.. _migration-5.0-recipe-changes:
+
+Recipe changes
+~~~~~~~~~~~~~~
+
+-  Runtime testing of ptest now fails if no test results are returned by
+   any given ptest.
+
+.. _migration-5.0-deprecated-variables:
+
+Deprecated variables
+~~~~~~~~~~~~~~~~~~~~
+
+The following variables have been deprecated:
+
+.. _migration-5.0-removed-variables:
+
+Removed variables
+~~~~~~~~~~~~~~~~~
+
+The following variables have been removed:
+
+.. _migration-5.0-removed-recipes:
+
+Removed recipes
+~~~~~~~~~~~~~~~
+
+The following recipes have been removed in this release:
+
+.. _migration-5.0-removed-classes:
+
+Removed classes
+~~~~~~~~~~~~~~~
+
+The following classes have been removed in this release:
+
+.. _migration-5.0-qemu-changes:
+
+QEMU changes
+~~~~~~~~~~~~
+
+.. _migration-5.0-misc-changes:
+
+Miscellaneous changes
+~~~~~~~~~~~~~~~~~~~~~
+
diff --git a/poky/documentation/migration-guides/release-4.0.rst b/poky/documentation/migration-guides/release-4.0.rst
index dfe5e18..685799e 100644
--- a/poky/documentation/migration-guides/release-4.0.rst
+++ b/poky/documentation/migration-guides/release-4.0.rst
@@ -23,3 +23,4 @@
    release-notes-4.0.14
    release-notes-4.0.15
    release-notes-4.0.16
+   release-notes-4.0.17
diff --git a/poky/documentation/migration-guides/release-5.0.rst b/poky/documentation/migration-guides/release-5.0.rst
new file mode 100644
index 0000000..bd19b70
--- /dev/null
+++ b/poky/documentation/migration-guides/release-5.0.rst
@@ -0,0 +1,9 @@
+.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
+
+Release 5.0 (scarthgap)
+=======================
+
+.. toctree::
+
+   migration-5.0
+   release-notes-5.0
diff --git a/poky/documentation/migration-guides/release-notes-4.0.17.rst b/poky/documentation/migration-guides/release-notes-4.0.17.rst
new file mode 100644
index 0000000..1dfd10c
--- /dev/null
+++ b/poky/documentation/migration-guides/release-notes-4.0.17.rst
@@ -0,0 +1,238 @@
+.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
+
+Release notes for Yocto-4.0.17 (Kirkstone)
+------------------------------------------
+
+Security Fixes in Yocto-4.0.17
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+-  bind: Fix :cve:`2023-4408`, :cve:`2023-50387`, :cve:`2023-50868`, :cve:`2023-5517` and :cve:`2023-5679`
+-  binutils: Fix :cve:`2023-39129` and :cve:`2023-39130`
+-  curl: Fix :cve:`2023-46219`
+-  curl: Ignore :cve:`2023-42915`
+-  gcc: Ignore :cve:`2023-4039`
+-  gdb: Fix :cve:`2023-39129` and :cve:`2023-39130`
+-  glibc: Ignore :cve:`2023-0687`
+-  go: Fix :cve:`2023-29406`, :cve:`2023-45285`, :cve:`2023-45287`, :cve:`2023-45289`, :cve:`2023-45290`, :cve:`2024-24784` and :cve:`2024-24785`
+-  less: Fix :cve:`2022-48624`
+-  libgit2: Fix :cve:`2024-24575` and :cve:`2024-24577`
+-  libuv: fix :cve:`2024-24806`
+-  libxml2: Fix for :cve:`2024-25062`
+-  linux-yocto/5.15: Fix :cve:`2022-36402`, :cve:`2022-40982`, :cve:`2022-47940`, :cve:`2023-1193`, :cve:`2023-1194`, :cve:`2023-20569`, :cve:`2023-20588`, :cve:`2023-25775`, :cve:`2023-31085`, :cve:`2023-32247`, :cve:`2023-32250`, :cve:`2023-32252`, :cve:`2023-32254`, :cve:`2023-32257`, :cve:`2023-32258`, :cve:`2023-34324`, :cve:`2023-35827`, :cve:`2023-3772`, :cve:`2023-38427`, :cve:`2023-38430`, :cve:`2023-38431`, :cve_mitre:`2023-3867`, :cve:`2023-39189`, :cve:`2023-39192`, :cve:`2023-39193`, :cve:`2023-39194`, :cve:`2023-39198`, :cve:`2023-40283`, :cve:`2023-4128`, :cve:`2023-4206`, :cve:`2023-4207`, :cve:`2023-4208`, :cve:`2023-4244`, :cve:`2023-4273`, :cve:`2023-42752`, :cve:`2023-42753`, :cve:`2023-42754`, :cve:`2023-42755`, :cve:`2023-4563`, :cve:`2023-4569`, :cve:`2023-45871`, :cve:`2023-4623`, :cve:`2023-46343`, :cve:`2023-46813`, :cve:`2023-46838`, :cve:`2023-46862`, :cve:`2023-4881`, :cve:`2023-4921`, :cve:`2023-51042`, :cve:`2023-5158`, :cve:`2023-51779`, :cve_mitre:`2023-52340`, :cve:`2023-52429`, :cve:`2023-52435`, :cve:`2023-52436`, :cve:`2023-52438`, :cve:`2023-52439`, :cve:`2023-52441`, :cve:`2023-52442`, :cve:`2023-52443`, :cve:`2023-52444`, :cve:`2023-52445`, :cve:`2023-52448`, :cve:`2023-52449`, :cve:`2023-52451`, :cve:`2023-52454`, :cve:`2023-52456`, :cve:`2023-52457`, :cve:`2023-52458`, :cve:`2023-52463`, :cve:`2023-52464`, :cve:`2023-5717`, :cve:`2023-6040`, :cve:`2023-6121`, :cve:`2023-6176`, :cve:`2023-6546`, :cve:`2023-6606`, :cve:`2023-6622`, :cve:`2023-6817`, :cve:`2023-6915`, :cve:`2023-6931`, :cve:`2023-6932`, :cve:`2024-0340`, :cve:`2024-0584`, :cve:`2024-0607`, :cve:`2024-0641`, :cve:`2024-0646`, :cve:`2024-1085`, :cve:`2024-1086`, :cve:`2024-1151`, :cve:`2024-22705`, :cve:`2024-23849`, :cve:`2024-23850`, :cve:`2024-23851`, :cve:`2024-24860`, :cve:`2024-26586`, :cve:`2024-26589`, :cve:`2024-26591`, :cve:`2024-26592`, :cve:`2024-26593`, :cve:`2024-26594`, :cve:`2024-26597` and :cve:`2024-26598`
+-  linux-yocto/5.15: Ignore :cve:`2020-27418`, :cve:`2020-36766`, :cve:`2021-33630`, :cve:`2021-33631`, :cve:`2022-48619`, :cve:`2023-2430`, :cve:`2023-40791`, :cve:`2023-42756`, :cve:`2023-44466`, :cve:`2023-45862`, :cve:`2023-45863`, :cve:`2023-45898`, :cve:`2023-4610`, :cve:`2023-4732`, :cve:`2023-5090`, :cve:`2023-51043`, :cve:`2023-5178`, :cve:`2023-51780`, :cve:`2023-51781`, :cve:`2023-51782`, :cve:`2023-5197`, :cve:`2023-52433`, :cve:`2023-52440`, :cve:`2023-52446`, :cve:`2023-52450`, :cve:`2023-52453`, :cve:`2023-52455`, :cve:`2023-52459`, :cve:`2023-52460`, :cve:`2023-52461`, :cve:`2023-52462`, :cve:`2023-5345`, :cve:`2023-5633`, :cve:`2023-5972`, :cve:`2023-6111`, :cve:`2023-6200`, :cve:`2023-6531`, :cve:`2023-6679`, :cve:`2023-7192`, :cve:`2024-0193`, :cve:`2024-0443`, :cve:`2024-0562`, :cve:`2024-0582`, :cve:`2024-0639`, :cve:`2024-0775`, :cve:`2024-26581`, :cve:`2024-26582`, :cve:`2024-26590`, :cve:`2024-26596` and :cve:`2024-26599`
+-  linux-yocto/5.10: Fix :cve:`2023-39198`, :cve:`2023-46838`, :cve:`2023-51779`, :cve:`2023-51780`, :cve:`2023-51781`, :cve:`2023-51782`, :cve_mitre:`2023-52340`, :cve:`2023-6040`, :cve:`2023-6121`, :cve:`2023-6606`, :cve:`2023-6817`, :cve:`2023-6915`, :cve:`2023-6931`, :cve:`2023-6932`, :cve:`2024-0584` and :cve:`2024-0646`
+-  linux-yocto/5.10: Ignore :cve:`2021-33630`, :cve:`2021-33631`, :cve:`2022-1508`, :cve:`2022-36402`, :cve:`2022-48619`, :cve:`2023-2430`, :cve:`2023-4610`, :cve:`2023-46343`, :cve:`2023-51042`, :cve:`2023-51043`, :cve:`2023-5972`, :cve:`2023-6039`, :cve:`2023-6200`, :cve:`2023-6531`, :cve:`2023-6546`, :cve:`2023-6622`, :cve:`2023-6679`, :cve:`2023-7192`, :cve:`2024-0193`, :cve:`2024-0443`, :cve:`2024-0562`, :cve:`2024-0582`, :cve:`2024-0639`, :cve:`2024-0641`, :cve:`2024-0775`, :cve:`2024-1085` and :cve:`2024-22705`
+-  openssl: Fix :cve:`2024-0727`
+-  python3-pycryptodome: Fix :cve:`2023-52323`
+-  qemu: Fix :cve:`2023-42467`, :cve:`2023-6693` and :cve:`2024-24474`
+-  vim: Fix :cve:`2024-22667`
+-  xwayland: Fix :cve:`2023-6377` and :cve:`2023-6478`
+
+
+Fixes in Yocto-4.0.17
+~~~~~~~~~~~~~~~~~~~~~
+
+-  bind: Upgrade to 9.18.24
+-  bitbake: bitbake/codeparser.py: address ast module deprecations in py 3.12
+-  bitbake: bitbake/lib/bs4/tests/test_tree.py: python 3.12 regex
+-  bitbake: codeparser: replace deprecated ast.Str and 's'
+-  bitbake: fetch2: Ensure that git LFS objects are available
+-  bitbake: tests/fetch: Add real git lfs tests and decorator
+-  bitbake: tests/fetch: git-lfs restore _find_git_lfs
+-  bitbake: toaster/toastergui: Bug-fix verify given layer path only if import/add local layer
+-  build-appliance-image: Update to kirkstone head revision
+-  cmake: Unset CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES
+-  contributor-guide: fix lore URL
+-  curl: don't enable debug builds
+-  cve_check: cleanup logging
+-  dbus: Add missing :term:`CVE_PRODUCT`
+-  dev-manual: sbom: Rephrase spdx creation
+-  dev-manual: runtime-testing: gen-tapdevs need iptables installed
+-  dev-manual: packages: clarify shared :term:`PR` service constraint
+-  dev-manual: packages: need enough free space
+-  dev-manual: start: remove idle line
+-  feature-microblaze-versions.inc: python 3.12 regex
+-  ghostscript: correct :term:`LICENSE` with AGPLv3
+-  image-live.bbclass: LIVE_ROOTFS_TYPE support compression
+-  kernel.bbclass: Set pkg-config variables for building modules
+-  kernel.bbclass: introduce KERNEL_LOCALVERSION
+-  kernel: fix localversion in v6.3+
+-  kernel: make LOCALVERSION consistent between recipes
+-  ldconfig-native: Fix to point correctly on the DT_NEEDED entries in an ELF file
+-  librsvg: Fix do_package_qa error for librsvg
+-  linux-firmware: upgrade to 20231211
+-  linux-yocto/5.10: update to v5.10.210
+-  linux-yocto/5.15: update to v5.15.150
+-  manuals: add minimum RAM requirements
+-  manuals: suppress excess use of "following" word
+-  manuals: update disk space requirements
+-  manuals: update references to buildtools
+-  manuals: updates for building on Windows (WSL 2)
+-  meta/lib/oeqa: python 3.12 regex
+-  meta/recipes: python 3.12 regex
+-  migration-guide: add release notes for 4.0.16
+-  oeqa/selftest/oelib/buildhistory: git default branch
+-  oeqa/selftest/recipetool: downgrade meson version to not use pyproject.toml
+-  oeqa/selftest/recipetool: expect meson.bb
+-  oeqa/selftest/recipetool: fix for python 3.12
+-  oeqa/selftest/runtime_test: only run the virgl tests on qemux86-64
+-  oeqa: replace deprecated assertEquals
+-  openssl: Upgrade to 3.0.13
+-  poky.conf: bump version for 4.0.17
+-  populate_sdk_ext: use ConfigParser instead of SafeConfigParser
+-  python3-jinja2: upgrade to 3.1.3
+-  recipetool/create_buildsys_python: use importlib instead of imp
+-  ref-manual: system-requirements: recommend buildtools for not supported distros
+-  ref-manual: system-requirements: add info on buildtools-make-tarball
+-  ref-manual: release-process: grammar fix
+-  ref-manual: system-requirements: fix AlmaLinux variable name
+-  ref-manual: system-requirements: modify anchor
+-  ref-manual: system-requirements: remove outdated note
+-  ref-manual: system-requirements: simplify supported distro requirements
+-  ref-manual: system-requirements: update packages to build docs
+-  scripts/runqemu: add qmp socket support
+-  scripts/runqemu: direct mesa to use its own drivers, rather than ones provided by host distro
+-  scripts/runqemu: fix regex escape sequences
+-  scripts: python 3.12 regex
+-  selftest: skip virgl gtk/sdl test on ubuntu 18.04
+-  systemd: Only add myhostname to nsswitch.conf if in :term:`PACKAGECONFIG`
+-  tzdata : Upgrade to 2024a
+-  u-boot: Move UBOOT_INITIAL_ENV back to u-boot.inc
+-  useradd-example: do not use unsupported clear text password
+-  vim: upgrade to v9.0.2190
+-  yocto-bsp: update to v5.15.150
+
+
+Known Issues in Yocto-4.0.17
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- N/A
+
+
+Contributors to Yocto-4.0.17
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+-  Adrian Freihofer
+-  Alassane Yattara
+-  Alexander Kanavin
+-  Alexander Sverdlin
+-  Archana Polampalli
+-  Baruch Siach
+-  Bruce Ashfield
+-  Chen Qi
+-  Chris Laplante
+-  Deepthi Hemraj
+-  Dhairya Nagodra
+-  Fabien Mahot
+-  Fabio Estevam
+-  Hitendra Prajapati
+-  Hugo SIMELIERE
+-  Jermain Horsman
+-  Kai Kang
+-  Lee Chee Yang
+-  Ludovic Jozeau
+-  Michael Opdenacker
+-  Ming Liu
+-  Munehisa Kamata
+-  Narpat Mali
+-  Nikhil R
+-  Paul Eggleton
+-  Paulo Neves
+-  Peter Marko
+-  Philip Lorenz
+-  Poonam Jadhav
+-  Priyal Doshi
+-  Ross Burton
+-  Simone Weiß
+-  Soumya Sambu
+-  Steve Sakoman
+-  Tim Orling
+-  Trevor Gamblin
+-  Vijay Anusuri
+-  Vivek Kumbhar
+-  Wang Mingyu
+-  Zahir Hussain
+
+
+Repositories / Downloads for Yocto-4.0.17
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+poky
+
+-  Repository Location: :yocto_git:`/poky`
+-  Branch: :yocto_git:`kirkstone </poky/log/?h=kirkstone>`
+-  Tag:  :yocto_git:`yocto-4.0.17 </poky/log/?h=yocto-4.0.17>`
+-  Git Revision: :yocto_git:`6d1a878bbf24c66f7186b270f823fcdf82e35383 </poky/commit/?id=6d1a878bbf24c66f7186b270f823fcdf82e35383>`
+-  Release Artefact: poky-6d1a878bbf24c66f7186b270f823fcdf82e35383
+-  sha: 3bc3010340b674f7b0dd0a7997f0167b2240b794fbd4aa28c0c4217bddd15e30
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.17/poky-6d1a878bbf24c66f7186b270f823fcdf82e35383.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.17/poky-6d1a878bbf24c66f7186b270f823fcdf82e35383.tar.bz2
+
+openembedded-core
+
+-  Repository Location: :oe_git:`/openembedded-core`
+-  Branch: :oe_git:`kirkstone </openembedded-core/log/?h=kirkstone>`
+-  Tag:  :oe_git:`yocto-4.0.17 </openembedded-core/log/?h=yocto-4.0.17>`
+-  Git Revision: :oe_git:`2501534c9581c6c3439f525d630be11554a57d24 </openembedded-core/commit/?id=2501534c9581c6c3439f525d630be11554a57d24>`
+-  Release Artefact: oecore-2501534c9581c6c3439f525d630be11554a57d24
+-  sha: 52cc6cce9e920bdce078584b89136e81cc01e0c55616fab5fca6c3e04264c88e
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.17/oecore-2501534c9581c6c3439f525d630be11554a57d24.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.17/oecore-2501534c9581c6c3439f525d630be11554a57d24.tar.bz2
+
+meta-mingw
+
+-  Repository Location: :yocto_git:`/meta-mingw`
+-  Branch: :yocto_git:`kirkstone </meta-mingw/log/?h=kirkstone>`
+-  Tag:  :yocto_git:`yocto-4.0.17 </meta-mingw/log/?h=yocto-4.0.17>`
+-  Git Revision: :yocto_git:`f6b38ce3c90e1600d41c2ebb41e152936a0357d7 </meta-mingw/commit/?id=f6b38ce3c90e1600d41c2ebb41e152936a0357d7>`
+-  Release Artefact: meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7
+-  sha: 7d57167c19077f4ab95623d55a24c2267a3a3fb5ed83688659b4c03586373b25
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.17/meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.17/meta-mingw-f6b38ce3c90e1600d41c2ebb41e152936a0357d7.tar.bz2
+
+meta-gplv2
+
+-  Repository Location: :yocto_git:`/meta-gplv2`
+-  Branch: :yocto_git:`kirkstone </meta-gplv2/log/?h=kirkstone>`
+-  Tag:  :yocto_git:`yocto-4.0.17 </meta-gplv2/log/?h=yocto-4.0.17>`
+-  Git Revision: :yocto_git:`d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a </meta-gplv2/commit/?id=d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a>`
+-  Release Artefact: meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a
+-  sha: c386f59f8a672747dc3d0be1d4234b6039273d0e57933eb87caa20f56b9cca6d
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.17/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.17/meta-gplv2-d2f8b5cdb285b72a4ed93450f6703ca27aa42e8a.tar.bz2
+
+meta-clang
+
+-  Repository Location: :yocto_git:`/meta-clang`
+-  Branch: :yocto_git:`kirkstone </meta-clang/log/?h=kirkstone>`
+-  Tag:  :yocto_git:`yocto-4.0.17 </meta-clang/log/?h=yocto-4.0.17>`
+-  Git Revision: :yocto_git:`eebe4ff2e539f3ffb01c5060cc4ca8b226ea8b52 </meta-clang/commit/?id=eebe4ff2e539f3ffb01c5060cc4ca8b226ea8b52>`
+-  Release Artefact: meta-clang-eebe4ff2e539f3ffb01c5060cc4ca8b226ea8b52
+-  sha: 3299e96e069a22c0971e903fbc191f2427efffc83d910ac51bf0237caad01d17
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.17/meta-clang-eebe4ff2e539f3ffb01c5060cc4ca8b226ea8b52.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.17/meta-clang-eebe4ff2e539f3ffb01c5060cc4ca8b226ea8b52.tar.bz2
+
+bitbake
+
+-  Repository Location: :oe_git:`/bitbake`
+-  Branch: :oe_git:`2.0 </bitbake/log/?h=2.0>`
+-  Tag:  :oe_git:`yocto-4.0.17 </bitbake/log/?h=yocto-4.0.17>`
+-  Git Revision: :oe_git:`40fd5f4eef7460ca67f32cfce8e229e67e1ff607 </bitbake/commit/?id=40fd5f4eef7460ca67f32cfce8e229e67e1ff607>`
+-  Release Artefact: bitbake-40fd5f4eef7460ca67f32cfce8e229e67e1ff607
+-  sha: 5d20a0e4c5d0fce44bd84778168714a261a30a4b83f67c88df3b8a7e7115e444
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.0.17/bitbake-40fd5f4eef7460ca67f32cfce8e229e67e1ff607.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.0.17/bitbake-40fd5f4eef7460ca67f32cfce8e229e67e1ff607.tar.bz2
+
+yocto-docs
+
+-  Repository Location: :yocto_git:`/yocto-docs`
+-  Branch: :yocto_git:`kirkstone </yocto-docs/log/?h=kirkstone>`
+-  Tag: :yocto_git:`yocto-4.0.17 </yocto-docs/log/?h=yocto-4.0.17>`
+-  Git Revision: :yocto_git:`08ce7db2aa3a38deb8f5aa59bafc78542986babb </yocto-docs/commit/?id=08ce7db2aa3a38deb8f5aa59bafc78542986babb>`
+
diff --git a/poky/documentation/migration-guides/release-notes-5.0.rst b/poky/documentation/migration-guides/release-notes-5.0.rst
new file mode 100644
index 0000000..e5cdd87
--- /dev/null
+++ b/poky/documentation/migration-guides/release-notes-5.0.rst
@@ -0,0 +1,66 @@
+.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
+
+Release notes for 5.0 (scarthgap)
+---------------------------------
+
+New Features / Enhancements in 5.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+-  Linux kernel 6.6, gcc 13.2, glibc 2.39, LLVM 18.1, and over XXX other recipe upgrades
+
+-  New variables:
+
+-  Architecture-specific enhancements:
+
+-  Kernel-related enhancements:
+
+-  New core recipes:
+
+-  QEMU / ``runqemu`` enhancements:
+
+   -  QEMU has been upgraded to version 8.2.1
+
+-  Rust improvements:
+
+   -  Rust has been upgraded to version 1.75
+
+-  wic Image Creator enhancements:
+
+-  SDK-related improvements:
+
+-  Testing:
+
+-  Utility script changes:
+
+-  BitBake improvements:
+
+-  Packaging changes:
+
+-  Security improvements:
+
+-  Prominent documentation updates:
+
+-  Miscellaneous changes:
+
+Known Issues in 5.0
+~~~~~~~~~~~~~~~~~~~
+
+-  N/A
+
+Recipe License changes in 5.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Security Fixes in 5.0
+~~~~~~~~~~~~~~~~~~~~~
+
+Recipe Upgrades in 5.0
+~~~~~~~~~~~~~~~~~~~~~~
+
+Contributors to 5.0
+~~~~~~~~~~~~~~~~~~~
+
+Thanks to the following people who contributed to this release:
+
+Repositories / Downloads for Yocto-5.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
diff --git a/poky/documentation/profile-manual/usage.rst b/poky/documentation/profile-manual/usage.rst
index 6f0b041..2f82137 100644
--- a/poky/documentation/profile-manual/usage.rst
+++ b/poky/documentation/profile-manual/usage.rst
@@ -13,7 +13,7 @@
 perf
 ====
 
-The 'perf' tool is the profiling and tracing tool that comes bundled
+The perf tool is the profiling and tracing tool that comes bundled
 with the Linux kernel.
 
 Don't let the fact that it's part of the kernel fool you into thinking
@@ -26,22 +26,22 @@
 
 In many ways, perf aims to be a superset of all the tracing and
 profiling tools available in Linux today, including all the other tools
-covered in this HOWTO. The past couple of years have seen perf subsume a
+covered in this How-to. The past couple of years have seen perf subsume a
 lot of the functionality of those other tools and, at the same time,
 those other tools have removed large portions of their previous
 functionality and replaced it with calls to the equivalent functionality
 now implemented by the perf subsystem. Extrapolation suggests that at
-some point those other tools will simply become completely redundant and
+some point those other tools will become completely redundant and
 go away; until then, we'll cover those other tools in these pages and in
 many cases show how the same things can be accomplished in perf and the
 other tools when it seems useful to do so.
 
 The coverage below details some of the most common ways you'll likely
 want to apply the tool; full documentation can be found either within
-the tool itself or in the man pages at
+the tool itself or in the manual pages at
 `perf(1) <https://linux.die.net/man/1/perf>`__.
 
-Perf Setup
+perf Setup
 ----------
 
 For this section, we'll assume you've already performed the basic setup
@@ -54,14 +54,14 @@
 
 perf runs on the target system for the most part. You can archive
 profile data and copy it to the host for analysis, but for the rest of
-this document we assume you've ssh'ed to the host and will be running
-the perf commands on the target.
+this document we assume you're connected to the host through SSH and will be
+running the perf commands on the target.
 
-Basic Perf Usage
+Basic perf Usage
 ----------------
 
 The perf tool is pretty much self-documenting. To remind yourself of the
-available commands, simply type 'perf', which will show you basic usage
+available commands, just type ``perf``, which will show you basic usage
 along with the available perf subcommands::
 
    root@crownbay:~# perf
@@ -97,19 +97,19 @@
 Using perf to do Basic Profiling
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-As a simple test case, we'll profile the 'wget' of a fairly large file,
+As a simple test case, we'll profile the ``wget`` of a fairly large file,
 which is a minimally interesting case because it has both file and
 network I/O aspects, and at least in the case of standard Yocto images,
 it's implemented as part of BusyBox, so the methods we use to analyze it
-can be used in a very similar way to the whole host of supported BusyBox
-applets in Yocto. ::
+can be used in a similar way to the whole host of supported BusyBox
+applets in Yocto::
 
    root@crownbay:~# rm linux-2.6.19.2.tar.bz2; \
                     wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
 
 The quickest and easiest way to get some basic overall data about what's
-going on for a particular workload is to profile it using 'perf stat'.
-'perf stat' basically profiles using a few default counters and displays
+going on for a particular workload is to profile it using ``perf stat``.
+This command basically profiles using a few default counters and displays
 the summed counts at the end of the run::
 
    root@crownbay:~# perf stat wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
@@ -131,13 +131,13 @@
 
         59.836627620 seconds time elapsed
 
-Many times such a simple-minded test doesn't yield much of
-interest, but sometimes it does (see Real-world Yocto bug (slow
-loop-mounted write speed)).
+Such a simple-minded test doesn't always yield much of interest, but sometimes
+it does (see the :yocto_bugs:`Slow write speed on live images with denzil
+</show_bug.cgi?id=3049>` bug report).
 
-Also, note that 'perf stat' isn't restricted to a fixed set of counters
-- basically any event listed in the output of 'perf list' can be tallied
-by 'perf stat'. For example, suppose we wanted to see a summary of all
+Also, note that ``perf stat`` isn't restricted to a fixed set of counters
+--- basically any event listed in the output of ``perf list`` can be tallied
+by ``perf stat``. For example, suppose we wanted to see a summary of all
 the events related to kernel memory allocation/freeing along with cache
 hits and misses::
 
@@ -164,22 +164,22 @@
 
         44.831023415 seconds time elapsed
 
-So 'perf stat' gives us a nice easy
+As you can see, ``perf stat`` gives us a nice easy
 way to get a quick overview of what might be happening for a set of
 events, but normally we'd need a little more detail in order to
 understand what's going on in a way that we can act on in a useful way.
 
-To dive down into a next level of detail, we can use 'perf record'/'perf
-report' which will collect profiling data and present it to use using an
-interactive text-based UI (or simply as text if we specify ``--stdio`` to
-'perf report').
+To dive down into a next level of detail, we can use ``perf record`` /
+``perf report`` which will collect profiling data and present it to use using an
+interactive text-based UI (or just as text if we specify ``--stdio`` to
+``perf report``).
 
-As our first attempt at profiling this workload, we'll simply run 'perf
-record', handing it the workload we want to profile (everything after
-'perf record' and any perf options we hand it --- here none, will be
+As our first attempt at profiling this workload, we'll just run ``perf
+record``, handing it the workload we want to profile (everything after
+``perf record`` and any perf options we hand it --- here none, will be
 executed in a new shell). perf collects samples until the process exits
-and records them in a file named 'perf.data' in the current working
-directory. ::
+and records them in a file named ``perf.data`` in the current working
+directory::
 
    root@crownbay:~# perf record wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
 
@@ -189,7 +189,7 @@
    [ perf record: Captured and wrote 0.176 MB perf.data (~7700 samples) ]
 
 To see the results in a
-'text-based UI' (tui), simply run 'perf report', which will read the
+"text-based UI" (tui), just run ``perf report``, which will read the
 perf.data file in the current working directory and display the results
 in an interactive UI::
 
@@ -199,26 +199,26 @@
    :align: center
    :width: 70%
 
-The above screenshot displays a 'flat' profile, one entry for each
-'bucket' corresponding to the functions that were profiled during the
+The above screenshot displays a "flat" profile, one entry for each
+"bucket" corresponding to the functions that were profiled during the
 profiling run, ordered from the most popular to the least (perf has
 options to sort in various orders and keys as well as display entries
 only above a certain threshold and so on --- see the perf documentation
-for details). Note that this includes both userspace functions (entries
-containing a [.]) and kernel functions accounted to the process (entries
-containing a [k]). (perf has command-line modifiers that can be used to
-restrict the profiling to kernel or userspace, among others).
+for details). Note that this includes both user space functions (entries
+containing a ``[.]``) and kernel functions accounted to the process (entries
+containing a ``[k]``). perf has command-line modifiers that can be used to
+restrict the profiling to kernel or user space, among others.
 
-Notice also that the above report shows an entry for 'busybox', which is
-the executable that implements 'wget' in Yocto, but that instead of a
+Notice also that the above report shows an entry for ``busybox``, which is
+the executable that implements ``wget`` in Yocto, but that instead of a
 useful function name in that entry, it displays a not-so-friendly hex
 value instead. The steps below will show how to fix that problem.
 
 Before we do that, however, let's try running a different profile, one
 which shows something a little more interesting. The only difference
-between the new profile and the previous one is that we'll add the -g
+between the new profile and the previous one is that we'll add the ``-g``
 option, which will record not just the address of a sampled function,
-but the entire callchain to the sampled function as well::
+but the entire call chain to the sampled function as well::
 
    root@crownbay:~# perf record -g wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
    Connecting to downloads.yoctoproject.org (140.211.169.59:80)
@@ -233,45 +233,45 @@
    :align: center
    :width: 70%
 
-Using the callgraph view, we can actually see not only which functions
+Using the call graph view, we can actually see not only which functions
 took the most time, but we can also see a summary of how those functions
 were called and learn something about how the program interacts with the
 kernel in the process.
 
-Notice that each entry in the above screenshot now contains a '+' on the
-left-hand side. This means that we can expand the entry and drill down
-into the callchains that feed into that entry. Pressing 'enter' on any
-one of them will expand the callchain (you can also press 'E' to expand
-them all at the same time or 'C' to collapse them all).
+Notice that each entry in the above screenshot now contains a ``+`` on the
+left side. This means that we can expand the entry and drill down
+into the call chains that feed into that entry. Pressing ``Enter`` on any
+one of them will expand the call chain (you can also press ``E`` to expand
+them all at the same time or ``C`` to collapse them all).
 
 In the screenshot above, we've toggled the ``__copy_to_user_ll()`` entry
-and several subnodes all the way down. This lets us see which callchains
+and several subnodes all the way down. This lets us see which call chains
 contributed to the profiled ``__copy_to_user_ll()`` function which
 contributed 1.77% to the total profile.
 
-As a bit of background explanation for these callchains, think about
-what happens at a high level when you run wget to get a file out on the
+As a bit of background explanation for these call chains, think about
+what happens at a high level when you run ``wget`` to get a file out on the
 network. Basically what happens is that the data comes into the kernel
-via the network connection (socket) and is passed to the userspace
-program 'wget' (which is actually a part of BusyBox, but that's not
+via the network connection (socket) and is passed to the user space
+program ``wget`` (which is actually a part of BusyBox, but that's not
 important for now), which takes the buffers the kernel passes to it and
 writes it to a disk file to save it.
 
 The part of this process that we're looking at in the above call stacks
 is the part where the kernel passes the data it has read from the socket
-down to wget i.e. a copy-to-user.
+down to wget i.e. a ``copy-to-user``.
 
 Notice also that here there's also a case where the hex value is
-displayed in the callstack, here in the expanded ``sys_clock_gettime()``
-function. Later we'll see it resolve to a userspace function call in
-busybox.
+displayed in the call stack, here in the expanded ``sys_clock_gettime()``
+function. Later we'll see it resolve to a user space function call in
+BusyBox.
 
 .. image:: figures/perf-wget-g-copy-from-user-expanded-stripped.png
    :align: center
    :width: 70%
 
-The above screenshot shows the other half of the journey for the data -
-from the wget program's userspace buffers to disk. To get the buffers to
+The above screenshot shows the other half of the journey for the data ---
+from the ``wget`` program's user space buffers to disk. To get the buffers to
 disk, the wget program issues a ``write(2)``, which does a ``copy-from-user`` to
 the kernel, which then takes care via some circuitous path (probably
 also present somewhere in the profile data), to get it safely to disk.
@@ -281,8 +281,8 @@
 task at hand and see if we can get some basic idea about where the time
 is spent in the program we're profiling, wget. Remember that wget is
 actually implemented as an applet in BusyBox, so while the process name
-is 'wget', the executable we're actually interested in is BusyBox. So
-let's expand the first entry containing BusyBox:
+is ``wget``, the executable we're actually interested in is ``busybox``.
+Therefore, let's expand the first entry containing BusyBox:
 
 .. image:: figures/perf-wget-busybox-expanded-stripped.png
    :align: center
@@ -293,7 +293,7 @@
 Expanding the BusyBox entry doesn't make it any better.
 
 The problem is that perf can't find the symbol information for the
-busybox binary, which is actually stripped out by the Yocto build
+``busybox`` binary, which is actually stripped out by the Yocto build
 system.
 
 One way around that is to put the following in your ``local.conf`` file
@@ -303,40 +303,39 @@
 
 However, we already have an image with the binaries stripped, so
 what can we do to get perf to resolve the symbols? Basically we need to
-install the debuginfo for the BusyBox package.
+install the debugging information for the BusyBox package.
 
 To generate the debug info for the packages in the image, we can add
 ``dbg-pkgs`` to :term:`EXTRA_IMAGE_FEATURES` in ``local.conf``. For example::
 
    EXTRA_IMAGE_FEATURES = "debug-tweaks tools-profile dbg-pkgs"
 
-Additionally, in order to generate the type of debuginfo that perf
-understands, we also need to set
-:term:`PACKAGE_DEBUG_SPLIT_STYLE`
+Additionally, in order to generate the type of debugging information that perf
+understands, we also need to set :term:`PACKAGE_DEBUG_SPLIT_STYLE`
 in the ``local.conf`` file::
 
    PACKAGE_DEBUG_SPLIT_STYLE = 'debug-file-directory'
 
-Once we've done that, we can install the
-debuginfo for BusyBox. The debug packages once built can be found in
-``build/tmp/deploy/rpm/*`` on the host system. Find the busybox-dbg-...rpm
-file and copy it to the target. For example::
+Once we've done that, we can install the debugging information for BusyBox. The
+debug packages once built can be found in ``build/tmp/deploy/rpm/*``
+on the host system. Find the ``busybox-dbg-...rpm`` file and copy it
+to the target. For example::
 
    [trz@empanada core2]$ scp /home/trz/yocto/crownbay-tracing-dbg/build/tmp/deploy/rpm/core2_32/busybox-dbg-1.20.2-r2.core2_32.rpm root@192.168.1.31:
    busybox-dbg-1.20.2-r2.core2_32.rpm                     100% 1826KB   1.8MB/s   00:01
 
-Now install the debug rpm on the target::
+Now install the debug RPM on the target::
 
    root@crownbay:~# rpm -i busybox-dbg-1.20.2-r2.core2_32.rpm
 
-Now that the debuginfo is installed, we see that the BusyBox entries now display
+Now that the debugging information is installed, we see that the BusyBox entries now display
 their functions symbolically:
 
 .. image:: figures/perf-wget-busybox-debuginfo.png
    :align: center
    :width: 70%
 
-If we expand one of the entries and press 'enter' on a leaf node, we're
+If we expand one of the entries and press ``Enter`` on a leaf node, we're
 presented with a menu of actions we can take to get more information
 related to that entry:
 
@@ -346,17 +345,17 @@
 
 One of these actions allows us to show a view that displays a
 busybox-centric view of the profiled functions (in this case we've also
-expanded all the nodes using the 'E' key):
+expanded all the nodes using the ``E`` key):
 
 .. image:: figures/perf-wget-busybox-dso-zoom.png
    :align: center
    :width: 70%
 
-Finally, we can see that now that the BusyBox debuginfo is installed,
+Finally, we can see that now that the BusyBox debugging information is installed,
 the previously unresolved symbol in the ``sys_clock_gettime()`` entry
 mentioned previously is now resolved, and shows that the
-sys_clock_gettime system call that was the source of 6.75% of the
-copy-to-user overhead was initiated by the ``handle_input()`` BusyBox
+``sys_clock_gettime`` system call that was the source of 6.75% of the
+``copy-to-user`` overhead was initiated by the ``handle_input()`` BusyBox
 function:
 
 .. image:: figures/perf-wget-g-copy-to-user-expanded-debuginfo.png
@@ -365,15 +364,15 @@
 
 At the lowest level of detail, we can dive down to the assembly level
 and see which instructions caused the most overhead in a function.
-Pressing 'enter' on the 'udhcpc_main' function, we're again presented
+Pressing ``Enter`` on the ``udhcpc_main`` function, we're again presented
 with a menu:
 
 .. image:: figures/perf-wget-busybox-annotate-menu.png
    :align: center
    :width: 70%
 
-Selecting 'Annotate udhcpc_main', we get a detailed listing of
-percentages by instruction for the udhcpc_main function. From the
+Selecting ``Annotate udhcpc_main``, we get a detailed listing of
+percentages by instruction for the ``udhcpc_main`` function. From the
 display, we can see that over 50% of the time spent in this function is
 taken up by a couple tests and the move of a constant (1) to a register:
 
@@ -382,17 +381,17 @@
    :width: 70%
 
 As a segue into tracing, let's try another profile using a different
-counter, something other than the default 'cycles'.
+counter, something other than the default ``cycles``.
 
 The tracing and profiling infrastructure in Linux has become unified in
 a way that allows us to use the same tool with a completely different
 set of counters, not just the standard hardware counters that
-traditional tools have had to restrict themselves to (of course the
-traditional tools can also make use of the expanded possibilities now
+traditional tools have had to restrict themselves to (the
+traditional tools can now actually make use of the expanded possibilities now
 available to them, and in some cases have, as mentioned previously).
 
 We can get a list of the available events that can be used to profile a
-workload via 'perf list'::
+workload via ``perf list``::
 
    root@crownbay:~# perf list
 
@@ -528,14 +527,14 @@
 .. admonition:: Tying it Together
 
    These are exactly the same set of events defined by the trace event
-   subsystem and exposed by ftrace/tracecmd/kernelshark as files in
-   /sys/kernel/debug/tracing/events, by SystemTap as
+   subsystem and exposed by ftrace / trace-cmd / KernelShark as files in
+   ``/sys/kernel/debug/tracing/events``, by SystemTap as
    kernel.trace("tracepoint_name") and (partially) accessed by LTTng.
 
 Only a subset of these would be of interest to us when looking at this
 workload, so let's choose the most likely subsystems (identified by the
-string before the colon in the Tracepoint events) and do a 'perf stat'
-run using only those wildcarded subsystems::
+string before the colon in the ``Tracepoint`` events) and do a ``perf stat``
+run using only those subsystem wildcards::
 
    root@crownbay:~# perf stat -e skb:* -e net:* -e napi:* -e sched:* -e workqueue:* -e irq:* -e syscalls:* wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
    Performance counter stats for 'wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2':
@@ -607,8 +606,8 @@
 
 The screenshot above shows the results of running a profile using
 sched:sched_switch tracepoint, which shows the relative costs of various
-paths to sched_wakeup (note that sched_wakeup is the name of the
-tracepoint --- it's actually defined just inside ttwu_do_wakeup(), which
+paths to ``sched_wakeup`` (note that ``sched_wakeup`` is the name of the
+tracepoint --- it's actually defined just inside ``ttwu_do_wakeup()``, which
 accounts for the function name actually displayed in the profile:
 
 .. code-block:: c
@@ -626,15 +625,15 @@
      }
 
 A couple of the more interesting
-callchains are expanded and displayed above, basically some network
-receive paths that presumably end up waking up wget (busybox) when
+call chains are expanded and displayed above, basically some network
+receive paths that presumably end up waking up wget (BusyBox) when
 network data is ready.
 
 Note that because tracepoints are normally used for tracing, the default
-sampling period for tracepoints is 1 i.e. for tracepoints perf will
-sample on every event occurrence (this can be changed using the -c
+sampling period for tracepoints is ``1`` i.e. for tracepoints perf will
+sample on every event occurrence (this can be changed using the ``-c``
 option). This is in contrast to hardware counters such as for example
-the default 'cycles' hardware counter used for normal profiling, where
+the default ``cycles`` hardware counter used for normal profiling, where
 sampling periods are much higher (in the thousands) because profiling
 should have as low an overhead as possible and sampling on every cycle
 would be prohibitively expensive.
@@ -645,10 +644,10 @@
 Profiling is a great tool for solving many problems or for getting a
 high-level view of what's going on with a workload or across the system.
 It is however by definition an approximation, as suggested by the most
-prominent word associated with it, 'sampling'. On the one hand, it
+prominent word associated with it, ``sampling``. On the one hand, it
 allows a representative picture of what's going on in the system to be
-cheaply taken, but on the other hand, that cheapness limits its utility
-when that data suggests a need to 'dive down' more deeply to discover
+cheaply taken, but alternatively, that cheapness limits its utility
+when that data suggests a need to "dive down" more deeply to discover
 what's really going on. In such cases, the only way to see what's really
 going on is to be able to look at (or summarize more intelligently) the
 individual steps that go into the higher-level behavior exposed by the
@@ -661,7 +660,7 @@
     -e syscalls:sys_enter_read -e syscalls:sys_exit_read -e syscalls:sys_enter_write -e syscalls:sys_exit_write
     wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
 
-We can look at the raw trace output using 'perf script' with no
+We can look at the raw trace output using ``perf script`` with no
 arguments::
 
    root@crownbay:~# perf script
@@ -692,7 +691,7 @@
 This gives us a detailed timestamped sequence of events that occurred within the
 workload with respect to those events.
 
-In many ways, profiling can be viewed as a subset of tracing -
+In many ways, profiling can be viewed as a subset of tracing ---
 theoretically, if you have a set of trace events that's sufficient to
 capture all the important aspects of a workload, you can derive any of
 the results or views that a profiling run can.
@@ -712,23 +711,23 @@
 Another way to look at it is that there are only so many ways that the
 'primitive' counters can be used on their own to generate interesting
 output; to get anything more complicated than simple counts requires
-some amount of additional logic, which is typically very specific to the
+some amount of additional logic, which is typically specific to the
 problem at hand. For example, if we wanted to make use of a 'counter'
 that maps to the value of the time difference between when a process was
 scheduled to run on a processor and the time it actually ran, we
 wouldn't expect such a counter to exist on its own, but we could derive
-one called say 'wakeup_latency' and use it to extract a useful view of
+one called say ``wakeup_latency`` and use it to extract a useful view of
 that metric from trace data. Likewise, we really can't figure out from
 standard profiling tools how much data every process on the system reads
 and writes, along with how many of those reads and writes fail
 completely. If we have sufficient trace data, however, we could with the
 right tools easily extract and present that information, but we'd need
-something other than pre-canned profiling tools to do that.
+something other than ready-made profiling tools to do that.
 
 Luckily, there is a general-purpose way to handle such needs, called
-'programming languages'. Making programming languages easily available
+"programming languages". Making programming languages easily available
 to apply to such problems given the specific format of data is called a
-'programming language binding' for that data and language. Perf supports
+'programming language binding' for that data and language. perf supports
 two programming language bindings, one for Python and one for Perl.
 
 .. admonition:: Tying it Together
@@ -738,21 +737,21 @@
    DProbes dpcc compiler, an ANSI C compiler which targeted a low-level
    assembly language running on an in-kernel interpreter on the target
    system. This is exactly analogous to what Sun's DTrace did, except
-   that DTrace invented its own language for the purpose. Systemtap,
+   that DTrace invented its own language for the purpose. SystemTap,
    heavily inspired by DTrace, also created its own one-off language,
    but rather than running the product on an in-kernel interpreter,
    created an elaborate compiler-based machinery to translate its
    language into kernel modules written in C.
 
-Now that we have the trace data in perf.data, we can use 'perf script
--g' to generate a skeleton script with handlers for the read/write
-entry/exit events we recorded::
+Now that we have the trace data in ``perf.data``, we can use ``perf script
+-g`` to generate a skeleton script with handlers for the read / write
+entry / exit events we recorded::
 
    root@crownbay:~# perf script -g python
    generated Python script: perf-script.py
 
-The skeleton script simply creates a Python function for each event type in the
-perf.data file. The body of each function simply prints the event name along
+The skeleton script just creates a Python function for each event type in the
+``perf.data`` file. The body of each function just prints the event name along
 with its parameters. For example:
 
 .. code-block:: python
@@ -766,7 +765,7 @@
                   print "skbaddr=%u, len=%u, name=%s\n" % (skbaddr, len, name),
 
 We can run that script directly to print all of the events contained in the
-perf.data file::
+``perf.data`` file::
 
    root@crownbay:~# perf script -s perf-script.py
 
@@ -795,8 +794,8 @@
    syscalls__sys_exit_read     1 11624.859944032     1262 wget                  nr=3, ret=1024
 
 That in itself isn't very useful; after all, we can accomplish pretty much the
-same thing by simply running 'perf script' without arguments in the same
-directory as the perf.data file.
+same thing by just running ``perf script`` without arguments in the same
+directory as the ``perf.data`` file.
 
 We can however replace the print statements in the generated function
 bodies with whatever we want, and thereby make it infinitely more
@@ -817,8 +816,8 @@
 
 Each event handler function in the generated code
 is modified to do this. For convenience, we define a common function
-called inc_counts() that each handler calls; inc_counts() simply tallies
-a count for each event using the 'counts' hash, which is a specialized
+called ``inc_counts()`` that each handler calls; ``inc_counts()`` just tallies
+a count for each event using the ``counts`` hash, which is a specialized
 hash function that does Perl-like autovivification, a capability that's
 extremely useful for kinds of multi-level aggregation commonly used in
 processing traces (see perf's documentation on the Python language
@@ -836,7 +835,7 @@
 
 Finally, at the end of the trace processing run, we want to print the
 result of all the per-event tallies. For that, we use the special
-'trace_end()' function:
+``trace_end()`` function:
 
 .. code-block:: python
 
@@ -865,7 +864,7 @@
    syscalls__sys_exit_write                       8990
 
 Note that this is
-pretty much exactly the same information we get from 'perf stat', which
+pretty much exactly the same information we get from ``perf stat``, which
 goes a little way to support the idea mentioned previously that given
 the right kind of trace data, higher-level profiling-type summaries can
 be derived from it.
@@ -877,44 +876,44 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 The examples so far have focused on tracing a particular program or
-workload --- in other words, every profiling run has specified the program
-to profile in the command-line e.g. 'perf record wget ...'.
+workload --- that is, every profiling run has specified the program
+to profile in the command-line e.g. ``perf record wget ...``.
 
 It's also possible, and more interesting in many cases, to run a
 system-wide profile or trace while running the workload in a separate
 shell.
 
-To do system-wide profiling or tracing, you typically use the -a flag to
-'perf record'.
+To do system-wide profiling or tracing, you typically use the ``-a`` flag to
+``perf record``.
 
 To demonstrate this, open up one window and start the profile using the
--a flag (press Ctrl-C to stop tracing)::
+``-a`` flag (press ``Ctrl-C`` to stop tracing)::
 
    root@crownbay:~# perf record -g -a
    ^C[ perf record: Woken up 6 times to write data ]
    [ perf record: Captured and wrote 1.400 MB perf.data (~61172 samples) ]
 
-In another window, run the wget test::
+In another window, run the ``wget`` test::
 
    root@crownbay:~# wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2
    Connecting to downloads.yoctoproject.org (140.211.169.59:80)
    linux-2.6.19.2.tar.b 100% \|*******************************\| 41727k 0:00:00 ETA
 
-Here we see entries not only for our wget load, but for
+Here we see entries not only for our ``wget`` load, but for
 other processes running on the system as well:
 
 .. image:: figures/perf-systemwide.png
    :align: center
    :width: 70%
 
-In the snapshot above, we can see callchains that originate in libc, and
-a callchain from Xorg that demonstrates that we're using a proprietary X
-driver in userspace (notice the presence of 'PVR' and some other
-unresolvable symbols in the expanded Xorg callchain).
+In the snapshot above, we can see call chains that originate in ``libc``, and
+a call chain from ``Xorg`` that demonstrates that we're using a proprietary X
+driver in user space (notice the presence of ``PVR`` and some other
+unresolvable symbols in the expanded ``Xorg`` call chain).
 
-Note also that we have both kernel and userspace entries in the above
-snapshot. We can also tell perf to focus on userspace but providing a
-modifier, in this case 'u', to the 'cycles' hardware counter when we
+Note also that we have both kernel and user space entries in the above
+snapshot. We can also tell perf to focus on user space but providing a
+modifier, in this case ``u``, to the ``cycles`` hardware counter when we
 record a profile::
 
    root@crownbay:~# perf record -g -a -e cycles:u
@@ -925,25 +924,25 @@
    :align: center
    :width: 70%
 
-Notice in the screenshot above, we see only userspace entries ([.])
+Notice in the screenshot above, we see only user space entries (``[.]``)
 
-Finally, we can press 'enter' on a leaf node and select the 'Zoom into
-DSO' menu item to show only entries associated with a specific DSO. In
-the screenshot below, we've zoomed into the 'libc' DSO which shows all
-the entries associated with the libc-xxx.so DSO.
+Finally, we can press ``Enter`` on a leaf node and select the ``Zoom into
+DSO`` menu item to show only entries associated with a specific DSO. In
+the screenshot below, we've zoomed into the ``libc`` DSO which shows all
+the entries associated with the ``libc-xxx.so`` DSO.
 
 .. image:: figures/perf-systemwide-libc.png
    :align: center
    :width: 70%
 
-We can also use the system-wide -a switch to do system-wide tracing.
+We can also use the system-wide ``-a`` switch to do system-wide tracing.
 Here we'll trace a couple of scheduler events::
 
    root@crownbay:~# perf record -a -e sched:sched_switch -e sched:sched_wakeup
    ^C[ perf record: Woken up 38 times to write data ]
    [ perf record: Captured and wrote 9.780 MB perf.data (~427299 samples) ]
 
-We can look at the raw output using 'perf script' with no arguments::
+We can look at the raw output using ``perf script`` with no arguments::
 
    root@crownbay:~# perf script
 
@@ -961,11 +960,11 @@
 Filtering
 ^^^^^^^^^
 
-Notice that there are a lot of events that don't really have anything to
-do with what we're interested in, namely events that schedule 'perf'
+Notice that there are many events that don't really have anything to
+do with what we're interested in, namely events that schedule ``perf``
 itself in and out or that wake perf up. We can get rid of those by using
-the '--filter' option --- for each event we specify using -e, we can add a
---filter after that to filter out trace events that contain fields with
+the ``--filter`` option --- for each event we specify using ``-e``, we can add a
+``--filter`` after that to filter out trace events that contain fields with
 specific values::
 
    root@crownbay:~# perf record -a -e sched:sched_switch --filter 'next_comm != perf && prev_comm != perf' -e sched:sched_wakeup --filter 'comm != perf'
@@ -991,16 +990,16 @@
        kworker/0:3  1209 [000]  7932.326214: sched_switch: prev_comm=kworker/0:3 prev_pid=1209 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120
 
 In this case, we've filtered out all events that have
-'perf' in their 'comm' or 'comm_prev' or 'comm_next' fields. Notice that
+``perf`` in their ``comm``, ``comm_prev`` or ``comm_next`` fields. Notice that
 there are still events recorded for perf, but notice that those events
-don't have values of 'perf' for the filtered fields. To completely
+don't have values of ``perf`` for the filtered fields. To completely
 filter out anything from perf will require a bit more work, but for the
 purpose of demonstrating how to use filters, it's close enough.
 
 .. admonition:: Tying it Together
 
    These are exactly the same set of event filters defined by the trace
-   event subsystem. See the ftrace/tracecmd/kernelshark section for more
+   event subsystem. See the ftrace / trace-cmd / KernelShark section for more
    discussion about these event filters.
 
 .. admonition:: Tying it Together
@@ -1010,14 +1009,14 @@
    indispensable part of the perf design as it relates to tracing.
    kernel-based event filters provide a mechanism to precisely throttle
    the event stream that appears in user space, where it makes sense to
-   provide bindings to real programming languages for postprocessing the
+   provide bindings to real programming languages for post-processing the
    event stream. This architecture allows for the intelligent and
    flexible partitioning of processing between the kernel and user
    space. Contrast this with other tools such as SystemTap, which does
    all of its processing in the kernel and as such requires a special
    project-defined language in order to accommodate that design, or
-   LTTng, where everything is sent to userspace and as such requires a
-   super-efficient kernel-to-userspace transport mechanism in order to
+   LTTng, where everything is sent to user space and as such requires a
+   super-efficient kernel-to-user space transport mechanism in order to
    function properly. While perf certainly can benefit from for instance
    advances in the design of the transport, it doesn't fundamentally
    depend on them. Basically, if you find that your perf tracing
@@ -1028,9 +1027,9 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 
 perf isn't restricted to the fixed set of static tracepoints listed by
-'perf list'. Users can also add their own 'dynamic' tracepoints anywhere
-in the kernel. For instance, suppose we want to define our own
-tracepoint on do_fork(). We can do that using the 'perf probe' perf
+``perf list``. Users can also add their own "dynamic" tracepoints anywhere
+in the kernel. For example, suppose we want to define our own
+tracepoint on ``do_fork()``. We can do that using the ``perf probe`` perf
 subcommand::
 
    root@crownbay:~# perf probe do_fork
@@ -1042,8 +1041,8 @@
      perf record -e probe:do_fork -aR sleep 1
 
 Adding a new tracepoint via
-'perf probe' results in an event with all the expected files and format
-in /sys/kernel/debug/tracing/events, just the same as for static
+``perf probe`` results in an event with all the expected files and format
+in ``/sys/kernel/debug/tracing/events``, just the same as for static
 tracepoints (as discussed in more detail in the trace events subsystem
 section::
 
@@ -1076,7 +1075,7 @@
     probe:do_fork (on do_fork)
     probe:schedule (on schedule)
 
-Let's record system-wide ('sleep 30' is a
+Let's record system-wide (``sleep 30`` is a
 trick for recording system-wide but basically do nothing and then wake
 up after 30 seconds)::
 
@@ -1084,7 +1083,7 @@
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.087 MB perf.data (~3812 samples) ]
 
-Using 'perf script' we can see each do_fork event that fired::
+Using ``perf script`` we can see each ``do_fork`` event that fired::
 
    root@crownbay:~# perf script
 
@@ -1125,8 +1124,8 @@
     matchbox-deskto  1311 [001] 34237.114106: do_fork: (c1028460)
                gaku  1312 [000] 34237.202388: do_fork: (c1028460)
 
-And using 'perf report' on the same file, we can see the
-callgraphs from starting a few programs during those 30 seconds:
+And using ``perf report`` on the same file, we can see the
+call graphs from starting a few programs during those 30 seconds:
 
 .. image:: figures/perf-probe-do_fork-profile.png
    :align: center
@@ -1141,57 +1140,57 @@
 
 .. admonition:: Tying it Together
 
-   Dynamic tracepoints are implemented under the covers by kprobes and
-   uprobes. kprobes and uprobes are also used by and in fact are the
+   Dynamic tracepoints are implemented under the covers by Kprobes and
+   Uprobes. Kprobes and Uprobes are also used by and in fact are the
    main focus of SystemTap.
 
-Perf Documentation
+perf Documentation
 ------------------
 
-Online versions of the man pages for the commands discussed in this
+Online versions of the manual pages for the commands discussed in this
 section can be found here:
 
--  The `'perf stat' manpage <https://linux.die.net/man/1/perf-stat>`__.
+-  The `'perf stat' manual page <https://linux.die.net/man/1/perf-stat>`__.
 
 -  The `'perf record'
-   manpage <https://linux.die.net/man/1/perf-record>`__.
+   manual page <https://linux.die.net/man/1/perf-record>`__.
 
 -  The `'perf report'
-   manpage <https://linux.die.net/man/1/perf-report>`__.
+   manual page <https://linux.die.net/man/1/perf-report>`__.
 
--  The `'perf probe' manpage <https://linux.die.net/man/1/perf-probe>`__.
+-  The `'perf probe' manual page <https://linux.die.net/man/1/perf-probe>`__.
 
 -  The `'perf script'
-   manpage <https://linux.die.net/man/1/perf-script>`__.
+   manual page <https://linux.die.net/man/1/perf-script>`__.
 
 -  Documentation on using the `'perf script' Python
    binding <https://linux.die.net/man/1/perf-script-python>`__.
 
--  The top-level `perf(1) manpage <https://linux.die.net/man/1/perf>`__.
+-  The top-level `perf(1) manual page <https://linux.die.net/man/1/perf>`__.
 
-Normally, you should be able to invoke the man pages via perf itself
-e.g. 'perf help' or 'perf help record'.
+Normally, you should be able to open the manual pages via perf itself
+e.g. ``perf help`` or ``perf help record``.
 
-To have the perf manpages installed on your target, modify your
+To have the perf manual pages installed on your target, modify your
 configuration as follows::
 
    IMAGE_INSTALL:append = " perf perf-doc"
    DISTRO_FEATURES:append = " api-documentation"
 
-The man pages in text form, along with some other files, such as a set
-of examples, can also be found in the 'perf' directory of the kernel tree::
+The manual pages in text form, along with some other files, such as a set
+of examples, can also be found in the ``perf`` directory of the kernel tree::
 
    tools/perf/Documentation
 
 There's also a nice perf tutorial on the perf
-wiki that goes into more detail than we do here in certain areas: `Perf
+wiki that goes into more detail than we do here in certain areas: `perf
 Tutorial <https://perf.wiki.kernel.org/index.php/Tutorial>`__
 
 ftrace
 ======
 
-'ftrace' literally refers to the 'ftrace function tracer' but in reality
-this encompasses a number of related tracers along with the
+"ftrace" literally refers to the "ftrace function tracer" but in reality
+this encompasses several related tracers along with the
 infrastructure that they all make use of.
 
 ftrace Setup
@@ -1200,20 +1199,20 @@
 For this section, we'll assume you've already performed the basic setup
 outlined in the ":ref:`profile-manual/intro:General Setup`" section.
 
-ftrace, trace-cmd, and kernelshark run on the target system, and are
+ftrace, trace-cmd, and KernelShark run on the target system, and are
 ready to go out-of-the-box --- no additional setup is necessary. For the
-rest of this section we assume you've ssh'ed to the host and will be
-running ftrace on the target. kernelshark is a GUI application and if
-you use the '-X' option to ssh you can have the kernelshark GUI run on
+rest of this section we assume you're connected to the host through SSH and
+will be running ftrace on the target. KernelShark is a GUI application and if
+you use the ``-X`` option to ``ssh`` you can have the KernelShark GUI run on
 the target but display remotely on the host if you want.
 
 Basic ftrace usage
 ------------------
 
-'ftrace' essentially refers to everything included in the /tracing
+"ftrace" essentially refers to everything included in the ``/tracing``
 directory of the mounted debugfs filesystem (Yocto follows the standard
-convention and mounts it at /sys/kernel/debug). Here's a listing of all
-the files found in /sys/kernel/debug/tracing on a Yocto system::
+convention and mounts it at ``/sys/kernel/debug``). All the files found in
+``/sys/kernel/debug/tracing`` on a Yocto system are::
 
    root@sugarbay:/sys/kernel/debug/tracing# ls
    README                      kprobe_events               trace
@@ -1229,7 +1228,7 @@
    free_buffer                 set_graph_function
 
 The files listed above are used for various purposes
-- some relate directly to the tracers themselves, others are used to set
+--- some relate directly to the tracers themselves, others are used to set
 tracing options, and yet others actually contain the tracing output when
 a tracer is in effect. Some of the functions can be guessed from their
 names, others need explanation; in any case, we'll cover some of the
@@ -1238,30 +1237,30 @@
 
 We'll start by looking at some of the available built-in tracers.
 
-cat'ing the 'available_tracers' file lists the set of available tracers::
+The ``available_tracers`` file lists the set of available tracers::
 
    root@sugarbay:/sys/kernel/debug/tracing# cat available_tracers
    blk function_graph function nop
 
-The 'current_tracer' file contains the tracer currently in effect::
+The ``current_tracer`` file contains the tracer currently in effect::
 
    root@sugarbay:/sys/kernel/debug/tracing# cat current_tracer
    nop
 
-The above listing of current_tracer shows that the
-'nop' tracer is in effect, which is just another way of saying that
+The above listing of ``current_tracer`` shows that the
+``nop`` tracer is in effect, which is just another way of saying that
 there's actually no tracer currently in effect.
 
-echo'ing one of the available_tracers into current_tracer makes the
+Writing one of the available tracers into ``current_tracer`` makes the
 specified tracer the current tracer::
 
    root@sugarbay:/sys/kernel/debug/tracing# echo function > current_tracer
    root@sugarbay:/sys/kernel/debug/tracing# cat current_tracer
    function
 
-The above sets the current tracer to be the 'function tracer'. This tracer
+The above sets the current tracer to be the ``function`` tracer. This tracer
 traces every function call in the kernel and makes it available as the
-contents of the 'trace' file. Reading the 'trace' file lists the
+contents of the ``trace`` file. Reading the ``trace`` file lists the
 currently buffered function calls that have been traced by the function
 tracer::
 
@@ -1308,7 +1307,7 @@
             .
 
 Each line in the trace above shows what was happening in the kernel on a given
-cpu, to the level of detail of function calls. Each entry shows the function
+CPU, to the level of detail of function calls. Each entry shows the function
 called, followed by its caller (after the arrow).
 
 The function tracer gives you an extremely detailed idea of what the
@@ -1318,11 +1317,11 @@
 .. admonition:: Tying it Together
 
    The ftrace function tracer is also available from within perf, as the
-   ftrace:function tracepoint.
+   ``ftrace:function`` tracepoint.
 
 It is a little more difficult to follow the call chains than it needs to
 be --- luckily there's a variant of the function tracer that displays the
-callchains explicitly, called the 'function_graph' tracer::
+call chains explicitly, called the ``function_graph`` tracer::
 
    root@sugarbay:/sys/kernel/debug/tracing# echo function_graph > current_tracer
    root@sugarbay:/sys/kernel/debug/tracing# cat trace | less
@@ -1437,11 +1436,11 @@
    3) + 13.784 us   |  }
    3)               |  sys_ioctl() {
 
-As you can see, the function_graph display is much easier
+As you can see, the ``function_graph`` display is much easier
 to follow. Also note that in addition to the function calls and
 associated braces, other events such as scheduler events are displayed
 in context. In fact, you can freely include any tracepoint available in
-the trace events subsystem described in the next section by simply
+the trace events subsystem described in the next section by just
 enabling those events, and they'll appear in context in the function
 graph display. Quite a powerful tool for understanding kernel dynamics.
 
@@ -1455,9 +1454,9 @@
 ----------------------------
 
 One especially important directory contained within the
-/sys/kernel/debug/tracing directory is the 'events' subdirectory, which
+``/sys/kernel/debug/tracing`` directory is the ``events`` subdirectory, which
 contains representations of every tracepoint in the system. Listing out
-the contents of the 'events' subdirectory, we see mainly another set of
+the contents of the ``events`` subdirectory, we see mainly another set of
 subdirectories::
 
    root@sugarbay:/sys/kernel/debug/tracing# cd events
@@ -1505,9 +1504,9 @@
    drwxr-xr-x   26 root     root             0 Nov 14 23:19 writeback
 
 Each one of these subdirectories
-corresponds to a 'subsystem' and contains yet again more subdirectories,
+corresponds to a "subsystem" and contains yet again more subdirectories,
 each one of those finally corresponding to a tracepoint. For example,
-here are the contents of the 'kmem' subsystem::
+here are the contents of the ``kmem`` subsystem::
 
    root@sugarbay:/sys/kernel/debug/tracing/events# cd kmem
    root@sugarbay:/sys/kernel/debug/tracing/events/kmem# ls -al
@@ -1529,7 +1528,7 @@
    drwxr-xr-x    2 root     root             0 Nov 14 23:19 mm_page_pcpu_drain
 
 Let's see what's inside the subdirectory for a
-specific tracepoint, in this case the one for kmalloc::
+specific tracepoint, in this case the one for ``kmalloc``::
 
    root@sugarbay:/sys/kernel/debug/tracing/events/kmem# cd kmalloc
    root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# ls -al
@@ -1540,12 +1539,12 @@
    -r--r--r--    1 root     root             0 Nov 14 23:19 format
    -r--r--r--    1 root     root             0 Nov 14 23:19 id
 
-The 'format' file for the
+The ``format`` file for the
 tracepoint describes the event in memory, which is used by the various
 tracing tools that now make use of these tracepoint to parse the event
-and make sense of it, along with a 'print fmt' field that allows tools
-like ftrace to display the event as text. Here's what the format of the
-kmalloc event looks like::
+and make sense of it, along with a ``print fmt`` field that allows tools
+like ftrace to display the event as text. The format of the
+``kmalloc`` event looks like::
 
    root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# cat format
    name: kmalloc
@@ -1580,11 +1579,11 @@
    long)(( gfp_t)0x08u), "GFP_MOVABLE"}, {(unsigned long)(( gfp_t)0), "GFP_NOTRACK"}, {(unsigned long)(( gfp_t)0x400000u), "GFP_NO_KSWAPD"},
    {(unsigned long)(( gfp_t)0x800000u), "GFP_OTHER_NODE"} ) : "GFP_NOWAIT"
 
-The 'enable' file
+The ``enable`` file
 in the tracepoint directory is what allows the user (or tools such as
-trace-cmd) to actually turn the tracepoint on and off. When enabled, the
-corresponding tracepoint will start appearing in the ftrace 'trace' file
-described previously. For example, this turns on the kmalloc tracepoint::
+``trace-cmd``) to actually turn the tracepoint on and off. When enabled, the
+corresponding tracepoint will start appearing in the ftrace ``trace`` file
+described previously. For example, this turns on the ``kmalloc`` tracepoint::
 
    root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# echo 1 > enable
 
@@ -1596,8 +1595,8 @@
    root@sugarbay:/sys/kernel/debug/tracing# echo nop > current_tracer
    root@sugarbay:/sys/kernel/debug/tracing# echo 1 > tracing_on
 
-Now, if we look at the 'trace' file, we see nothing
-but the kmalloc events we just turned on::
+Now, if we look at the ``trace`` file, we see nothing
+but the ``kmalloc`` events we just turned on::
 
    root@sugarbay:/sys/kernel/debug/tracing# cat trace | less
    # tracer: nop
@@ -1643,17 +1642,17 @@
             <idle>-0     [000] ..s3 18156.400660: kmalloc: call_site=ffffffff81619b36 ptr=ffff88006d554800 bytes_req=512 bytes_alloc=512 gfp_flags=GFP_ATOMIC
    matchbox-termin-1361  [001] ...1 18156.552800: kmalloc: call_site=ffffffff81614050 ptr=ffff88006db34800 bytes_req=576 bytes_alloc=1024 gfp_flags=GFP_KERNEL|GFP_REPEAT
 
-To again disable the kmalloc event, we need to send 0 to the enable file::
+To again disable the ``kmalloc`` event, we need to send ``0`` to the ``enable`` file::
 
    root@sugarbay:/sys/kernel/debug/tracing/events/kmem/kmalloc# echo 0 > enable
 
 You can enable any number of events or complete subsystems (by
-using the 'enable' file in the subsystem directory) and get an
+using the ``enable`` file in the subsystem directory) and get an
 arbitrarily fine-grained idea of what's going on in the system by
 enabling as many of the appropriate tracepoints as applicable.
 
-A number of the tools described in this HOWTO do just that, including
-trace-cmd and kernelshark in the next section.
+Several tools described in this How-to do just that, including
+``trace-cmd`` and KernelShark in the next section.
 
 .. admonition:: Tying it Together
 
@@ -1661,41 +1660,40 @@
    ftrace, but by many of the other tools covered in this document and
    they form a central point of integration for the various tracers
    available in Linux. They form a central part of the instrumentation
-   for the following tools: perf, lttng, ftrace, blktrace and SystemTap
+   for the following tools: perf, LTTng, ftrace, blktrace and SystemTap
 
 .. admonition:: Tying it Together
 
    Eventually all the special-purpose tracers currently available in
-   /sys/kernel/debug/tracing will be removed and replaced with
-   equivalent tracers based on the 'trace events' subsystem.
+   ``/sys/kernel/debug/tracing`` will be removed and replaced with
+   equivalent tracers based on the "trace events" subsystem.
 
-trace-cmd/kernelshark
----------------------
+trace-cmd / KernelShark
+-----------------------
 
-trace-cmd is essentially an extensive command-line 'wrapper' interface
+trace-cmd is essentially an extensive command-line "wrapper" interface
 that hides the details of all the individual files in
-/sys/kernel/debug/tracing, allowing users to specify specific particular
-events within the /sys/kernel/debug/tracing/events/ subdirectory and to
+``/sys/kernel/debug/tracing``, allowing users to specify specific particular
+events within the ``/sys/kernel/debug/tracing/events/`` subdirectory and to
 collect traces and avoid having to deal with those details directly.
 
-As yet another layer on top of that, kernelshark provides a GUI that
+As yet another layer on top of that, KernelShark provides a GUI that
 allows users to start and stop traces and specify sets of events using
 an intuitive interface, and view the output as both trace events and as
-a per-CPU graphical display. It directly uses 'trace-cmd' as the
+a per-CPU graphical display. It directly uses trace-cmd as the
 plumbing that accomplishes all that underneath the covers (and actually
 displays the trace-cmd command it uses, as we'll see).
 
-To start a trace using kernelshark, first start kernelshark::
+To start a trace using KernelShark, first start this tool::
 
    root@sugarbay:~# kernelshark
 
-Then bring up the 'Capture' dialog by
-choosing from the kernelshark menu::
+Then open up the ``Capture`` dialog by choosing from the KernelShark menu::
 
    Capture | Record
 
 That will display the following dialog, which allows you to choose one or more
-events (or even one or more complete subsystems) to trace:
+events (or even entire subsystems) to trace:
 
 .. image:: figures/kernelshark-choose-events.png
    :align: center
@@ -1703,41 +1701,41 @@
 
 Note that these are exactly the same sets of events described in the
 previous trace events subsystem section, and in fact is where trace-cmd
-gets them for kernelshark.
+gets them for KernelShark.
 
 In the above screenshot, we've decided to explore the graphics subsystem
 a bit and so have chosen to trace all the tracepoints contained within
-the 'i915' and 'drm' subsystems.
+the ``i915`` and ``drm`` subsystems.
 
-After doing that, we can start and stop the trace using the 'Run' and
-'Stop' button on the lower right corner of the dialog (the same button
+After doing that, we can start and stop the trace using the ``Run`` and
+``Stop`` button on the lower right corner of the dialog (the same button
 will turn into the 'Stop' button after the trace has started):
 
 .. image:: figures/kernelshark-output-display.png
    :align: center
    :width: 70%
 
-Notice that the right-hand pane shows the exact trace-cmd command-line
+Notice that the right pane shows the exact trace-cmd command-line
 that's used to run the trace, along with the results of the trace-cmd
 run.
 
-Once the 'Stop' button is pressed, the graphical view magically fills up
-with a colorful per-cpu display of the trace data, along with the
+Once the ``Stop`` button is pressed, the graphical view magically fills up
+with a colorful per-CPU display of the trace data, along with the
 detailed event listing below that:
 
 .. image:: figures/kernelshark-i915-display.png
    :align: center
    :width: 70%
 
-Here's another example, this time a display resulting from tracing 'all
-events':
+Here's another example, this time a display resulting from tracing ``all
+events``:
 
 .. image:: figures/kernelshark-all.png
    :align: center
    :width: 70%
 
 The tool is pretty self-explanatory, but for more detailed information
-on navigating through the data, see the `kernelshark
+on navigating through the data, see the `KernelShark
 website <https://kernelshark.org/Documentation.html>`__.
 
 ftrace Documentation
@@ -1753,41 +1751,41 @@
 
    Documentation/trace/events.txt
 
-There is a nice series of articles on using ftrace and trace-cmd at LWN:
+A nice series of articles on using ftrace and trace-cmd are available at LWN:
 
--  `Debugging the kernel using Ftrace - part
+-  `Debugging the kernel using ftrace - part
    1 <https://lwn.net/Articles/365835/>`__
 
--  `Debugging the kernel using Ftrace - part
+-  `Debugging the kernel using ftrace - part
    2 <https://lwn.net/Articles/366796/>`__
 
--  `Secrets of the Ftrace function
+-  `Secrets of the ftrace function
    tracer <https://lwn.net/Articles/370423/>`__
 
 -  `trace-cmd: A front-end for
-   Ftrace <https://lwn.net/Articles/410200/>`__
+   ftrace <https://lwn.net/Articles/410200/>`__
 
 See also `KernelShark's documentation <https://kernelshark.org/Documentation.html>`__
 for further usage details.
 
-An amusing yet useful README (a tracing mini-HOWTO) can be found in
+An amusing yet useful README (a tracing mini-How-to) can be found in
 ``/sys/kernel/debug/tracing/README``.
 
-systemtap
+SystemTap
 =========
 
 SystemTap is a system-wide script-based tracing and profiling tool.
 
 SystemTap scripts are C-like programs that are executed in the kernel to
-gather/print/aggregate data extracted from the context they end up being
-invoked under.
+gather / print / aggregate data extracted from the context they end up being
+called under.
 
 For example, this probe from the `SystemTap
-tutorial <https://sourceware.org/systemtap/tutorial/>`__ simply prints a
-line every time any process on the system open()s a file. For each line,
+tutorial <https://sourceware.org/systemtap/tutorial/>`__ just prints a
+line every time any process on the system runs ``open()`` on a file. For each line,
 it prints the executable name of the program that opened the file, along
-with its PID, and the name of the file it opened (or tried to open),
-which it extracts from the open syscall's argstr.
+with its PID, and the name of the file it opened (or tried to open), which it
+extracts from the argument string (``argstr``) of the ``open`` system call.
 
 .. code-block:: none
 
@@ -1802,48 +1800,48 @@
    }
 
 Normally, to execute this
-probe, you'd simply install systemtap on the system you want to probe,
+probe, you'd just install SystemTap on the system you want to probe,
 and directly run the probe on that system e.g. assuming the name of the
-file containing the above text is trace_open.stp::
+file containing the above text is ``trace_open.stp``::
 
    # stap trace_open.stp
 
-What systemtap does under the covers to run this probe is 1) parse and
-convert the probe to an equivalent 'C' form, 2) compile the 'C' form
+What SystemTap does under the covers to run this probe is 1) parse and
+convert the probe to an equivalent "C" form, 2) compile the "C" form
 into a kernel module, 3) insert the module into the kernel, which arms
 it, and 4) collect the data generated by the probe and display it to the
 user.
 
-In order to accomplish steps 1 and 2, the 'stap' program needs access to
+In order to accomplish steps 1 and 2, the ``stap`` program needs access to
 the kernel build system that produced the kernel that the probed system
-is running. In the case of a typical embedded system (the 'target'), the
+is running. In the case of a typical embedded system (the "target"), the
 kernel build system unfortunately isn't typically part of the image
-running on the target. It is normally available on the 'host' system
+running on the target. It is normally available on the "host" system
 that produced the target image however; in such cases, steps 1 and 2 are
 executed on the host system, and steps 3 and 4 are executed on the
-target system, using only the systemtap 'runtime'.
+target system, using only the SystemTap "runtime".
 
-The systemtap support in Yocto assumes that only steps 3 and 4 are run
+The SystemTap support in Yocto assumes that only steps 3 and 4 are run
 on the target; it is possible to do everything on the target, but this
 section assumes only the typical embedded use-case.
 
-So basically what you need to do in order to run a systemtap script on
+Therefore, what you need to do in order to run a SystemTap script on
 the target is to 1) on the host system, compile the probe into a kernel
 module that makes sense to the target, 2) copy the module onto the
 target system and 3) insert the module into the target kernel, which
 arms it, and 4) collect the data generated by the probe and display it
 to the user.
 
-systemtap Setup
+SystemTap Setup
 ---------------
 
-Those are a lot of steps and a lot of details, but fortunately Yocto
-includes a script called 'crosstap' that will take care of those
-details, allowing you to simply execute a systemtap script on the remote
+Those are many steps and details, but fortunately Yocto
+includes a script called ``crosstap`` that will take care of those
+details, allowing you to just execute a SystemTap script on the remote
 target, with arguments if necessary.
 
 In order to do this from a remote host, however, you need to have access
-to the build for the image you booted. The 'crosstap' script provides
+to the build for the image you booted. The ``crosstap`` script provides
 details on how to do this if you run the script on the host without
 having done a build::
 
@@ -1852,29 +1850,35 @@
    Error: No target kernel build found.
    Did you forget to create a local build of your image?
 
-   'crosstap' requires a local sdk build of the target system
-   (or a build that includes 'tools-profile') in order to build
-   kernel modules that can probe the target system.
+'crosstap' requires a local SDK build of the target system
+(or a build that includes 'tools-profile') in order to build
+kernel modules that can probe the target system.
 
-   Practically speaking, that means you need to do the following:
-    - If you're running a pre-built image, download the release
-      and/or BSP tarballs used to build the image.
-    - If you're working from git sources, just clone the metadata
-      and BSP layers needed to build the image you'll be booting.
-    - Make sure you're properly set up to build a new image (see
-      the BSP README and/or the widely available basic documentation
-      that discusses how to build images).
-    - Build an -sdk version of the image e.g.:
-        $ bitbake core-image-sato-sdk
-    OR
-    - Build a non-sdk image but include the profiling tools:
-        [ edit local.conf and add 'tools-profile' to the end of
-          the EXTRA_IMAGE_FEATURES variable ]
-        $ bitbake core-image-sato
+Practically speaking, that means you need to do the following:
+
+-  If you're running a pre-built image, download the release
+   and/or BSP tarballs used to build the image.
+
+-  If you're working from git sources, just clone the metadata
+   and BSP layers needed to build the image you'll be booting.
+
+-  Make sure you're properly set up to build a new image (see
+   the BSP README and/or the widely available basic documentation
+   that discusses how to build images).
+
+-  Build an ``-sdk`` version of the image e.g.::
+
+      $ bitbake core-image-sato-sdk
+
+-  Or build a non-SDK image but include the profiling tools
+   (edit ``local.conf`` and add ``tools-profile`` to the end of
+   :term:``EXTRA_IMAGE_FEATURES`` variable)::
+
+      $ bitbake core-image-sato
 
    Once you've build the image on the host system, you're ready to
-   boot it (or the equivalent pre-built image) and use 'crosstap'
-   to probe it (you need to source the environment as usual first):
+   boot it (or the equivalent pre-built image) and use ``crosstap``
+   to probe it (you need to source the environment as usual first)::
 
       $ source oe-init-build-env
       $ cd ~/my/systemtap/scripts
@@ -1882,29 +1886,27 @@
 
 .. note::
 
-   SystemTap, which uses 'crosstap', assumes you can establish an ssh
+   SystemTap, which uses ``crosstap``, assumes you can establish an SSH
    connection to the remote target. Please refer to the crosstap wiki
-   page for details on verifying ssh connections at
-   . Also, the ability to ssh into the target system is not enabled by
-   default in \*-minimal images.
+   page for details on verifying SSH connections. Also, the ability to SSH
+   into the target system is not enabled by default in ``*-minimal`` images.
 
-So essentially what you need to
-do is build an SDK image or image with 'tools-profile' as detailed in
-the ":ref:`profile-manual/intro:General Setup`" section of this
-manual, and boot the resulting target image.
+Therefore, what you need to do is build an SDK image or image with
+``tools-profile`` as detailed in the ":ref:`profile-manual/intro:General Setup`"
+section of this manual, and boot the resulting target image.
 
 .. note::
 
    If you have a :term:`Build Directory` containing multiple machines, you need
-   to have the :term:`MACHINE` you're connecting to selected in local.conf, and
+   to have the :term:`MACHINE` you're connecting to selected in ``local.conf``, and
    the kernel in that machine's :term:`Build Directory` must match the kernel on
-   the booted system exactly, or you'll get the above 'crosstap' message
-   when you try to invoke a script.
+   the booted system exactly, or you'll get the above ``crosstap`` message
+   when you try to call a script.
 
 Running a Script on a Target
 ----------------------------
 
-Once you've done that, you should be able to run a systemtap script on
+Once you've done that, you should be able to run a SystemTap script on
 the target::
 
    $ cd /path/to/yocto
@@ -1922,8 +1924,8 @@
 
    You can also run generated QEMU images with a command like 'runqemu qemux86-64'
 
-Once you've done that, you can cd to whatever
-directory contains your scripts and use 'crosstap' to run the script::
+Once you've done that, you can ``cd`` to whatever
+directory contains your scripts and use ``crosstap`` to run the script::
 
    $ cd /path/to/my/systemap/script
    $ crosstap root@192.168.7.2 trace_open.stp
@@ -1933,13 +1935,12 @@
    $ crosstap root@192.168.7.2 trace_open.stp
    error establishing ssh connection on remote 'root@192.168.7.2'
 
-Try ssh'ing to the target and see what happens::
+Try connecting to the target through SSH and see what happens::
 
    $ ssh root@192.168.7.2
 
-A lot of the time, connection
-problems are due specifying a wrong IP address or having a 'host key
-verification error'.
+Connection problems are often due specifying a wrong IP address or having a ``host key
+verification error``.
 
 If everything worked as planned, you should see something like this
 (enter the password when prompted, or press enter if it's set up to use
@@ -1952,7 +1953,7 @@
    matchbox-termin(1036) open ("/tmp/vte3FS2LW", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600)
    matchbox-termin(1036) open ("/tmp/vteJMC7LW", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600)
 
-systemtap Documentation
+SystemTap Documentation
 -----------------------
 
 The SystemTap language reference can be found here: `SystemTap Language
@@ -1965,7 +1966,7 @@
 Sysprof
 =======
 
-Sysprof is a very easy to use system-wide profiler that consists of a
+Sysprof is an easy to use system-wide profiler that consists of a
 single window with three panes and a few buttons which allow you to
 start, stop, and view the profile from one place.
 
@@ -1975,18 +1976,18 @@
 For this section, we'll assume you've already performed the basic setup
 outlined in the ":ref:`profile-manual/intro:General Setup`" section.
 
-Sysprof is a GUI-based application that runs on the target system. For
-the rest of this document we assume you've ssh'ed to the host and will
-be running Sysprof on the target (you can use the '-X' option to ssh and
+Sysprof is a GUI-based application that runs on the target system. For the rest
+of this document we assume you're connected to the host through SSH and will be
+running Sysprof on the target (you can use the ``-X`` option to ``ssh`` and
 have the Sysprof GUI run on the target but display remotely on the host
 if you want).
 
 Basic Sysprof Usage
 -------------------
 
-To start profiling the system, you simply press the 'Start' button. To
+To start profiling the system, you just press the ``Start`` button. To
 stop profiling and to start viewing the profile data in one easy step,
-press the 'Profile' button.
+press the ``Profile`` button.
 
 Once you've pressed the profile button, the three panes will fill up
 with profiling data:
@@ -1998,11 +1999,11 @@
 The left pane shows a list of functions and processes. Selecting one of
 those expands that function in the right pane, showing all its callees.
 Note that this caller-oriented display is essentially the inverse of
-perf's default callee-oriented callchain display.
+perf's default callee-oriented call chain display.
 
 In the screenshot above, we're focusing on ``__copy_to_user_ll()`` and
-looking up the callchain we can see that one of the callers of
-``__copy_to_user_ll`` is sys_read() and the complete callpath between them.
+looking up the call chain we can see that one of the callers of
+``__copy_to_user_ll`` is ``sys_read()`` and the complete call path between them.
 Notice that this is essentially a portion of the same information we saw
 in the perf display shown in the perf section of this page.
 
@@ -2011,7 +2012,7 @@
    :width: 70%
 
 Similarly, the above is a snapshot of the Sysprof display of a
-copy-from-user callchain.
+``copy-from-user`` call chain.
 
 Finally, looking at the third Sysprof pane in the lower left, we can see
 a list of all the callers of a particular function selected in the top
@@ -2027,18 +2028,17 @@
 
 .. admonition:: Tying it Together
 
-   If you like sysprof's 'caller-oriented' display, you may be able to
-   approximate it in other tools as well. For example, 'perf report' has
-   the -g (--call-graph) option that you can experiment with; one of the
-   options is 'caller' for an inverted caller-based callgraph display.
+   If you like Sysprof's ``caller-oriented`` display, you may be able to
+   approximate it in other tools as well. For example, ``perf report`` has
+   the ``-g`` (``--call-graph``) option that you can experiment with; one of the
+   options is ``caller`` for an inverted caller-based call graph display.
 
 Sysprof Documentation
 ---------------------
 
 There doesn't seem to be any documentation for Sysprof, but maybe that's
-because it's pretty self-explanatory. The Sysprof website, however, is
-here: `Sysprof, System-wide Performance Profiler for
-Linux <http://sysprof.com/>`__
+because it's pretty self-explanatory. The Sysprof website, however, is here:
+`Sysprof, System-wide Performance Profiler for Linux <http://sysprof.com/>`__
 
 LTTng (Linux Trace Toolkit, next generation)
 ============================================
@@ -2048,20 +2048,20 @@
 
 For this section, we'll assume you've already performed the basic setup
 outlined in the ":ref:`profile-manual/intro:General Setup`" section.
-LTTng is run on the target system by ssh'ing to it.
+LTTng is run on the target system by connecting to it through SSH.
 
 Collecting and Viewing Traces
 -----------------------------
 
 Once you've applied the above commits and built and booted your image
-(you need to build the core-image-sato-sdk image or use one of the other
+(you need to build the ``core-image-sato-sdk`` image or use one of the other
 methods described in the ":ref:`profile-manual/intro:General Setup`" section), you're ready to start
 tracing.
 
 Collecting and viewing a trace on the target (inside a shell)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-First, from the host, ssh to the target::
+First, from the host, connect to the target through SSH::
 
    $ ssh -l root 192.168.1.47
    The authenticity of host '192.168.1.47 (192.168.1.47)' can't be established.
@@ -2139,30 +2139,30 @@
 
 You can now safely destroy the trace
 session (note that this doesn't delete the trace --- it's still there in
-~/lttng-traces)::
+``~/lttng-traces``)::
 
    root@crownbay:~# lttng destroy
    Session auto-20121015-232120 destroyed at /home/root
 
 Note that the trace is saved in a directory of the same name as returned by
-'lttng create', under the ~/lttng-traces directory (note that you can change this by
-supplying your own name to 'lttng create')::
+``lttng create``, under the ``~/lttng-traces`` directory (note that you can change this by
+supplying your own name to ``lttng create``)::
 
    root@crownbay:~# ls -al ~/lttng-traces
    drwxrwx---    3 root     root          1024 Oct 15 23:21 .
    drwxr-xr-x    5 root     root          1024 Oct 15 23:57 ..
    drwxrwx---    3 root     root          1024 Oct 15 23:21 auto-20121015-232120
 
-Collecting and viewing a userspace trace on the target (inside a shell)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Collecting and viewing a user space trace on the target (inside a shell)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-For LTTng userspace tracing, you need to have a properly instrumented
-userspace program. For this example, we'll use the 'hello' test program
-generated by the lttng-ust build.
+For LTTng user space tracing, you need to have a properly instrumented
+user space program. For this example, we'll use the ``hello`` test program
+generated by the ``lttng-ust`` build.
 
-The 'hello' test program isn't installed on the root filesystem by the lttng-ust
-build, so we need to copy it over manually. First cd into the build
-directory that contains the hello executable::
+The ``hello`` test program isn't installed on the root filesystem by the ``lttng-ust``
+build, so we need to copy it over manually. First ``cd`` into the build
+directory that contains the ``hello`` executable::
 
    $ cd build/tmp/work/core2_32-poky-linux/lttng-ust/2.0.5-r0/git/tests/hello/.libs
 
@@ -2170,10 +2170,10 @@
 
    $ scp hello root@192.168.1.20:
 
-You now have the instrumented lttng 'hello world' test program on the
+You now have the instrumented LTTng "hello world" test program on the
 target, ready to test.
 
-First, from the host, ssh to the target::
+First, from the host, connect to the target through SSH::
 
    $ ssh -l root 192.168.1.47
    The authenticity of host '192.168.1.47 (192.168.1.47)' can't be established.
@@ -2188,7 +2188,7 @@
    Session auto-20190303-021943 created.
    Traces will be written in /home/root/lttng-traces/auto-20190303-021943
 
-Enable the events you want to trace (in this case all userspace events)::
+Enable the events you want to trace (in this case all user space events)::
 
    root@crownbay:~# lttng enable-event --userspace --all
    All UST events are enabled in channel channel0
@@ -2198,7 +2198,7 @@
    root@crownbay:~# lttng start
    Tracing started for session auto-20190303-021943
 
-Run the instrumented hello world program::
+Run the instrumented "hello world" program::
 
    root@crownbay:~# ./hello
    Hello, World!
@@ -2222,7 +2222,7 @@
    .
 
 You can now safely destroy the trace session (note that this doesn't delete the
-trace --- it's still there in ~/lttng-traces)::
+trace --- it's still there in ``~/lttng-traces``)::
 
    root@crownbay:~# lttng destroy
    Session auto-20190303-021943 destroyed at /home/root
@@ -2260,27 +2260,27 @@
 blktrace in 'listen' mode on the target and have blktrace and blkparse
 collect and analyze the data on the host (see the
 ":ref:`profile-manual/usage:Using blktrace Remotely`" section
-below). For the rest of this section we assume you've ssh'ed to the host and
-will be running blkrace on the target.
+below). For the rest of this section we assume you've to the host through SSH
+and will be running blktrace on the target.
 
 Basic blktrace Usage
 --------------------
 
-To record a trace, simply run the 'blktrace' command, giving it the name
+To record a trace, just run the ``blktrace`` command, giving it the name
 of the block device you want to trace activity on::
 
    root@crownbay:~# blktrace /dev/sdc
 
-In another shell, execute a workload you want to trace. ::
+In another shell, execute a workload you want to trace::
 
    root@crownbay:/media/sdc# rm linux-2.6.19.2.tar.bz2; wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2; sync
    Connecting to downloads.yoctoproject.org (140.211.169.59:80)
    linux-2.6.19.2.tar.b 100% \|*******************************\| 41727k 0:00:00 ETA
 
-Press Ctrl-C in the blktrace shell to stop the trace. It
+Press ``Ctrl-C`` in the blktrace shell to stop the trace. It
 will display how many events were logged, along with the per-cpu file
-sizes (blktrace records traces in per-cpu kernel buffers and simply
-dumps them to userspace for blkparse to merge and sort later). ::
+sizes (blktrace records traces in per-cpu kernel buffers and just
+dumps them to user space for blkparse to merge and sort later)::
 
    ^C=== sdc ===
     CPU  0:                 7082 events,      332 KiB data
@@ -2296,7 +2296,7 @@
    -rw-r--r--    1 root     root        339938 Oct 27 22:40 sdc.blktrace.0
    -rw-r--r--    1 root     root         75753 Oct 27 22:40 sdc.blktrace.1
 
-To view the trace events, simply invoke 'blkparse' in the directory
+To view the trace events, just call ``blkparse`` in the directory
 containing the trace files, giving it the device name that forms the
 first part of the filenames::
 
@@ -2388,15 +2388,15 @@
 The report shows each event that was
 found in the blktrace data, along with a summary of the overall block
 I/O traffic during the run. You can look at the
-`blkparse <https://linux.die.net/man/1/blkparse>`__ manpage to learn the
+`blkparse <https://linux.die.net/man/1/blkparse>`__ manual page to learn the
 meaning of each field displayed in the trace listing.
 
 Live Mode
 ~~~~~~~~~
 
 blktrace and blkparse are designed from the ground up to be able to
-operate together in a 'pipe mode' where the stdout of blktrace can be
-fed directly into the stdin of blkparse::
+operate together in a "pipe mode" where the standard output of blktrace can be
+fed directly into the standard input of blkparse::
 
    root@crownbay:~# blktrace /dev/sdc -o - | blkparse -i -
 
@@ -2441,13 +2441,13 @@
 
    server: connection from 192.168.1.43
 
-In another shell, execute a workload you want to trace. ::
+In another shell, execute a workload you want to trace::
 
    root@crownbay:/media/sdc# rm linux-2.6.19.2.tar.bz2; wget &YOCTO_DL_URL;/mirror/sources/linux-2.6.19.2.tar.bz2; sync
    Connecting to downloads.yoctoproject.org (140.211.169.59:80)
    linux-2.6.19.2.tar.b 100% \|*******************************\| 41727k 0:00:00 ETA
 
-When it's done, do a Ctrl-C on the target system to stop the
+When it's done, do a ``Ctrl-C`` on the target system to stop the
 trace::
 
    ^C=== sdc ===
@@ -2465,14 +2465,14 @@
     Total:                 11800 events (dropped 0),      554 KiB data
 
 The blktrace instance on the host will
-save the target output inside a hostname-timestamp directory::
+save the target output inside a ``<hostname>-<timestamp>`` directory::
 
    $ ls -al
    drwxr-xr-x   10 root     root          1024 Oct 28 02:40 .
    drwxr-sr-x    4 root     root          1024 Oct 26 18:24 ..
    drwxr-xr-x    2 root     root          1024 Oct 28 02:40 192.168.1.43-2012-10-28-02:40:56
 
-cd into that directory to see the output files::
+``cd`` into that directory to see the output files::
 
    $ ls -l
    -rw-r--r--    1 root     root        369193 Oct 28 02:44 sdc.blktrace.0
@@ -2537,16 +2537,16 @@
 It's also possible to trace block I/O using only
 :ref:`profile-manual/usage:The 'trace events' Subsystem`, which
 can be useful for casual tracing if you don't want to bother dealing with the
-userspace tools.
+user space tools.
 
-To enable tracing for a given device, use /sys/block/xxx/trace/enable,
-where xxx is the device name. This for example enables tracing for
-/dev/sdc::
+To enable tracing for a given device, use ``/sys/block/xxx/trace/enable``,
+where ``xxx`` is the device name. This for example enables tracing for
+``/dev/sdc``::
 
    root@crownbay:/sys/kernel/debug/tracing# echo 1 > /sys/block/sdc/trace/enable
 
 Once you've selected the device(s) you want
-to trace, selecting the 'blk' tracer will turn the blk tracer on::
+to trace, selecting the ``blk`` tracer will turn the blk tracer on::
 
    root@crownbay:/sys/kernel/debug/tracing# cat available_tracers
    blk function_graph function nop
@@ -2557,7 +2557,7 @@
 
    root@crownbay:/sys/kernel/debug/tracing# cat /media/sdc/testfile.txt
 
-And look at the output (note here that we're using 'trace_pipe' instead of
+And look at the output (note here that we're using ``trace_pipe`` instead of
 trace to capture this trace --- this allows us to wait around on the pipe
 for data to appear)::
 
@@ -2585,7 +2585,7 @@
 blktrace Documentation
 ----------------------
 
-Online versions of the man pages for the commands discussed in this
+Online versions of the manual pages for the commands discussed in this
 section can be found here:
 
 -  https://linux.die.net/man/8/blktrace
@@ -2594,8 +2594,8 @@
 
 -  https://linux.die.net/man/8/btrace
 
-The above manpages, along with manpages for the other blktrace utilities
-(btt, blkiomon, etc) can be found in the /doc directory of the blktrace
-tools git repo::
+The above manual pages, along with manuals for the other blktrace utilities
+(``btt``, ``blkiomon``, etc) can be found in the ``/doc`` directory of the blktrace
+tools git repository::
 
    $ git clone git://git.kernel.dk/blktrace.git
diff --git a/poky/documentation/ref-manual/classes.rst b/poky/documentation/ref-manual/classes.rst
index 5aaf8ec..ab71cbe 100644
--- a/poky/documentation/ref-manual/classes.rst
+++ b/poky/documentation/ref-manual/classes.rst
@@ -421,7 +421,7 @@
 ``compress_doc``
 ================
 
-Enables compression for man pages and info pages. This class is intended
+Enables compression for manual and info pages. This class is intended
 to be inherited globally. The default compression mechanism is gz (gzip)
 but you can select an alternative mechanism by setting the
 :term:`DOC_COMPRESS` variable.
@@ -1184,13 +1184,17 @@
 ``IMGCLASSES`` variable as follows::
 
    IMGCLASSES = "rootfs_${IMAGE_PKGTYPE} image_types ${IMAGE_CLASSES}"
-   IMGCLASSES += "${@['populate_sdk_base', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}"
+   # Only Linux SDKs support populate_sdk_ext, fall back to populate_sdk_base
+   # in the non-Linux SDK_OS case, such as mingw32
+   inherit populate_sdk_base
+   IMGCLASSES += "${@['', 'populate_sdk_ext']['linux' in d.getVar("SDK_OS")]}"
    IMGCLASSES += "${@bb.utils.contains_any('IMAGE_FSTYPES', 'live iso hddimg', 'image-live', '', d)}"
    IMGCLASSES += "${@bb.utils.contains('IMAGE_FSTYPES', 'container', 'image-container', '', d)}"
    IMGCLASSES += "image_types_wic"
    IMGCLASSES += "rootfs-postcommands"
    IMGCLASSES += "image-postinst-intercepts"
-   inherit ${IMGCLASSES}
+   IMGCLASSES += "overlayfs-etc"
+   inherit_defer ${IMGCLASSES}
 
 The :ref:`ref-classes-image_types` class also handles conversion and compression of images.
 
diff --git a/poky/documentation/ref-manual/structure.rst b/poky/documentation/ref-manual/structure.rst
index acadd5e..e4d8b54 100644
--- a/poky/documentation/ref-manual/structure.rst
+++ b/poky/documentation/ref-manual/structure.rst
@@ -172,10 +172,11 @@
    You can also run generated QEMU images with a command like 'runqemu qemux86-64'
 
 The default output of the ``oe-init-build-env`` script is from the
-``conf-notes.txt`` file, which is found in the ``meta-poky`` directory
+``conf-summary.txt`` and ``conf-notes.txt`` files, which are found in the ``meta-poky`` directory
 within the :term:`Source Directory`. If you design a
-custom distribution, you can include your own version of this
-configuration file to mention the targets defined by your distribution.
+custom distribution, you can include your own versions of these
+configuration files where you can provide a brief summary and detailed usage
+notes, such as a list of the targets defined by your distribution.
 See the
 ":ref:`dev-manual/custom-template-configuration-directory:creating a custom template configuration directory`"
 section in the Yocto Project Development Tasks Manual for more
diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst
index 6e66dc7..435481c 100644
--- a/poky/documentation/ref-manual/variables.rst
+++ b/poky/documentation/ref-manual/variables.rst
@@ -2292,7 +2292,7 @@
    :term:`DOC_COMPRESS`
       When inheriting the :ref:`ref-classes-compress_doc`
       class, this variable sets the compression policy used when the
-      OpenEmbedded build system compresses man pages and info pages. By
+      OpenEmbedded build system compresses manual and info pages. By
       default, the compression method used is gz (gzip). Other policies
       available are xz and bz2.
 
@@ -7911,6 +7911,11 @@
       image), compared to just using the :ref:`ref-classes-create-spdx` class
       with no option.
 
+   :term:`SPDX_NAMESPACE_PREFIX`
+      This option could be used in order to change the prefix of ``spdxDocument``
+      and the prefix of ``documentNamespace``. It is set by default to
+      ``http://spdx.org/spdxdoc``.
+
    :term:`SPDX_PRETTY`
       This option makes the SPDX output more human-readable, using
       identation and newlines, instead of the default output in a
diff --git a/poky/documentation/sdk-manual/extensible.rst b/poky/documentation/sdk-manual/extensible.rst
index 05dd527..3f6a754 100644
--- a/poky/documentation/sdk-manual/extensible.rst
+++ b/poky/documentation/sdk-manual/extensible.rst
@@ -76,7 +76,7 @@
       $ bitbake meta-ide-support
       $ bitbake -c populate_sysroot gtk+3
       # or any other target or native item that the application developer would need
-      $ bitbake build-sysroots
+      $ bitbake build-sysroots -c build_native_sysroot && bitbake build-sysroots -c build_target_sysroot
 
 Setting up the Extensible SDK from a standalone installer
 ---------------------------------------------------------
@@ -1507,8 +1507,12 @@
 is directly accessible to build additional items, and it
 can simply be executed directly::
 
+   $ bitbake curl-native
+   # Add newly built native items to native sysroot
+   $ bitbake build-sysroots -c build_native_sysroot
    $ bitbake mesa
-   $ bitbake build-sysroots
+   # Add newly built target items to target sysroot
+   $ bitbake build-sysroots -c build_target_sysroot
 
 When using a standalone installer for the Extensible SDK
 --------------------------------------------------------
diff --git a/poky/documentation/standards.md b/poky/documentation/standards.md
index 9f4771e..e0c0cba 100644
--- a/poky/documentation/standards.md
+++ b/poky/documentation/standards.md
@@ -5,6 +5,21 @@
 
 It is currently a work in progress.
 
+## Automatic style validation
+
+There is an ongoing effort to automate style validation
+through the [Vale](https://vale.sh/). To try it, run:
+
+    $ make stylecheck
+
+Note that this just applies to text. Therefore, the syntax
+conventions described below still apply.
+
+If you wish to add a new word to an "accept.txt" file
+(./styles/config/vocabularies/<Vocab>/accept.txt),
+make sure the spelling and capitalization matches
+what Wikipedia or the project defining this word uses.
+
 ## Text standards
 
 ### Bulleted lists
diff --git a/poky/documentation/styles/config/vocabularies/OpenSource/accept.txt b/poky/documentation/styles/config/vocabularies/OpenSource/accept.txt
new file mode 100644
index 0000000..e378fbf
--- /dev/null
+++ b/poky/documentation/styles/config/vocabularies/OpenSource/accept.txt
@@ -0,0 +1,20 @@
+autovivification
+blkparse
+blktrace
+callee
+debugfs
+ftrace
+KernelShark
+Kprobe
+LTTng
+perf
+profiler
+subcommand
+subnode
+superset
+Sysprof
+systemd
+toolchain
+tracepoint
+Uprobe
+wget
diff --git a/poky/documentation/styles/config/vocabularies/Yocto/accept.txt b/poky/documentation/styles/config/vocabularies/Yocto/accept.txt
new file mode 100644
index 0000000..ca622ba
--- /dev/null
+++ b/poky/documentation/styles/config/vocabularies/Yocto/accept.txt
@@ -0,0 +1,5 @@
+BitBake
+BSP
+crosstap
+OpenEmbedded
+Yocto
diff --git a/poky/meta-poky/conf/distro/poky-altcfg.conf b/poky/meta-poky/conf/distro/poky-altcfg.conf
index b6dbcad..3d64bdd 100644
--- a/poky/meta-poky/conf/distro/poky-altcfg.conf
+++ b/poky/meta-poky/conf/distro/poky-altcfg.conf
@@ -2,6 +2,8 @@
 # An example of subclassing a distro, primarily used for testing alternate configuration
 # combinations on the Yocto Project autobuilder
 #
+
+PACKAGE_CLASSES ?= "package_ipk"
 require conf/distro/poky.conf
 
 DISTRO = "poky-altcfg"
diff --git a/poky/meta-poky/conf/distro/poky.conf b/poky/meta-poky/conf/distro/poky.conf
index 3b7bc66..8b061cf 100644
--- a/poky/meta-poky/conf/distro/poky.conf
+++ b/poky/meta-poky/conf/distro/poky.conf
@@ -1,7 +1,7 @@
 DISTRO = "poky"
 DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
 DISTRO_VERSION = "4.3+snapshot-${METADATA_REVISION}"
-DISTRO_CODENAME = "nanbield"
+DISTRO_CODENAME = "scarthgap"
 SDK_VENDOR = "-pokysdk"
 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
 SDK_VERSION[vardepvalue] = "${SDK_VERSION}"
@@ -33,13 +33,13 @@
 PACKAGE_CLASSES ?= "package_rpm"
 
 SANITY_TESTED_DISTROS ?= " \
-            poky-4.2 \n \
             poky-4.3 \n \
-            ubuntu-18.04 \n \
+            poky-5.0 \n \
             ubuntu-20.04 \n \
             ubuntu-22.04 \n \
             ubuntu-23.04 \n \
             fedora-38 \n \
+            fedora-39 \n \
             centosstream-8 \n \
             debian-11 \n \
             debian-12 \n \
diff --git a/poky/meta-selftest/wic/overlayfs_etc.wks.in b/poky/meta-selftest/wic/overlayfs_etc.wks.in
index 1e1e583..066cd35 100644
--- a/poky/meta-selftest/wic/overlayfs_etc.wks.in
+++ b/poky/meta-selftest/wic/overlayfs_etc.wks.in
@@ -1,4 +1,4 @@
 part /boot --active --source bootimg-biosplusefi --ondisk sda --sourceparams="loader=grub-efi" --align 1024
-part / --source rootfs --ondisk sda --fstype=ext4 --use-uuid --align 1024
+part / --source rootfs --ondisk sda --fstype=${OVERLAYFS_ROOTFS_TYPE} --use-uuid --align 1024
 part --ondisk sda --fstype=ext4 --size=5 --align 1024
-bootloader --ptable gpt --timeout=1 --append="rootfstype=ext4 console=ttyS0,115200 console=tty0 ${OVERLAYFS_INIT_OPTION}"
+bootloader --ptable gpt --timeout=1 --append="rootfstype=${OVERLAYFS_ROOTFS_TYPE} console=ttyS0,115200 console=tty0 ${OVERLAYFS_INIT_OPTION}"
diff --git a/poky/meta-yocto-bsp/README.hardware.md b/poky/meta-yocto-bsp/README.hardware.md
index bb8f579..6045c3d 100644
--- a/poky/meta-yocto-bsp/README.hardware.md
+++ b/poky/meta-yocto-bsp/README.hardware.md
@@ -1,5 +1,5 @@
-                  Yocto Project Hardware Reference BSPs README
-                  ============================================
+Yocto Project Hardware Reference BSPs README
+============================================
 
 This file gives details about using the Yocto Project hardware reference BSPs.
 The machines supported can be seen in the conf/machine/ directory and are listed 
@@ -13,9 +13,7 @@
 Support for additional devices is normally added by adding BSP layers to your 
 configuration. For more information please see the Yocto Board Support Package 
 (BSP) Developer's Guide - documentation source is in documentation/bspguide or 
-download the PDF from:
-
-   https://docs.yoctoproject.org/
+download the PDF from https://docs.yoctoproject.org/
 
 Note that these reference BSPs use the linux-yocto kernel and in general don't
 pull in binary module support for the platforms. This means some device functionality
@@ -27,9 +25,9 @@
 
 The following boards are supported by the meta-yocto-bsp layer:
 
-  * Texas Instruments Beaglebone (beaglebone-yocto)
-  * General 64-bit Arm SystemReady platforms (genericarm64)
-  * General IA platforms (genericx86 and genericx86-64)
+  * Texas Instruments Beaglebone (`beaglebone-yocto`)
+  * General 64-bit Arm SystemReady platforms (`genericarm64`)
+  * General IA platforms (`genericx86` and `genericx86-64`)
 
 For more information see the board's section below. The appropriate MACHINE
 variable value corresponding to the board is given in brackets.
@@ -40,36 +38,36 @@
 Please refer to our contributor guide here: https://docs.yoctoproject.org/dev/contributor-guide/
 for full details on how to submit changes.
 
-As a quick guide, patches should be sent to poky@lists.yoctoproject.org
+As a quick guide, patches should be sent to <poky@lists.yoctoproject.org>
 The git command to do that would be:
  
      git send-email -M -1 --to poky@lists.yoctoproject.org
 
 Send pull requests, patches, comments or questions about meta-yocto-bsp to 
-poky@lists.yoctoproject.org
+<poky@lists.yoctoproject.org>.
 
-Maintainers: Kevin Hao <kexin.hao@windriver.com>
-             Bruce Ashfield <bruce.ashfield@gmail.com>
+Maintainers:
+* Kevin Hao <kexin.hao@windriver.com>
+* Bruce Ashfield <bruce.ashfield@gmail.com>
 
 Consumer Devices
 ================
 
 The following consumer devices are supported by the meta-yocto-bsp layer:
 
-  * Arm-based SystemReady devices (genericarm64)
-  * Intel x86 based PCs and devices (genericx86 and genericx86-64)
+  * Arm-based SystemReady devices (`genericarm64`)
+  * Intel x86 based PCs and devices (`genericx86` and `genericx86-64`)
 
 For more information see the device's section below. The appropriate MACHINE
 variable value corresponding to the device is given in brackets.
 
 
-
-                      Specific Hardware Documentation
-                      ===============================
+Specific Hardware Documentation
+===============================
 
 
 Intel x86 based PCs and devices (genericx86*)
-=============================================
+---------------------------------------------
 
 The genericx86 and genericx86-64 MACHINE are tested on the following platforms:
 
@@ -96,17 +94,18 @@
 device as the following commands are run as root and are not reversable.
 
 USB Device:
+
   1. Build a live image. This image type consists of a simple filesystem
      without a partition table, which is suitable for USB keys, and with the
      default setup for the genericx86 machine, this image type is built
      automatically for any image you build. For example:
 
-     $ bitbake core-image-minimal
+         $ bitbake core-image-minimal
 
-  2. Use the "dd" utility to write the image to the raw block device. For
+  2. Use the `dd` utility to write the image to the raw block device. For
      example:
 
-     # dd if=core-image-minimal-genericx86.hddimg of=/dev/sdb
+         # dd if=core-image-minimal-genericx86.hddimg of=/dev/sdb
 
   If the device fails to boot with "Boot error" displayed, or apparently
   stops just after the SYSLINUX version banner, it is likely the BIOS cannot
@@ -120,16 +119,16 @@
 
   2. Use a ".wic" image with an EFI partition
 
-     a) With a default grub-efi bootloader:
-     # dd if=core-image-minimal-genericx86-64.wic of=/dev/sdb
+     1. With a default grub-efi bootloader:
 
-     b) Use systemd-boot instead
-     - Build an image with EFI_PROVIDER="systemd-boot" then use the above
-       dd command to write the image to a USB stick.
+            # dd if=core-image-minimal-genericx86-64.wic of=/dev/sdb
+
+     2. Use systemd-boot instead. Build an image with `EFI_PROVIDER="systemd-boot"` then use the above
+       `dd` command to write the image to a USB stick.
 
 
-SystemReady Arm Platforms
-=========================
+SystemReady Arm Platforms (genericarm64)
+----------------------------------------
 
 The genericarm64 MACHINE is designed to work on standard SystemReady IR
 compliant boards with preinstalled firmware.
@@ -141,17 +140,22 @@
 The images built are EFI bootable disk images and can be written directly to a
 SD card for booting, for example.
 
+There is also limited support for booting a genericarm64 image inside QEMU. When
+building the image also build the `u-boot` recipe to build the required
+firmware (note that this firmware will _not_ boot on real hardware), then use
+`runqemu` as usual.
+
 
 Texas Instruments Beaglebone (beaglebone-yocto)
-===============================================
+-----------------------------------------------
 
 The Beaglebone is an ARM Cortex-A8 development board with USB, Ethernet, 2D/3D
 accelerated graphics, audio, serial, JTAG, and SD/MMC. The Black adds a faster
 CPU, more RAM, eMMC flash and a micro HDMI port. The beaglebone MACHINE is
 tested on the following platforms:
 
-  o Beaglebone Black A6
-  o Beaglebone A6 (the original "White" model)
+  * Beaglebone Black A6
+  * Beaglebone A6 (the original "White" model)
 
 The Beaglebone Black has eMMC, while the White does not. Pressing the USER/BOOT
 button when powering on will temporarily change the boot order. But for the sake
@@ -169,10 +173,10 @@
 
   1. Build an image. For example:
 
-     $ bitbake core-image-minimal
+         $ bitbake core-image-minimal
 
   2. Use the "dd" utility to write the image to the SD card. For example:
 
-     # dd if=core-image-minimal-beaglebone-yocto.wic of=/dev/sdb
+         # dd if=core-image-minimal-beaglebone-yocto.wic of=/dev/sdb
 
   3. Insert the SD card into the Beaglebone and boot the board.
diff --git a/poky/meta-yocto-bsp/conf/machine/genericarm64.conf b/poky/meta-yocto-bsp/conf/machine/genericarm64.conf
index 83f1aca..4afd6c3 100644
--- a/poky/meta-yocto-bsp/conf/machine/genericarm64.conf
+++ b/poky/meta-yocto-bsp/conf/machine/genericarm64.conf
@@ -1,6 +1,6 @@
 #@TYPE: Machine
 #@NAME: genericarm64
-#@DESCRIPTION: Generic Arm64 machine for typical SystemReady platforms, which
+#@DESCRIPTION: Generic Arm64 machine for typical SystemReady IR/ES platforms, which
 #have working firmware and boot via EFI.
 
 require conf/machine/include/arm/arch-armv8a.inc
@@ -10,15 +10,17 @@
 
 MACHINE_FEATURES = "acpi alsa bluetooth efi keyboard pci qemu-usermode rtc screen usbhost vfat wifi"
 
-# Install all the kernel modules and all the firmware
-MACHINE_EXTRA_RRECOMMENDS += "kernel-modules linux-firmware"
-
 KERNEL_IMAGETYPE = "Image"
 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
 
-# Use an initramfs and populate it with the kernel modules
+# Install all the kernel modules into the rootfs
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
+# Install selected pieces of firmware
+MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-wl12xx linux-firmware-wl18xx linux-firmware-rtl-nic"
+
+# Use an initramfs and populate it with the kernel modules and key firmware
 INITRAMFS_IMAGE ?= "core-image-initramfs-boot"
-PACKAGE_INSTALL:append:pn-core-image-initramfs-boot = " kernel-modules"
+PACKAGE_INSTALL:append:pn-core-image-initramfs-boot = " ${MACHINE_EXTRA_RRECOMMENDS}"
 
 IMAGE_FSTYPES ?= "wic"
 WKS_FILE ?= "genericarm64.wks.in"
@@ -27,3 +29,30 @@
 
 # Try to bring up one physical serial console, or a virtualized serial console
 SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
+
+# Allow u-boot to be built for use with qemu-system-aarch64.
+# This u-boot is _not_ suitable for use with real hardware, and the expectation
+# of this machine is that real hardware comes with the firmware pre-loaded.
+UBOOT_MACHINE = "qemu_arm64_defconfig"
+
+# runqemu configuration to run a genericarm64 image inside a qemu-system-aarch64. You will need
+# to build u-boot explicitly.
+IMAGE_CLASSES += "qemuboot"
+QB_SYSTEM_NAME = "qemu-system-aarch64"
+# Boot the virtual machine with either an emulated Cortex-A76, or the host if using KVM
+QB_MACHINE = "-machine virt"
+QB_CPU = "-cpu cortex-a76"
+QB_CPU_KVM = "-cpu host -machine gic-version=3"
+QB_SMP = "-smp 4"
+# Boot into U-Boot and let that scan the disk for the next step, don't pass any kernel or filesystem hints
+QB_DEFAULT_BIOS = "u-boot.bin"
+QB_DEFAULT_KERNEL = "none"
+QB_DEFAULT_FSTYPE = "wic"
+QB_FSINFO = "wic:no-kernel-in-fs"
+# Mount the wic rootfs as a virtio block device
+QB_ROOTFS_OPT = "-drive id=root,file=@ROOTFS@,if=none,format=raw -device virtio-blk-pci,drive=root"
+# Virtio serial consoles
+QB_SERIAL_OPT = "-device virtio-serial-pci -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
+QB_TCPSERIAL_OPT = "-device virtio-serial-pci -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
+# Virtio networking
+QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"
diff --git a/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.6.bbappend b/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.6.bbappend
index ca7b2b0..3f33ec9 100644
--- a/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.6.bbappend
+++ b/poky/meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.6.bbappend
@@ -1,4 +1,8 @@
-KBRANCH:genericarm64  = "v6.6/standard/base"
+COMPATIBLE_MACHINE:genericarm64 = "genericarm64"
+COMPATIBLE_MACHINE:genericx86 = "genericx86"
+COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
+COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
+
 KBRANCH:genericx86  = "v6.6/standard/base"
 KBRANCH:genericx86-64  = "v6.6/standard/base"
 KBRANCH:beaglebone-yocto = "v6.6/standard/beaglebone"
@@ -8,17 +12,10 @@
 KMACHINE:genericx86-64 ?= "common-pc-64"
 KMACHINE:beaglebone-yocto ?= "beaglebone"
 
-SRCREV_machine:genericarm64 ?= "e064a7d658a30b027b999183e21cd37305caff2a"
-SRCREV_machine:genericx86 ?= "332d4668fcc32826907d4f3c4938845206006089"
-SRCREV_machine:genericx86-64 ?= "332d4668fcc32826907d4f3c4938845206006089"
-SRCREV_machine:beaglebone-yocto ?= "332d4668fcc32826907d4f3c4938845206006089"
+SRCREV_machine:genericx86 ?= "06644f0d7193d7ec39d7fe41939a21953e7a0c65"
+SRCREV_machine:genericx86-64 ?= "06644f0d7193d7ec39d7fe41939a21953e7a0c65"
+SRCREV_machine:beaglebone-yocto ?= "06644f0d7193d7ec39d7fe41939a21953e7a0c65"
 
-COMPATIBLE_MACHINE:genericarm64 = "genericarm64"
-COMPATIBLE_MACHINE:genericx86 = "genericx86"
-COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
-COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
-
-LINUX_VERSION:genericarm64 = "6.6.18"
-LINUX_VERSION:genericx86 = "6.6.15"
-LINUX_VERSION:genericx86-64 = "6.6.15"
-LINUX_VERSION:beaglebone-yocto = "6.6.15"
+LINUX_VERSION:genericx86 = "6.6.21"
+LINUX_VERSION:genericx86-64 = "6.6.21"
+LINUX_VERSION:beaglebone-yocto = "6.6.21"
diff --git a/poky/meta-yocto-bsp/wic/genericarm64.wks.in b/poky/meta-yocto-bsp/wic/genericarm64.wks.in
index 417d4d8..ee7da87 100644
--- a/poky/meta-yocto-bsp/wic/genericarm64.wks.in
+++ b/poky/meta-yocto-bsp/wic/genericarm64.wks.in
@@ -4,8 +4,8 @@
 
 part /boot --source bootimg-efi --sourceparams="loader=${EFI_PROVIDER},initrd=${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES}" --label boot --active --align 1024 --use-uuid
 
-part / --source rootfs --fstype=ext4 --label root --align 1024 --use-uuid
-
 part swap --size 44 --label swap --fstype=swap --use-uuid
 
+part / --source rootfs --fstype=ext4 --label root --align 1024 --use-uuid
+
 bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4"
diff --git a/poky/meta/classes-global/uninative.bbclass b/poky/meta/classes-global/uninative.bbclass
index 9b8b456..d2297b5 100644
--- a/poky/meta/classes-global/uninative.bbclass
+++ b/poky/meta/classes-global/uninative.bbclass
@@ -143,8 +143,8 @@
         d.setVar("NATIVELSBSTRING", "universal%s" % oe.utils.host_gcc_version(d))
         d.appendVar("SSTATEPOSTUNPACKFUNCS", " uninative_changeinterp")
         d.appendVarFlag("SSTATEPOSTUNPACKFUNCS", "vardepvalueexclude", "| uninative_changeinterp")
-        d.appendVar("BUILD_LDFLAGS", " -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER}")
-        d.appendVarFlag("BUILD_LDFLAGS", "vardepvalueexclude", "| -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER}")
+        d.appendVar("BUILD_LDFLAGS", " -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER} -pthread")
+        d.appendVarFlag("BUILD_LDFLAGS", "vardepvalueexclude", "| -Wl,--allow-shlib-undefined -Wl,--dynamic-linker=${UNINATIVE_LOADER} -pthread")
         d.appendVarFlag("BUILD_LDFLAGS", "vardepsexclude", "UNINATIVE_LOADER")
         d.prependVar("PATH", "${UNINATIVE_STAGING_DIR}-uninative/${BUILD_ARCH}-linux${bindir_native}:")
 
diff --git a/poky/meta/classes-global/utils.bbclass b/poky/meta/classes-global/utils.bbclass
index 8d797ff..9573899 100644
--- a/poky/meta/classes-global/utils.bbclass
+++ b/poky/meta/classes-global/utils.bbclass
@@ -15,7 +15,7 @@
 	        ;;
 	esac
 	install -m 755 $1 $2/$libname
-	sonamelink=`${HOST_PREFIX}readelf -d $1 |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'`
+	sonamelink=`${READELF} -d $1 |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'`
 	if [ -z $sonamelink ]; then
 		bbfatal "oe_soinstall: $libname is missing ELF tag 'SONAME'."
 	fi
@@ -147,7 +147,7 @@
 		# special case hack for non-libtool .so.#.#.# links
 		baselibfile=`basename "$libfile"`
 		if (echo $baselibfile | grep -qE '^lib.*\.so\.[0-9.]*$'); then
-			sonamelink=`${HOST_PREFIX}readelf -d $libfile |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'`
+			sonamelink=`${READELF} -d $libfile |grep 'Library soname:' |sed -e 's/.*\[\(.*\)\].*/\1/'`
 			solink=`echo $baselibfile | sed -e 's/\.so\..*/.so/'`
 			if [ -n "$sonamelink" -a x"$baselibfile" != x"$sonamelink" ]; then
 				__runcmd ln -sf $baselibfile $destpath/$sonamelink
diff --git a/poky/meta/classes-recipe/autotools.bbclass b/poky/meta/classes-recipe/autotools.bbclass
index ca76cde..9359c9b 100644
--- a/poky/meta/classes-recipe/autotools.bbclass
+++ b/poky/meta/classes-recipe/autotools.bbclass
@@ -43,7 +43,8 @@
 
 # When building tools for use at build-time it's recommended for the build
 # system to use these variables when cross-compiling.
-# (http://sources.redhat.com/autobook/autobook/autobook_270.html)
+# https://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
+# https://stackoverflow.com/questions/24201260/autotools-cross-compilation-and-generated-sources/24208587#24208587
 export CPP_FOR_BUILD = "${BUILD_CPP}"
 export CPPFLAGS_FOR_BUILD = "${BUILD_CPPFLAGS}"
 
diff --git a/poky/meta/classes-recipe/cml1.bbclass b/poky/meta/classes-recipe/cml1.bbclass
index c4e3c9f..03e5fe6 100644
--- a/poky/meta/classes-recipe/cml1.bbclass
+++ b/poky/meta/classes-recipe/cml1.bbclass
@@ -61,16 +61,14 @@
     oe_terminal("sh -c 'make %s; if [ \\$? -ne 0 ]; then echo \"Command failed.\"; printf \"Press any key to continue... \"; read r; fi'" % d.getVar('KCONFIG_CONFIG_COMMAND'),
                 d.getVar('PN') + ' Configuration', d)
 
-    # FIXME this check can be removed when the minimum bitbake version has been bumped
-    if hasattr(bb.build, 'write_taint'):
-        try:
-            newmtime = os.path.getmtime(config)
-        except OSError:
-            newmtime = 0
+    try:
+        newmtime = os.path.getmtime(config)
+    except OSError:
+        newmtime = 0
 
-        if newmtime > mtime:
-            bb.note("Configuration changed, recompile will be forced")
-            bb.build.write_taint('do_compile', d)
+    if newmtime > mtime:
+        bb.plain("Changed configuration saved at:\n %s\nRecompile will be forced" % config)
+        bb.build.write_taint('do_compile', d)
 }
 do_menuconfig[depends] += "ncurses-native:do_populate_sysroot"
 do_menuconfig[nostamp] = "1"
diff --git a/poky/meta/classes-recipe/go.bbclass b/poky/meta/classes-recipe/go.bbclass
index 39bfaa5..cc3564c 100644
--- a/poky/meta/classes-recipe/go.bbclass
+++ b/poky/meta/classes-recipe/go.bbclass
@@ -78,6 +78,7 @@
 B = "${WORKDIR}/build"
 export GOPATH = "${B}"
 export GOENV = "off"
+export GOPROXY ??= "https://proxy.golang.org,direct"
 export GOTMPDIR ?= "${WORKDIR}/build-tmp"
 GOTMPDIR[vardepvalue] = ""
 
diff --git a/poky/meta/classes-recipe/image-live.bbclass b/poky/meta/classes-recipe/image-live.bbclass
index da919d5..d2e95ef 100644
--- a/poky/meta/classes-recipe/image-live.bbclass
+++ b/poky/meta/classes-recipe/image-live.bbclass
@@ -38,7 +38,7 @@
 LABELS_LIVE ?= "boot install"
 ROOT_LIVE ?= "root=/dev/ram0"
 INITRD_IMAGE_LIVE ?= "${MLPREFIX}core-image-minimal-initramfs"
-INITRD_LIVE ?= "${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE_LIVE}${IMAGE_MACHINE_SUFFIX}.${INITRAMFS_FSTYPES}"
+INITRD_LIVE ?= "${DEPLOY_DIR_IMAGE}/${INITRD_IMAGE_LIVE}${IMAGE_MACHINE_SUFFIX}.${@d.getVar('INITRAMFS_FSTYPES').split()[0]}"
 
 LIVE_ROOTFS_TYPE ?= "ext4"
 ROOTFS ?= "${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${LIVE_ROOTFS_TYPE}"
diff --git a/poky/meta/classes-recipe/kernel-fitimage.bbclass b/poky/meta/classes-recipe/kernel-fitimage.bbclass
index 7e30a5d..4b74ddc 100644
--- a/poky/meta/classes-recipe/kernel-fitimage.bbclass
+++ b/poky/meta/classes-recipe/kernel-fitimage.bbclass
@@ -421,6 +421,7 @@
 	bootscr_line=""
 	setup_line=""
 	default_line=""
+	compatible_line=""
 
 	dtb_image_sect=$(symlink_points_below $dtb_image "${EXTERNAL_KERNEL_DEVICETREE}")
 	if [ -z "$dtb_image_sect" ]; then
@@ -428,7 +429,12 @@
 	fi
 
 	dtb_path="${EXTERNAL_KERNEL_DEVICETREE}/${dtb_image_sect}"
-	compatible_line="compatible = \"$(fdtget "$dtb_path" / compatible | sed 's/ /", "/g')\";"
+	if [ -e "$dtb_path" ]; then
+		compat=$(fdtget -t s "$dtb_path" / compatible | sed 's/ /", "/g')
+		if [ -n "$compat" ]; then
+			compatible_line="compatible = \"$compat\";"
+		fi
+	fi
 
 	dtb_image=$(echo $dtb_image | tr '/' '_')
 	dtb_image_sect=$(echo "${dtb_image_sect}" | tr '/' '_')
diff --git a/poky/meta/classes-recipe/kernel-module-split.bbclass b/poky/meta/classes-recipe/kernel-module-split.bbclass
index c1208d5..9487365 100644
--- a/poky/meta/classes-recipe/kernel-module-split.bbclass
+++ b/poky/meta/classes-recipe/kernel-module-split.bbclass
@@ -67,9 +67,9 @@
             else:
                 msg = "Cannot decompress '%s'" % file
                 raise msg
-            cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", tmpkofile, tmpfile)
+            cmd = "%s -j .modinfo -O binary %s %s" % (d.getVar("OBJCOPY"), tmpkofile, tmpfile)
         else:
-            cmd = "%sobjcopy -j .modinfo -O binary %s %s" % (d.getVar("HOST_PREFIX") or "", file, tmpfile)
+            cmd = "%s -j .modinfo -O binary %s %s" % (d.getVar("OBJCOPY"), file, tmpfile)
         subprocess.check_call(cmd, shell=True)
         # errors='replace': Some old kernel versions contain invalid utf-8 characters in mod descriptions (like 0xf6, 'ö')
         with open(tmpfile, errors='replace') as f:
diff --git a/poky/meta/classes-recipe/kernel.bbclass b/poky/meta/classes-recipe/kernel.bbclass
index db4461e..b084d6d 100644
--- a/poky/meta/classes-recipe/kernel.bbclass
+++ b/poky/meta/classes-recipe/kernel.bbclass
@@ -645,7 +645,7 @@
 }
 
 check_oldest_kernel[vardepsexclude] += "OLDEST_KERNEL KERNEL_VERSION"
-do_configure[prefuncs] += "check_oldest_kernel"
+do_compile[postfuncs] += "check_oldest_kernel"
 
 KERNEL_LOCALVERSION ??= ""
 
diff --git a/poky/meta/classes-recipe/populate_sdk_ext.bbclass b/poky/meta/classes-recipe/populate_sdk_ext.bbclass
index f209bec..f5687e5 100644
--- a/poky/meta/classes-recipe/populate_sdk_ext.bbclass
+++ b/poky/meta/classes-recipe/populate_sdk_ext.bbclass
@@ -494,7 +494,7 @@
     bb.utils.remove(sstate_out, True)
 
     # uninative.bbclass sets NATIVELSBSTRING to 'universal%s' % oe.utils.host_gcc_version(d)
-    fixedlsbstring = "universal%s" % oe.utils.host_gcc_version(d)
+    fixedlsbstring = "universal%s" % oe.utils.host_gcc_version(d) if bb.data.inherits_class('uninative', d) else ""
 
     sdk_include_toolchain = (d.getVar('SDK_INCLUDE_TOOLCHAIN') == '1')
     sdk_ext_type = d.getVar('SDK_EXT_TYPE')
diff --git a/poky/meta/classes-recipe/python_pep517.bbclass b/poky/meta/classes-recipe/python_pep517.bbclass
index a1659c5..c30674c 100644
--- a/poky/meta/classes-recipe/python_pep517.bbclass
+++ b/poky/meta/classes-recipe/python_pep517.bbclass
@@ -42,7 +42,7 @@
 do_compile[cleandirs] += "${PEP517_WHEEL_PATH}"
 
 python_pep517_do_install () {
-    COUNT=$(find ${PEP517_WHEEL_PATH} -name '*.whl' | wc -l)
+    COUNT=$(find ${PEP517_WHEEL_PATH} -name '*.whl' -maxdepth 1 | wc -l)
     if test $COUNT -eq 0; then
         bbfatal No wheels found in ${PEP517_WHEEL_PATH}
     elif test $COUNT -gt 1; then
diff --git a/poky/meta/classes-recipe/qemuboot.bbclass b/poky/meta/classes-recipe/qemuboot.bbclass
index 4a563b8..895fd38 100644
--- a/poky/meta/classes-recipe/qemuboot.bbclass
+++ b/poky/meta/classes-recipe/qemuboot.bbclass
@@ -185,3 +185,5 @@
            os.remove(qemuboot_link)
         os.symlink(os.path.basename(qemuboot), qemuboot_link)
 }
+
+EXTRA_IMAGEDEPENDS += "qemu-system-native qemu-helper-native:do_addto_recipe_sysroot"
diff --git a/poky/meta/conf/distro/include/maintainers.inc b/poky/meta/conf/distro/include/maintainers.inc
index 4ca5430..2d1f9fd 100644
--- a/poky/meta/conf/distro/include/maintainers.inc
+++ b/poky/meta/conf/distro/include/maintainers.inc
@@ -328,7 +328,6 @@
 RECIPE_MAINTAINER:pn-libedit = "Khem Raj <raj.khem@gmail.com>"
 RECIPE_MAINTAINER:pn-libepoxy = "Anuj Mittal <anuj.mittal@intel.com>"
 RECIPE_MAINTAINER:pn-liberation-fonts = "Alexander Kanavin <alex.kanavin@gmail.com>"
-RECIPE_MAINTAINER:pn-liberror-perl = "Tim Orling <tim.orling@konsulko.com>"
 RECIPE_MAINTAINER:pn-libevdev = "Anuj Mittal <anuj.mittal@intel.com>"
 RECIPE_MAINTAINER:pn-libevent = "Anuj Mittal <anuj.mittal@intel.com>"
 RECIPE_MAINTAINER:pn-libexif = "Alexander Kanavin <alex.kanavin@gmail.com>"
diff --git a/poky/meta/conf/distro/include/ptest-packagelists.inc b/poky/meta/conf/distro/include/ptest-packagelists.inc
index 0192146..5975db2 100644
--- a/poky/meta/conf/distro/include/ptest-packagelists.inc
+++ b/poky/meta/conf/distro/include/ptest-packagelists.inc
@@ -28,7 +28,6 @@
     json-c \
     json-glib \
     libconvert-asn1-perl \
-    liberror-perl \
     libgpg-error\
     libnl \
     libpcre \
@@ -120,6 +119,7 @@
     util-linux \
     valgrind \
     lz4 \
+    libseccomp \
 "
 
 # python3 ptests hang on qemuriscv64
@@ -139,7 +139,6 @@
 #    libpam \ # Needs pam DISTRO_FEATURE
 #    mdadm \ # tests are flaky in AB.
 #    numactl \ # qemu not (yet) configured for numa; all tests are skipped
-#    libseccomp \ #  tests failed: 38; add to slow tests once addressed
 #    python3-numpy \ # requires even more RAM and (possibly) disk space; multiple failures
 
 PTESTS_PROBLEMS = "\
@@ -149,7 +148,6 @@
     ifupdown \
     libinput \
     libpam \
-    libseccomp \
     mdadm \
     numactl \
     python3-license-expression \
diff --git a/poky/meta/conf/layer.conf b/poky/meta/conf/layer.conf
index 2418ee7..efbf261 100644
--- a/poky/meta/conf/layer.conf
+++ b/poky/meta/conf/layer.conf
@@ -7,7 +7,7 @@
 BBFILE_PATTERN_core = "^${LAYERDIR}/"
 BBFILE_PRIORITY_core = "5"
 
-LAYERSERIES_CORENAMES = "nanbield scarthgap"
+LAYERSERIES_CORENAMES = "scarthgap"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
@@ -87,6 +87,7 @@
   sato-icon-theme->gtk+3 \
   adwaita-icon-theme->gdk-pixbuf \
   adwaita-icon-theme->gtk+3 \
+  run-postinsts->util-linux \
 "
 
 # Avoid adding bison-native to the sysroot without a specific
diff --git a/poky/meta/conf/machine/include/qemu.inc b/poky/meta/conf/machine/include/qemu.inc
index 14feb86..bb7aec7 100644
--- a/poky/meta/conf/machine/include/qemu.inc
+++ b/poky/meta/conf/machine/include/qemu.inc
@@ -23,8 +23,6 @@
 # Use a common kernel recipe for all QEMU machines
 PREFERRED_PROVIDER_virtual/kernel ??= "linux-yocto"
 
-EXTRA_IMAGEDEPENDS += "qemu-system-native qemu-helper-native:do_addto_recipe_sysroot"
-
 # Provide the nfs server kernel module for all qemu images
 KERNEL_FEATURES:append:pn-linux-yocto = " features/nfsd/nfsd-enable.scc"
 KERNEL_FEATURES:append:pn-linux-yocto-rt = " features/nfsd/nfsd-enable.scc"
diff --git a/poky/meta/conf/machine/include/riscv/qemuriscv.inc b/poky/meta/conf/machine/include/riscv/qemuriscv.inc
index 7024bd0..d01d988 100644
--- a/poky/meta/conf/machine/include/riscv/qemuriscv.inc
+++ b/poky/meta/conf/machine/include/riscv/qemuriscv.inc
@@ -35,4 +35,5 @@
 QB_SERIAL_OPT = "-device virtio-serial-device -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
 QB_TCPSERIAL_OPT = " -device virtio-serial-device -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
 QB_GRAPHICS = "-device bochs-display"
-QB_OPT_APPEND = "-device virtio-tablet-pci -device virtio-keyboard-pci"
+QB_OPT_APPEND = "-device qemu-xhci -device usb-tablet -device usb-kbd"
+QB_OPT_APPEND:riscv32 = "-device virtio-tablet-pci -device virtio-keyboard-pci"
diff --git a/poky/meta/files/toolchain-shar-relocate.sh b/poky/meta/files/toolchain-shar-relocate.sh
index e8ab357..b017714 100644
--- a/poky/meta/files/toolchain-shar-relocate.sh
+++ b/poky/meta/files/toolchain-shar-relocate.sh
@@ -1,7 +1,9 @@
-if ! xargs --version > /dev/null 2>&1; then
-	echo "xargs is required by the relocation script, please install it first. Abort!"
-	exit 1
-fi
+for cmd in xargs file; do
+	if ! command -v $cmd > /dev/null 2>&1; then
+		echo "The command '$cmd' is required by the relocation script, please install it first. Abort!"
+		exit 1
+	fi
+done
 
 # fix dynamic loader paths in all ELF SDK binaries
 # allow symlinks to be accessed via the find command too
diff --git a/poky/meta/lib/bblayers/makesetup.py b/poky/meta/lib/bblayers/makesetup.py
index 4f27c56..99d5973 100644
--- a/poky/meta/lib/bblayers/makesetup.py
+++ b/poky/meta/lib/bblayers/makesetup.py
@@ -9,7 +9,6 @@
 import sys
 
 import bb.utils
-import bb.process
 
 from bblayers.common import LayerPlugin
 
@@ -24,25 +23,12 @@
 
 class MakeSetupPlugin(LayerPlugin):
 
-    def _get_repo_path(self, layer_path):
-        repo_path, _ = bb.process.run('git rev-parse --show-toplevel', cwd=layer_path)
-        return repo_path.strip()
-
-    def _get_remotes(self, repo_path):
+    def _get_remotes_with_url(self, repo_path):
         remotes = {}
-        remotes_list,_ = bb.process.run('git remote', cwd=repo_path)
-        for r in remotes_list.split():
-            uri,_ = bb.process.run('git remote get-url {r}'.format(r=r), cwd=repo_path)
-            remotes[r] = {'uri':uri.strip()}
+        for r in oe.buildcfg.get_metadata_git_remotes(repo_path):
+            remotes[r] = {'uri':oe.buildcfg.get_metadata_git_remote_url(repo_path, r)}
         return remotes
 
-    def _get_describe(self, repo_path):
-        try:
-            describe,_ = bb.process.run('git describe --tags', cwd=repo_path)
-        except bb.process.ExecutionError:
-            return ""
-        return describe.strip()
-
     def _is_submodule(self, repo_path):
         # This is slightly brittle: git does not offer a way to tell whether
         # a given repo dir is a submodule checkout, so we need to rely on .git
@@ -56,10 +42,7 @@
         available here. """
         repos = {}
         layers = oe.buildcfg.get_layer_revisions(self.tinfoil.config_data)
-        try:
-            destdir_repo = self._get_repo_path(destdir)
-        except bb.process.ExecutionError:
-            destdir_repo = None
+        destdir_repo = oe.buildcfg.get_metadata_git_toplevel(destdir)
 
         for (l_path, l_name, l_branch, l_rev, l_ismodified) in layers:
             if l_name == 'workspace':
@@ -67,12 +50,16 @@
             if l_ismodified:
                 logger.error("Layer {name} in {path} has uncommitted modifications or is not in a git repository.".format(name=l_name,path=l_path))
                 return
-            repo_path = self._get_repo_path(l_path)
+            repo_path = oe.buildcfg.get_metadata_git_toplevel(l_path)
 
             if self._is_submodule(repo_path):
                 continue
             if repo_path not in repos.keys():
-                repos[repo_path] = {'path':os.path.basename(repo_path),'git-remote':{'rev':l_rev, 'branch':l_branch, 'remotes':self._get_remotes(repo_path), 'describe':self._get_describe(repo_path)}}
+                repos[repo_path] = {'path':os.path.basename(repo_path),'git-remote':{
+                        'rev':l_rev,
+                        'branch':l_branch,
+                        'remotes':self._get_remotes_with_url(repo_path),
+                        'describe':oe.buildcfg.get_metadata_git_describe(repo_path)}}
                 if repo_path == destdir_repo:
                     repos[repo_path]['contains_this_file'] = True
                 if not repos[repo_path]['git-remote']['remotes'] and not repos[repo_path]['contains_this_file']:
diff --git a/poky/meta/lib/oe/buildcfg.py b/poky/meta/lib/oe/buildcfg.py
index b3fe510..27b059b 100644
--- a/poky/meta/lib/oe/buildcfg.py
+++ b/poky/meta/lib/oe/buildcfg.py
@@ -28,6 +28,35 @@
         rev = '<unknown>'
     return rev.strip()
 
+def get_metadata_git_toplevel(path):
+    try:
+        toplevel, _ = bb.process.run('git rev-parse --show-toplevel', cwd=path)
+    except bb.process.ExecutionError:
+        return ""
+    return toplevel.strip()
+
+def get_metadata_git_remotes(path):
+    try:
+        remotes_list, _ = bb.process.run('git remote', cwd=path)
+        remotes = remotes_list.split()
+    except bb.process.ExecutionError:
+        remotes = []
+    return remotes
+
+def get_metadata_git_remote_url(path, remote):
+    try:
+        uri, _ = bb.process.run('git remote get-url {remote}'.format(remote=remote), cwd=path)
+    except bb.process.ExecutionError:
+        return ""
+    return uri.strip()
+
+def get_metadata_git_describe(path):
+    try:
+        describe, _ = bb.process.run('git describe --tags', cwd=path)
+    except bb.process.ExecutionError:
+        return ""
+    return describe.strip()
+
 def is_layer_modified(path):
     try:
         subprocess.check_output("""cd %s; export PSEUDO_UNLOAD=1; set -e;
diff --git a/poky/meta/lib/oe/package.py b/poky/meta/lib/oe/package.py
index 587810b..1511ba4 100644
--- a/poky/meta/lib/oe/package.py
+++ b/poky/meta/lib/oe/package.py
@@ -1660,7 +1660,7 @@
 
         if (file.endswith(".dll") or file.endswith(".exe")):
             # use objdump to search for "DLL Name: .*\.dll"
-            p = subprocess.Popen([d.expand("${HOST_PREFIX}objdump"), "-p", file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+            p = subprocess.Popen([d.expand("${OBJDUMP}"), "-p", file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
             out, err = p.communicate()
             # process the output, grabbing all .dll names
             if p.returncode == 0:
diff --git a/poky/meta/lib/oe/sstatesig.py b/poky/meta/lib/oe/sstatesig.py
index aa891ec..a46e550 100644
--- a/poky/meta/lib/oe/sstatesig.py
+++ b/poky/meta/lib/oe/sstatesig.py
@@ -6,6 +6,7 @@
 import bb.siggen
 import bb.runqueue
 import oe
+import netrc
 
 def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCaches):
     # Return True if we should keep the dependency, False to drop it
@@ -327,6 +328,18 @@
         if not self.method:
             bb.fatal("OEEquivHash requires SSTATE_HASHEQUIV_METHOD to be set")
         self.max_parallel = int(data.getVar('BB_HASHSERVE_MAX_PARALLEL') or 1)
+        self.username = data.getVar("BB_HASHSERVE_USERNAME")
+        self.password = data.getVar("BB_HASHSERVE_PASSWORD")
+        if not self.username or not self.password:
+            try:
+                n = netrc.netrc()
+                auth = n.authenticators(self.server)
+                if auth is not None:
+                    self.username, _, self.password = auth
+            except FileNotFoundError:
+                pass
+            except netrc.NetrcParseError as e:
+                bb.warn("Error parsing %s:%s: %s" % (e.filename, str(e.lineno), e.msg))
 
 # Insert these classes into siggen's namespace so it can see and select them
 bb.siggen.SignatureGeneratorOEBasicHash = SignatureGeneratorOEBasicHash
diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py
index a1cccc3..bc1e40e 100644
--- a/poky/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py
@@ -482,7 +482,7 @@
         pn = 'mbedtls'
         # this will trigger reformat_git_uri with branch parameter in url
         git_url = "'git://git@github.com/ARMmbed/mbedtls.git;protocol=https'"
-        resulting_src_uri = "git://git@github.com/ARMmbed/mbedtls.git;protocol=https;branch=master"
+        resulting_src_uri = "gitsm://git@github.com/ARMmbed/mbedtls.git;protocol=https;branch=master"
         self._test_devtool_add_git_url(git_url, version, pn, resulting_src_uri)
 
     def test_devtool_add_library(self):
diff --git a/poky/meta/lib/oeqa/selftest/cases/overlayfs.py b/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
index cd0dc60..e310635 100644
--- a/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
+++ b/poky/meta/lib/oeqa/selftest/cases/overlayfs.py
@@ -353,6 +353,7 @@
 # Image configuration for overlayfs-etc
 OVERLAYFS_ETC_MOUNT_POINT = "/data"
 OVERLAYFS_ETC_DEVICE = "/dev/sda3"
+OVERLAYFS_ROOTFS_TYPE = "ext4"
 """
 
         self.write_config(config)
@@ -367,13 +368,17 @@
 
     @skipIfNotMachine("qemux86-64", "tests are qemux86-64 specific currently")
     def test_sbin_init_preinit(self):
-        self.run_sbin_init(False)
+        self.run_sbin_init(False, "ext4")
 
     @skipIfNotMachine("qemux86-64", "tests are qemux86-64 specific currently")
     def test_sbin_init_original(self):
-        self.run_sbin_init(True)
+        self.run_sbin_init(True, "ext4")
 
-    def run_sbin_init(self, origInit):
+    @skipIfNotMachine("qemux86-64", "tests are qemux86-64 specific currently")
+    def test_sbin_init_read_only(self):
+        self.run_sbin_init(True, "squashfs")
+
+    def run_sbin_init(self, origInit, rootfsType):
         """
         Summary:   Confirm we can replace original init and mount overlay on top of /etc
         Expected:  Image is created successfully and /etc is mounted as an overlay
@@ -384,7 +389,9 @@
 
         args = {
             'OVERLAYFS_INIT_OPTION': "" if origInit else "init=/sbin/preinit",
-            'OVERLAYFS_ETC_USE_ORIG_INIT_NAME': int(origInit == True)
+            'OVERLAYFS_ETC_USE_ORIG_INIT_NAME': int(origInit == True),
+            'OVERLAYFS_ROOTFS_TYPE': rootfsType,
+            'OVERLAYFS_ETC_CREATE_MOUNT_DIRS': int(rootfsType == "ext4")
         }
 
         self.write_config(config.format(**args))
@@ -437,7 +444,9 @@
 
         args = {
             'OVERLAYFS_INIT_OPTION': "",
-            'OVERLAYFS_ETC_USE_ORIG_INIT_NAME': 1
+            'OVERLAYFS_ETC_USE_ORIG_INIT_NAME': 1,
+            'OVERLAYFS_ROOTFS_TYPE': "ext4",
+            'OVERLAYFS_ETC_CREATE_MOUNT_DIRS': 1
         }
 
         self.write_config(config.format(**args))
@@ -463,10 +472,14 @@
 INIT_MANAGER = "systemd"
 
 # enable overlayfs in the kernel
-KERNEL_EXTRA_FEATURES:append = " features/overlayfs/overlayfs.scc"
+KERNEL_EXTRA_FEATURES:append = " \
+    features/overlayfs/overlayfs.scc \
+    cfg/fs/squashfs.scc"
 
 IMAGE_FSTYPES += "wic"
 OVERLAYFS_INIT_OPTION = "{OVERLAYFS_INIT_OPTION}"
+OVERLAYFS_ROOTFS_TYPE = "{OVERLAYFS_ROOTFS_TYPE}"
+OVERLAYFS_ETC_CREATE_MOUNT_DIRS = "{OVERLAYFS_ETC_CREATE_MOUNT_DIRS}"
 WKS_FILE = "overlayfs_etc.wks.in"
 
 EXTRA_IMAGE_FEATURES += "read-only-rootfs"
@@ -477,4 +490,13 @@
 OVERLAYFS_ETC_FSTYPE = "ext4"
 OVERLAYFS_ETC_DEVICE = "/dev/sda3"
 OVERLAYFS_ETC_USE_ORIG_INIT_NAME = "{OVERLAYFS_ETC_USE_ORIG_INIT_NAME}"
+
+ROOTFS_POSTPROCESS_COMMAND += "{OVERLAYFS_ROOTFS_TYPE}_rootfs"
+
+ext4_rootfs() {{
+}}
+
+squashfs_rootfs() {{
+    mkdir -p ${{IMAGE_ROOTFS}}/data
+}}
 """
diff --git a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
index 031c226..86d6cd7 100644
--- a/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
+++ b/poky/meta/lib/oeqa/selftest/cases/sstatetests.py
@@ -772,15 +772,16 @@
 
             def find_siginfo(pn, taskname, sigs=None):
                 result = None
+                command_complete = False
                 tinfoil.set_event_mask(["bb.event.FindSigInfoResult",
                                 "bb.command.CommandCompleted"])
                 ret = tinfoil.run_command("findSigInfo", pn, taskname, sigs)
                 if ret:
-                    while True:
+                    while result is None or not command_complete:
                         event = tinfoil.wait_event(1)
                         if event:
                             if isinstance(event, bb.command.CommandCompleted):
-                                break
+                                command_complete = True
                             elif isinstance(event, bb.event.FindSigInfoResult):
                                 result = event.result
                 return result
@@ -959,7 +960,7 @@
         self.assertEqual(len(failed_urls), missing_objects, "Amount of reported missing objects does not match failed URLs: {}\nFailed URLs:\n{}\nFetcher diagnostics:\n{}".format(missing_objects, "\n".join(failed_urls), "\n".join(failed_urls_extrainfo)))
         self.assertEqual(len(failed_urls), 0, "Missing objects in the cache:\n{}\nFetcher diagnostics:\n{}".format("\n".join(failed_urls), "\n".join(failed_urls_extrainfo)))
 
-    def run_test(self, machine, targets, exceptions, check_cdn = True):
+    def run_test(self, machine, targets, exceptions, check_cdn = True, ignore_errors = False):
         # sstate is checked for existence of these, but they never get written out to begin with
         exceptions += ["{}.*image_qa".format(t) for t in targets.split()]
         exceptions += ["{}.*deploy_source_date_epoch".format(t) for t in targets.split()]
@@ -984,14 +985,18 @@
 """.format(machine))
         result = bitbake("-DD -n {}".format(targets))
         bitbake("-S none {}".format(targets))
+        if ignore_errors:
+            return
         self.check_bb_output(result.output, exceptions, check_cdn)
 
     def test_cdn_mirror_qemux86_64(self):
         exceptions = []
+        self.run_test("qemux86-64", "core-image-minimal core-image-full-cmdline core-image-sato-sdk", exceptions, ignore_errors = True)
         self.run_test("qemux86-64", "core-image-minimal core-image-full-cmdline core-image-sato-sdk", exceptions)
 
     def test_cdn_mirror_qemuarm64(self):
         exceptions = []
+        self.run_test("qemuarm64", "core-image-minimal core-image-full-cmdline core-image-sato-sdk", exceptions, ignore_errors = True)
         self.run_test("qemuarm64", "core-image-minimal core-image-full-cmdline core-image-sato-sdk", exceptions)
 
     def test_local_cache_qemux86_64(self):
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot-configure.inc b/poky/meta/recipes-bsp/u-boot/u-boot-configure.inc
index 235623d..378d675 100644
--- a/poky/meta/recipes-bsp/u-boot/u-boot-configure.inc
+++ b/poky/meta/recipes-bsp/u-boot/u-boot-configure.inc
@@ -8,6 +8,8 @@
 
 DEPENDS += "kern-tools-native"
 
+CONFIGURE_FILES = "${@d.getVar('UBOOT_MACHINE') or '.config'}"
+
 do_configure () {
     if [ -n "${UBOOT_CONFIG}" ]; then
         unset i j
diff --git a/poky/meta/recipes-connectivity/openssh/openssh_9.6p1.bb b/poky/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
index 1fd36a2..edd8e8c 100644
--- a/poky/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
+++ b/poky/meta/recipes-connectivity/openssh/openssh_9.6p1.bb
@@ -85,6 +85,9 @@
 EXTRA_OECONF:append:mips = " --without-hardening"
 EXTRA_OECONF:append:mips64 = " --without-hardening"
 
+# Work around ICE on powerpc64le starting in 9.6p1
+EXTRA_OECONF:append:powerpc64le = " --without-hardening"
+
 # Since we do not depend on libbsd, we do not want configure to use it
 # just because it finds libutil.h.  But, specifying --disable-libutil
 # causes compile errors, so...
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/bti.patch b/poky/meta/recipes-connectivity/openssl/openssl/bti.patch
new file mode 100644
index 0000000..748576c
--- /dev/null
+++ b/poky/meta/recipes-connectivity/openssl/openssl/bti.patch
@@ -0,0 +1,58 @@
+From ba8a599395f8b770c76316b5f5b0f3838567014f Mon Sep 17 00:00:00 2001
+From: Tom Cosgrove <tom.cosgrove@arm.com>
+Date: Tue, 26 Mar 2024 13:18:00 +0000
+Subject: [PATCH] aarch64: fix BTI in bsaes assembly code
+
+In Arm systems where BTI is enabled but the Crypto extensions are not (more
+likely in FVPs than in real hardware), the bit-sliced assembler code will
+be used. However, this wasn't annotated with BTI instructions when BTI was
+enabled, so the moment libssl jumps into this code it (correctly) aborts.
+
+Solve this by adding the missing BTI landing pads.
+
+Upstream-Status: Submitted [https://github.com/openssl/openssl/pull/23982]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+---
+ crypto/aes/asm/bsaes-armv8.pl | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/crypto/aes/asm/bsaes-armv8.pl b/crypto/aes/asm/bsaes-armv8.pl
+index b3c97e439f..c3c5ff3e05 100644
+--- a/crypto/aes/asm/bsaes-armv8.pl
++++ b/crypto/aes/asm/bsaes-armv8.pl
+@@ -1018,6 +1018,7 @@ _bsaes_key_convert:
+ //   Initialisation vector overwritten with last quadword of ciphertext
+ //   No output registers, usual AAPCS64 register preservation
+ ossl_bsaes_cbc_encrypt:
++        AARCH64_VALID_CALL_TARGET
+         cmp     x2, #128
+         bhs     .Lcbc_do_bsaes
+         b       AES_cbc_encrypt
+@@ -1270,7 +1271,7 @@ ossl_bsaes_cbc_encrypt:
+ //   Output text filled in
+ //   No output registers, usual AAPCS64 register preservation
+ ossl_bsaes_ctr32_encrypt_blocks:
+-
++        AARCH64_VALID_CALL_TARGET
+         cmp     x2, #8                      // use plain AES for
+         blo     .Lctr_enc_short             // small sizes
+ 
+@@ -1476,6 +1477,7 @@ ossl_bsaes_ctr32_encrypt_blocks:
+ //   Output ciphertext filled in
+ //   No output registers, usual AAPCS64 register preservation
+ ossl_bsaes_xts_encrypt:
++        AARCH64_VALID_CALL_TARGET
+         // Stack layout:
+         // sp ->
+         //        nrounds*128-96 bytes: key schedule
+@@ -1921,6 +1923,7 @@ ossl_bsaes_xts_encrypt:
+ //   Output plaintext filled in
+ //   No output registers, usual AAPCS64 register preservation
+ ossl_bsaes_xts_decrypt:
++        AARCH64_VALID_CALL_TARGET
+         // Stack layout:
+         // sp ->
+         //        nrounds*128-96 bytes: key schedule
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb b/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb
index 1682b6f..c7134c5 100644
--- a/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb
+++ b/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb
@@ -12,6 +12,7 @@
            file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
            file://0001-Configure-do-not-tweak-mips-cflags.patch \
            file://0001-Added-handshake-history-reporting-when-test-fails.patch \
+           file://bti.patch \
            "
 
 SRC_URI:append:class-nativesdk = " \
diff --git a/poky/meta/recipes-core/coreutils/coreutils_9.4.bb b/poky/meta/recipes-core/coreutils/coreutils_9.4.bb
index fc51adc..62ecdea 100644
--- a/poky/meta/recipes-core/coreutils/coreutils_9.4.bb
+++ b/poky/meta/recipes-core/coreutils/coreutils_9.4.bb
@@ -23,7 +23,7 @@
 SRC_URI[sha256sum] = "ea613a4cf44612326e917201bbbcdfbd301de21ffc3b59b6e5c07e040b275e52"
 
 # http://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=v8.27-101-gf5d7c0842
-# 
+#
 CVE_STATUS[CVE-2016-2781] = "disputed: runcon is not really a sandbox command, use `runcon ... setsid ...` to avoid this particular issue."
 
 EXTRA_OECONF:class-target = "--enable-install-program=arch,hostname --libexecdir=${libdir}"
@@ -169,7 +169,7 @@
 
 inherit ptest
 
-RDEPENDS:${PN}-ptest += "bash findutils gawk liberror-perl make perl perl-modules python3-core sed shadow"
+RDEPENDS:${PN}-ptest += "bash findutils gawk make perl perl-modules python3-core sed shadow"
 
 # -dev automatic dependencies fails as we don't want libmodule-build-perl-dev, its too heavy
 # may need tweaking if DEPENDS changes
diff --git a/poky/meta/recipes-core/expat/expat_2.6.1.bb b/poky/meta/recipes-core/expat/expat_2.6.1.bb
deleted file mode 100644
index 9bdc3b6..0000000
--- a/poky/meta/recipes-core/expat/expat_2.6.1.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "A stream-oriented XML parser library"
-DESCRIPTION = "Expat is an XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags)"
-HOMEPAGE = "https://github.com/libexpat/libexpat"
-SECTION = "libs"
-LICENSE = "MIT"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=7b3b078238d0901d3b339289117cb7fb"
-
-VERSION_TAG = "${@d.getVar('PV').replace('.', '_')}"
-
-SRC_URI = "${GITHUB_BASE_URI}/download/R_${VERSION_TAG}/expat-${PV}.tar.bz2  \
-           file://run-ptest \
-           "
-
-GITHUB_BASE_URI = "https://github.com/libexpat/libexpat/releases/"
-UPSTREAM_CHECK_REGEX = "releases/tag/R_(?P<pver>.+)"
-
-SRC_URI[sha256sum] = "4677d957c0c6cb2a3321101944574c24113b637c7ab1cf0659a27c5babc201fd"
-
-EXTRA_OECMAKE:class-native += "-DEXPAT_BUILD_DOCS=OFF"
-
-RDEPENDS:${PN}-ptest += "bash"
-
-inherit cmake lib_package ptest github-releases
-
-do_install_ptest:class-target() {
-	install -m 755 ${B}/tests/runtests* ${D}${PTEST_PATH}
-	install -m 755 ${B}/tests/benchmark/benchmark ${D}${PTEST_PATH}
-}
-
-BBCLASSEXTEND += "native nativesdk"
-
-CVE_PRODUCT = "expat libexpat"
diff --git a/poky/meta/recipes-core/expat/expat_2.6.2.bb b/poky/meta/recipes-core/expat/expat_2.6.2.bb
new file mode 100644
index 0000000..6c9db91
--- /dev/null
+++ b/poky/meta/recipes-core/expat/expat_2.6.2.bb
@@ -0,0 +1,33 @@
+SUMMARY = "A stream-oriented XML parser library"
+DESCRIPTION = "Expat is an XML parser library written in C. It is a stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags)"
+HOMEPAGE = "https://github.com/libexpat/libexpat"
+SECTION = "libs"
+LICENSE = "MIT"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=7b3b078238d0901d3b339289117cb7fb"
+
+VERSION_TAG = "${@d.getVar('PV').replace('.', '_')}"
+
+SRC_URI = "${GITHUB_BASE_URI}/download/R_${VERSION_TAG}/expat-${PV}.tar.bz2  \
+           file://run-ptest \
+           "
+
+GITHUB_BASE_URI = "https://github.com/libexpat/libexpat/releases/"
+UPSTREAM_CHECK_REGEX = "releases/tag/R_(?P<pver>.+)"
+
+SRC_URI[sha256sum] = "9c7c1b5dcbc3c237c500a8fb1493e14d9582146dd9b42aa8d3ffb856a3b927e0"
+
+EXTRA_OECMAKE:class-native += "-DEXPAT_BUILD_DOCS=OFF"
+
+RDEPENDS:${PN}-ptest += "bash"
+
+inherit cmake lib_package ptest github-releases
+
+do_install_ptest:class-target() {
+	install -m 755 ${B}/tests/runtests* ${D}${PTEST_PATH}
+	install -m 755 ${B}/tests/benchmark/benchmark ${D}${PTEST_PATH}
+}
+
+BBCLASSEXTEND += "native nativesdk"
+
+CVE_PRODUCT = "expat libexpat"
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0/skip-timeout.patch b/poky/meta/recipes-core/glib-2.0/glib-2.0/skip-timeout.patch
new file mode 100644
index 0000000..cd5ac28
--- /dev/null
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0/skip-timeout.patch
@@ -0,0 +1,32 @@
+From bb11d1a4ae77d93ec0743e54077cf0f990243fa6 Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Thu, 28 Mar 2024 16:27:09 +0000
+Subject: [PATCH] Skip /timeout/rounding test
+
+This test is sensitive to load because it expects certain timeout operations
+to succeed in specific time periods. Whilst these timeouts are fairly large,
+they're still exceeded inside a qemu on a loaded system.
+
+https://bugzilla.yoctoproject.org/show_bug.cgi?id=14464
+
+Upstream-Status: Inappropriate [OE-specific]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+---
+ glib/tests/timeout.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/glib/tests/timeout.c b/glib/tests/timeout.c
+index 1ae3f3a34..85a715b0f 100644
+--- a/glib/tests/timeout.c
++++ b/glib/tests/timeout.c
+@@ -214,7 +214,6 @@ main (int argc, char *argv[])
+   g_test_add_func ("/timeout/seconds-once", test_seconds_once);
+   g_test_add_func ("/timeout/weeks-overflow", test_weeks_overflow);
+   g_test_add_func ("/timeout/far-future-ready-time", test_far_future_ready_time);
+-  g_test_add_func ("/timeout/rounding", test_rounding);
+ 
+   return g_test_run ();
+ }
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.78.4.bb b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.78.4.bb
index f0fd057..b1669ea 100644
--- a/poky/meta/recipes-core/glib-2.0/glib-2.0_2.78.4.bb
+++ b/poky/meta/recipes-core/glib-2.0/glib-2.0_2.78.4.bb
@@ -17,6 +17,7 @@
            file://0001-Switch-from-the-deprecated-distutils-module-to-the-p.patch \
            file://memory-monitor.patch \
            file://fix-regex.patch \
+           file://skip-timeout.patch \
            "
 SRC_URI:append:class-native = " file://relocate-modules.patch \ 
                                 file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \
diff --git a/poky/meta/recipes-core/glibc/glibc-version.inc b/poky/meta/recipes-core/glibc/glibc-version.inc
index 5b0705f..618a574 100644
--- a/poky/meta/recipes-core/glibc/glibc-version.inc
+++ b/poky/meta/recipes-core/glibc/glibc-version.inc
@@ -1,6 +1,6 @@
 SRCBRANCH ?= "release/2.39/master"
 PV = "2.39+git"
-SRCREV_glibc ?= "312e159626b67fe11f39e83e222cf4348a3962f3"
+SRCREV_glibc ?= "1b9c1a0047fb26a65a9b2a7b8cd977243f7d353c"
 SRCREV_localedef ?= "fab74f31b3811df543e24b6de47efdf45b538abc"
 
 GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https"
diff --git a/poky/meta/recipes-core/glibc/glibc/0023-aarch64-configure-Pass-mcpu-along-with-march-to-dete.patch b/poky/meta/recipes-core/glibc/glibc/0023-aarch64-configure-Pass-mcpu-along-with-march-to-dete.patch
index 816471a..f6523c5 100644
--- a/poky/meta/recipes-core/glibc/glibc/0023-aarch64-configure-Pass-mcpu-along-with-march-to-dete.patch
+++ b/poky/meta/recipes-core/glibc/glibc/0023-aarch64-configure-Pass-mcpu-along-with-march-to-dete.patch
@@ -1,53 +1,62 @@
-From f761f5ca2d453e11d34fc7d552dab4a0e189dae9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 4 Aug 2023 09:34:50 -0700
-Subject: [PATCH] aarch64/configure: Pass -mcpu along with -march to detect sve
- support
+From 73c26018ed0ecd9c807bb363cc2c2ab4aca66a82 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <szabolcs.nagy@arm.com>
+Date: Wed, 13 Mar 2024 14:34:14 +0000
+Subject: [PATCH] aarch64: fix check for SVE support in assembler
 
-SVE support logic in configure is rightly passing -march=<arch>+sve to
-compiler to override whatever user might have passed via environment,
-however GCC does not do as intended when -mcpu is part of environment
-compiler flags, then it overrides the -march computed from -mcpu and
-igonores other -march values so this test fails for lot of aarch64
-machines which pass -mcpu that does not support sve. This is seemingly a
-bug in GCC [1], until that is fixed we preempt -mcpu along with -march
-in the configure test itself. It does not change functionality and yet
-lets us through the GCC inconsistency.
+Due to GCC bug 110901 -mcpu can override -march setting when compiling
+asm code and thus a compiler targetting a specific cpu can fail the
+configure check even when binutils gas supports SVE.
 
-[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110901
+The workaround is that explicit .arch directive overrides both -mcpu
+and -march, and since that's what the actual SVE memcpy uses the
+configure check should use that too even if the GCC issue is fixed
+independently.
 
-Upstream-Status: Inappropriate [Workaround for a GCC issue]
+Upstream-Status: Backport [https://sourceware.org/git/?p=glibc.git;a=commit;h=73c26018ed0ecd9c807bb363cc2c2ab4aca66a82]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Reviewed-by: Florian Weimer <fweimer@redhat.com>
 ---
- sysdeps/aarch64/configure    | 2 +-
- sysdeps/aarch64/configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ sysdeps/aarch64/configure    | 5 +++--
+ sysdeps/aarch64/configure.ac | 5 +++--
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+ mode change 100644 => 100755 sysdeps/aarch64/configure
 
 diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
-index 5e91fab023..39dddc66d4 100644
+old mode 100644
+new mode 100755
+index ca57edce47..9606137e8d
 --- a/sysdeps/aarch64/configure
 +++ b/sysdeps/aarch64/configure
-@@ -327,7 +327,7 @@ else $as_nop
+@@ -325,9 +325,10 @@ then :
+   printf %s "(cached) " >&6
+ else $as_nop
    cat > conftest.s <<\EOF
-         ptrue p0.b
+-        ptrue p0.b
++	.arch armv8.2-a+sve
++	ptrue p0.b
  EOF
 -if { ac_try='${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&5'
-+if { ac_try='${CC-cc} -c -mcpu=generic+sve -march=armv8.2-a+sve conftest.s 1>&5'
++if { ac_try='${CC-cc} -c conftest.s 1>&5'
    { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
    (eval $ac_try) 2>&5
    ac_status=$?
 diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac
-index 8a708f2ef4..b6a146d2be 100644
+index 27874eceb4..56d12d661d 100644
 --- a/sysdeps/aarch64/configure.ac
 +++ b/sysdeps/aarch64/configure.ac
-@@ -92,7 +92,7 @@ AC_CACHE_CHECK([for SVE support in assembler], [libc_cv_aarch64_sve_asm], [dnl
+@@ -90,9 +90,10 @@ LIBC_CONFIG_VAR([aarch64-variant-pcs], [$libc_cv_aarch64_variant_pcs])
+ # Check if asm support armv8.2-a+sve
+ AC_CACHE_CHECK([for SVE support in assembler], [libc_cv_aarch64_sve_asm], [dnl
  cat > conftest.s <<\EOF
-         ptrue p0.b
+-        ptrue p0.b
++	.arch armv8.2-a+sve
++	ptrue p0.b
  EOF
 -if AC_TRY_COMMAND(${CC-cc} -c -march=armv8.2-a+sve conftest.s 1>&AS_MESSAGE_LOG_FD); then
-+if AC_TRY_COMMAND(${CC-cc} -c -mcpu=generic+sve -march=armv8.2-a+sve conftest.s 1>&AS_MESSAGE_LOG_FD); then
++if AC_TRY_COMMAND(${CC-cc} -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
    libc_cv_aarch64_sve_asm=yes
  else
    libc_cv_aarch64_sve_asm=no
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-core/glibc/glibc/0024-qemu-stale-process.patch b/poky/meta/recipes-core/glibc/glibc/0024-qemu-stale-process.patch
new file mode 100644
index 0000000..c0a467f
--- /dev/null
+++ b/poky/meta/recipes-core/glibc/glibc/0024-qemu-stale-process.patch
@@ -0,0 +1,45 @@
+glibc: Skip 2 qemu tests that can hang in oe-selftest
+
+qemumips and qemuppc were leaving stale processes behind after
+running glibc oe-selftest. During analysis, it was found that
+it was due to "tst-scm_rights" and "tst-scm_rights-time64" tests.
+Disable them so that there are no stale processes left behind.
+
+[YOCTO #15423]
+https://bugzilla.yoctoproject.org/show_bug.cgi?id=15423
+
+Upstream-Status: Inappropriate [oe-core specific]
+Signed-off-by: Yash Shinde <Yash.Shinde@windriver.com>
+---
+diff --git a/sysdeps/unix/sysv/linux/Makefile  b/sysdeps/unix/sysv/linux/Makefile
+--- a/sysdeps/unix/sysv/linux/Makefile    2024-03-18 01:15:49.019202881 -0700
++++ b/sysdeps/unix/sysv/linux/Makefile  2024-03-14 06:26:18.581404107 -0700
+@@ -222,7 +222,6 @@
+   tst-process_mrelease \
+   tst-quota \
+   tst-rlimit-infinity \
+-  tst-scm_rights \
+   tst-sigtimedwait \
+   tst-sync_file_range \
+   tst-sysconf-iov_max \
+@@ -233,6 +232,8 @@
+   tst-timerfd \
+   tst-ttyname-direct \
+   tst-ttyname-namespace \
++  # Skip this test to avoid stale qemu process
++  # tst-scm_rights \
+   # tests
+
+ # process_madvise requires CAP_SYS_ADMIN.
+@@ -270,9 +271,10 @@
+   tst-ntp_gettimex-time64 \
+   tst-ppoll-time64 \
+   tst-prctl-time64 \
+-  tst-scm_rights-time64 \
+   tst-sigtimedwait-time64 \
+   tst-timerfd-time64 \
++  # Skip this test to avoid stale qemu process
++  # tst-scm_rights-time64 \
+   # tests-time64
+
+ tests-clone-internal = \
diff --git a/poky/meta/recipes-core/glibc/glibc_2.39.bb b/poky/meta/recipes-core/glibc/glibc_2.39.bb
index b203060..9122472 100644
--- a/poky/meta/recipes-core/glibc/glibc_2.39.bb
+++ b/poky/meta/recipes-core/glibc/glibc_2.39.bb
@@ -49,6 +49,7 @@
            file://0021-fix-create-thread-failed-in-unprivileged-process-BZ-.patch \
            file://0022-Avoid-hardcoded-build-time-paths-in-the-output-binar.patch \
            file://0023-aarch64-configure-Pass-mcpu-along-with-march-to-dete.patch \
+           file://0024-qemu-stale-process.patch \
 "
 S = "${WORKDIR}/git"
 B = "${WORKDIR}/build-${TARGET_SYS}"
diff --git a/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb b/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
index bfe48b2..1901641 100644
--- a/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
+++ b/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
@@ -26,13 +26,17 @@
 # Use a negative value to skip the update
 CVE_DB_UPDATE_INTERVAL ?= "86400"
 
-# Number of attmepts for each http query to nvd server before giving up
+# CVE database incremental update age threshold, in seconds. If the database is
+# older than this threshold, do a full re-download, else, do an incremental
+# update. By default: the maximum allowed value from NVD: 120 days (120*24*60*60)
+# Use 0 to force a full download.
+CVE_DB_INCR_UPDATE_AGE_THRES ?= "10368000"
+
+# Number of attempts for each http query to nvd server before giving up
 CVE_DB_UPDATE_ATTEMPTS ?= "5"
 
 CVE_DB_TEMP_FILE ?= "${CVE_CHECK_DB_DIR}/temp_nvdcve_2.db"
 
-CVE_CHECK_DB_FILE ?= "${CVE_CHECK_DB_DIR}/nvdcve_2.db"
-
 python () {
     if not bb.data.inherits_class("cve-check", d):
         raise bb.parse.SkipRecipe("Skip recipe when cve-check class is not loaded.")
@@ -119,7 +123,8 @@
 
 def nvd_request_next(url, attempts, api_key, args, min_wait):
     """
-    Request next part of the NVD dabase
+    Request next part of the NVD database
+    NVD API documentation: https://nvd.nist.gov/developers/vulnerabilities
     """
 
     import urllib.request
@@ -172,18 +177,24 @@
 
     req_args = {'startIndex' : 0}
 
-    # The maximum range for time is 120 days
-    # Force a complete update if our range is longer
-    if (database_time != 0):
+    incr_update_threshold = int(d.getVar("CVE_DB_INCR_UPDATE_AGE_THRES"))
+    if database_time != 0:
         database_date = datetime.datetime.fromtimestamp(database_time, tz=datetime.timezone.utc)
         today_date = datetime.datetime.now(tz=datetime.timezone.utc)
         delta = today_date - database_date
-        if delta.days < 120:
+        if incr_update_threshold == 0:
+            bb.note("CVE database: forced full update")
+        elif delta < datetime.timedelta(seconds=incr_update_threshold):
             bb.note("CVE database: performing partial update")
+            # The maximum range for time is 120 days
+            if delta > datetime.timedelta(days=120):
+                bb.error("CVE database: Trying to do an incremental update on a larger than supported range")
             req_args['lastModStartDate'] = database_date.isoformat()
             req_args['lastModEndDate'] = today_date.isoformat()
         else:
             bb.note("CVE database: file too old, forcing a full update")
+    else:
+        bb.note("CVE database: no preexisting database, do a full download")
 
     with bb.progress.ProgressHandler(d) as ph, open(os.path.join(d.getVar("TMPDIR"), 'cve_check'), 'a') as cve_f:
 
@@ -313,6 +324,10 @@
     vectorString = None
     cveId = elt['cve']['id']
     if elt['cve']['vulnStatus'] ==  "Rejected":
+        c = conn.cursor()
+        c.execute("delete from PRODUCTS where ID = ?;", [cveId])
+        c.execute("delete from NVD where ID = ?;", [cveId])
+        c.close()
         return
     cveDesc = ""
     for desc in elt['cve']['descriptions']:
@@ -346,6 +361,10 @@
                 [cveId, cveDesc, cvssv2, cvssv3, date, accessVector, vectorString]).close()
 
     try:
+        # Remove any pre-existing CVE configuration. Even for partial database
+        # update, those will be repopulated. This ensures that old
+        # configuration is not kept for an updated CVE.
+        conn.execute("delete from PRODUCTS where ID = ?", [cveId]).close()
         for config in elt['cve']['configurations']:
             # This is suboptimal as it doesn't handle AND/OR and negate, but is better than nothing
             for node in config["nodes"]:
diff --git a/poky/meta/recipes-core/ovmf/ovmf_git.bb b/poky/meta/recipes-core/ovmf/ovmf_git.bb
index 3dc031d..5b1353b 100644
--- a/poky/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/poky/meta/recipes-core/ovmf/ovmf_git.bb
@@ -30,6 +30,9 @@
 SRCREV = "819cfc6b42a68790a23509e4fcc58ceb70e1965e"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)"
 
+CVE_PRODUCT = "edk2"
+CVE_VERSION = "${@d.getVar('PV').split('stable')[1]}"
+
 inherit deploy
 
 PARALLEL_MAKE = ""
diff --git a/poky/meta/recipes-core/readline/readline/readline82-001.patch b/poky/meta/recipes-core/readline/readline/readline82-001.patch
new file mode 100644
index 0000000..4e9839d
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-001.patch
@@ -0,0 +1,45 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-001
+
+Bug-Reported-by:	Kan-Ru Chen <koster@debian.org>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021109
+
+Bug-Description:
+
+Starting a readline application with an invalid locale specification for
+LC_ALL/LANG/LC_CTYPE can cause it crash on the first call to readline.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/nls.c	2022-08-15 09:38:51.000000000 -0400
+--- nls.c	2022-10-05 09:23:22.000000000 -0400
+***************
+*** 142,145 ****
+--- 142,149 ----
+      lspec = "";
+    ret = setlocale (LC_CTYPE, lspec);	/* ok, since it does not change locale */
++   if (ret == 0 || *ret == 0)
++     ret = setlocale (LC_CTYPE, (char *)NULL);
++   if (ret == 0 || *ret == 0)
++     ret = RL_DEFAULT_LOCALE;
+  #else
+    ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec;
+
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 0
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 1
diff --git a/poky/meta/recipes-core/readline/readline/readline82-002.patch b/poky/meta/recipes-core/readline/readline/readline82-002.patch
new file mode 100644
index 0000000..5629685
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-002.patch
@@ -0,0 +1,51 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-002
+
+Bug-Reported-by:	srobertson@peratonlabs.com
+Bug-Reference-ID:
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-09/msg00049.html
+
+Bug-Description:
+
+It's possible for readline to try to zero out a line that's not null-
+terminated, leading to a memory fault.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/display.c	2022-04-05 10:47:31.000000000 -0400
+--- display.c	2022-12-13 13:11:22.000000000 -0500
+***************
+*** 2684,2692 ****
+  
+    if (visible_line)
+!     {
+!       temp = visible_line;
+!       while (*temp)
+! 	*temp++ = '\0';
+!     }
+    rl_on_new_line ();
+    forced_display++;
+--- 2735,2740 ----
+  
+    if (visible_line)
+!     memset (visible_line, 0, line_size);
+! 
+    rl_on_new_line ();
+    forced_display++;
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 1
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 2
diff --git a/poky/meta/recipes-core/readline/readline/readline82-003.patch b/poky/meta/recipes-core/readline/readline/readline82-003.patch
new file mode 100644
index 0000000..61570bf
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-003.patch
@@ -0,0 +1,46 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-003
+
+Bug-Reported-by:	Stefan Klinger <readline-gnu.org@stefan-klinger.de>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2023-08/msg00018.html
+
+Bug-Description:
+
+Patch (apply with `patch -p0'):
+
+The custom color prefix that readline uses to color possible completions
+must have a leading `.'.
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/colors.c	2021-12-08 11:38:25.000000000 -0500
+--- colors.c	2023-08-28 16:40:04.000000000 -0400
+***************
+*** 74,78 ****
+  static void restore_default_color (void);
+  
+! #define RL_COLOR_PREFIX_EXTENSION	"readline-colored-completion-prefix"
+  
+  COLOR_EXT_TYPE *_rl_color_ext_list = 0;
+--- 74,78 ----
+  static void restore_default_color (void);
+  
+! #define RL_COLOR_PREFIX_EXTENSION	".readline-colored-completion-prefix"
+  
+  COLOR_EXT_TYPE *_rl_color_ext_list = 0;
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 2
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 3
diff --git a/poky/meta/recipes-core/readline/readline/readline82-004.patch b/poky/meta/recipes-core/readline/readline/readline82-004.patch
new file mode 100644
index 0000000..cedc3d0
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-004.patch
@@ -0,0 +1,68 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-004
+
+Bug-Reported-by:	Henry Bent <henry.r.bent@gmail.com>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00044.html
+
+Bug-Description:
+
+Patch (apply with `patch -p0'):
+
+There are systems that supply one of select or pselect, but not both.
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/input.c	2022-04-08 15:43:24.000000000 -0400
+--- input.c	2022-11-28 09:41:08.000000000 -0500
+***************
+*** 152,156 ****
+--- 152,158 ----
+  int _rl_timeout_init (void);
+  int _rl_timeout_sigalrm_handler (void);
++ #if defined (RL_TIMEOUT_USE_SELECT)
+  int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
++ #endif
+  
+  static void _rl_timeout_handle (void);
+***************
+*** 249,253 ****
+    int chars_avail, k;
+    char input;
+! #if defined(HAVE_SELECT)
+    fd_set readfds, exceptfds;
+    struct timeval timeout;
+--- 251,255 ----
+    int chars_avail, k;
+    char input;
+! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+    fd_set readfds, exceptfds;
+    struct timeval timeout;
+***************
+*** 806,810 ****
+    unsigned char c;
+    int fd;
+! #if defined (HAVE_PSELECT)
+    sigset_t empty_set;
+    fd_set readfds;
+--- 815,819 ----
+    unsigned char c;
+    int fd;
+! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+    sigset_t empty_set;
+    fd_set readfds;
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 3
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 4
diff --git a/poky/meta/recipes-core/readline/readline/readline82-005.patch b/poky/meta/recipes-core/readline/readline/readline82-005.patch
new file mode 100644
index 0000000..69c2e4f
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-005.patch
@@ -0,0 +1,53 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-005
+
+Bug-Reported-by:	Simon Marchi <simon.marchi@polymtl.ca>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00005.html
+
+Bug-Description:
+
+If an application is using readline in callback mode, and a signal arrives
+after readline checks for it in rl_callback_read_char() but before it
+restores the application's signal handlers, it won't get processed until the
+next time the application calls rl_callback_read_char(). Readline needs to
+check for and resend any pending signals after restoring the application's
+signal handlers.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/callback.c	2022-04-29 12:02:56.000000000 -0400
+--- callback.c	2022-10-11 10:59:06.000000000 -0400
+***************
+*** 116,120 ****
+    do { \
+      if (rl_persistent_signal_handlers == 0) \
+!       rl_clear_signals (); \
+      return; \
+    } while (0)
+--- 116,123 ----
+    do { \
+      if (rl_persistent_signal_handlers == 0) \
+!       { \
+!         rl_clear_signals (); \
+!         if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
+!       } \
+      return; \
+    } while (0)
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 4
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 5
diff --git a/poky/meta/recipes-core/readline/readline/readline82-006.patch b/poky/meta/recipes-core/readline/readline/readline82-006.patch
new file mode 100644
index 0000000..d66afe8
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-006.patch
@@ -0,0 +1,102 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-006
+
+Bug-Reported-by:	Tom de Vries <tdevries@suse.de>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00001.html
+
+Bug-Description:
+
+This is a variant of the same issue as the one fixed by patch 5. In this
+case, the signal arrives and is pending before readline calls rl_getc().
+When this happens, the pending signal will be handled by the loop, but may
+alter or destroy some state that the callback uses. Readline needs to treat
+this case the same way it would if a signal interrupts pselect/select, so
+compound operations like searches and reading numeric arguments get cleaned
+up properly.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/input.c	2022-12-22 16:15:48.000000000 -0500
+--- input.c	2023-01-10 11:53:45.000000000 -0500
+***************
+*** 812,816 ****
+  rl_getc (FILE *stream)
+  {
+!   int result;
+    unsigned char c;
+    int fd;
+--- 812,816 ----
+  rl_getc (FILE *stream)
+  {
+!   int result, ostate, osig;
+    unsigned char c;
+    int fd;
+***************
+*** 823,828 ****
+--- 823,842 ----
+    while (1)
+      {
++       osig = _rl_caught_signal;
++       ostate = rl_readline_state;
++ 
+        RL_CHECK_SIGNALS ();
+  
++ #if defined (READLINE_CALLBACKS)
++       /* Do signal handling post-processing here, but just in callback mode
++ 	 for right now because the signal cleanup can change some of the
++ 	 callback state, and we need to either let the application have a
++ 	 chance to react or abort some current operation that gets cleaned
++ 	 up by rl_callback_sigcleanup(). If not, we'll just run through the
++ 	 loop again. */
++       if (osig != 0 && (ostate & RL_STATE_CALLBACK))
++ 	goto postproc_signal;
++ #endif
++ 
+        /* We know at this point that _rl_caught_signal == 0 */
+  
+***************
+*** 888,891 ****
+--- 902,908 ----
+  
+  handle_error:
++       osig = _rl_caught_signal;
++       ostate = rl_readline_state;
++ 
+        /* If the error that we received was EINTR, then try again,
+  	 this is simply an interrupted system call to read ().  We allow
+***************
+*** 928,933 ****
+--- 945,959 ----
+  #endif  /* SIGALRM */
+  
++ postproc_signal:
++       /* POSIX says read(2)/pselect(2)/select(2) don't return EINTR for any
++ 	 reason other than being interrupted by a signal, so we can safely
++ 	 call the application's signal event hook. */
+        if (rl_signal_event_hook)
+  	(*rl_signal_event_hook) ();
++ #if defined (READLINE_CALLBACKS)
++       else if (osig == SIGINT && (ostate & RL_STATE_CALLBACK) && (ostate & (RL_STATE_ISEARCH|RL_STATE_NSEARCH|RL_STATE_NUMERICARG)))
++         /* just these cases for now */
++         _rl_abort_internal ();
++ #endif
+      }
+  }
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 5
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 6
diff --git a/poky/meta/recipes-core/readline/readline/readline82-007.patch b/poky/meta/recipes-core/readline/readline/readline82-007.patch
new file mode 100644
index 0000000..9fa1ccb
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-007.patch
@@ -0,0 +1,51 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-007
+
+Bug-Reported-by:	Kevin Pulo <kev@pulo.com.au>
+Bug-Reference-ID:
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2022-11/msg00002.html
+
+Bug-Description:
+
+If readline is called with no prompt, it should display a newline if return
+is typed on an empty line. It should still suppress the final newline if
+return is typed on the last (empty) line of a multi-line command.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/display.c	2022-04-05 10:47:31.000000000 -0400
+--- display.c	2022-12-13 13:11:22.000000000 -0500
+***************
+*** 3342,3348 ****
+  		 &last_face[_rl_screenwidth - 1 + woff], 1);
+      }
+!   _rl_vis_botlin = 0;
+!   if (botline_length > 0 || _rl_last_c_pos > 0)
+      rl_crlf ();
+    fflush (rl_outstream);
+    rl_display_fixed++;
+--- 3394,3400 ----
+  		 &last_face[_rl_screenwidth - 1 + woff], 1);
+      }
+!   if ((_rl_vis_botlin == 0 && botline_length == 0) || botline_length > 0 || _rl_last_c_pos > 0)
+      rl_crlf ();
++   _rl_vis_botlin = 0;
+    fflush (rl_outstream);
+    rl_display_fixed++;
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 6
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 7
diff --git a/poky/meta/recipes-core/readline/readline/readline82-008.patch b/poky/meta/recipes-core/readline/readline/readline82-008.patch
new file mode 100644
index 0000000..660cb1e
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-008.patch
@@ -0,0 +1,80 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-008
+
+Bug-Reported-by:
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+Add missing prototypes for several function declarations.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/text.c	Wed Oct 27 11:03:59 2021
+--- text.c	Thu Nov 16 16:24:58 2023
+***************
+*** 1765,1770 ****
+  #if defined (READLINE_CALLBACKS)
+  static int
+! _rl_char_search_callback (data)
+!      _rl_callback_generic_arg *data;
+  {
+    _rl_callback_func = 0;
+--- 1765,1769 ----
+  #if defined (READLINE_CALLBACKS)
+  static int
+! _rl_char_search_callback (_rl_callback_generic_arg *data)
+  {
+    _rl_callback_func = 0;
+*** ../readline-8.2-patched/bind.c	Wed Feb  9 11:02:22 2022
+--- bind.c	Thu Nov 16 16:25:17 2023
+***************
+*** 1168,1174 ****
+  
+  static int
+! parse_comparison_op (s, indp)
+!      const char *s;
+!      int *indp;
+  {
+    int i, peekc, op;
+--- 1168,1172 ----
+  
+  static int
+! parse_comparison_op (const char *s, int *indp)
+  {
+    int i, peekc, op;
+*** ../readline-8.2-patched/rltty.c	Fri Feb 18 11:14:22 2022
+--- rltty.c	Thu Nov 16 16:25:36 2023
+***************
+*** 81,86 ****
+     to get the tty settings. */
+  static void
+! set_winsize (tty)
+!      int tty;
+  {
+  #if defined (TIOCGWINSZ)
+--- 81,85 ----
+     to get the tty settings. */
+  static void
+! set_winsize (int tty)
+  {
+  #if defined (TIOCGWINSZ)
+
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 7
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 8
diff --git a/poky/meta/recipes-core/readline/readline/readline82-009.patch b/poky/meta/recipes-core/readline/readline/readline82-009.patch
new file mode 100644
index 0000000..1fcf7b3
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-009.patch
@@ -0,0 +1,76 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-009
+
+Bug-Reported-by:	Stefan H. Holek <stefan@epy.co.at>
+Bug-Reference-ID:	<50F8DA45-B7F3-4DE1-AB94-19AE42649CDC@epy.co.at>
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2022-10/msg00021.html
+
+Bug-Description:
+
+Fix issue where the directory name portion of the word to be completed (the
+part that is passed to opendir()) requires both tilde expansion and dequoting.
+Readline only performed tilde expansion in this case, so filename completion
+would fail.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/complete.c	2022-04-05 10:47:06.000000000 -0400
+--- complete.c	2022-10-26 15:08:51.000000000 -0400
+***************
+*** 2527,2531 ****
+  	  xfree (dirname);
+  	  dirname = temp;
+! 	  tilde_dirname = 1;
+  	}
+  
+--- 2527,2532 ----
+  	  xfree (dirname);
+  	  dirname = temp;
+! 	  if (*dirname != '~')
+! 	    tilde_dirname = 1;	/* indicate successful tilde expansion */
+  	}
+  
+***************
+*** 2546,2554 ****
+  	  users_dirname = savestring (dirname);
+  	}
+!       else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function)
+  	{
+! 	  /* delete single and double quotes */
+  	  xfree (dirname);
+! 	  dirname = savestring (users_dirname);
+  	}
+        directory = opendir (dirname);
+--- 2547,2560 ----
+  	  users_dirname = savestring (dirname);
+  	}
+!       else if (rl_completion_found_quote && rl_filename_dequoting_function)
+  	{
+! 	  /* We already ran users_dirname through the dequoting function.
+! 	     If tilde_dirname == 1, we successfully performed tilde expansion
+! 	     on dirname. Now we need to reconcile those results. We either
+! 	     just copy the already-dequoted users_dirname or tilde expand it
+! 	     if we tilde-expanded dirname. */
+! 	  temp = tilde_dirname ? tilde_expand (users_dirname) : savestring (users_dirname);
+  	  xfree (dirname);
+! 	  dirname = temp;
+  	}
+        directory = opendir (dirname);
+
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 8
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 9
diff --git a/poky/meta/recipes-core/readline/readline/readline82-010.patch b/poky/meta/recipes-core/readline/readline/readline82-010.patch
new file mode 100644
index 0000000..6152953
--- /dev/null
+++ b/poky/meta/recipes-core/readline/readline/readline82-010.patch
@@ -0,0 +1,70 @@
+			   READLINE PATCH REPORT
+			   =====================
+
+Readline-Release: 8.2
+Patch-ID: readline82-010
+
+Bug-Reported-by:	Martin Castillo <castilma@uni-bremen.de>
+Bug-Reference-ID:	<2d42153b-cf65-caba-dff1-cd3bc6268c7e@uni-bremen.de>
+Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-readline/2023-01/msg00000.html
+
+Bug-Description:
+
+Fix the case where text to be completed from the line buffer (quoted) is
+compared to the common prefix of the possible matches (unquoted) and the
+quoting makes the former appear to be longer than the latter. Readline
+assumes the match doesn't add any characters to the word and doesn't display
+multiple matches.
+
+Patch (apply with `patch -p0'):
+
+Upstream-Status: Submitted [https://ftp.gnu.org/gnu/readline/readline-8.2-patches/]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+*** ../readline-8.2-patched/complete.c	Tue Apr  5 10:47:06 2022
+--- complete.c	Sat Jan  7 14:19:45 2023
+***************
+*** 2032,2038 ****
+    text = rl_copy_text (start, end);
+    matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
+    /* nontrivial_lcd is set if the common prefix adds something to the word
+       being completed. */
+!   nontrivial_lcd = matches && compare_match (text, matches[0]) != 0;
+    if (what_to_do == '!' || what_to_do == '@')
+      tlen = strlen (text);
+--- 2038,2060 ----
+    text = rl_copy_text (start, end);
+    matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
++   /* If TEXT contains quote characters, it will be dequoted as part of
++      generating the matches, and the matches will not contain any quote
++      characters. We need to dequote TEXT before performing the comparison.
++      Since compare_match performs the dequoting, and we only want to do it
++      once, we don't call compare_matches after dequoting TEXT; we call
++      strcmp directly. */
+    /* nontrivial_lcd is set if the common prefix adds something to the word
+       being completed. */
+!   if (rl_filename_completion_desired && rl_filename_quoting_desired &&
+!       rl_completion_found_quote && rl_filename_dequoting_function)
+!     {
+!       char *t;
+!       t = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
+!       xfree (text);
+!       text = t;
+!       nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
+!     }
+!   else
+!     nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
+    if (what_to_do == '!' || what_to_do == '@')
+      tlen = strlen (text);
+
+*** ../readline-8.2/patchlevel	2013-11-15 08:11:11.000000000 -0500
+--- patchlevel	2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+  # Do not edit -- exists only for use by patch
+  
+! 9
+--- 1,3 ----
+  # Do not edit -- exists only for use by patch
+  
+! 10
diff --git a/poky/meta/recipes-core/readline/readline_8.2.bb b/poky/meta/recipes-core/readline/readline_8.2.bb
index 3a47297..f0dba31 100644
--- a/poky/meta/recipes-core/readline/readline_8.2.bb
+++ b/poky/meta/recipes-core/readline/readline_8.2.bb
@@ -2,4 +2,16 @@
 
 SRC_URI += "  file://norpath.patch"
 
+SRC_URI += "file://readline82-001.patch;striplevel=0 \
+            file://readline82-002.patch;striplevel=0 \
+            file://readline82-003.patch;striplevel=0 \
+            file://readline82-004.patch;striplevel=0 \
+            file://readline82-005.patch;striplevel=0 \
+            file://readline82-006.patch;striplevel=0 \
+            file://readline82-007.patch;striplevel=0 \
+            file://readline82-008.patch;striplevel=0 \
+            file://readline82-009.patch;striplevel=0 \
+            file://readline82-010.patch;striplevel=0 \
+           "
+
 SRC_URI[archive.sha256sum] = "3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35"
diff --git a/poky/meta/recipes-core/systemd/systemd/0001-NamePolicy.patch b/poky/meta/recipes-core/systemd/systemd/0001-NamePolicy.patch
new file mode 100644
index 0000000..46955cb
--- /dev/null
+++ b/poky/meta/recipes-core/systemd/systemd/0001-NamePolicy.patch
@@ -0,0 +1,33 @@
+From 9bb09886320eb286108fb370b2634a66b3e3b9ff Mon Sep 17 00:00:00 2001
+From: Joe Slater <joe.slater@windriver.com>
+Date: Thu, 21 Mar 2024 16:28:31 +0000
+Subject: [PATCH] systemd: enable mac based names in NamePolicy
+
+The default NamePolicy for network interface names does not
+include names based on mac addresses.  Some BSPs, though, do
+not provide information to compute other names, so we enable
+mac names as a last resort.
+
+Upstream-Status: Inappropriate [enable feature]
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+---
+ network/99-default.link | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/network/99-default.link b/network/99-default.link
+index 429ac31e80..543ce54661 100644
+--- a/network/99-default.link
++++ b/network/99-default.link
+@@ -15,6 +15,6 @@
+ OriginalName=*
+ 
+ [Link]
+-NamePolicy=keep kernel database onboard slot path
+-AlternativeNamesPolicy=database onboard slot path
++NamePolicy=keep kernel database onboard slot path mac
++AlternativeNamesPolicy=database onboard slot path mac
+ MACAddressPolicy=persistent
+-- 
+2.35.5
+
diff --git a/poky/meta/recipes-core/systemd/systemd_255.4.bb b/poky/meta/recipes-core/systemd/systemd_255.4.bb
index bcef3e6..8a816c4 100644
--- a/poky/meta/recipes-core/systemd/systemd_255.4.bb
+++ b/poky/meta/recipes-core/systemd/systemd_255.4.bb
@@ -28,6 +28,7 @@
            file://systemd-pager.sh \
            file://0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch \
            file://0008-implment-systemd-sysv-install-for-OE.patch \
+           file://0001-NamePolicy.patch \
            "
 
 # patches needed by musl
@@ -248,6 +249,7 @@
                   -Dsystem-alloc-gid-min=101 \
                   -Dsystem-gid-max=999 \
                   -Dcreate-log-dirs=false \
+                  ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', '-Ddefault-mdns=no -Ddefault-llmnr=no', '', d)} \
                   "
 
 # Hardcode target binary paths to avoid using paths from sysroot or worse
diff --git a/poky/meta/recipes-core/util-linux/util-linux.inc b/poky/meta/recipes-core/util-linux/util-linux.inc
index 4e9d22f..d506783 100644
--- a/poky/meta/recipes-core/util-linux/util-linux.inc
+++ b/poky/meta/recipes-core/util-linux/util-linux.inc
@@ -6,14 +6,15 @@
 
 SECTION = "base"
 
-LICENSE = "GPL-1.0-or-later & GPL-2.0-or-later & LGPL-2.1-or-later & BSD-2-Clause & BSD-3-Clause & BSD-4-Clause"
+LICENSE = "GPL-1.0-or-later & GPL-2.0-or-later & LGPL-2.1-or-later & BSD-2-Clause & BSD-3-Clause & BSD-4-Clause & MIT"
+LICENSE:${PN}-fcntl-lock = "MIT"
 LICENSE:${PN}-fdisk = "GPL-1.0-or-later"
 LICENSE:${PN}-libblkid = "LGPL-2.1-or-later"
 LICENSE:${PN}-libfdisk = "LGPL-2.1-or-later"
 LICENSE:${PN}-libmount = "LGPL-2.1-or-later"
 LICENSE:${PN}-libsmartcols = "LGPL-2.1-or-later"
 
-LIC_FILES_CHKSUM = "file://README.licensing;md5=6b0e0a2320e66e62eef9b8149a6faec4 \
+LIC_FILES_CHKSUM = "file://README.licensing;md5=cc80239f106687ab39ef0271ff5cf4ba \
                     file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://Documentation/licenses/COPYING.GPL-2.0-or-later;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
                     file://Documentation/licenses/COPYING.LGPL-2.1-or-later;md5=4fbd65380cdd255951079008b364516c \
@@ -29,6 +30,7 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/util-linux:"
 MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/util-linux/v${MAJOR_VERSION}/util-linux-${PV}.tar.xz \
+           file://mit-license.patch \
            file://configure-sbindir.patch \
            file://runuser.pamd \
            file://runuser-l.pamd \
@@ -37,6 +39,7 @@
            file://display_testname_for_subtest.patch \
            file://avoid_parallel_tests.patch \
            file://0001-login-utils-include-libgen.h-for-basename-API.patch \
+           file://fcntl-lock.c \
            "
 
 SRC_URI[sha256sum] = "7b6605e48d1a49f43cc4b4cfc59f313d0dd5402fa40b96810bd572e167dfed0f"
diff --git a/poky/meta/recipes-core/util-linux/util-linux/fcntl-lock.c b/poky/meta/recipes-core/util-linux/util-linux/fcntl-lock.c
new file mode 100644
index 0000000..966d8c5
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux/fcntl-lock.c
@@ -0,0 +1,332 @@
+// From https://github.com/magnumripper/fcntl-lock
+// SPDX-License-Identifier: MIT
+/* ----------------------------------------------------------------------- *
+ *
+ *   Copyright 2003-2005 H. Peter Anvin - All Rights Reserved
+ *   Copyright 2015 magnum (fcntl version)
+ *
+ *   Permission is hereby granted, free of charge, to any person
+ *   obtaining a copy of this software and associated documentation
+ *   files (the "Software"), to deal in the Software without
+ *   restriction, including without limitation the rights to use,
+ *   copy, modify, merge, publish, distribute, sublicense, and/or
+ *   sell copies of the Software, and to permit persons to whom
+ *   the Software is furnished to do so, subject to the following
+ *   conditions:
+ *
+ *   The above copyright notice and this permission notice shall
+ *   be included in all copies or substantial portions of the Software.
+ *
+ *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *   OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <getopt.h>
+#include <signal.h>
+#include <ctype.h>
+#include <string.h>
+#include <paths.h>
+#include <sysexits.h>
+#include <sys/types.h>
+#include <sys/file.h>
+#include <sys/time.h>
+#include <sys/wait.h>
+
+#define PACKAGE_STRING "magnum"
+#define _(x) (x)
+
+static const struct option long_options[] = {
+  { "shared",       0, NULL, 's' },
+  { "exclusive",    0, NULL, 'x' },
+  { "unlock",       0, NULL, 'u' },
+  { "nonblocking",  0, NULL, 'n' },
+  { "nb",           0, NULL, 'n' },
+  { "timeout",      1, NULL, 'w' },
+  { "wait",         1, NULL, 'w' },
+  { "close",        0, NULL, 'o' },
+  { "help",         0, NULL, 'h' },
+  { "version",      0, NULL, 'V' },
+  { 0, 0, 0, 0 }
+};
+
+const char *program;
+
+static void usage(int ex)
+{
+  fputs("fcntl-lock (" PACKAGE_STRING ")\n", stderr);
+  fprintf(stderr,
+	_("Usage: %1$s [-sxun][-w #] fd#\n"
+	  "       %1$s [-sxon][-w #] file [-c] command...\n"
+	  "       %1$s [-sxon][-w #] directory [-c] command...\n"
+	  "  -s  --shared     Get a shared lock\n"
+	  "  -x  --exclusive  Get an exclusive lock\n"
+	  "  -u  --unlock     Remove a lock\n"
+	  "  -n  --nonblock   Fail rather than wait\n"
+	  "  -w  --timeout    Wait for a limited amount of time\n"
+	  "  -o  --close      Close file descriptor before running command\n"
+	  "  -c  --command    Run a single command string through the shell\n"
+	  "  -h  --help       Display this text\n"
+	  "  -V  --version    Display version\n"),
+	  program);
+  exit(ex);
+}
+
+
+static sig_atomic_t timeout_expired = 0;
+
+static void timeout_handler(int sig)
+{
+  (void)sig;
+
+  timeout_expired = 1;
+}
+
+
+static char * strtotimeval(const char *str, struct timeval *tv)
+{
+  char *s;
+  long fs;			/* Fractional seconds */
+  int i;
+
+  tv->tv_sec = strtol(str, &s, 10);
+  fs = 0;
+
+  if ( *s == '.' ) {
+    s++;
+
+    for ( i = 0 ; i < 6 ; i++ ) {
+      if ( !isdigit(*s) )
+	break;
+
+      fs *= 10;
+      fs += *s++ - '0';
+    }
+
+    for ( ; i < 6; i++ )
+      fs *= 10;
+
+    while ( isdigit(*s) )
+      s++;
+  }
+
+  tv->tv_usec = fs;
+  return s;
+}
+
+int main(int argc, char *argv[])
+{
+  struct itimerval timeout, old_timer;
+  int have_timeout = 0;
+  int type = F_WRLCK;
+  int block = F_SETLKW;
+  int fd = -1;
+  int opt, ix;
+  int do_close = 0;
+  int err;
+  int status;
+  char *eon;
+  char **cmd_argv = NULL, *sh_c_argv[4];
+  struct flock lock;
+  const char *filename = NULL;
+  struct sigaction sa, old_sa;
+
+  program = argv[0];
+
+  if ( argc < 2 )
+    usage(EX_USAGE);
+
+  memset(&timeout, 0, sizeof timeout);
+
+  optopt = 0;
+  while ( (opt = getopt_long(argc, argv, "+sexnouw:hV?", long_options, &ix)) != EOF ) {
+    switch(opt) {
+    case 's':
+      type = F_RDLCK;
+      break;
+    case 'e':
+    case 'x':
+      type = F_WRLCK;
+      break;
+    case 'u':
+      type = F_UNLCK;
+      break;
+    case 'o':
+      do_close = 1;
+      break;
+    case 'n':
+      block = F_SETLK;
+      break;
+    case 'w':
+      have_timeout = 1;
+      eon = strtotimeval(optarg, &timeout.it_value);
+      if ( *eon )
+	usage(EX_USAGE);
+      break;
+    case 'V':
+      printf("fcntl-lock (%s)\n", PACKAGE_STRING);
+      exit(0);
+    default:
+      /* optopt will be set if this was an unrecognized option, i.e. *not* 'h' or '?' */
+      usage(optopt ? EX_USAGE : 0);
+      break;
+    }
+  }
+
+  if ( argc > optind+1 ) {
+    /* Run command */
+
+    if ( !strcmp(argv[optind+1], "-c") ||
+	 !strcmp(argv[optind+1], "--command") ) {
+
+      if ( argc != optind+3 ) {
+	fprintf(stderr, _("%s: %s requires exactly one command argument\n"),
+		program, argv[optind+1]);
+	exit(EX_USAGE);
+      }
+
+      cmd_argv = sh_c_argv;
+
+      cmd_argv[0] = getenv("SHELL");
+      if ( !cmd_argv[0] || !*cmd_argv[0] )
+	cmd_argv[0] = _PATH_BSHELL;
+
+      cmd_argv[1] = "-c";
+      cmd_argv[2] = argv[optind+2];
+      cmd_argv[3] = 0;
+    } else {
+      cmd_argv = &argv[optind+1];
+    }
+
+    filename = argv[optind];
+    fd = open(filename, O_RDWR|O_NOCTTY|O_CREAT, 0666);
+    /* Linux doesn't like O_CREAT on a directory, even though it should be a
+       no-op */
+    if (fd < 0 && errno == EISDIR)
+        fd = open(filename, O_RDONLY|O_NOCTTY);
+
+    if ( fd < 0 ) {
+      err = errno;
+      fprintf(stderr, _("%s: cannot open lock file %s: %s\n"),
+	      program, argv[optind], strerror(err));
+      exit((err == ENOMEM||err == EMFILE||err == ENFILE) ? EX_OSERR :
+	   (err == EROFS||err == ENOSPC) ? EX_CANTCREAT :
+	   EX_NOINPUT);
+    }
+
+  } else if (optind < argc) {
+    /* Use provided file descriptor */
+
+    fd = (int)strtol(argv[optind], &eon, 10);
+    if ( *eon || !argv[optind] ) {
+      fprintf(stderr, _("%s: bad number: %s\n"), program, argv[optind]);
+      exit(EX_USAGE);
+    }
+
+  } else {
+    /* Bad options */
+
+    fprintf(stderr, _("%s: requires file descriptor, file or directory\n"),
+		program);
+    exit(EX_USAGE);
+  }
+
+
+  if ( have_timeout ) {
+    if ( timeout.it_value.tv_sec == 0 &&
+	 timeout.it_value.tv_usec == 0 ) {
+      /* -w 0 is equivalent to -n; this has to be special-cased
+	 because setting an itimer to zero means disabled! */
+
+      have_timeout = 0;
+      block = F_SETLK;
+    } else {
+      memset(&sa, 0, sizeof sa);
+
+      sa.sa_handler = timeout_handler;
+      sa.sa_flags   = SA_RESETHAND;
+      sigaction(SIGALRM, &sa, &old_sa);
+
+      setitimer(ITIMER_REAL, &timeout, &old_timer);
+    }
+  }
+
+  memset(&lock, 0, sizeof(lock));
+  lock.l_type = type;
+  while ( fcntl(fd, block, &lock) ) {
+    switch( (err = errno) ) {
+    case EAGAIN:		/* -n option set and failed to lock */
+    case EACCES:		/* -n option set and failed to lock */
+      exit(1);
+    case EINTR:			/* Signal received */
+      if ( timeout_expired )
+	exit(1);		/* -w option set and failed to lock */
+      continue;			/* otherwise try again */
+    default:			/* Other errors */
+      if ( filename )
+	fprintf(stderr, "%s: %s: %s\n", program, filename, strerror(err));
+      else
+	fprintf(stderr, "%s: %d: %s\n", program, fd, strerror(err));
+      exit((err == ENOLCK||err == ENOMEM) ? EX_OSERR : EX_DATAERR);
+    }
+  }
+
+  if ( have_timeout ) {
+    setitimer(ITIMER_REAL, &old_timer, NULL); /* Cancel itimer */
+    sigaction(SIGALRM, &old_sa, NULL); /* Cancel signal handler */
+  }
+
+  status = 0;
+
+  if ( cmd_argv ) {
+    pid_t w, f;
+
+    /* Clear any inherited settings */
+    signal(SIGCHLD, SIG_DFL);
+    f = fork();
+
+    if ( f < 0 ) {
+      err = errno;
+      fprintf(stderr, _("%s: fork failed: %s\n"), program, strerror(err));
+      exit(EX_OSERR);
+    } else if ( f == 0 ) {
+      if ( do_close )
+	close(fd);
+      err = errno;
+      execvp(cmd_argv[0], cmd_argv);
+      /* execvp() failed */
+      fprintf(stderr, "%s: %s: %s\n", program, cmd_argv[0], strerror(err));
+      _exit((err == ENOMEM) ? EX_OSERR: EX_UNAVAILABLE);
+    } else {
+      do {
+	w = waitpid(f, &status, 0);
+	if (w == -1 && errno != EINTR)
+	  break;
+      } while ( w != f );
+
+      if (w == -1) {
+	err = errno;
+	status = EXIT_FAILURE;
+	fprintf(stderr, "%s: waitpid failed: %s\n", program, strerror(err));
+      } else if ( WIFEXITED(status) )
+	status = WEXITSTATUS(status);
+      else if ( WIFSIGNALED(status) )
+	status = WTERMSIG(status) + 128;
+      else
+	status = EX_OSERR;	/* WTF? */
+    }
+  }
+
+  return status;
+}
diff --git a/poky/meta/recipes-core/util-linux/util-linux/mit-license.patch b/poky/meta/recipes-core/util-linux/util-linux/mit-license.patch
new file mode 100644
index 0000000..afbec98
--- /dev/null
+++ b/poky/meta/recipes-core/util-linux/util-linux/mit-license.patch
@@ -0,0 +1,45 @@
+From 5b8fab1584017d9d9be008c23b90128bba41a7b5 Mon Sep 17 00:00:00 2001
+From: Richard Purdie <richard.purdie@linuxfoundation.org>
+Date: Thu, 28 Mar 2024 12:16:57 +0000
+Subject: [PATCH] README.licensing/flock: Add MIT license mention
+
+Looking at the license text, flock.c is under the MIT license (see
+https://spdx.org/licenses/MIT).
+
+Add an SPDX license identifier header and add to the list of licenses the
+source so everything is correctly listed/identified.
+
+Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
+
+Upstream-Status: Submitted [https://github.com/util-linux/util-linux/pull/2870]
+
+---
+ README.licensing  | 2 ++
+ sys-utils/flock.c | 4 +++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/README.licensing b/README.licensing
+index 4454f8392a..535ad34813 100644
+--- a/README.licensing
++++ b/README.licensing
+@@ -12,6 +12,8 @@ There is code under:
+ 
+    * LGPL-2.1-or-later  - GNU Lesser General Public License 2.1 or any later version
+ 
++   * MIT                - MIT License
++
+    * BSD-2-Clause       - Simplified BSD License
+ 
+    * BSD-3-Clause       - BSD 3-Clause "New" or "Revised" License
+diff --git a/sys-utils/flock.c b/sys-utils/flock.c
+index fed29d7270..7d878ff810 100644
+--- a/sys-utils/flock.c
++++ b/sys-utils/flock.c
+@@ -1,4 +1,6 @@
+-/*   Copyright 2003-2005 H. Peter Anvin - All Rights Reserved
++/*   SPDX-License-Identifier: MIT
++ *
++ *   Copyright 2003-2005 H. Peter Anvin - All Rights Reserved
+  *
+  *   Permission is hereby granted, free of charge, to any person
+  *   obtaining a copy of this software and associated documentation
diff --git a/poky/meta/recipes-core/util-linux/util-linux_2.39.3.bb b/poky/meta/recipes-core/util-linux/util-linux_2.39.3.bb
index 3e87dcc..83b3f4e 100644
--- a/poky/meta/recipes-core/util-linux/util-linux_2.39.3.bb
+++ b/poky/meta/recipes-core/util-linux/util-linux_2.39.3.bb
@@ -147,6 +147,11 @@
 SYSTEMD_SERVICE:${PN}-fstrim = "fstrim.timer fstrim.service"
 SYSTEMD_AUTO_ENABLE:${PN}-fstrim = "disable"
 
+do_compile:append () {
+	cp ${WORKDIR}/fcntl-lock.c ${S}/fcntl-lock.c
+	${CC} ${CFLAGS} ${LDFLAGS} ${S}/fcntl-lock.c -o ${B}/fcntl-lock
+}
+
 do_install () {
 	# with ccache the timestamps on compiled files may
 	# end up earlier than on their inputs, this allows
@@ -182,6 +187,8 @@
 	echo 'MOUNTALL="-t nonfs,nosmbfs,noncpfs"' > ${D}${sysconfdir}/default/mountall
 
 	rm -f ${D}${bindir}/chkdupexe
+
+	install -m 0755 ${B}/fcntl-lock ${D}${bindir}
 }
 
 do_install:append:class-target () {
diff --git a/poky/meta/recipes-devtools/binutils/binutils-2.42.inc b/poky/meta/recipes-devtools/binutils/binutils-2.42.inc
index 5fcb429..3b6f47d 100644
--- a/poky/meta/recipes-devtools/binutils/binutils-2.42.inc
+++ b/poky/meta/recipes-devtools/binutils/binutils-2.42.inc
@@ -35,5 +35,6 @@
      file://0012-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \
      file://0013-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch \
      file://0014-Remove-duplicate-pe-dll.o-entry-deom-targ_extra_ofil.patch \
+     file://0015-gprofng-change-use-of-bignum-to-bigint.patch \
 "
 S  = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-devtools/binutils/binutils/0015-gprofng-change-use-of-bignum-to-bigint.patch b/poky/meta/recipes-devtools/binutils/binutils/0015-gprofng-change-use-of-bignum-to-bigint.patch
new file mode 100644
index 0000000..0d3d289
--- /dev/null
+++ b/poky/meta/recipes-devtools/binutils/binutils/0015-gprofng-change-use-of-bignum-to-bigint.patch
@@ -0,0 +1,17 @@
+Upstream-Status: Backport [https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=3243d790ee32aa8eda69226d81b1e79dbd1dcd87]
+
+Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
+
+diff --git a/gprofng/gp-display-html/gp-display-html.in b/gprofng/gp-display-html/gp-display-html.in
+index 6f37ca282e7..306c99a0ec3 100644
+--- a/gprofng/gp-display-html/gp-display-html.in
++++ b/gprofng/gp-display-html/gp-display-html.in
+@@ -25,7 +25,7 @@ use warnings;
+ # Disable before release
+ # use Perl::Critic;
+ 
+-use bignum;
++use bigint;
+ use List::Util qw (max);
+ use Cwd qw (abs_path cwd);
+ use File::Basename;
diff --git a/poky/meta/recipes-devtools/dnf/dnf/0001-lock.py-fix-Exception-handling.patch b/poky/meta/recipes-devtools/dnf/dnf/0001-lock.py-fix-Exception-handling.patch
new file mode 100644
index 0000000..6bffe9a
--- /dev/null
+++ b/poky/meta/recipes-devtools/dnf/dnf/0001-lock.py-fix-Exception-handling.patch
@@ -0,0 +1,62 @@
+From 3881757eabfde2ff54400ab127b106ab085d83f0 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Wed, 13 Mar 2024 11:22:05 +0800
+Subject: [PATCH] lock.py: fix Exception handling
+
+Before, when logdir is not writable, _try_lock will raise an Exception
+like "Permission denied: '/var/log/log_lock.pid'", and in this case,
+_unlock_thread will not be called and the variable count will not be
+handled, it maybe cause log_lock.pid not be deleted in case like [1].
+
+For [1], it is an cross compile case, when dnf install some packages to
+rootfs, seems like some threads don't do chroot like work, some threads
+do chroot like work. so for the threads don't do chroot, "Permission denied"
+Exception happend, for the threads that do chroot, log_lock.pid will be
+created under installroot/var/log/log_lock.pid, since variable count not
+handled correct before, log_lock.pid may not be deleted correctly.
+
+So fixed like this, if _try_lock raise Exception, _unlock_thread first,
+then raise the Exception.
+
+[1] https://github.com/rpm-software-management/dnf/issues/1963
+
+Upstream-Status: Submitted [ https://github.com/rpm-software-management/dnf/pull/2065 ]
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ dnf/lock.py | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/dnf/lock.py b/dnf/lock.py
+index 6817aac9..5718062a 100644
+--- a/dnf/lock.py
++++ b/dnf/lock.py
+@@ -128,7 +128,11 @@ class ProcessLock(object):
+         self._lock_thread()
+         prev_pid = -1
+         my_pid = os.getpid()
+-        pid = self._try_lock(my_pid)
++        try:
++            pid = self._try_lock(my_pid)
++        except Exception:
++            self._unlock_thread()
++            raise
+         while pid != my_pid:
+             if pid != -1:
+                 if not self.blocking:
+@@ -140,7 +144,11 @@ class ProcessLock(object):
+                     logger.info(msg)
+                     prev_pid = pid
+             time.sleep(1)
+-            pid = self._try_lock(my_pid)
++            try:
++                pid = self._try_lock(my_pid)
++            except Exception:
++                self._unlock_thread()
++                raise
+ 
+     def __exit__(self, *exc_args):
+         if self.count == 1:
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-devtools/dnf/dnf_4.19.0.bb b/poky/meta/recipes-devtools/dnf/dnf_4.19.0.bb
index 784d7a9..184dbea 100644
--- a/poky/meta/recipes-devtools/dnf/dnf_4.19.0.bb
+++ b/poky/meta/recipes-devtools/dnf/dnf_4.19.0.bb
@@ -15,6 +15,7 @@
            file://0029-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
            file://0030-Run-python-scripts-using-env.patch \
            file://0001-set-python-path-for-completion_helper.patch \
+           file://0001-lock.py-fix-Exception-handling.patch \
            "
 
 SRC_URI:append:class-native = "file://0001-dnf-write-the-log-lock-to-root.patch"
diff --git a/poky/meta/recipes-devtools/elfutils/elfutils_0.191.bb b/poky/meta/recipes-devtools/elfutils/elfutils_0.191.bb
index b3b2476..c4d8724 100644
--- a/poky/meta/recipes-devtools/elfutils/elfutils_0.191.bb
+++ b/poky/meta/recipes-devtools/elfutils/elfutils_0.191.bb
@@ -21,6 +21,8 @@
            file://0001-skip-the-test-when-gcc-not-deployed.patch \
            file://ptest.patch \
            file://0001-tests-Makefile.am-compile-test_nlist-with-standard-C.patch \
+           file://0001-debuginfod-Remove-unused-variable.patch \
+           file://0001-srcfiles-fix-unused-variable-BUFFER_SIZE.patch \
            "
 SRC_URI:append:libc-musl = " \
            file://0003-musl-utils.patch \
diff --git a/poky/meta/recipes-devtools/elfutils/files/0001-debuginfod-Remove-unused-variable.patch b/poky/meta/recipes-devtools/elfutils/files/0001-debuginfod-Remove-unused-variable.patch
new file mode 100644
index 0000000..81f49db
--- /dev/null
+++ b/poky/meta/recipes-devtools/elfutils/files/0001-debuginfod-Remove-unused-variable.patch
@@ -0,0 +1,34 @@
+From c3502140e51886bffc6ae5cd256308e40e0cbb78 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 9 Mar 2024 15:52:32 -0800
+Subject: [PATCH] debuginfod: Remove unused variable
+
+Recent commit acd9525e9 has removed all references to max_fds
+therefore remove it, moreover clang18 is happier
+
+| ../../elfutils-0.191/debuginfod/debuginfod.cxx:1448:8: error: private field 'max_fds' is not used [-Werror,-Wunused-private-field]
+|  1448 |   long max_fds;
+|       |        ^
+| 1 error generated.
+
+Upstream-Status: Submitted [https://sourceware.org/pipermail/elfutils-devel/2024q1/006900.html]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ debuginfod/debuginfod.cxx | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
+index 560880f2..72617848 100644
+--- a/debuginfod/debuginfod.cxx
++++ b/debuginfod/debuginfod.cxx
+@@ -1445,7 +1445,6 @@ private:
+ 
+   map<key,fdcache_entry> entries; // optimized for lookup
+   time_t last_cleaning;
+-  long max_fds;
+   long max_mbs;
+ 
+ public:
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-devtools/elfutils/files/0001-srcfiles-fix-unused-variable-BUFFER_SIZE.patch b/poky/meta/recipes-devtools/elfutils/files/0001-srcfiles-fix-unused-variable-BUFFER_SIZE.patch
new file mode 100644
index 0000000..b303232
--- /dev/null
+++ b/poky/meta/recipes-devtools/elfutils/files/0001-srcfiles-fix-unused-variable-BUFFER_SIZE.patch
@@ -0,0 +1,36 @@
+From db51a55a8e3811d19265bf12d2ff715c6cf558b4 Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <jose.quaresma@foundries.io>
+Date: Tue, 19 Mar 2024 10:17:59 +0000
+Subject: [PATCH] srcfiles: fix unused variable BUFFER_SIZE
+
+The const variable BUFFER_SIZE is used only on the zip_files
+function witch is only available with LIBARCHIVE.
+
+| ../../elfutils-0.191/src/srcfiles.cxx:81:18: error: unused variable 'BUFFER_SIZE' [-Werror,-Wunused-const-variable]
+|    81 | constexpr size_t BUFFER_SIZE = 8192;
+|       |                  ^~~~~~~~~~~
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=elfutils.git;a=commitdiff;h=ef8a4b841aaf26326b8961a651dbe915d54d23e7]
+
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
+---
+ src/srcfiles.cxx | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/srcfiles.cxx b/src/srcfiles.cxx
+index 892737cc..09d50f8d 100644
+--- a/src/srcfiles.cxx
++++ b/src/srcfiles.cxx
+@@ -78,7 +78,9 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+ /* Bug report address.  */
+ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
+ 
++#ifdef HAVE_LIBARCHIVE
+ constexpr size_t BUFFER_SIZE = 8192;
++#endif
+ 
+ /* Definitions of arguments for argp functions.  */
+ static const struct argp_option options[] =
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-devtools/flex/flex_2.6.4.bb b/poky/meta/recipes-devtools/flex/flex_2.6.4.bb
index 1ac88d6..f7d4ef1 100644
--- a/poky/meta/recipes-devtools/flex/flex_2.6.4.bb
+++ b/poky/meta/recipes-devtools/flex/flex_2.6.4.bb
@@ -68,6 +68,7 @@
 	sed -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
 	    -e 's|${DEBUG_PREFIX_MAP}||g' \
 	    -e 's:${HOSTTOOLS_DIR}/::g' \
+	    -e 's:\(^LDFLAGS_FOR_BUILD =\).*:\1:g' \
 	    -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
 	    -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \-e 's/^Makefile:/_Makefile:/' \
 	    -e 's/^srcdir = \(.*\)/srcdir = ./' -e 's/^top_srcdir = \(.*\)/top_srcdir = ./' \
diff --git a/poky/meta/recipes-devtools/gcc/gcc-13.2.inc b/poky/meta/recipes-devtools/gcc/gcc-13.2.inc
index 32fddd1..603377a 100644
--- a/poky/meta/recipes-devtools/gcc/gcc-13.2.inc
+++ b/poky/meta/recipes-devtools/gcc/gcc-13.2.inc
@@ -67,6 +67,7 @@
            file://0025-gcc-testsuite-tweaks-for-mips-OE.patch \
            file://CVE-2023-4039.patch \
            file://0026-aarch64-Fix-loose-ldpstp-check-PR111411.patch \
+           file://0027-Fix-gcc-vect-module-testcases.patch \
 "
 SRC_URI[sha256sum] = "e275e76442a6067341a27f04c5c6b83d8613144004c0413528863dc6b5c743da"
 
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch b/poky/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
index c405d8d..e4d57c2 100644
--- a/poky/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
+++ b/poky/meta/recipes-devtools/gcc/gcc/0025-gcc-testsuite-tweaks-for-mips-OE.patch
@@ -80,8 +80,8 @@
 +        # Demote run tests to $do-what-limit if set
 +	switch $do_what {
 +	    run {
-+    	        set do_what $do-what-limit
-+  		set dg-do-what $do-what-limit
++    	        set do_what ${do-what-limit}
++  		set dg-do-what ${do-what-limit}
 +	    }
 +        }
 +    }
diff --git a/poky/meta/recipes-devtools/gcc/gcc/0027-Fix-gcc-vect-module-testcases.patch b/poky/meta/recipes-devtools/gcc/gcc/0027-Fix-gcc-vect-module-testcases.patch
new file mode 100644
index 0000000..4b89036
--- /dev/null
+++ b/poky/meta/recipes-devtools/gcc/gcc/0027-Fix-gcc-vect-module-testcases.patch
@@ -0,0 +1,26 @@
+Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=948dbc5ee45f9ffd5f41fd6782704081cc7c8c27]
+
+Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
+
+diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c
+index ed63ff59cc0..009c849b7e7 100644
+--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c
+@@ -1,3 +1,5 @@
++/* Since this uses dg-additional-sources, need to specify `dg-do run` instead of the default. */
++/* { dg-do run } */
+ /* { dg-require-effective-target vect_simd_clones } */
+ /* { dg-additional-options "-fopenmp-simd" } */
+ /* { dg-additional-options "-mavx" { target avx_runtime } } */
+diff --git a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c
+index c44471e35bc..4699a3f3c80 100644
+--- a/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c
++++ b/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c
+@@ -1,3 +1,5 @@
++/* Since this uses dg-additional-sources, need to specify `dg-do run` instead of the default. */
++/* { dg-do run } */
+ /* { dg-require-effective-target vect_simd_clones } */
+ /* { dg-additional-options "-fopenmp-simd" } */
+ /* { dg-additional-options "-mavx" { target avx_runtime } } */
+--
+2.43.0
diff --git a/poky/meta/recipes-devtools/git/git_2.44.0.bb b/poky/meta/recipes-devtools/git/git_2.44.0.bb
index e6d1470..90e555e 100644
--- a/poky/meta/recipes-devtools/git/git_2.44.0.bb
+++ b/poky/meta/recipes-devtools/git/git_2.44.0.bb
@@ -4,6 +4,7 @@
 SECTION = "console/utils"
 LICENSE = "GPL-2.0-only & GPL-2.0-or-later & BSD-3-Clause & MIT & BSL-1.0 & LGPL-2.1-or-later"
 DEPENDS = "openssl zlib"
+DEPENDS:class-native += "ca-certificates"
 
 PROVIDES:append:class-native = " git-replacement-native"
 
@@ -95,6 +96,7 @@
 
 REL_GIT_EXEC_PATH = "${@os.path.relpath(libexecdir, bindir)}/git-core"
 REL_GIT_TEMPLATE_DIR = "${@os.path.relpath(datadir, bindir)}/git-core/templates"
+REL_GIT_SSL_CAINFO = "${@os.path.relpath(sysconfdir, bindir)}/ssl/certs/ca-certificates.crt"
 
 do_install:append:class-target () {
 	perl_native_fixup
@@ -103,6 +105,7 @@
 do_install:append:class-native() {
 	create_wrapper ${D}${bindir}/git \
 		GIT_EXEC_PATH='`dirname $''realpath`'/${REL_GIT_EXEC_PATH} \
+		GIT_SSL_CAINFO='`dirname $''realpath`'/${REL_GIT_SSL_CAINFO} \
 		GIT_TEMPLATE_DIR='`dirname $''realpath`'/${REL_GIT_TEMPLATE_DIR}
 }
 
diff --git a/poky/meta/recipes-devtools/go/go-1.22.0.inc b/poky/meta/recipes-devtools/go/go-1.22.0.inc
deleted file mode 100644
index 5b94051..0000000
--- a/poky/meta/recipes-devtools/go/go-1.22.0.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-require go-common.inc
-
-FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go:"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
-
-SRC_URI += "\
-    file://0001-cmd-go-make-content-based-hash-generation-less-pedan.patch \
-    file://0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch \
-    file://0003-ld-add-soname-to-shareable-objects.patch \
-    file://0004-make.bash-override-CC-when-building-dist-and-go_boot.patch \
-    file://0005-cmd-dist-separate-host-and-target-builds.patch \
-    file://0006-cmd-go-make-GOROOT-precious-by-default.patch \
-    file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
-    file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
-    file://0001-exec.go-filter-out-build-specific-paths-from-linker-.patch \
-"
-SRC_URI[main.sha256sum] = "4d196c3d41a0d6c1dfc64d04e3cc1f608b0c436bd87b7060ce3e23234e1f4d5c"
diff --git a/poky/meta/recipes-devtools/go/go-1.22.2.inc b/poky/meta/recipes-devtools/go/go-1.22.2.inc
new file mode 100644
index 0000000..b399207
--- /dev/null
+++ b/poky/meta/recipes-devtools/go/go-1.22.2.inc
@@ -0,0 +1,18 @@
+require go-common.inc
+
+FILESEXTRAPATHS:prepend := "${FILE_DIRNAME}/go:"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
+
+SRC_URI += "\
+    file://0001-cmd-go-make-content-based-hash-generation-less-pedan.patch \
+    file://0002-cmd-go-Allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch \
+    file://0003-ld-add-soname-to-shareable-objects.patch \
+    file://0004-make.bash-override-CC-when-building-dist-and-go_boot.patch \
+    file://0005-cmd-dist-separate-host-and-target-builds.patch \
+    file://0006-cmd-go-make-GOROOT-precious-by-default.patch \
+    file://0007-exec.go-filter-out-build-specific-paths-from-linker-.patch \
+    file://0008-src-cmd-dist-buildgo.go-do-not-hardcode-host-compile.patch \
+    file://0009-go-Filter-build-paths-on-staticly-linked-arches.patch \
+"
+SRC_URI[main.sha256sum] = "374ea82b289ec738e968267cac59c7d5ff180f9492250254784b2044e90df5a9"
diff --git a/poky/meta/recipes-devtools/go/go-binary-native_1.22.0.bb b/poky/meta/recipes-devtools/go/go-binary-native_1.22.0.bb
deleted file mode 100644
index acd2018..0000000
--- a/poky/meta/recipes-devtools/go/go-binary-native_1.22.0.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-# This recipe is for bootstrapping our go-cross from a prebuilt binary of Go from golang.org.
-
-SUMMARY = "Go programming language compiler (upstream binary for bootstrap)"
-HOMEPAGE = " http://golang.org/"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
-
-PROVIDES = "go-native"
-
-# Checksums available at https://go.dev/dl/
-SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
-SRC_URI[go_linux_amd64.sha256sum] = "f6c8a87aa03b92c4b0bf3d558e28ea03006eb29db78917daec5cfb6ec1046265"
-SRC_URI[go_linux_arm64.sha256sum] = "6a63fef0e050146f275bf02a0896badfe77c11b6f05499bb647e7bd613a45a10"
-SRC_URI[go_linux_ppc64le.sha256sum] = "0e57f421df9449066f00155ce98a5be93744b3d81b00ee4c2c9b511be2a31d93"
-
-UPSTREAM_CHECK_URI = "https://golang.org/dl/"
-UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
-
-CVE_PRODUCT = "golang:go"
-
-S = "${WORKDIR}/go"
-
-inherit goarch native
-
-do_compile() {
-    :
-}
-
-make_wrapper() {
-	rm -f ${D}${bindir}/$1
-	cat <<END >${D}${bindir}/$1
-#!/bin/bash
-here=\`dirname \$0\`
-export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}"
-\$here/../lib/go/bin/$1 "\$@"
-END
-	chmod +x ${D}${bindir}/$1
-}
-
-do_install() {
-    find ${S} -depth -type d -name testdata -exec rm -rf {} +
-
-	install -d ${D}${bindir} ${D}${libdir}/go
-	cp --preserve=mode,timestamps -R ${S}/ ${D}${libdir}/
-
-	for f in ${S}/bin/*
-	do
-	  	make_wrapper `basename $f`
-	done
-}
diff --git a/poky/meta/recipes-devtools/go/go-binary-native_1.22.2.bb b/poky/meta/recipes-devtools/go/go-binary-native_1.22.2.bb
new file mode 100644
index 0000000..0f00509
--- /dev/null
+++ b/poky/meta/recipes-devtools/go/go-binary-native_1.22.2.bb
@@ -0,0 +1,50 @@
+# This recipe is for bootstrapping our go-cross from a prebuilt binary of Go from golang.org.
+
+SUMMARY = "Go programming language compiler (upstream binary for bootstrap)"
+HOMEPAGE = " http://golang.org/"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
+
+PROVIDES = "go-native"
+
+# Checksums available at https://go.dev/dl/
+SRC_URI = "https://dl.google.com/go/go${PV}.${BUILD_GOOS}-${BUILD_GOARCH}.tar.gz;name=go_${BUILD_GOTUPLE}"
+SRC_URI[go_linux_amd64.sha256sum] = "5901c52b7a78002aeff14a21f93e0f064f74ce1360fce51c6ee68cd471216a17"
+SRC_URI[go_linux_arm64.sha256sum] = "36e720b2d564980c162a48c7e97da2e407dfcc4239e1e58d98082dfa2486a0c1"
+SRC_URI[go_linux_ppc64le.sha256sum] = "251a8886c5113be6490bdbb955ddee98763b49c9b1bf4c8364c02d3b482dab00"
+
+UPSTREAM_CHECK_URI = "https://golang.org/dl/"
+UPSTREAM_CHECK_REGEX = "go(?P<pver>\d+(\.\d+)+)\.linux"
+
+CVE_PRODUCT = "golang:go"
+
+S = "${WORKDIR}/go"
+
+inherit goarch native
+
+do_compile() {
+    :
+}
+
+make_wrapper() {
+	rm -f ${D}${bindir}/$1
+	cat <<END >${D}${bindir}/$1
+#!/bin/bash
+here=\`dirname \$0\`
+export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}"
+\$here/../lib/go/bin/$1 "\$@"
+END
+	chmod +x ${D}${bindir}/$1
+}
+
+do_install() {
+    find ${S} -depth -type d -name testdata -exec rm -rf {} +
+
+	install -d ${D}${bindir} ${D}${libdir}/go
+	cp --preserve=mode,timestamps -R ${S}/ ${D}${libdir}/
+
+	for f in ${S}/bin/*
+	do
+	  	make_wrapper `basename $f`
+	done
+}
diff --git a/poky/meta/recipes-devtools/go/go-cross-canadian_1.22.0.bb b/poky/meta/recipes-devtools/go/go-cross-canadian_1.22.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-cross-canadian_1.22.0.bb
rename to poky/meta/recipes-devtools/go/go-cross-canadian_1.22.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-cross_1.22.0.bb b/poky/meta/recipes-devtools/go/go-cross_1.22.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-cross_1.22.0.bb
rename to poky/meta/recipes-devtools/go/go-cross_1.22.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-crosssdk_1.22.0.bb b/poky/meta/recipes-devtools/go/go-crosssdk_1.22.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-crosssdk_1.22.0.bb
rename to poky/meta/recipes-devtools/go/go-crosssdk_1.22.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-native_1.22.0.bb b/poky/meta/recipes-devtools/go/go-native_1.22.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-native_1.22.0.bb
rename to poky/meta/recipes-devtools/go/go-native_1.22.2.bb
diff --git a/poky/meta/recipes-devtools/go/go-runtime_1.22.0.bb b/poky/meta/recipes-devtools/go/go-runtime_1.22.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go-runtime_1.22.0.bb
rename to poky/meta/recipes-devtools/go/go-runtime_1.22.2.bb
diff --git a/poky/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch b/poky/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
deleted file mode 100644
index 35f3a98..0000000
--- a/poky/meta/recipes-devtools/go/go/0007-exec.go-do-not-write-linker-flags-into-buildids.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 619991feab04f331d081a91243434ccd859f611d Mon Sep 17 00:00:00 2001
-From: Alexander Kanavin <alex.kanavin@gmail.com>
-Date: Mon, 23 Nov 2020 19:22:04 +0000
-Subject: [PATCH 7/9] exec.go: do not write linker flags into buildids
-
-The flags can contain build-specific paths, breaking reproducibility.
-
-To make this acceptable to upstream, we probably need to trim the flags,
-removing those known to be buildhost-specific.
-
-Upstream-Status: Inappropriate [needs upstream discussion]
-
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
-Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
----
- src/cmd/go/internal/work/exec.go | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
-index 544df461a2..75df5a4aa8 100644
---- a/src/cmd/go/internal/work/exec.go
-+++ b/src/cmd/go/internal/work/exec.go
-@@ -1374,7 +1374,7 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
- 	}
- 
- 	// Toolchain-dependent configuration, shared with b.linkSharedActionID.
--	b.printLinkerConfig(h, p)
-+	//b.printLinkerConfig(h, p)
- 
- 	// Input files.
- 	for _, a1 := range a.Deps {
-@@ -1720,7 +1720,7 @@ func (b *Builder) linkSharedActionID(a *Action) cache.ActionID {
- 	fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
- 
- 	// Toolchain-dependent configuration, shared with b.linkActionID.
--	b.printLinkerConfig(h, nil)
-+	//b.printLinkerConfig(h, nil)
- 
- 	// Input files.
- 	for _, a1 := range a.Deps {
--- 
-2.44.0
-
diff --git a/poky/meta/recipes-devtools/go/go/0001-exec.go-filter-out-build-specific-paths-from-linker-.patch b/poky/meta/recipes-devtools/go/go/0007-exec.go-filter-out-build-specific-paths-from-linker-.patch
similarity index 100%
rename from poky/meta/recipes-devtools/go/go/0001-exec.go-filter-out-build-specific-paths-from-linker-.patch
rename to poky/meta/recipes-devtools/go/go/0007-exec.go-filter-out-build-specific-paths-from-linker-.patch
diff --git a/poky/meta/recipes-devtools/go/go_1.22.0.bb b/poky/meta/recipes-devtools/go/go_1.22.2.bb
similarity index 100%
rename from poky/meta/recipes-devtools/go/go_1.22.0.bb
rename to poky/meta/recipes-devtools/go/go_1.22.2.bb
diff --git a/poky/meta/recipes-devtools/llvm/llvm_git.bb b/poky/meta/recipes-devtools/llvm/llvm_git.bb
index 111fb07..e1d5fc4 100644
--- a/poky/meta/recipes-devtools/llvm/llvm_git.bb
+++ b/poky/meta/recipes-devtools/llvm/llvm_git.bb
@@ -17,14 +17,14 @@
 # could be 'rcX' or 'git' or empty ( for release )
 VER_SUFFIX = ""
 
-PV = "18.1.0${VER_SUFFIX}"
+PV = "18.1.2${VER_SUFFIX}"
 
 MAJOR_VERSION = "${@oe.utils.trim_version("${PV}", 1)}"
 
 LLVM_RELEASE = "${PV}"
 
 BRANCH = "release/${MAJOR_VERSION}.x"
-SRCREV = "461274b81d8641eab64d494accddc81d7db8a09e"
+SRCREV = "26a1d6601d727a96f4301d0d8647b5a42760ae0c"
 SRC_URI = "git://github.com/llvm/llvm-project.git;branch=${BRANCH};protocol=https \
            file://0007-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \
            file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \
diff --git a/poky/meta/recipes-devtools/meson/meson_1.3.1.bb b/poky/meta/recipes-devtools/meson/meson_1.3.1.bb
index 3a4bb14..9cc0cc3 100644
--- a/poky/meta/recipes-devtools/meson/meson_1.3.1.bb
+++ b/poky/meta/recipes-devtools/meson/meson_1.3.1.bb
@@ -16,6 +16,7 @@
            file://0002-Support-building-allarch-recipes-again.patch \
            "
 SRC_URI[sha256sum] = "6020568bdede1643d4fb41e28215be38eff5d52da28ac7d125457c59e0032ad7"
+UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)$"
 
 inherit python_setuptools_build_meta github-releases
 
diff --git a/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb b/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
index bffd59a..eb63509 100644
--- a/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
+++ b/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
@@ -9,10 +9,8 @@
 
 inherit pypi python_hatchling
 
+PYPI_PACKAGE = "jsonschema_specifications"
+
 DEPENDS += "${PYTHON_PN}-hatch-vcs-native"
 
-S = "${WORKDIR}/jsonschema_specifications-${PV}"
-
-PYPI_ARCHIVE_NAME = "jsonschema_specifications-${PV}.${PYPI_PACKAGE_EXT}"
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb b/poky/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
index dfb29c4..540fdff 100644
--- a/poky/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
@@ -18,8 +18,8 @@
 SRC_URI[sha256sum] = "fa7a4001eae8aa572ee84f35feb510b321bd652e5cf9293249d62853e1f935a2"
 
 inherit python_poetry_core pypi
-PYPI_ARCHIVE_NAME = "poetry_core-${PV}.${PYPI_PACKAGE_EXT}"
-S = "${WORKDIR}/poetry_core-${PV}"
+
+PYPI_PACKAGE = "poetry_core"
 
 RDEPENDS:${PN}:append:class-target = "\
     python3-compression \
diff --git a/poky/meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb b/poky/meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb
index 01fb3d4..cece2cb 100644
--- a/poky/meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb
@@ -10,8 +10,6 @@
 
 inherit pypi cargo-update-recipe-crates python_maturin
 
-S = "${WORKDIR}/rpds_py-${PV}"
-
-PYPI_ARCHIVE_NAME = "rpds_py-${PV}.${PYPI_PACKAGE_EXT}"
+PYPI_PACKAGE = "rpds_py"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.8.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.8.bb
index 6ea7c51..67dd299 100644
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.8.bb
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.8.bb
@@ -5,9 +5,8 @@
 
 SRC_URI[sha256sum] = "c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"
 
-inherit pypi python_flit_core
+PYPI_PACKAGE = "sphinxcontrib_applehelp"
 
-PYPI_ARCHIVE_NAME = "sphinxcontrib_applehelp-${PV}.${PYPI_PACKAGE_EXT}"
-S = "${WORKDIR}/sphinxcontrib_applehelp-${PV}"
+inherit pypi python_flit_core
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb
index dd7ba3d..31f77a0 100644
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb
@@ -5,11 +5,8 @@
 
 SRC_URI[sha256sum] = "9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"
 
-PYPI_PACKAGE = "sphinxcontrib-devhelp"
+PYPI_PACKAGE = "sphinxcontrib_devhelp"
 
 inherit pypi python_flit_core
 
-PYPI_ARCHIVE_NAME = "sphinxcontrib_devhelp-${PV}.${PYPI_PACKAGE_EXT}"
-S = "${WORKDIR}/sphinxcontrib_devhelp-${PV}"
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb
index 532d1fc..e30c61c 100644
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb
@@ -5,11 +5,8 @@
 
 SRC_URI[sha256sum] = "0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"
 
-PYPI_PACKAGE = "sphinxcontrib-htmlhelp"
+PYPI_PACKAGE = "sphinxcontrib_htmlhelp"
 
 inherit pypi python_flit_core
 
-PYPI_ARCHIVE_NAME = "sphinxcontrib_htmlhelp-${PV}.${PYPI_PACKAGE_EXT}"
-S = "${WORKDIR}/sphinxcontrib_htmlhelp-${PV}"
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.7.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.7.bb
index b24f7f8..2225ec5 100644
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.7.bb
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.7.bb
@@ -5,11 +5,8 @@
 
 SRC_URI[sha256sum] = "053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"
 
-PYPI_PACKAGE = "sphinxcontrib-qthelp"
+PYPI_PACKAGE = "sphinxcontrib_qthelp"
 
 inherit pypi python_flit_core
 
-PYPI_ARCHIVE_NAME = "sphinxcontrib_qthelp-${PV}.${PYPI_PACKAGE_EXT}"
-S = "${WORKDIR}/sphinxcontrib_qthelp-${PV}"
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb
index b13bc82..49be520 100644
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb
@@ -5,11 +5,8 @@
 
 SRC_URI[sha256sum] = "93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"
 
-PYPI_PACKAGE = "sphinxcontrib-serializinghtml"
+PYPI_PACKAGE = "sphinxcontrib_serializinghtml"
 
 inherit pypi python_flit_core
 
-PYPI_ARCHIVE_NAME = "sphinxcontrib_serializinghtml-${PV}.${PYPI_PACKAGE_EXT}"
-S = "${WORKDIR}/sphinxcontrib_serializinghtml-${PV}"
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3/python3-manifest.json b/poky/meta/recipes-devtools/python/python3/python3-manifest.json
index a51392c..46092d4 100644
--- a/poky/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/poky/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -201,8 +201,7 @@
     "compression": {
         "summary": "Python high-level compression support",
         "rdepends": [
-            "core",
-            "shell"
+            "core"
         ],
         "files": [
             "${libdir}/python${PYTHON_MAJMIN}/gzip.py",
@@ -525,7 +524,6 @@
         "rdepends": [
             "core",
             "pprint",
-            "profile",
             "shell",
             "stringold"
         ],
@@ -577,7 +575,6 @@
             "debugger",
             "difflib",
             "pprint",
-            "profile",
             "shell",
             "stringold",
             "unittest"
@@ -997,8 +994,7 @@
     "pprint": {
         "summary": "Python pretty-print support",
         "rdepends": [
-            "core",
-            "profile"
+            "core"
         ],
         "files": [
             "${libdir}/python${PYTHON_MAJMIN}/pprint.py"
@@ -1189,7 +1185,6 @@
             "netclient",
             "numbers",
             "pprint",
-            "profile",
             "stringold"
         ],
         "files": [
diff --git a/poky/meta/recipes-devtools/python/python3_3.12.2.bb b/poky/meta/recipes-devtools/python/python3_3.12.2.bb
index 61991cd..f837f05 100644
--- a/poky/meta/recipes-devtools/python/python3_3.12.2.bb
+++ b/poky/meta/recipes-devtools/python/python3_3.12.2.bb
@@ -41,7 +41,6 @@
 
 # exclude pre-releases for both python 2.x and 3.x
 UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
-UPSTREAM_CHECK_URI = "https://www.python.org/downloads/source/"
 
 CVE_PRODUCT = "python cpython"
 
diff --git a/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts b/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
index 95dccb9..1f3e692 100755
--- a/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
+++ b/poky/meta/recipes-devtools/run-postinsts/run-postinsts/run-postinsts
@@ -81,11 +81,18 @@
 if $pm_installed; then
 	case $pm in
 		"ipk")
-			eval opkg configure $append_log
+			if ! `fcntl-lock --wait 30 /run/opkg.lock true`; then
+				eval echo "Unable to obtain the opkg lock, deadlock?" $append_log
+			fi
+			if ! eval "opkg configure $append_log"; then
+			    exit 1
+			fi
 			;;
 
 		"deb")
-			eval dpkg --configure -a $append_log
+			if ! eval "eval dpkg --configure -a $append_log"; then
+			    exit 1
+			fi
 			;;
 	esac
 else
diff --git a/poky/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb b/poky/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
index 72ba8c0..e977942 100644
--- a/poky/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
+++ b/poky/meta/recipes-devtools/run-postinsts/run-postinsts_1.0.bb
@@ -12,6 +12,8 @@
 
 inherit allarch systemd update-rc.d
 
+RDEPENDS:${PN} = "util-linux-fcntl-lock"
+
 INITSCRIPT_NAME = "run-postinsts"
 INITSCRIPT_PARAMS = "start 99 S ."
 
diff --git a/poky/meta/recipes-devtools/rust/cargo-c-crates.inc b/poky/meta/recipes-devtools/rust/cargo-c-crates.inc
index fc546c7..f6da3e6 100644
--- a/poky/meta/recipes-devtools/rust/cargo-c-crates.inc
+++ b/poky/meta/recipes-devtools/rust/cargo-c-crates.inc
@@ -1,453 +1,654 @@
+# Autogenerated with 'bitbake -c update_crates cargo-c-native'
+
+# from Cargo.lock
 SRC_URI += " \
     crate://crates.io/adler/1.0.2 \
-    crate://crates.io/aho-corasick/1.0.3 \
-    crate://crates.io/anstream/0.3.2 \
-    crate://crates.io/anstyle/1.0.1 \
-    crate://crates.io/anstyle-parse/0.2.1 \
-    crate://crates.io/anstyle-query/1.0.0 \
-    crate://crates.io/anstyle-wincon/1.0.2 \
-    crate://crates.io/anyhow/1.0.72 \
-    crate://crates.io/arrayvec/0.5.2 \
-    crate://crates.io/atty/0.2.14 \
+    crate://crates.io/ahash/0.8.7 \
+    crate://crates.io/aho-corasick/1.1.2 \
+    crate://crates.io/allocator-api2/0.2.16 \
+    crate://crates.io/anstream/0.6.11 \
+    crate://crates.io/anstyle/1.0.6 \
+    crate://crates.io/anstyle-parse/0.2.3 \
+    crate://crates.io/anstyle-query/1.0.2 \
+    crate://crates.io/anstyle-wincon/3.0.2 \
+    crate://crates.io/anyhow/1.0.79 \
+    crate://crates.io/arc-swap/1.6.0 \
     crate://crates.io/autocfg/1.1.0 \
     crate://crates.io/base16ct/0.2.0 \
-    crate://crates.io/base64/0.13.1 \
+    crate://crates.io/base64/0.21.7 \
     crate://crates.io/base64ct/1.6.0 \
     crate://crates.io/bitflags/1.3.2 \
-    crate://crates.io/bitflags/2.3.3 \
+    crate://crates.io/bitflags/2.4.2 \
     crate://crates.io/bitmaps/2.1.0 \
     crate://crates.io/block-buffer/0.10.4 \
-    crate://crates.io/bstr/1.6.0 \
-    crate://crates.io/bumpalo/3.13.0 \
-    crate://crates.io/bytes/1.4.0 \
-    crate://crates.io/bytesize/1.2.0 \
-    crate://crates.io/cargo/0.69.1 \
-    crate://crates.io/cargo-platform/0.1.3 \
-    crate://crates.io/cargo-util/0.2.4 \
-    crate://crates.io/cbindgen/0.24.5 \
-    crate://crates.io/cc/1.0.82 \
+    crate://crates.io/bstr/1.9.0 \
+    crate://crates.io/btoi/0.4.3 \
+    crate://crates.io/bumpalo/3.14.0 \
+    crate://crates.io/bytes/1.5.0 \
+    crate://crates.io/bytesize/1.3.0 \
+    crate://crates.io/cargo/0.77.0 \
+    crate://crates.io/cargo-credential/0.4.2 \
+    crate://crates.io/cargo-credential-libsecret/0.4.2 \
+    crate://crates.io/cargo-credential-macos-keychain/0.4.2 \
+    crate://crates.io/cargo-credential-wincred/0.4.2 \
+    crate://crates.io/cargo-platform/0.1.7 \
+    crate://crates.io/cargo-util/0.2.9 \
+    crate://crates.io/cbindgen/0.26.0 \
+    crate://crates.io/cc/1.0.83 \
     crate://crates.io/cfg-if/1.0.0 \
-    crate://crates.io/clap/3.2.25 \
-    crate://crates.io/clap/4.3.21 \
-    crate://crates.io/clap_builder/4.3.21 \
-    crate://crates.io/clap_derive/4.3.12 \
-    crate://crates.io/clap_lex/0.2.4 \
-    crate://crates.io/clap_lex/0.5.0 \
+    crate://crates.io/clap/4.5.0 \
+    crate://crates.io/clap_builder/4.5.0 \
+    crate://crates.io/clap_derive/4.5.0 \
+    crate://crates.io/clap_lex/0.7.0 \
+    crate://crates.io/clru/0.6.1 \
+    crate://crates.io/color-print/0.3.5 \
+    crate://crates.io/color-print-proc-macro/0.3.5 \
     crate://crates.io/colorchoice/1.0.0 \
-    crate://crates.io/combine/4.6.6 \
-    crate://crates.io/const-oid/0.9.5 \
-    crate://crates.io/core-foundation/0.9.3 \
-    crate://crates.io/core-foundation-sys/0.8.4 \
-    crate://crates.io/cpufeatures/0.2.9 \
-    crate://crates.io/crates-io/0.35.1 \
+    crate://crates.io/const-oid/0.9.6 \
+    crate://crates.io/core-foundation/0.9.4 \
+    crate://crates.io/core-foundation-sys/0.8.6 \
+    crate://crates.io/cpufeatures/0.2.12 \
+    crate://crates.io/crates-io/0.39.2 \
     crate://crates.io/crc32fast/1.3.2 \
-    crate://crates.io/crypto-bigint/0.5.2 \
+    crate://crates.io/crossbeam-channel/0.5.11 \
+    crate://crates.io/crossbeam-deque/0.8.5 \
+    crate://crates.io/crossbeam-epoch/0.9.18 \
+    crate://crates.io/crossbeam-utils/0.8.19 \
+    crate://crates.io/crypto-bigint/0.5.5 \
     crate://crates.io/crypto-common/0.1.6 \
     crate://crates.io/ct-codecs/1.1.1 \
-    crate://crates.io/curl/0.4.44 \
-    crate://crates.io/curl-sys/0.4.65+curl-8.2.1 \
+    crate://crates.io/curl/0.4.45 \
+    crate://crates.io/curl-sys/0.4.72+curl-8.6.0 \
     crate://crates.io/der/0.7.8 \
-    crate://crates.io/deranged/0.3.7 \
+    crate://crates.io/deranged/0.3.11 \
     crate://crates.io/digest/0.10.7 \
-    crate://crates.io/ecdsa/0.16.8 \
-    crate://crates.io/ed25519-compact/2.0.4 \
+    crate://crates.io/dunce/1.0.4 \
+    crate://crates.io/ecdsa/0.16.9 \
+    crate://crates.io/ed25519-compact/2.1.1 \
     crate://crates.io/either/1.9.0 \
-    crate://crates.io/elliptic-curve/0.13.5 \
-    crate://crates.io/env_logger/0.10.0 \
+    crate://crates.io/elliptic-curve/0.13.8 \
+    crate://crates.io/encoding_rs/0.8.33 \
     crate://crates.io/equivalent/1.0.1 \
-    crate://crates.io/errno/0.3.2 \
-    crate://crates.io/errno-dragonfly/0.1.2 \
-    crate://crates.io/fastrand/2.0.0 \
+    crate://crates.io/erased-serde/0.4.2 \
+    crate://crates.io/errno/0.3.8 \
+    crate://crates.io/fallible-iterator/0.3.0 \
+    crate://crates.io/fallible-streaming-iterator/0.1.9 \
+    crate://crates.io/faster-hex/0.9.0 \
+    crate://crates.io/fastrand/2.0.1 \
     crate://crates.io/ff/0.13.0 \
-    crate://crates.io/fiat-crypto/0.1.20 \
-    crate://crates.io/filetime/0.2.22 \
-    crate://crates.io/flate2/1.0.26 \
-    crate://crates.io/fnv/1.0.7 \
+    crate://crates.io/fiat-crypto/0.2.6 \
+    crate://crates.io/filetime/0.2.23 \
+    crate://crates.io/flate2/1.0.28 \
     crate://crates.io/foreign-types/0.3.2 \
     crate://crates.io/foreign-types-shared/0.1.1 \
-    crate://crates.io/form_urlencoded/1.2.0 \
-    crate://crates.io/fwdansi/1.1.0 \
+    crate://crates.io/form_urlencoded/1.2.1 \
     crate://crates.io/generic-array/0.14.7 \
-    crate://crates.io/getrandom/0.2.10 \
-    crate://crates.io/git2/0.16.0 \
-    crate://crates.io/git2-curl/0.17.0 \
+    crate://crates.io/getrandom/0.2.12 \
+    crate://crates.io/git2/0.18.2 \
+    crate://crates.io/git2-curl/0.19.0 \
+    crate://crates.io/gix/0.56.0 \
+    crate://crates.io/gix-actor/0.28.1 \
+    crate://crates.io/gix-attributes/0.20.1 \
+    crate://crates.io/gix-bitmap/0.2.10 \
+    crate://crates.io/gix-chunk/0.4.7 \
+    crate://crates.io/gix-command/0.3.4 \
+    crate://crates.io/gix-commitgraph/0.22.1 \
+    crate://crates.io/gix-config/0.32.1 \
+    crate://crates.io/gix-config-value/0.14.4 \
+    crate://crates.io/gix-credentials/0.22.0 \
+    crate://crates.io/gix-date/0.8.3 \
+    crate://crates.io/gix-diff/0.38.0 \
+    crate://crates.io/gix-discover/0.27.0 \
+    crate://crates.io/gix-features/0.35.0 \
+    crate://crates.io/gix-features/0.36.1 \
+    crate://crates.io/gix-filter/0.7.0 \
+    crate://crates.io/gix-fs/0.8.1 \
+    crate://crates.io/gix-glob/0.14.1 \
+    crate://crates.io/gix-hash/0.13.3 \
+    crate://crates.io/gix-hashtable/0.4.1 \
+    crate://crates.io/gix-ignore/0.9.1 \
+    crate://crates.io/gix-index/0.27.1 \
+    crate://crates.io/gix-lock/11.0.1 \
+    crate://crates.io/gix-macros/0.1.3 \
+    crate://crates.io/gix-negotiate/0.10.0 \
+    crate://crates.io/gix-object/0.39.0 \
+    crate://crates.io/gix-odb/0.55.0 \
+    crate://crates.io/gix-pack/0.45.0 \
+    crate://crates.io/gix-packetline/0.17.3 \
+    crate://crates.io/gix-packetline-blocking/0.17.3 \
+    crate://crates.io/gix-path/0.10.5 \
+    crate://crates.io/gix-pathspec/0.4.1 \
+    crate://crates.io/gix-prompt/0.8.2 \
+    crate://crates.io/gix-protocol/0.42.0 \
+    crate://crates.io/gix-quote/0.4.10 \
+    crate://crates.io/gix-ref/0.39.1 \
+    crate://crates.io/gix-refspec/0.20.0 \
+    crate://crates.io/gix-revision/0.24.0 \
+    crate://crates.io/gix-revwalk/0.10.0 \
+    crate://crates.io/gix-sec/0.10.4 \
+    crate://crates.io/gix-submodule/0.6.0 \
+    crate://crates.io/gix-tempfile/11.0.1 \
+    crate://crates.io/gix-trace/0.1.7 \
+    crate://crates.io/gix-transport/0.39.0 \
+    crate://crates.io/gix-traverse/0.35.0 \
+    crate://crates.io/gix-url/0.25.2 \
+    crate://crates.io/gix-utils/0.1.9 \
+    crate://crates.io/gix-validate/0.8.3 \
+    crate://crates.io/gix-worktree/0.28.0 \
     crate://crates.io/glob/0.3.1 \
-    crate://crates.io/globset/0.4.13 \
+    crate://crates.io/globset/0.4.14 \
     crate://crates.io/group/0.13.0 \
     crate://crates.io/hashbrown/0.12.3 \
-    crate://crates.io/hashbrown/0.14.0 \
+    crate://crates.io/hashbrown/0.14.3 \
+    crate://crates.io/hashlink/0.8.4 \
     crate://crates.io/heck/0.4.1 \
-    crate://crates.io/hermit-abi/0.1.19 \
-    crate://crates.io/hermit-abi/0.3.2 \
+    crate://crates.io/hermit-abi/0.3.5 \
     crate://crates.io/hex/0.4.3 \
-    crate://crates.io/hkdf/0.12.3 \
+    crate://crates.io/hkdf/0.12.4 \
     crate://crates.io/hmac/0.12.1 \
-    crate://crates.io/home/0.5.5 \
-    crate://crates.io/http-auth/0.1.8 \
+    crate://crates.io/home/0.5.9 \
+    crate://crates.io/http-auth/0.1.9 \
     crate://crates.io/humantime/2.1.0 \
-    crate://crates.io/idna/0.4.0 \
-    crate://crates.io/ignore/0.4.20 \
+    crate://crates.io/idna/0.5.0 \
+    crate://crates.io/ignore/0.4.22 \
     crate://crates.io/im-rc/15.1.0 \
     crate://crates.io/indexmap/1.9.3 \
-    crate://crates.io/indexmap/2.0.0 \
-    crate://crates.io/is-terminal/0.4.9 \
-    crate://crates.io/itertools/0.10.5 \
-    crate://crates.io/itoa/1.0.9 \
-    crate://crates.io/jobserver/0.1.26 \
-    crate://crates.io/js-sys/0.3.64 \
+    crate://crates.io/indexmap/2.2.2 \
+    crate://crates.io/is-terminal/0.4.11 \
+    crate://crates.io/itertools/0.12.1 \
+    crate://crates.io/itoa/1.0.10 \
+    crate://crates.io/jobserver/0.1.28 \
+    crate://crates.io/js-sys/0.3.68 \
     crate://crates.io/kstring/2.0.0 \
     crate://crates.io/lazy_static/1.4.0 \
     crate://crates.io/lazycell/1.3.0 \
-    crate://crates.io/libc/0.2.147 \
-    crate://crates.io/libgit2-sys/0.14.1+1.5.0 \
-    crate://crates.io/libnghttp2-sys/0.1.8+1.55.1 \
-    crate://crates.io/libssh2-sys/0.2.23 \
-    crate://crates.io/libz-sys/1.1.12 \
-    crate://crates.io/linux-raw-sys/0.4.5 \
-    crate://crates.io/log/0.4.19 \
-    crate://crates.io/memchr/2.5.0 \
-    crate://crates.io/miniz_oxide/0.7.1 \
-    crate://crates.io/miow/0.5.0 \
-    crate://crates.io/num-traits/0.2.16 \
-    crate://crates.io/once_cell/1.18.0 \
-    crate://crates.io/opener/0.5.2 \
-    crate://crates.io/openssl/0.10.56 \
+    crate://crates.io/libc/0.2.153 \
+    crate://crates.io/libgit2-sys/0.16.2+1.7.2 \
+    crate://crates.io/libloading/0.8.1 \
+    crate://crates.io/libnghttp2-sys/0.1.9+1.58.0 \
+    crate://crates.io/libsqlite3-sys/0.27.0 \
+    crate://crates.io/libssh2-sys/0.3.0 \
+    crate://crates.io/libz-sys/1.1.15 \
+    crate://crates.io/linux-raw-sys/0.4.13 \
+    crate://crates.io/lock_api/0.4.11 \
+    crate://crates.io/log/0.4.20 \
+    crate://crates.io/matchers/0.1.0 \
+    crate://crates.io/maybe-async/0.2.9 \
+    crate://crates.io/memchr/2.7.1 \
+    crate://crates.io/memmap2/0.9.4 \
+    crate://crates.io/minimal-lexical/0.2.1 \
+    crate://crates.io/miniz_oxide/0.7.2 \
+    crate://crates.io/miow/0.6.0 \
+    crate://crates.io/nom/7.1.3 \
+    crate://crates.io/normpath/1.1.1 \
+    crate://crates.io/nu-ansi-term/0.46.0 \
+    crate://crates.io/num-conv/0.1.0 \
+    crate://crates.io/num-traits/0.2.18 \
+    crate://crates.io/num_threads/0.1.6 \
+    crate://crates.io/once_cell/1.19.0 \
+    crate://crates.io/opener/0.6.1 \
+    crate://crates.io/openssl/0.10.63 \
     crate://crates.io/openssl-macros/0.1.1 \
     crate://crates.io/openssl-probe/0.1.5 \
-    crate://crates.io/openssl-src/111.27.0+1.1.1v \
-    crate://crates.io/openssl-sys/0.9.91 \
-    crate://crates.io/ordered-float/2.10.0 \
-    crate://crates.io/orion/0.17.5 \
+    crate://crates.io/openssl-src/300.2.2+3.2.1 \
+    crate://crates.io/openssl-sys/0.9.99 \
+    crate://crates.io/ordered-float/2.10.1 \
+    crate://crates.io/orion/0.17.6 \
     crate://crates.io/os_info/3.7.0 \
-    crate://crates.io/os_str_bytes/6.5.1 \
+    crate://crates.io/overload/0.1.1 \
     crate://crates.io/p384/0.13.0 \
-    crate://crates.io/pasetors/0.6.7 \
+    crate://crates.io/parking_lot/0.12.1 \
+    crate://crates.io/parking_lot_core/0.9.9 \
+    crate://crates.io/pasetors/0.6.8 \
     crate://crates.io/pathdiff/0.2.1 \
     crate://crates.io/pem-rfc7468/0.7.0 \
-    crate://crates.io/percent-encoding/2.3.0 \
+    crate://crates.io/percent-encoding/2.3.1 \
+    crate://crates.io/pin-project-lite/0.2.13 \
     crate://crates.io/pkcs8/0.10.2 \
-    crate://crates.io/pkg-config/0.3.27 \
-    crate://crates.io/primeorder/0.13.2 \
-    crate://crates.io/proc-macro2/1.0.66 \
-    crate://crates.io/quote/1.0.32 \
+    crate://crates.io/pkg-config/0.3.29 \
+    crate://crates.io/powerfmt/0.2.0 \
+    crate://crates.io/ppv-lite86/0.2.17 \
+    crate://crates.io/primeorder/0.13.6 \
+    crate://crates.io/proc-macro2/1.0.78 \
+    crate://crates.io/prodash/26.2.2 \
+    crate://crates.io/pulldown-cmark/0.9.6 \
+    crate://crates.io/quote/1.0.35 \
+    crate://crates.io/rand/0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1 \
     crate://crates.io/rand_core/0.6.4 \
     crate://crates.io/rand_xoshiro/0.6.0 \
-    crate://crates.io/redox_syscall/0.3.5 \
-    crate://crates.io/regex/1.9.3 \
-    crate://crates.io/regex-automata/0.3.6 \
-    crate://crates.io/regex-syntax/0.7.4 \
+    crate://crates.io/redox_syscall/0.4.1 \
+    crate://crates.io/regex/1.10.3 \
+    crate://crates.io/regex-automata/0.1.10 \
+    crate://crates.io/regex-automata/0.4.5 \
+    crate://crates.io/regex-syntax/0.6.29 \
+    crate://crates.io/regex-syntax/0.8.2 \
     crate://crates.io/rfc6979/0.4.0 \
-    crate://crates.io/rustc-workspace-hack/1.0.0 \
-    crate://crates.io/rustfix/0.6.1 \
-    crate://crates.io/rustix/0.38.8 \
-    crate://crates.io/ryu/1.0.15 \
+    crate://crates.io/rusqlite/0.30.0 \
+    crate://crates.io/rustfix/0.7.0 \
+    crate://crates.io/rustix/0.38.31 \
+    crate://crates.io/ryu/1.0.16 \
     crate://crates.io/same-file/1.0.6 \
-    crate://crates.io/schannel/0.1.22 \
+    crate://crates.io/schannel/0.1.23 \
+    crate://crates.io/scopeguard/1.2.0 \
     crate://crates.io/sec1/0.7.3 \
-    crate://crates.io/semver/1.0.18 \
-    crate://crates.io/serde/1.0.183 \
+    crate://crates.io/security-framework/2.9.2 \
+    crate://crates.io/security-framework-sys/2.9.1 \
+    crate://crates.io/semver/1.0.21 \
+    crate://crates.io/serde/1.0.196 \
+    crate://crates.io/serde-untagged/0.1.5 \
     crate://crates.io/serde-value/0.7.0 \
-    crate://crates.io/serde_derive/1.0.183 \
-    crate://crates.io/serde_ignored/0.1.9 \
-    crate://crates.io/serde_json/1.0.104 \
-    crate://crates.io/serde_spanned/0.6.3 \
-    crate://crates.io/sha1/0.10.5 \
-    crate://crates.io/sha2/0.10.7 \
+    crate://crates.io/serde_derive/1.0.196 \
+    crate://crates.io/serde_ignored/0.1.10 \
+    crate://crates.io/serde_json/1.0.113 \
+    crate://crates.io/serde_spanned/0.6.5 \
+    crate://crates.io/sha1/0.10.6 \
+    crate://crates.io/sha1_smol/1.0.0 \
+    crate://crates.io/sha2/0.10.8 \
+    crate://crates.io/sharded-slab/0.1.7 \
     crate://crates.io/shell-escape/0.1.5 \
-    crate://crates.io/signature/2.1.0 \
+    crate://crates.io/shell-words/1.1.0 \
+    crate://crates.io/signature/2.2.0 \
     crate://crates.io/sized-chunks/0.6.5 \
-    crate://crates.io/socket2/0.4.9 \
-    crate://crates.io/spki/0.7.2 \
+    crate://crates.io/smallvec/1.13.1 \
+    crate://crates.io/socket2/0.5.5 \
+    crate://crates.io/spki/0.7.3 \
     crate://crates.io/static_assertions/1.1.0 \
-    crate://crates.io/strip-ansi-escapes/0.1.1 \
-    crate://crates.io/strsim/0.10.0 \
+    crate://crates.io/strsim/0.11.0 \
     crate://crates.io/subtle/2.5.0 \
+    crate://crates.io/supports-hyperlinks/2.1.0 \
     crate://crates.io/syn/1.0.109 \
-    crate://crates.io/syn/2.0.28 \
+    crate://crates.io/syn/2.0.48 \
     crate://crates.io/tar/0.4.40 \
-    crate://crates.io/tempfile/3.7.1 \
-    crate://crates.io/termcolor/1.2.0 \
-    crate://crates.io/textwrap/0.16.0 \
+    crate://crates.io/tempfile/3.10.0 \
+    crate://crates.io/terminal_size/0.3.0 \
+    crate://crates.io/thiserror/1.0.56 \
+    crate://crates.io/thiserror-impl/1.0.56 \
     crate://crates.io/thread_local/1.1.7 \
-    crate://crates.io/time/0.3.25 \
-    crate://crates.io/time-core/0.1.1 \
-    crate://crates.io/time-macros/0.2.11 \
+    crate://crates.io/time/0.3.34 \
+    crate://crates.io/time-core/0.1.2 \
+    crate://crates.io/time-macros/0.2.17 \
     crate://crates.io/tinyvec/1.6.0 \
     crate://crates.io/tinyvec_macros/0.1.1 \
     crate://crates.io/toml/0.5.11 \
-    crate://crates.io/toml/0.7.6 \
-    crate://crates.io/toml_datetime/0.5.1 \
-    crate://crates.io/toml_datetime/0.6.3 \
-    crate://crates.io/toml_edit/0.15.0 \
-    crate://crates.io/toml_edit/0.19.14 \
-    crate://crates.io/typenum/1.16.0 \
-    crate://crates.io/unicode-bidi/0.3.13 \
-    crate://crates.io/unicode-ident/1.0.11 \
+    crate://crates.io/toml/0.8.10 \
+    crate://crates.io/toml_datetime/0.6.5 \
+    crate://crates.io/toml_edit/0.21.1 \
+    crate://crates.io/toml_edit/0.22.4 \
+    crate://crates.io/tracing/0.1.40 \
+    crate://crates.io/tracing-attributes/0.1.27 \
+    crate://crates.io/tracing-core/0.1.32 \
+    crate://crates.io/tracing-log/0.2.0 \
+    crate://crates.io/tracing-subscriber/0.3.18 \
+    crate://crates.io/typenum/1.17.0 \
+    crate://crates.io/unicase/2.7.0 \
+    crate://crates.io/unicode-bidi/0.3.15 \
+    crate://crates.io/unicode-bom/2.0.3 \
+    crate://crates.io/unicode-ident/1.0.12 \
     crate://crates.io/unicode-normalization/0.1.22 \
-    crate://crates.io/unicode-width/0.1.10 \
+    crate://crates.io/unicode-width/0.1.11 \
     crate://crates.io/unicode-xid/0.2.4 \
-    crate://crates.io/url/2.4.0 \
+    crate://crates.io/url/2.5.0 \
     crate://crates.io/utf8parse/0.2.1 \
+    crate://crates.io/valuable/0.1.0 \
     crate://crates.io/vcpkg/0.2.15 \
     crate://crates.io/version_check/0.9.4 \
-    crate://crates.io/vte/0.10.1 \
-    crate://crates.io/vte_generate_state_changes/0.1.1 \
-    crate://crates.io/walkdir/2.3.3 \
+    crate://crates.io/walkdir/2.4.0 \
     crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
-    crate://crates.io/wasm-bindgen/0.2.87 \
-    crate://crates.io/wasm-bindgen-backend/0.2.87 \
-    crate://crates.io/wasm-bindgen-macro/0.2.87 \
-    crate://crates.io/wasm-bindgen-macro-support/0.2.87 \
-    crate://crates.io/wasm-bindgen-shared/0.2.87 \
+    crate://crates.io/wasm-bindgen/0.2.91 \
+    crate://crates.io/wasm-bindgen-backend/0.2.91 \
+    crate://crates.io/wasm-bindgen-macro/0.2.91 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.91 \
+    crate://crates.io/wasm-bindgen-shared/0.2.91 \
     crate://crates.io/winapi/0.3.9 \
     crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
-    crate://crates.io/winapi-util/0.1.5 \
+    crate://crates.io/winapi-util/0.1.6 \
     crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
-    crate://crates.io/windows-sys/0.42.0 \
-    crate://crates.io/windows-sys/0.45.0 \
     crate://crates.io/windows-sys/0.48.0 \
-    crate://crates.io/windows-targets/0.42.2 \
-    crate://crates.io/windows-targets/0.48.1 \
-    crate://crates.io/windows_aarch64_gnullvm/0.42.2 \
-    crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
-    crate://crates.io/windows_aarch64_msvc/0.42.2 \
-    crate://crates.io/windows_aarch64_msvc/0.48.0 \
-    crate://crates.io/windows_i686_gnu/0.42.2 \
-    crate://crates.io/windows_i686_gnu/0.48.0 \
-    crate://crates.io/windows_i686_msvc/0.42.2 \
-    crate://crates.io/windows_i686_msvc/0.48.0 \
-    crate://crates.io/windows_x86_64_gnu/0.42.2 \
-    crate://crates.io/windows_x86_64_gnu/0.48.0 \
-    crate://crates.io/windows_x86_64_gnullvm/0.42.2 \
-    crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
-    crate://crates.io/windows_x86_64_msvc/0.42.2 \
-    crate://crates.io/windows_x86_64_msvc/0.48.0 \
-    crate://crates.io/winnow/0.5.7 \
-    crate://crates.io/zeroize/1.6.0 \
+    crate://crates.io/windows-sys/0.52.0 \
+    crate://crates.io/windows-targets/0.48.5 \
+    crate://crates.io/windows-targets/0.52.0 \
+    crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+    crate://crates.io/windows_aarch64_gnullvm/0.52.0 \
+    crate://crates.io/windows_aarch64_msvc/0.48.5 \
+    crate://crates.io/windows_aarch64_msvc/0.52.0 \
+    crate://crates.io/windows_i686_gnu/0.48.5 \
+    crate://crates.io/windows_i686_gnu/0.52.0 \
+    crate://crates.io/windows_i686_msvc/0.48.5 \
+    crate://crates.io/windows_i686_msvc/0.52.0 \
+    crate://crates.io/windows_x86_64_gnu/0.48.5 \
+    crate://crates.io/windows_x86_64_gnu/0.52.0 \
+    crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+    crate://crates.io/windows_x86_64_gnullvm/0.52.0 \
+    crate://crates.io/windows_x86_64_msvc/0.48.5 \
+    crate://crates.io/windows_x86_64_msvc/0.52.0 \
+    crate://crates.io/winnow/0.5.39 \
+    crate://crates.io/zerocopy/0.7.32 \
+    crate://crates.io/zerocopy-derive/0.7.32 \
+    crate://crates.io/zeroize/1.7.0 \
 "
 
 SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-SRC_URI[aho-corasick-1.0.3.sha256sum] = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c"
-SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
-SRC_URI[anstyle-1.0.1.sha256sum] = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
-SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
-SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
-SRC_URI[anstyle-wincon-1.0.2.sha256sum] = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c"
-SRC_URI[anyhow-1.0.72.sha256sum] = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
-SRC_URI[arrayvec-0.5.2.sha256sum] = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
-SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+SRC_URI[ahash-0.8.7.sha256sum] = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
+SRC_URI[aho-corasick-1.1.2.sha256sum] = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+SRC_URI[allocator-api2-0.2.16.sha256sum] = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+SRC_URI[anstream-0.6.11.sha256sum] = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
+SRC_URI[anstyle-1.0.6.sha256sum] = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+SRC_URI[anstyle-parse-0.2.3.sha256sum] = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+SRC_URI[anstyle-query-1.0.2.sha256sum] = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+SRC_URI[anstyle-wincon-3.0.2.sha256sum] = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+SRC_URI[anyhow-1.0.79.sha256sum] = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
+SRC_URI[arc-swap-1.6.0.sha256sum] = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
 SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 SRC_URI[base16ct-0.2.0.sha256sum] = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
-SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 SRC_URI[base64ct-1.6.0.sha256sum] = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
 SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-SRC_URI[bitflags-2.3.3.sha256sum] = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+SRC_URI[bitflags-2.4.2.sha256sum] = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
 SRC_URI[bitmaps-2.1.0.sha256sum] = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
 SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-SRC_URI[bstr-1.6.0.sha256sum] = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
-SRC_URI[bumpalo-3.13.0.sha256sum] = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
-SRC_URI[bytes-1.4.0.sha256sum] = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
-SRC_URI[bytesize-1.2.0.sha256sum] = "38fcc2979eff34a4b84e1cf9a1e3da42a7d44b3b690a40cdcb23e3d556cfb2e5"
-SRC_URI[cargo-0.69.1.sha256sum] = "2ecf1ab9246253733b30352b5194b4c3a7038a1c7729e1a18b3ba00e479c4d54"
-SRC_URI[cargo-platform-0.1.3.sha256sum] = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
-SRC_URI[cargo-util-0.2.4.sha256sum] = "a5e2320a2b1242f9181a3347ae0884bb497e1853d299da99780fa1e96f9abe23"
-SRC_URI[cbindgen-0.24.5.sha256sum] = "4b922faaf31122819ec80c4047cc684c6979a087366c069611e33649bf98e18d"
-SRC_URI[cc-1.0.82.sha256sum] = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01"
+SRC_URI[bstr-1.9.0.sha256sum] = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc"
+SRC_URI[btoi-0.4.3.sha256sum] = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad"
+SRC_URI[bumpalo-3.14.0.sha256sum] = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+SRC_URI[bytes-1.5.0.sha256sum] = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+SRC_URI[bytesize-1.3.0.sha256sum] = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc"
+SRC_URI[cargo-0.77.0.sha256sum] = "4a399e5bde59d144aa2c7ba643765e2f8c6c3c601daa2da03202caf66f2552b3"
+SRC_URI[cargo-credential-0.4.2.sha256sum] = "ec27ad011c37339b865c765fa28096cd63d5b25fab680c04d9e410cb586c327d"
+SRC_URI[cargo-credential-libsecret-0.4.2.sha256sum] = "26b0ff7a44dd0af0fcd8d09bb1a6d7f7652847cba10aad017a6ea0a25ba7f00f"
+SRC_URI[cargo-credential-macos-keychain-0.4.2.sha256sum] = "4b7cf89a47dc2c20ae3a7c94335e151be32c20f85cc2790defdb1f5dac818de5"
+SRC_URI[cargo-credential-wincred-0.4.2.sha256sum] = "341df45dc893bdffa36e2f7cbe3da90b38c5c74e7f4c0088ac801fd055b6df5b"
+SRC_URI[cargo-platform-0.1.7.sha256sum] = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f"
+SRC_URI[cargo-util-0.2.9.sha256sum] = "74862c3c6e53a1c1f8f0178f9d38ab41e49746cd3a7cafc239b3d0248fd4e342"
+SRC_URI[cbindgen-0.26.0.sha256sum] = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49"
+SRC_URI[cc-1.0.83.sha256sum] = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
 SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-SRC_URI[clap-3.2.25.sha256sum] = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
-SRC_URI[clap-4.3.21.sha256sum] = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd"
-SRC_URI[clap_builder-4.3.21.sha256sum] = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa"
-SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
-SRC_URI[clap_lex-0.2.4.sha256sum] = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
-SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+SRC_URI[clap-4.5.0.sha256sum] = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f"
+SRC_URI[clap_builder-4.5.0.sha256sum] = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99"
+SRC_URI[clap_derive-4.5.0.sha256sum] = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
+SRC_URI[clap_lex-0.7.0.sha256sum] = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+SRC_URI[clru-0.6.1.sha256sum] = "b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807"
+SRC_URI[color-print-0.3.5.sha256sum] = "7a858372ff14bab9b1b30ea504f2a4bc534582aee3e42ba2d41d2a7baba63d5d"
+SRC_URI[color-print-proc-macro-0.3.5.sha256sum] = "57e37866456a721d0a404439a1adae37a31be4e0055590d053dfe6981e05003f"
 SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
-SRC_URI[combine-4.6.6.sha256sum] = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
-SRC_URI[const-oid-0.9.5.sha256sum] = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
-SRC_URI[core-foundation-0.9.3.sha256sum] = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
-SRC_URI[core-foundation-sys-0.8.4.sha256sum] = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
-SRC_URI[cpufeatures-0.2.9.sha256sum] = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
-SRC_URI[crates-io-0.35.1.sha256sum] = "e2dfb6077da60207264ab2eb0e3734f02e0a0c50c347b32c728e42c6fbbf7e2e"
+SRC_URI[const-oid-0.9.6.sha256sum] = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
+SRC_URI[core-foundation-0.9.4.sha256sum] = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+SRC_URI[core-foundation-sys-0.8.6.sha256sum] = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+SRC_URI[cpufeatures-0.2.12.sha256sum] = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+SRC_URI[crates-io-0.39.2.sha256sum] = "6622f902c3c338eced1f000091f034846ae36aadaf35d0acd1ab0469a2d8ef1f"
 SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
-SRC_URI[crypto-bigint-0.5.2.sha256sum] = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
+SRC_URI[crossbeam-channel-0.5.11.sha256sum] = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b"
+SRC_URI[crossbeam-deque-0.8.5.sha256sum] = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+SRC_URI[crossbeam-utils-0.8.19.sha256sum] = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+SRC_URI[crypto-bigint-0.5.5.sha256sum] = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
 SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
 SRC_URI[ct-codecs-1.1.1.sha256sum] = "f3b7eb4404b8195a9abb6356f4ac07d8ba267045c8d6d220ac4dc992e6cc75df"
-SRC_URI[curl-0.4.44.sha256sum] = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
-SRC_URI[curl-sys-0.4.65+curl-8.2.1.sha256sum] = "961ba061c9ef2fe34bbd12b807152d96f0badd2bebe7b90ce6c8c8b7572a0986"
+SRC_URI[curl-0.4.45.sha256sum] = "f8e5123ab8c31200ce725939049ecd4a090b242608f24048131dedf9dd195aed"
+SRC_URI[curl-sys-0.4.72+curl-8.6.0.sha256sum] = "29cbdc8314c447d11e8fd156dcdd031d9e02a7a976163e396b548c03153bc9ea"
 SRC_URI[der-0.7.8.sha256sum] = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
-SRC_URI[deranged-0.3.7.sha256sum] = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
+SRC_URI[deranged-0.3.11.sha256sum] = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
 SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
-SRC_URI[ecdsa-0.16.8.sha256sum] = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
-SRC_URI[ed25519-compact-2.0.4.sha256sum] = "6a3d382e8464107391c8706b4c14b087808ecb909f6c15c34114bc42e53a9e4c"
+SRC_URI[dunce-1.0.4.sha256sum] = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+SRC_URI[ecdsa-0.16.9.sha256sum] = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca"
+SRC_URI[ed25519-compact-2.1.1.sha256sum] = "e9b3460f44bea8cd47f45a0c70892f1eff856d97cd55358b2f73f663789f6190"
 SRC_URI[either-1.9.0.sha256sum] = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
-SRC_URI[elliptic-curve-0.13.5.sha256sum] = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
-SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[elliptic-curve-0.13.8.sha256sum] = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47"
+SRC_URI[encoding_rs-0.8.33.sha256sum] = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
 SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
-SRC_URI[errno-0.3.2.sha256sum] = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
-SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
-SRC_URI[fastrand-2.0.0.sha256sum] = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
+SRC_URI[erased-serde-0.4.2.sha256sum] = "55d05712b2d8d88102bc9868020c9e5c7a1f5527c452b9b97450a1d006140ba7"
+SRC_URI[errno-0.3.8.sha256sum] = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+SRC_URI[fallible-iterator-0.3.0.sha256sum] = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
+SRC_URI[fallible-streaming-iterator-0.1.9.sha256sum] = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+SRC_URI[faster-hex-0.9.0.sha256sum] = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183"
+SRC_URI[fastrand-2.0.1.sha256sum] = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
 SRC_URI[ff-0.13.0.sha256sum] = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
-SRC_URI[fiat-crypto-0.1.20.sha256sum] = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77"
-SRC_URI[filetime-0.2.22.sha256sum] = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
-SRC_URI[flate2-1.0.26.sha256sum] = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"
-SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+SRC_URI[fiat-crypto-0.2.6.sha256sum] = "1676f435fc1dadde4d03e43f5d62b259e1ce5f40bd4ffb21db2b42ebe59c1382"
+SRC_URI[filetime-0.2.23.sha256sum] = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
+SRC_URI[flate2-1.0.28.sha256sum] = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
 SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
 SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-SRC_URI[form_urlencoded-1.2.0.sha256sum] = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
-SRC_URI[fwdansi-1.1.0.sha256sum] = "08c1f5787fe85505d1f7777268db5103d80a7a374d2316a7ce262e57baf8f208"
+SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
-SRC_URI[getrandom-0.2.10.sha256sum] = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
-SRC_URI[git2-0.16.0.sha256sum] = "be36bc9e0546df253c0cc41fd0af34f5e92845ad8509462ec76672fac6997f5b"
-SRC_URI[git2-curl-0.17.0.sha256sum] = "7577f4e6341ba7c90d883511130a45b956c274ba5f4d205d9f9da990f654cd33"
+SRC_URI[getrandom-0.2.12.sha256sum] = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+SRC_URI[git2-0.18.2.sha256sum] = "1b3ba52851e73b46a4c3df1d89343741112003f0f6f13beb0dfac9e457c3fdcd"
+SRC_URI[git2-curl-0.19.0.sha256sum] = "78e26b61608c573ffd26fc79061a823aa5147449a1afe1f61679a21e2031f7c3"
+SRC_URI[gix-0.56.0.sha256sum] = "5b0dcdc9c60d66535897fa40a7ea2a635e72f99456b1d9ae86b7e170e80618cb"
+SRC_URI[gix-actor-0.28.1.sha256sum] = "2eadca029ef716b4378f7afb19f7ee101fde9e58ba1f1445971315ac866db417"
+SRC_URI[gix-attributes-0.20.1.sha256sum] = "0f395469d38c76ec47cd1a6c5a53fbc3f13f737b96eaf7535f4e6b367e643381"
+SRC_URI[gix-bitmap-0.2.10.sha256sum] = "78b6cd0f246180034ddafac9b00a112f19178135b21eb031b3f79355891f7325"
+SRC_URI[gix-chunk-0.4.7.sha256sum] = "003ec6deacf68076a0c157271a127e0bb2c031c1a41f7168cbe5d248d9b85c78"
+SRC_URI[gix-command-0.3.4.sha256sum] = "c82b5e9494e61983e61049bbd15fe0fa6b70672dd236362bdb5b2b50fc428f10"
+SRC_URI[gix-commitgraph-0.22.1.sha256sum] = "85a7007ba021f059803afaf6f8a48872422abc20550ac12ede6ddea2936cec36"
+SRC_URI[gix-config-0.32.1.sha256sum] = "0341471d55d8676e98b88e121d7065dfa4c9c5acea4b6d6ecdd2846e85cce0c3"
+SRC_URI[gix-config-value-0.14.4.sha256sum] = "5b8a1e7bfb37a46ed0b8468db37a6d8a0a61d56bdbe4603ae492cb322e5f3958"
+SRC_URI[gix-credentials-0.22.0.sha256sum] = "513dac42450b27946bd0a0535a3a5a88e473d6522e5e3439a129cab779c88f3d"
+SRC_URI[gix-date-0.8.3.sha256sum] = "fb7f3dfb72bebe3449b5e642be64e3c6ccbe9821c8b8f19f487cf5bfbbf4067e"
+SRC_URI[gix-diff-0.38.0.sha256sum] = "8119a985887cfe68f4bdf92e51bd64bc758a73882d82fcfc03ebcb164441c85d"
+SRC_URI[gix-discover-0.27.0.sha256sum] = "6fad89416ebe0b3b7df78464124e2a02417b6cd3743d48ad93df86f4d2929c07"
+SRC_URI[gix-features-0.35.0.sha256sum] = "9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd"
+SRC_URI[gix-features-0.36.1.sha256sum] = "4d46a4a5c6bb5bebec9c0d18b65ada20e6517dbd7cf855b87dd4bbdce3a771b2"
+SRC_URI[gix-filter-0.7.0.sha256sum] = "6d6a5c9d8e55c364e7c226919c19c9a28be1392d6208b5008059fa94ff7e2bf0"
+SRC_URI[gix-fs-0.8.1.sha256sum] = "20e86eb040f5776a5ade092282e51cdcad398adb77d948b88d17583c2ae4e107"
+SRC_URI[gix-glob-0.14.1.sha256sum] = "5db19298c5eeea2961e5b3bf190767a2d1f09b8802aeb5f258e42276350aff19"
+SRC_URI[gix-hash-0.13.3.sha256sum] = "1f8cf8c2266f63e582b7eb206799b63aa5fa68ee510ad349f637dfe2d0653de0"
+SRC_URI[gix-hashtable-0.4.1.sha256sum] = "feb61880816d7ec4f0b20606b498147d480860ddd9133ba542628df2f548d3ca"
+SRC_URI[gix-ignore-0.9.1.sha256sum] = "a215cc8cf21645bca131fcf6329d3ebd46299c47dbbe27df71bb1ca9e328b879"
+SRC_URI[gix-index-0.27.1.sha256sum] = "f3f308f5cd2992e96a274b0d1931e9a0e44fdcba87695ead3f6df30d8a697e9c"
+SRC_URI[gix-lock-11.0.1.sha256sum] = "7e5c65e6a29830a435664891ced3f3c1af010f14900226019590ee0971a22f37"
+SRC_URI[gix-macros-0.1.3.sha256sum] = "d75e7ab728059f595f6ddc1ad8771b8d6a231971ae493d9d5948ecad366ee8bb"
+SRC_URI[gix-negotiate-0.10.0.sha256sum] = "979f6accd9c051b3dd018b50adf29c0a2459edddf6105cc70b767976cd6f8014"
+SRC_URI[gix-object-0.39.0.sha256sum] = "febf79c5825720c1c63fe974c7bbe695d0cb54aabad73f45671c60ce0e501e33"
+SRC_URI[gix-odb-0.55.0.sha256sum] = "1fae5f971540c99c6ecc8d4368ecc9d18a9dc8b9391025c68c4399747dc93bac"
+SRC_URI[gix-pack-0.45.0.sha256sum] = "4569491c92446fddf373456ff360aff9a9effd627b40a70f2d7914dcd75a3205"
+SRC_URI[gix-packetline-0.17.3.sha256sum] = "09ff45eef7747bde4986429a3e813478d50c2688b8f239e57bd3aa81065b285f"
+SRC_URI[gix-packetline-blocking-0.17.3.sha256sum] = "ca8ef6dd3ea50e26f3bf572e90c034d033c804d340cd1eb386392f184a9ba2f7"
+SRC_URI[gix-path-0.10.5.sha256sum] = "97e9ad649bf5e109562d6acba657ca428661ec08e77eaf3a755d8fa55485be9c"
+SRC_URI[gix-pathspec-0.4.1.sha256sum] = "1dbbb92f75a38ef043c8bb830b339b38d0698d7f3746968b5fcbade7a880494d"
+SRC_URI[gix-prompt-0.8.2.sha256sum] = "02bd89d058258e53e0fd6c57f13ee16c5673a83066a68e11f88626fc8cfda5f6"
+SRC_URI[gix-protocol-0.42.0.sha256sum] = "95736ef407db0bd15a5bdea791fbfcf523b9f13b96c852c240cd86a9ee0ef817"
+SRC_URI[gix-quote-0.4.10.sha256sum] = "9f7dc10303d73a960d10fb82f81188b036ac3e6b11b5795b20b1a60b51d1321f"
+SRC_URI[gix-ref-0.39.1.sha256sum] = "3b2069adc212cf7f3317ef55f6444abd06c50f28479dbbac5a86acf3b05cbbfe"
+SRC_URI[gix-refspec-0.20.0.sha256sum] = "76d9d3b82e1ee78fc0dc1c37ea5ea76c2dbc73f407db155f0dfcea285e583bee"
+SRC_URI[gix-revision-0.24.0.sha256sum] = "fe5dd51710ce5434bc315ea30394fab483c5377276494edd79222b321a5a9544"
+SRC_URI[gix-revwalk-0.10.0.sha256sum] = "69d4ed2493ca94a475fdf147138e1ef8bab3b6ebb56abf3d9bda1c05372ec1dd"
+SRC_URI[gix-sec-0.10.4.sha256sum] = "f8d9bf462feaf05f2121cba7399dbc6c34d88a9cad58fc1e95027791d6a3c6d2"
+SRC_URI[gix-submodule-0.6.0.sha256sum] = "02a3d7f60a95bdcaeb8981663c99d1c9f4de42aab1169524c949e948989809f9"
+SRC_URI[gix-tempfile-11.0.1.sha256sum] = "388dd29114a86ec69b28d1e26d6d63a662300ecf61ab3f4cc578f7d7dc9e7e23"
+SRC_URI[gix-trace-0.1.7.sha256sum] = "02b202d766a7fefc596e2cc6a89cda8ad8ad733aed82da635ac120691112a9b1"
+SRC_URI[gix-transport-0.39.0.sha256sum] = "f731cfefc4d62468c6dd2053f5c6707828256a6d2f5488c1811e3f42c178b144"
+SRC_URI[gix-traverse-0.35.0.sha256sum] = "df2112088122a0206592c84fbd42020db63b2ccaed66a0293779f2e5fbf80474"
+SRC_URI[gix-url-0.25.2.sha256sum] = "0c427a1a11ccfa53a4a2da47d9442c2241deee63a154bc15cc14b8312fbc4005"
+SRC_URI[gix-utils-0.1.9.sha256sum] = "56e839f3d0798b296411263da6bee780a176ef8008a5dfc31287f7eda9266ab8"
+SRC_URI[gix-validate-0.8.3.sha256sum] = "ac7cc36f496bd5d96cdca0f9289bb684480725d40db60f48194aa7723b883854"
+SRC_URI[gix-worktree-0.28.0.sha256sum] = "7f1d0ae01dee14abe8c8117d78d7518f9a507de2dc4522546fbf4c444e9860b4"
 SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-SRC_URI[globset-0.4.13.sha256sum] = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
+SRC_URI[globset-0.4.14.sha256sum] = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
 SRC_URI[group-0.13.0.sha256sum] = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
 SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-SRC_URI[hashbrown-0.14.0.sha256sum] = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+SRC_URI[hashbrown-0.14.3.sha256sum] = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+SRC_URI[hashlink-0.8.4.sha256sum] = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
 SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[hermit-abi-0.3.5.sha256sum] = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3"
 SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-SRC_URI[hkdf-0.12.3.sha256sum] = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
+SRC_URI[hkdf-0.12.4.sha256sum] = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
 SRC_URI[hmac-0.12.1.sha256sum] = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
-SRC_URI[home-0.5.5.sha256sum] = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
-SRC_URI[http-auth-0.1.8.sha256sum] = "5430cacd7a1f9a02fbeb350dfc81a0e5ed42d81f3398cb0ba184017f85bdcfbc"
+SRC_URI[home-0.5.9.sha256sum] = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
+SRC_URI[http-auth-0.1.9.sha256sum] = "643c9bbf6a4ea8a656d6b4cd53d34f79e3f841ad5203c1a55fb7d761923bc255"
 SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-SRC_URI[idna-0.4.0.sha256sum] = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
-SRC_URI[ignore-0.4.20.sha256sum] = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
+SRC_URI[idna-0.5.0.sha256sum] = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+SRC_URI[ignore-0.4.22.sha256sum] = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1"
 SRC_URI[im-rc-15.1.0.sha256sum] = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe"
 SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
-SRC_URI[indexmap-2.0.0.sha256sum] = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
-SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
-SRC_URI[itertools-0.10.5.sha256sum] = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
-SRC_URI[jobserver-0.1.26.sha256sum] = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
-SRC_URI[js-sys-0.3.64.sha256sum] = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
+SRC_URI[indexmap-2.2.2.sha256sum] = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520"
+SRC_URI[is-terminal-0.4.11.sha256sum] = "fe8f25ce1159c7740ff0b9b2f5cdf4a8428742ba7c112b9f20f22cd5219c7dab"
+SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+SRC_URI[itoa-1.0.10.sha256sum] = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+SRC_URI[jobserver-0.1.28.sha256sum] = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+SRC_URI[js-sys-0.3.68.sha256sum] = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
 SRC_URI[kstring-2.0.0.sha256sum] = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
 SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
-SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
-SRC_URI[libgit2-sys-0.14.1+1.5.0.sha256sum] = "4a07fb2692bc3593bda59de45a502bb3071659f2c515e28c71e728306b038e17"
-SRC_URI[libnghttp2-sys-0.1.8+1.55.1.sha256sum] = "4fae956c192dadcdb5dace96db71fa0b827333cce7c7b38dc71446f024d8a340"
-SRC_URI[libssh2-sys-0.2.23.sha256sum] = "b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"
-SRC_URI[libz-sys-1.1.12.sha256sum] = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b"
-SRC_URI[linux-raw-sys-0.4.5.sha256sum] = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
-SRC_URI[log-0.4.19.sha256sum] = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
-SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
-SRC_URI[miniz_oxide-0.7.1.sha256sum] = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-SRC_URI[miow-0.5.0.sha256sum] = "52ffbca2f655e33c08be35d87278e5b18b89550a37dbd598c20db92f6a471123"
-SRC_URI[num-traits-0.2.16.sha256sum] = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
-SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
-SRC_URI[opener-0.5.2.sha256sum] = "293c15678e37254c15bd2f092314abb4e51d7fdde05c2021279c12631b54f005"
-SRC_URI[openssl-0.10.56.sha256sum] = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e"
+SRC_URI[libc-0.2.153.sha256sum] = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+SRC_URI[libgit2-sys-0.16.2+1.7.2.sha256sum] = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8"
+SRC_URI[libloading-0.8.1.sha256sum] = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+SRC_URI[libnghttp2-sys-0.1.9+1.58.0.sha256sum] = "b57e858af2798e167e709b9d969325b6d8e9d50232fcbc494d7d54f976854a64"
+SRC_URI[libsqlite3-sys-0.27.0.sha256sum] = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
+SRC_URI[libssh2-sys-0.3.0.sha256sum] = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee"
+SRC_URI[libz-sys-1.1.15.sha256sum] = "037731f5d3aaa87a5675e895b63ddff1a87624bc29f77004ea829809654e48f6"
+SRC_URI[linux-raw-sys-0.4.13.sha256sum] = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+SRC_URI[lock_api-0.4.11.sha256sum] = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+SRC_URI[matchers-0.1.0.sha256sum] = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+SRC_URI[maybe-async-0.2.9.sha256sum] = "afc95a651c82daf7004c824405aa1019723644950d488571bd718e3ed84646ed"
+SRC_URI[memchr-2.7.1.sha256sum] = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+SRC_URI[memmap2-0.9.4.sha256sum] = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[miniz_oxide-0.7.2.sha256sum] = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+SRC_URI[miow-0.6.0.sha256sum] = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[normpath-1.1.1.sha256sum] = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5"
+SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+SRC_URI[num-conv-0.1.0.sha256sum] = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
+SRC_URI[num-traits-0.2.18.sha256sum] = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+SRC_URI[num_threads-0.1.6.sha256sum] = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+SRC_URI[opener-0.6.1.sha256sum] = "6c62dcb6174f9cb326eac248f07e955d5d559c272730b6c03e396b443b562788"
+SRC_URI[openssl-0.10.63.sha256sum] = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8"
 SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-SRC_URI[openssl-src-111.27.0+1.1.1v.sha256sum] = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02"
-SRC_URI[openssl-sys-0.9.91.sha256sum] = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac"
-SRC_URI[ordered-float-2.10.0.sha256sum] = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
-SRC_URI[orion-0.17.5.sha256sum] = "b11468cc6afd61a126fe3f91cc4cc8a0dbe7917d0a4b5e8357ba91cc47444462"
+SRC_URI[openssl-src-300.2.2+3.2.1.sha256sum] = "8bbfad0063610ac26ee79f7484739e2b07555a75c42453b89263830b5c8103bc"
+SRC_URI[openssl-sys-0.9.99.sha256sum] = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae"
+SRC_URI[ordered-float-2.10.1.sha256sum] = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
+SRC_URI[orion-0.17.6.sha256sum] = "7abdb10181903c8c4b016ba45d6d6d5af1a1e2a461aa4763a83b87f5df4695e5"
 SRC_URI[os_info-3.7.0.sha256sum] = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e"
-SRC_URI[os_str_bytes-6.5.1.sha256sum] = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
+SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
 SRC_URI[p384-0.13.0.sha256sum] = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209"
-SRC_URI[pasetors-0.6.7.sha256sum] = "ba765699a309908d55950919a3445e9491453e89b2587b1b2abe4143a48894c0"
+SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+SRC_URI[parking_lot_core-0.9.9.sha256sum] = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+SRC_URI[pasetors-0.6.8.sha256sum] = "6b36d47c66f2230dd1b7143d9afb2b4891879020210eddf2ccb624e529b96dba"
 SRC_URI[pathdiff-0.2.1.sha256sum] = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
 SRC_URI[pem-rfc7468-0.7.0.sha256sum] = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
-SRC_URI[percent-encoding-2.3.0.sha256sum] = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+SRC_URI[pin-project-lite-0.2.13.sha256sum] = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
 SRC_URI[pkcs8-0.10.2.sha256sum] = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
-SRC_URI[pkg-config-0.3.27.sha256sum] = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
-SRC_URI[primeorder-0.13.2.sha256sum] = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3"
-SRC_URI[proc-macro2-1.0.66.sha256sum] = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
-SRC_URI[quote-1.0.32.sha256sum] = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
+SRC_URI[pkg-config-0.3.29.sha256sum] = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
+SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[primeorder-0.13.6.sha256sum] = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6"
+SRC_URI[proc-macro2-1.0.78.sha256sum] = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+SRC_URI[prodash-26.2.2.sha256sum] = "794b5bf8e2d19b53dcdcec3e4bba628e20f5b6062503ba89281fa7037dd7bbcf"
+SRC_URI[pulldown-cmark-0.9.6.sha256sum] = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b"
+SRC_URI[quote-1.0.35.sha256sum] = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
 SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
 SRC_URI[rand_xoshiro-0.6.0.sha256sum] = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
-SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
-SRC_URI[regex-1.9.3.sha256sum] = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
-SRC_URI[regex-automata-0.3.6.sha256sum] = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
-SRC_URI[regex-syntax-0.7.4.sha256sum] = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+SRC_URI[regex-1.10.3.sha256sum] = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+SRC_URI[regex-automata-0.4.5.sha256sum] = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
+SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 SRC_URI[rfc6979-0.4.0.sha256sum] = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
-SRC_URI[rustc-workspace-hack-1.0.0.sha256sum] = "fc71d2faa173b74b232dedc235e3ee1696581bb132fc116fa3626d6151a1a8fb"
-SRC_URI[rustfix-0.6.1.sha256sum] = "ecd2853d9e26988467753bd9912c3a126f642d05d229a4b53f5752ee36c56481"
-SRC_URI[rustix-0.38.8.sha256sum] = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f"
-SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+SRC_URI[rusqlite-0.30.0.sha256sum] = "a78046161564f5e7cd9008aff3b2990b3850dc8e0349119b98e8f251e099f24d"
+SRC_URI[rustfix-0.7.0.sha256sum] = "7ec10cbeb92a2e494ef354d66126882da8c0a244ad769e2a7193efc5de625175"
+SRC_URI[rustix-0.38.31.sha256sum] = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+SRC_URI[ryu-1.0.16.sha256sum] = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
 SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-SRC_URI[schannel-0.1.22.sha256sum] = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
+SRC_URI[schannel-0.1.23.sha256sum] = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
+SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 SRC_URI[sec1-0.7.3.sha256sum] = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
-SRC_URI[semver-1.0.18.sha256sum] = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
-SRC_URI[serde-1.0.183.sha256sum] = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
+SRC_URI[security-framework-2.9.2.sha256sum] = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+SRC_URI[security-framework-sys-2.9.1.sha256sum] = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+SRC_URI[semver-1.0.21.sha256sum] = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+SRC_URI[serde-1.0.196.sha256sum] = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32"
+SRC_URI[serde-untagged-0.1.5.sha256sum] = "6a160535368dfc353348e7eaa299156bd508c60c45a9249725f5f6d370d82a66"
 SRC_URI[serde-value-0.7.0.sha256sum] = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
-SRC_URI[serde_derive-1.0.183.sha256sum] = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
-SRC_URI[serde_ignored-0.1.9.sha256sum] = "80c31d5c53fd39f208e770f5a20a0bb214dee2a8d0d8adba18e19ad95a482ca5"
-SRC_URI[serde_json-1.0.104.sha256sum] = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
-SRC_URI[serde_spanned-0.6.3.sha256sum] = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
-SRC_URI[sha1-0.10.5.sha256sum] = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
-SRC_URI[sha2-0.10.7.sha256sum] = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
+SRC_URI[serde_derive-1.0.196.sha256sum] = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
+SRC_URI[serde_ignored-0.1.10.sha256sum] = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf"
+SRC_URI[serde_json-1.0.113.sha256sum] = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79"
+SRC_URI[serde_spanned-0.6.5.sha256sum] = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+SRC_URI[sha1_smol-1.0.0.sha256sum] = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+SRC_URI[sharded-slab-0.1.7.sha256sum] = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
 SRC_URI[shell-escape-0.1.5.sha256sum] = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f"
-SRC_URI[signature-2.1.0.sha256sum] = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
+SRC_URI[shell-words-1.1.0.sha256sum] = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
+SRC_URI[signature-2.2.0.sha256sum] = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
 SRC_URI[sized-chunks-0.6.5.sha256sum] = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e"
-SRC_URI[socket2-0.4.9.sha256sum] = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
-SRC_URI[spki-0.7.2.sha256sum] = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+SRC_URI[smallvec-1.13.1.sha256sum] = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+SRC_URI[socket2-0.5.5.sha256sum] = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+SRC_URI[spki-0.7.3.sha256sum] = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
 SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-SRC_URI[strip-ansi-escapes-0.1.1.sha256sum] = "011cbb39cf7c1f62871aea3cc46e5817b0937b49e9447370c93cacbe93a766d8"
-SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[strsim-0.11.0.sha256sum] = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
 SRC_URI[subtle-2.5.0.sha256sum] = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+SRC_URI[supports-hyperlinks-2.1.0.sha256sum] = "f84231692eb0d4d41e4cdd0cabfdd2e6cd9e255e65f80c9aa7c98dd502b4233d"
 SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-SRC_URI[syn-2.0.28.sha256sum] = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
+SRC_URI[syn-2.0.48.sha256sum] = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
 SRC_URI[tar-0.4.40.sha256sum] = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
-SRC_URI[tempfile-3.7.1.sha256sum] = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651"
-SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
-SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+SRC_URI[tempfile-3.10.0.sha256sum] = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67"
+SRC_URI[terminal_size-0.3.0.sha256sum] = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
+SRC_URI[thiserror-1.0.56.sha256sum] = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
+SRC_URI[thiserror-impl-1.0.56.sha256sum] = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
 SRC_URI[thread_local-1.1.7.sha256sum] = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
-SRC_URI[time-0.3.25.sha256sum] = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea"
-SRC_URI[time-core-0.1.1.sha256sum] = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
-SRC_URI[time-macros-0.2.11.sha256sum] = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd"
+SRC_URI[time-0.3.34.sha256sum] = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+SRC_URI[time-macros-0.2.17.sha256sum] = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
 SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
 SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
-SRC_URI[toml-0.7.6.sha256sum] = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542"
-SRC_URI[toml_datetime-0.5.1.sha256sum] = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"
-SRC_URI[toml_datetime-0.6.3.sha256sum] = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
-SRC_URI[toml_edit-0.15.0.sha256sum] = "b1541ba70885967e662f69d31ab3aeca7b1aaecfcd58679590b893e9239c3646"
-SRC_URI[toml_edit-0.19.14.sha256sum] = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a"
-SRC_URI[typenum-1.16.0.sha256sum] = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
-SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
-SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[toml-0.8.10.sha256sum] = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290"
+SRC_URI[toml_datetime-0.6.5.sha256sum] = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+SRC_URI[toml_edit-0.21.1.sha256sum] = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+SRC_URI[toml_edit-0.22.4.sha256sum] = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951"
+SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+SRC_URI[tracing-log-0.2.0.sha256sum] = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+SRC_URI[tracing-subscriber-0.3.18.sha256sum] = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+SRC_URI[unicase-2.7.0.sha256sum] = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+SRC_URI[unicode-bidi-0.3.15.sha256sum] = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+SRC_URI[unicode-bom-2.0.3.sha256sum] = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217"
+SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
-SRC_URI[unicode-width-0.1.10.sha256sum] = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+SRC_URI[unicode-width-0.1.11.sha256sum] = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 SRC_URI[unicode-xid-0.2.4.sha256sum] = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
-SRC_URI[url-2.4.0.sha256sum] = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
+SRC_URI[url-2.5.0.sha256sum] = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
 SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[valuable-0.1.0.sha256sum] = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
 SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
 SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-SRC_URI[vte-0.10.1.sha256sum] = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983"
-SRC_URI[vte_generate_state_changes-0.1.1.sha256sum] = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
-SRC_URI[walkdir-2.3.3.sha256sum] = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+SRC_URI[walkdir-2.4.0.sha256sum] = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
 SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-SRC_URI[wasm-bindgen-0.2.87.sha256sum] = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
-SRC_URI[wasm-bindgen-backend-0.2.87.sha256sum] = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
-SRC_URI[wasm-bindgen-macro-0.2.87.sha256sum] = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
-SRC_URI[wasm-bindgen-macro-support-0.2.87.sha256sum] = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
-SRC_URI[wasm-bindgen-shared-0.2.87.sha256sum] = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+SRC_URI[wasm-bindgen-0.2.91.sha256sum] = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
+SRC_URI[wasm-bindgen-backend-0.2.91.sha256sum] = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
+SRC_URI[wasm-bindgen-macro-0.2.91.sha256sum] = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
+SRC_URI[wasm-bindgen-macro-support-0.2.91.sha256sum] = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
+SRC_URI[wasm-bindgen-shared-0.2.91.sha256sum] = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
 SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
 SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-util-0.1.6.sha256sum] = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
 SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-SRC_URI[windows-sys-0.42.0.sha256sum] = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
-SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
 SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-SRC_URI[windows-targets-0.42.2.sha256sum] = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
-SRC_URI[windows_aarch64_gnullvm-0.42.2.sha256sum] = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
-SRC_URI[windows_aarch64_msvc-0.42.2.sha256sum] = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
-SRC_URI[windows_i686_gnu-0.42.2.sha256sum] = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
-SRC_URI[windows_i686_msvc-0.42.2.sha256sum] = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
-SRC_URI[windows_x86_64_gnu-0.42.2.sha256sum] = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
-SRC_URI[windows_x86_64_gnullvm-0.42.2.sha256sum] = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
-SRC_URI[windows_x86_64_msvc-0.42.2.sha256sum] = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
-SRC_URI[winnow-0.5.7.sha256sum] = "19f495880723d0999eb3500a9064d8dbcf836460b24c17df80ea7b5794053aac"
-SRC_URI[zeroize-1.6.0.sha256sum] = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows-targets-0.52.0.sha256sum] = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_gnullvm-0.52.0.sha256sum] = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_aarch64_msvc-0.52.0.sha256sum] = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_gnu-0.52.0.sha256sum] = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+SRC_URI[winnow-0.5.39.sha256sum] = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29"
+SRC_URI[zerocopy-0.7.32.sha256sum] = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+SRC_URI[zerocopy-derive-0.7.32.sha256sum] = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+SRC_URI[zeroize-1.7.0.sha256sum] = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
diff --git a/poky/meta/recipes-devtools/rust/cargo-c-native_0.9.18.bb b/poky/meta/recipes-devtools/rust/cargo-c-native_0.9.18.bb
deleted file mode 100644
index f27ad83..0000000
--- a/poky/meta/recipes-devtools/rust/cargo-c-native_0.9.18.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "cargo applet to build and install C-ABI compatible dynamic and static libraries."
-HOMEPAGE = "https://crates.io/crates/cargo-c"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = " \
-    file://LICENSE;md5=384ed0e2e0b2dac094e51fbf93fdcbe0 \
-"
-
-
-SRC_URI = " \
-	git://github.com/lu-zero/cargo-c.git;branch=master;protocol=https \
-	file://0001-Add-Cargo.lock-file.patch \
-"
-UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>.*)"
-
-SRCREV = "4eaf39ebbbc9ab8f092adf487d5b53435511d619"
-S = "${WORKDIR}/git"
-
-inherit cargo cargo-update-recipe-crates pkgconfig native
-
-DEPENDS = "openssl curl"
-
-require ${BPN}-crates.inc
-
diff --git a/poky/meta/recipes-devtools/rust/cargo-c-native_0.9.30+cargo-0.77.0.bb b/poky/meta/recipes-devtools/rust/cargo-c-native_0.9.30+cargo-0.77.0.bb
new file mode 100644
index 0000000..8e17606
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/cargo-c-native_0.9.30+cargo-0.77.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "cargo applet to build and install C-ABI compatible dynamic and static libraries."
+HOMEPAGE = "https://crates.io/crates/cargo-c"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = " \
+    file://LICENSE;md5=384ed0e2e0b2dac094e51fbf93fdcbe0 \
+"
+
+SRC_URI = "crate://crates.io/cargo-c/${PV};name=cargo-c"
+SRC_URI[cargo-c.sha256sum] = "ec77e3635cdb0d211f88f22d0460eef0ba031eb616ded57f2ffb98a90365c445"
+S = "${CARGO_VENDORING_DIRECTORY}/cargo-c-${PV}"
+
+inherit cargo cargo-update-recipe-crates pkgconfig native
+
+DEPENDS = "openssl curl"
+
+require ${BPN}-crates.inc
+
diff --git a/poky/meta/recipes-devtools/rust/cargo-c/0001-Add-Cargo.lock-file.patch b/poky/meta/recipes-devtools/rust/cargo-c/0001-Add-Cargo.lock-file.patch
deleted file mode 100644
index 11a6d9e..0000000
--- a/poky/meta/recipes-devtools/rust/cargo-c/0001-Add-Cargo.lock-file.patch
+++ /dev/null
@@ -1,2180 +0,0 @@
-From bc958b58eb31151ce76e409ce654bf6131d693b3 Mon Sep 17 00:00:00 2001
-From: Frederic Martinsons <frederic.martinsons@gmail.com>
-Date: Fri, 11 Aug 2023 06:28:56 +0200
-Subject: [PATCH] Add Cargo.lock file
-
-Upstream-Status: Inappropriate [oe-core specific]
-Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
----
- .gitignore |    1 -
- Cargo.lock | 2148 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 2148 insertions(+), 1 deletion(-)
- create mode 100644 Cargo.lock
-
-diff --git a/.gitignore b/.gitignore
-index b52f82c..437f557 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -1,5 +1,4 @@
- /target
- **/*.rs.bk
--Cargo.lock
- /example-project/target/
- /example-project/usage-from-c/run_tests
-diff --git a/Cargo.lock b/Cargo.lock
-new file mode 100644
-index 0000000..2225b04
---- /dev/null
-+++ b/Cargo.lock
-@@ -0,0 +1,2148 @@
-+# This file is automatically @generated by Cargo.
-+# It is not intended for manual editing.
-+version = 3
-+
-+[[package]]
-+name = "adler"
-+version = "1.0.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-+
-+[[package]]
-+name = "aho-corasick"
-+version = "1.0.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c"
-+dependencies = [
-+ "memchr",
-+]
-+
-+[[package]]
-+name = "anstream"
-+version = "0.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
-+dependencies = [
-+ "anstyle",
-+ "anstyle-parse",
-+ "anstyle-query",
-+ "anstyle-wincon",
-+ "colorchoice",
-+ "is-terminal",
-+ "utf8parse",
-+]
-+
-+[[package]]
-+name = "anstyle"
-+version = "1.0.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
-+
-+[[package]]
-+name = "anstyle-parse"
-+version = "0.2.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
-+dependencies = [
-+ "utf8parse",
-+]
-+
-+[[package]]
-+name = "anstyle-query"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
-+dependencies = [
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "anstyle-wincon"
-+version = "1.0.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c"
-+dependencies = [
-+ "anstyle",
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "anyhow"
-+version = "1.0.72"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
-+
-+[[package]]
-+name = "arrayvec"
-+version = "0.5.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
-+
-+[[package]]
-+name = "atty"
-+version = "0.2.14"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-+dependencies = [
-+ "hermit-abi 0.1.19",
-+ "libc",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "autocfg"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-+
-+[[package]]
-+name = "base16ct"
-+version = "0.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
-+
-+[[package]]
-+name = "base64"
-+version = "0.13.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
-+
-+[[package]]
-+name = "base64ct"
-+version = "1.6.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
-+
-+[[package]]
-+name = "bitflags"
-+version = "1.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-+
-+[[package]]
-+name = "bitflags"
-+version = "2.3.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
-+
-+[[package]]
-+name = "bitmaps"
-+version = "2.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2"
-+dependencies = [
-+ "typenum",
-+]
-+
-+[[package]]
-+name = "block-buffer"
-+version = "0.10.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-+dependencies = [
-+ "generic-array",
-+]
-+
-+[[package]]
-+name = "bstr"
-+version = "1.6.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
-+dependencies = [
-+ "memchr",
-+ "regex-automata",
-+ "serde",
-+]
-+
-+[[package]]
-+name = "bumpalo"
-+version = "3.13.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
-+
-+[[package]]
-+name = "bytes"
-+version = "1.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
-+
-+[[package]]
-+name = "bytesize"
-+version = "1.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "38fcc2979eff34a4b84e1cf9a1e3da42a7d44b3b690a40cdcb23e3d556cfb2e5"
-+
-+[[package]]
-+name = "cargo"
-+version = "0.69.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2ecf1ab9246253733b30352b5194b4c3a7038a1c7729e1a18b3ba00e479c4d54"
-+dependencies = [
-+ "anyhow",
-+ "base64",
-+ "bytesize",
-+ "cargo-platform",
-+ "cargo-util",
-+ "clap 4.3.21",
-+ "crates-io",
-+ "curl",
-+ "curl-sys",
-+ "env_logger",
-+ "filetime",
-+ "flate2",
-+ "fwdansi",
-+ "git2",
-+ "git2-curl",
-+ "glob",
-+ "hex",
-+ "hmac",
-+ "home",
-+ "http-auth",
-+ "humantime",
-+ "ignore",
-+ "im-rc",
-+ "indexmap 1.9.3",
-+ "is-terminal",
-+ "itertools",
-+ "jobserver",
-+ "lazy_static",
-+ "lazycell",
-+ "libc",
-+ "libgit2-sys",
-+ "log",
-+ "memchr",
-+ "opener",
-+ "openssl",
-+ "os_info",
-+ "pasetors",
-+ "pathdiff",
-+ "percent-encoding",
-+ "rustc-workspace-hack",
-+ "rustfix",
-+ "semver",
-+ "serde",
-+ "serde-value",
-+ "serde_ignored",
-+ "serde_json",
-+ "sha1",
-+ "shell-escape",
-+ "strip-ansi-escapes",
-+ "tar",
-+ "tempfile",
-+ "termcolor",
-+ "time",
-+ "toml_edit 0.15.0",
-+ "unicode-width",
-+ "unicode-xid",
-+ "url",
-+ "walkdir",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "cargo-c"
-+version = "0.9.18+cargo-0.69"
-+dependencies = [
-+ "anyhow",
-+ "cargo",
-+ "cargo-util",
-+ "cbindgen",
-+ "cc",
-+ "clap 4.3.21",
-+ "glob",
-+ "itertools",
-+ "log",
-+ "regex",
-+ "semver",
-+ "serde",
-+ "serde_derive",
-+ "serde_json",
-+ "toml 0.7.6",
-+]
-+
-+[[package]]
-+name = "cargo-platform"
-+version = "0.1.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "cargo-util"
-+version = "0.2.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a5e2320a2b1242f9181a3347ae0884bb497e1853d299da99780fa1e96f9abe23"
-+dependencies = [
-+ "anyhow",
-+ "core-foundation",
-+ "filetime",
-+ "hex",
-+ "jobserver",
-+ "libc",
-+ "log",
-+ "miow",
-+ "same-file",
-+ "sha2",
-+ "shell-escape",
-+ "tempfile",
-+ "walkdir",
-+ "windows-sys 0.45.0",
-+]
-+
-+[[package]]
-+name = "cbindgen"
-+version = "0.24.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4b922faaf31122819ec80c4047cc684c6979a087366c069611e33649bf98e18d"
-+dependencies = [
-+ "clap 3.2.25",
-+ "heck",
-+ "indexmap 1.9.3",
-+ "log",
-+ "proc-macro2",
-+ "quote",
-+ "serde",
-+ "serde_json",
-+ "syn 1.0.109",
-+ "tempfile",
-+ "toml 0.5.11",
-+]
-+
-+[[package]]
-+name = "cc"
-+version = "1.0.82"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01"
-+dependencies = [
-+ "jobserver",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "cfg-if"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-+
-+[[package]]
-+name = "clap"
-+version = "3.2.25"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
-+dependencies = [
-+ "atty",
-+ "bitflags 1.3.2",
-+ "clap_lex 0.2.4",
-+ "indexmap 1.9.3",
-+ "strsim",
-+ "termcolor",
-+ "textwrap",
-+]
-+
-+[[package]]
-+name = "clap"
-+version = "4.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd"
-+dependencies = [
-+ "clap_builder",
-+ "clap_derive",
-+ "once_cell",
-+]
-+
-+[[package]]
-+name = "clap_builder"
-+version = "4.3.21"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa"
-+dependencies = [
-+ "anstream",
-+ "anstyle",
-+ "clap_lex 0.5.0",
-+ "once_cell",
-+ "strsim",
-+]
-+
-+[[package]]
-+name = "clap_derive"
-+version = "4.3.12"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
-+dependencies = [
-+ "heck",
-+ "proc-macro2",
-+ "quote",
-+ "syn 2.0.28",
-+]
-+
-+[[package]]
-+name = "clap_lex"
-+version = "0.2.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
-+dependencies = [
-+ "os_str_bytes",
-+]
-+
-+[[package]]
-+name = "clap_lex"
-+version = "0.5.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
-+
-+[[package]]
-+name = "colorchoice"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
-+
-+[[package]]
-+name = "combine"
-+version = "4.6.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
-+dependencies = [
-+ "bytes",
-+ "memchr",
-+]
-+
-+[[package]]
-+name = "const-oid"
-+version = "0.9.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
-+
-+[[package]]
-+name = "core-foundation"
-+version = "0.9.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
-+dependencies = [
-+ "core-foundation-sys",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "core-foundation-sys"
-+version = "0.8.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
-+
-+[[package]]
-+name = "cpufeatures"
-+version = "0.2.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
-+dependencies = [
-+ "libc",
-+]
-+
-+[[package]]
-+name = "crates-io"
-+version = "0.35.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e2dfb6077da60207264ab2eb0e3734f02e0a0c50c347b32c728e42c6fbbf7e2e"
-+dependencies = [
-+ "anyhow",
-+ "curl",
-+ "percent-encoding",
-+ "serde",
-+ "serde_json",
-+ "url",
-+]
-+
-+[[package]]
-+name = "crc32fast"
-+version = "1.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
-+dependencies = [
-+ "cfg-if",
-+]
-+
-+[[package]]
-+name = "crypto-bigint"
-+version = "0.5.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15"
-+dependencies = [
-+ "generic-array",
-+ "rand_core",
-+ "subtle",
-+ "zeroize",
-+]
-+
-+[[package]]
-+name = "crypto-common"
-+version = "0.1.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
-+dependencies = [
-+ "generic-array",
-+ "typenum",
-+]
-+
-+[[package]]
-+name = "ct-codecs"
-+version = "1.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f3b7eb4404b8195a9abb6356f4ac07d8ba267045c8d6d220ac4dc992e6cc75df"
-+
-+[[package]]
-+name = "curl"
-+version = "0.4.44"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
-+dependencies = [
-+ "curl-sys",
-+ "libc",
-+ "openssl-probe",
-+ "openssl-sys",
-+ "schannel",
-+ "socket2",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "curl-sys"
-+version = "0.4.65+curl-8.2.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "961ba061c9ef2fe34bbd12b807152d96f0badd2bebe7b90ce6c8c8b7572a0986"
-+dependencies = [
-+ "cc",
-+ "libc",
-+ "libnghttp2-sys",
-+ "libz-sys",
-+ "openssl-sys",
-+ "pkg-config",
-+ "vcpkg",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "der"
-+version = "0.7.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
-+dependencies = [
-+ "const-oid",
-+ "pem-rfc7468",
-+ "zeroize",
-+]
-+
-+[[package]]
-+name = "deranged"
-+version = "0.3.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
-+
-+[[package]]
-+name = "digest"
-+version = "0.10.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
-+dependencies = [
-+ "block-buffer",
-+ "const-oid",
-+ "crypto-common",
-+ "subtle",
-+]
-+
-+[[package]]
-+name = "ecdsa"
-+version = "0.16.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
-+dependencies = [
-+ "der",
-+ "digest",
-+ "elliptic-curve",
-+ "rfc6979",
-+ "signature",
-+ "spki",
-+]
-+
-+[[package]]
-+name = "ed25519-compact"
-+version = "2.0.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6a3d382e8464107391c8706b4c14b087808ecb909f6c15c34114bc42e53a9e4c"
-+dependencies = [
-+ "getrandom",
-+]
-+
-+[[package]]
-+name = "either"
-+version = "1.9.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
-+
-+[[package]]
-+name = "elliptic-curve"
-+version = "0.13.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b"
-+dependencies = [
-+ "base16ct",
-+ "crypto-bigint",
-+ "digest",
-+ "ff",
-+ "generic-array",
-+ "group",
-+ "hkdf",
-+ "pem-rfc7468",
-+ "pkcs8",
-+ "rand_core",
-+ "sec1",
-+ "subtle",
-+ "zeroize",
-+]
-+
-+[[package]]
-+name = "env_logger"
-+version = "0.10.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
-+dependencies = [
-+ "humantime",
-+ "is-terminal",
-+ "log",
-+ "regex",
-+ "termcolor",
-+]
-+
-+[[package]]
-+name = "equivalent"
-+version = "1.0.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
-+
-+[[package]]
-+name = "errno"
-+version = "0.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
-+dependencies = [
-+ "errno-dragonfly",
-+ "libc",
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "errno-dragonfly"
-+version = "0.1.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
-+dependencies = [
-+ "cc",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "fastrand"
-+version = "2.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764"
-+
-+[[package]]
-+name = "ff"
-+version = "0.13.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
-+dependencies = [
-+ "rand_core",
-+ "subtle",
-+]
-+
-+[[package]]
-+name = "fiat-crypto"
-+version = "0.1.20"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77"
-+
-+[[package]]
-+name = "filetime"
-+version = "0.2.22"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
-+dependencies = [
-+ "cfg-if",
-+ "libc",
-+ "redox_syscall",
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "flate2"
-+version = "1.0.26"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743"
-+dependencies = [
-+ "crc32fast",
-+ "libz-sys",
-+ "miniz_oxide",
-+]
-+
-+[[package]]
-+name = "fnv"
-+version = "1.0.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-+
-+[[package]]
-+name = "foreign-types"
-+version = "0.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-+dependencies = [
-+ "foreign-types-shared",
-+]
-+
-+[[package]]
-+name = "foreign-types-shared"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-+
-+[[package]]
-+name = "form_urlencoded"
-+version = "1.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
-+dependencies = [
-+ "percent-encoding",
-+]
-+
-+[[package]]
-+name = "fwdansi"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "08c1f5787fe85505d1f7777268db5103d80a7a374d2316a7ce262e57baf8f208"
-+dependencies = [
-+ "memchr",
-+ "termcolor",
-+]
-+
-+[[package]]
-+name = "generic-array"
-+version = "0.14.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
-+dependencies = [
-+ "typenum",
-+ "version_check",
-+ "zeroize",
-+]
-+
-+[[package]]
-+name = "getrandom"
-+version = "0.2.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
-+dependencies = [
-+ "cfg-if",
-+ "js-sys",
-+ "libc",
-+ "wasi",
-+ "wasm-bindgen",
-+]
-+
-+[[package]]
-+name = "git2"
-+version = "0.16.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "be36bc9e0546df253c0cc41fd0af34f5e92845ad8509462ec76672fac6997f5b"
-+dependencies = [
-+ "bitflags 1.3.2",
-+ "libc",
-+ "libgit2-sys",
-+ "log",
-+ "openssl-probe",
-+ "openssl-sys",
-+ "url",
-+]
-+
-+[[package]]
-+name = "git2-curl"
-+version = "0.17.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7577f4e6341ba7c90d883511130a45b956c274ba5f4d205d9f9da990f654cd33"
-+dependencies = [
-+ "curl",
-+ "git2",
-+ "log",
-+ "url",
-+]
-+
-+[[package]]
-+name = "glob"
-+version = "0.3.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-+
-+[[package]]
-+name = "globset"
-+version = "0.4.13"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
-+dependencies = [
-+ "aho-corasick",
-+ "bstr",
-+ "fnv",
-+ "log",
-+ "regex",
-+]
-+
-+[[package]]
-+name = "group"
-+version = "0.13.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63"
-+dependencies = [
-+ "ff",
-+ "rand_core",
-+ "subtle",
-+]
-+
-+[[package]]
-+name = "hashbrown"
-+version = "0.12.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-+
-+[[package]]
-+name = "hashbrown"
-+version = "0.14.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
-+
-+[[package]]
-+name = "heck"
-+version = "0.4.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-+
-+[[package]]
-+name = "hermit-abi"
-+version = "0.1.19"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
-+dependencies = [
-+ "libc",
-+]
-+
-+[[package]]
-+name = "hermit-abi"
-+version = "0.3.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
-+
-+[[package]]
-+name = "hex"
-+version = "0.4.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
-+
-+[[package]]
-+name = "hkdf"
-+version = "0.12.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
-+dependencies = [
-+ "hmac",
-+]
-+
-+[[package]]
-+name = "hmac"
-+version = "0.12.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
-+dependencies = [
-+ "digest",
-+]
-+
-+[[package]]
-+name = "home"
-+version = "0.5.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
-+dependencies = [
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "http-auth"
-+version = "0.1.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5430cacd7a1f9a02fbeb350dfc81a0e5ed42d81f3398cb0ba184017f85bdcfbc"
-+dependencies = [
-+ "memchr",
-+]
-+
-+[[package]]
-+name = "humantime"
-+version = "2.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-+
-+[[package]]
-+name = "idna"
-+version = "0.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
-+dependencies = [
-+ "unicode-bidi",
-+ "unicode-normalization",
-+]
-+
-+[[package]]
-+name = "ignore"
-+version = "0.4.20"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
-+dependencies = [
-+ "globset",
-+ "lazy_static",
-+ "log",
-+ "memchr",
-+ "regex",
-+ "same-file",
-+ "thread_local",
-+ "walkdir",
-+ "winapi-util",
-+]
-+
-+[[package]]
-+name = "im-rc"
-+version = "15.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe"
-+dependencies = [
-+ "bitmaps",
-+ "rand_core",
-+ "rand_xoshiro",
-+ "sized-chunks",
-+ "typenum",
-+ "version_check",
-+]
-+
-+[[package]]
-+name = "indexmap"
-+version = "1.9.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
-+dependencies = [
-+ "autocfg",
-+ "hashbrown 0.12.3",
-+]
-+
-+[[package]]
-+name = "indexmap"
-+version = "2.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
-+dependencies = [
-+ "equivalent",
-+ "hashbrown 0.14.0",
-+]
-+
-+[[package]]
-+name = "is-terminal"
-+version = "0.4.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
-+dependencies = [
-+ "hermit-abi 0.3.2",
-+ "rustix",
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "itertools"
-+version = "0.10.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-+dependencies = [
-+ "either",
-+]
-+
-+[[package]]
-+name = "itoa"
-+version = "1.0.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
-+
-+[[package]]
-+name = "jobserver"
-+version = "0.1.26"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
-+dependencies = [
-+ "libc",
-+]
-+
-+[[package]]
-+name = "js-sys"
-+version = "0.3.64"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
-+dependencies = [
-+ "wasm-bindgen",
-+]
-+
-+[[package]]
-+name = "kstring"
-+version = "2.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
-+dependencies = [
-+ "static_assertions",
-+]
-+
-+[[package]]
-+name = "lazy_static"
-+version = "1.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-+
-+[[package]]
-+name = "lazycell"
-+version = "1.3.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
-+
-+[[package]]
-+name = "libc"
-+version = "0.2.147"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
-+
-+[[package]]
-+name = "libgit2-sys"
-+version = "0.14.1+1.5.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4a07fb2692bc3593bda59de45a502bb3071659f2c515e28c71e728306b038e17"
-+dependencies = [
-+ "cc",
-+ "libc",
-+ "libssh2-sys",
-+ "libz-sys",
-+ "openssl-sys",
-+ "pkg-config",
-+]
-+
-+[[package]]
-+name = "libnghttp2-sys"
-+version = "0.1.8+1.55.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4fae956c192dadcdb5dace96db71fa0b827333cce7c7b38dc71446f024d8a340"
-+dependencies = [
-+ "cc",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "libssh2-sys"
-+version = "0.2.23"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b094a36eb4b8b8c8a7b4b8ae43b2944502be3e59cd87687595cf6b0a71b3f4ca"
-+dependencies = [
-+ "cc",
-+ "libc",
-+ "libz-sys",
-+ "openssl-sys",
-+ "pkg-config",
-+ "vcpkg",
-+]
-+
-+[[package]]
-+name = "libz-sys"
-+version = "1.1.12"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b"
-+dependencies = [
-+ "cc",
-+ "libc",
-+ "pkg-config",
-+ "vcpkg",
-+]
-+
-+[[package]]
-+name = "linux-raw-sys"
-+version = "0.4.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
-+
-+[[package]]
-+name = "log"
-+version = "0.4.19"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
-+
-+[[package]]
-+name = "memchr"
-+version = "2.5.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
-+
-+[[package]]
-+name = "miniz_oxide"
-+version = "0.7.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-+dependencies = [
-+ "adler",
-+]
-+
-+[[package]]
-+name = "miow"
-+version = "0.5.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "52ffbca2f655e33c08be35d87278e5b18b89550a37dbd598c20db92f6a471123"
-+dependencies = [
-+ "windows-sys 0.42.0",
-+]
-+
-+[[package]]
-+name = "num-traits"
-+version = "0.2.16"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
-+dependencies = [
-+ "autocfg",
-+]
-+
-+[[package]]
-+name = "once_cell"
-+version = "1.18.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
-+
-+[[package]]
-+name = "opener"
-+version = "0.5.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "293c15678e37254c15bd2f092314abb4e51d7fdde05c2021279c12631b54f005"
-+dependencies = [
-+ "bstr",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "openssl"
-+version = "0.10.56"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e"
-+dependencies = [
-+ "bitflags 1.3.2",
-+ "cfg-if",
-+ "foreign-types",
-+ "libc",
-+ "once_cell",
-+ "openssl-macros",
-+ "openssl-sys",
-+]
-+
-+[[package]]
-+name = "openssl-macros"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn 2.0.28",
-+]
-+
-+[[package]]
-+name = "openssl-probe"
-+version = "0.1.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-+
-+[[package]]
-+name = "openssl-src"
-+version = "111.27.0+1.1.1v"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02"
-+dependencies = [
-+ "cc",
-+]
-+
-+[[package]]
-+name = "openssl-sys"
-+version = "0.9.91"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac"
-+dependencies = [
-+ "cc",
-+ "libc",
-+ "openssl-src",
-+ "pkg-config",
-+ "vcpkg",
-+]
-+
-+[[package]]
-+name = "ordered-float"
-+version = "2.10.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87"
-+dependencies = [
-+ "num-traits",
-+]
-+
-+[[package]]
-+name = "orion"
-+version = "0.17.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b11468cc6afd61a126fe3f91cc4cc8a0dbe7917d0a4b5e8357ba91cc47444462"
-+dependencies = [
-+ "fiat-crypto",
-+ "subtle",
-+ "zeroize",
-+]
-+
-+[[package]]
-+name = "os_info"
-+version = "3.7.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e"
-+dependencies = [
-+ "log",
-+ "serde",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "os_str_bytes"
-+version = "6.5.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
-+
-+[[package]]
-+name = "p384"
-+version = "0.13.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209"
-+dependencies = [
-+ "ecdsa",
-+ "elliptic-curve",
-+ "primeorder",
-+ "sha2",
-+]
-+
-+[[package]]
-+name = "pasetors"
-+version = "0.6.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ba765699a309908d55950919a3445e9491453e89b2587b1b2abe4143a48894c0"
-+dependencies = [
-+ "ct-codecs",
-+ "ed25519-compact",
-+ "getrandom",
-+ "orion",
-+ "p384",
-+ "rand_core",
-+ "regex",
-+ "serde",
-+ "serde_json",
-+ "sha2",
-+ "subtle",
-+ "time",
-+ "zeroize",
-+]
-+
-+[[package]]
-+name = "pathdiff"
-+version = "0.2.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
-+
-+[[package]]
-+name = "pem-rfc7468"
-+version = "0.7.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
-+dependencies = [
-+ "base64ct",
-+]
-+
-+[[package]]
-+name = "percent-encoding"
-+version = "2.3.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
-+
-+[[package]]
-+name = "pkcs8"
-+version = "0.10.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
-+dependencies = [
-+ "der",
-+ "spki",
-+]
-+
-+[[package]]
-+name = "pkg-config"
-+version = "0.3.27"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
-+
-+[[package]]
-+name = "primeorder"
-+version = "0.13.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3"
-+dependencies = [
-+ "elliptic-curve",
-+]
-+
-+[[package]]
-+name = "proc-macro2"
-+version = "1.0.66"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
-+dependencies = [
-+ "unicode-ident",
-+]
-+
-+[[package]]
-+name = "quote"
-+version = "1.0.32"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
-+dependencies = [
-+ "proc-macro2",
-+]
-+
-+[[package]]
-+name = "rand_core"
-+version = "0.6.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-+dependencies = [
-+ "getrandom",
-+]
-+
-+[[package]]
-+name = "rand_xoshiro"
-+version = "0.6.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
-+dependencies = [
-+ "rand_core",
-+]
-+
-+[[package]]
-+name = "redox_syscall"
-+version = "0.3.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
-+dependencies = [
-+ "bitflags 1.3.2",
-+]
-+
-+[[package]]
-+name = "regex"
-+version = "1.9.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
-+dependencies = [
-+ "aho-corasick",
-+ "memchr",
-+ "regex-automata",
-+ "regex-syntax",
-+]
-+
-+[[package]]
-+name = "regex-automata"
-+version = "0.3.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
-+dependencies = [
-+ "aho-corasick",
-+ "memchr",
-+ "regex-syntax",
-+]
-+
-+[[package]]
-+name = "regex-syntax"
-+version = "0.7.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
-+
-+[[package]]
-+name = "rfc6979"
-+version = "0.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
-+dependencies = [
-+ "hmac",
-+ "subtle",
-+]
-+
-+[[package]]
-+name = "rustc-workspace-hack"
-+version = "1.0.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "fc71d2faa173b74b232dedc235e3ee1696581bb132fc116fa3626d6151a1a8fb"
-+
-+[[package]]
-+name = "rustfix"
-+version = "0.6.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ecd2853d9e26988467753bd9912c3a126f642d05d229a4b53f5752ee36c56481"
-+dependencies = [
-+ "anyhow",
-+ "log",
-+ "serde",
-+ "serde_json",
-+]
-+
-+[[package]]
-+name = "rustix"
-+version = "0.38.8"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f"
-+dependencies = [
-+ "bitflags 2.3.3",
-+ "errno",
-+ "libc",
-+ "linux-raw-sys",
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "ryu"
-+version = "1.0.15"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
-+
-+[[package]]
-+name = "same-file"
-+version = "1.0.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-+dependencies = [
-+ "winapi-util",
-+]
-+
-+[[package]]
-+name = "schannel"
-+version = "0.1.22"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
-+dependencies = [
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "sec1"
-+version = "0.7.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
-+dependencies = [
-+ "base16ct",
-+ "der",
-+ "generic-array",
-+ "pkcs8",
-+ "subtle",
-+ "zeroize",
-+]
-+
-+[[package]]
-+name = "semver"
-+version = "1.0.18"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "serde"
-+version = "1.0.183"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
-+dependencies = [
-+ "serde_derive",
-+]
-+
-+[[package]]
-+name = "serde-value"
-+version = "0.7.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
-+dependencies = [
-+ "ordered-float",
-+ "serde",
-+]
-+
-+[[package]]
-+name = "serde_derive"
-+version = "1.0.183"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn 2.0.28",
-+]
-+
-+[[package]]
-+name = "serde_ignored"
-+version = "0.1.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "80c31d5c53fd39f208e770f5a20a0bb214dee2a8d0d8adba18e19ad95a482ca5"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "serde_json"
-+version = "1.0.104"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
-+dependencies = [
-+ "itoa",
-+ "ryu",
-+ "serde",
-+]
-+
-+[[package]]
-+name = "serde_spanned"
-+version = "0.6.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "sha1"
-+version = "0.10.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
-+dependencies = [
-+ "cfg-if",
-+ "cpufeatures",
-+ "digest",
-+]
-+
-+[[package]]
-+name = "sha2"
-+version = "0.10.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
-+dependencies = [
-+ "cfg-if",
-+ "cpufeatures",
-+ "digest",
-+]
-+
-+[[package]]
-+name = "shell-escape"
-+version = "0.1.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f"
-+
-+[[package]]
-+name = "signature"
-+version = "2.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500"
-+dependencies = [
-+ "digest",
-+ "rand_core",
-+]
-+
-+[[package]]
-+name = "sized-chunks"
-+version = "0.6.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e"
-+dependencies = [
-+ "bitmaps",
-+ "typenum",
-+]
-+
-+[[package]]
-+name = "socket2"
-+version = "0.4.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662"
-+dependencies = [
-+ "libc",
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "spki"
-+version = "0.7.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
-+dependencies = [
-+ "base64ct",
-+ "der",
-+]
-+
-+[[package]]
-+name = "static_assertions"
-+version = "1.1.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-+
-+[[package]]
-+name = "strip-ansi-escapes"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "011cbb39cf7c1f62871aea3cc46e5817b0937b49e9447370c93cacbe93a766d8"
-+dependencies = [
-+ "vte",
-+]
-+
-+[[package]]
-+name = "strsim"
-+version = "0.10.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
-+
-+[[package]]
-+name = "subtle"
-+version = "2.5.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
-+
-+[[package]]
-+name = "syn"
-+version = "1.0.109"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "unicode-ident",
-+]
-+
-+[[package]]
-+name = "syn"
-+version = "2.0.28"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "unicode-ident",
-+]
-+
-+[[package]]
-+name = "tar"
-+version = "0.4.40"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
-+dependencies = [
-+ "filetime",
-+ "libc",
-+]
-+
-+[[package]]
-+name = "tempfile"
-+version = "3.7.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651"
-+dependencies = [
-+ "cfg-if",
-+ "fastrand",
-+ "redox_syscall",
-+ "rustix",
-+ "windows-sys 0.48.0",
-+]
-+
-+[[package]]
-+name = "termcolor"
-+version = "1.2.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
-+dependencies = [
-+ "winapi-util",
-+]
-+
-+[[package]]
-+name = "textwrap"
-+version = "0.16.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
-+
-+[[package]]
-+name = "thread_local"
-+version = "1.1.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
-+dependencies = [
-+ "cfg-if",
-+ "once_cell",
-+]
-+
-+[[package]]
-+name = "time"
-+version = "0.3.25"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea"
-+dependencies = [
-+ "deranged",
-+ "itoa",
-+ "serde",
-+ "time-core",
-+ "time-macros",
-+]
-+
-+[[package]]
-+name = "time-core"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
-+
-+[[package]]
-+name = "time-macros"
-+version = "0.2.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd"
-+dependencies = [
-+ "time-core",
-+]
-+
-+[[package]]
-+name = "tinyvec"
-+version = "1.6.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
-+dependencies = [
-+ "tinyvec_macros",
-+]
-+
-+[[package]]
-+name = "tinyvec_macros"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-+
-+[[package]]
-+name = "toml"
-+version = "0.5.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "toml"
-+version = "0.7.6"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542"
-+dependencies = [
-+ "serde",
-+ "serde_spanned",
-+ "toml_datetime 0.6.3",
-+ "toml_edit 0.19.14",
-+]
-+
-+[[package]]
-+name = "toml_datetime"
-+version = "0.5.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "toml_datetime"
-+version = "0.6.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
-+dependencies = [
-+ "serde",
-+]
-+
-+[[package]]
-+name = "toml_edit"
-+version = "0.15.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b1541ba70885967e662f69d31ab3aeca7b1aaecfcd58679590b893e9239c3646"
-+dependencies = [
-+ "combine",
-+ "indexmap 1.9.3",
-+ "itertools",
-+ "kstring",
-+ "serde",
-+ "toml_datetime 0.5.1",
-+]
-+
-+[[package]]
-+name = "toml_edit"
-+version = "0.19.14"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a"
-+dependencies = [
-+ "indexmap 2.0.0",
-+ "serde",
-+ "serde_spanned",
-+ "toml_datetime 0.6.3",
-+ "winnow",
-+]
-+
-+[[package]]
-+name = "typenum"
-+version = "1.16.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
-+
-+[[package]]
-+name = "unicode-bidi"
-+version = "0.3.13"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
-+
-+[[package]]
-+name = "unicode-ident"
-+version = "1.0.11"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
-+
-+[[package]]
-+name = "unicode-normalization"
-+version = "0.1.22"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
-+dependencies = [
-+ "tinyvec",
-+]
-+
-+[[package]]
-+name = "unicode-width"
-+version = "0.1.10"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
-+
-+[[package]]
-+name = "unicode-xid"
-+version = "0.2.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
-+
-+[[package]]
-+name = "url"
-+version = "2.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb"
-+dependencies = [
-+ "form_urlencoded",
-+ "idna",
-+ "percent-encoding",
-+]
-+
-+[[package]]
-+name = "utf8parse"
-+version = "0.2.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
-+
-+[[package]]
-+name = "vcpkg"
-+version = "0.2.15"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-+
-+[[package]]
-+name = "version_check"
-+version = "0.9.4"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-+
-+[[package]]
-+name = "vte"
-+version = "0.10.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983"
-+dependencies = [
-+ "arrayvec",
-+ "utf8parse",
-+ "vte_generate_state_changes",
-+]
-+
-+[[package]]
-+name = "vte_generate_state_changes"
-+version = "0.1.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+]
-+
-+[[package]]
-+name = "walkdir"
-+version = "2.3.3"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
-+dependencies = [
-+ "same-file",
-+ "winapi-util",
-+]
-+
-+[[package]]
-+name = "wasi"
-+version = "0.11.0+wasi-snapshot-preview1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-+
-+[[package]]
-+name = "wasm-bindgen"
-+version = "0.2.87"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
-+dependencies = [
-+ "cfg-if",
-+ "wasm-bindgen-macro",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-backend"
-+version = "0.2.87"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
-+dependencies = [
-+ "bumpalo",
-+ "log",
-+ "once_cell",
-+ "proc-macro2",
-+ "quote",
-+ "syn 2.0.28",
-+ "wasm-bindgen-shared",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-macro"
-+version = "0.2.87"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
-+dependencies = [
-+ "quote",
-+ "wasm-bindgen-macro-support",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-macro-support"
-+version = "0.2.87"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
-+dependencies = [
-+ "proc-macro2",
-+ "quote",
-+ "syn 2.0.28",
-+ "wasm-bindgen-backend",
-+ "wasm-bindgen-shared",
-+]
-+
-+[[package]]
-+name = "wasm-bindgen-shared"
-+version = "0.2.87"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
-+
-+[[package]]
-+name = "winapi"
-+version = "0.3.9"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-+dependencies = [
-+ "winapi-i686-pc-windows-gnu",
-+ "winapi-x86_64-pc-windows-gnu",
-+]
-+
-+[[package]]
-+name = "winapi-i686-pc-windows-gnu"
-+version = "0.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-+
-+[[package]]
-+name = "winapi-util"
-+version = "0.1.5"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
-+dependencies = [
-+ "winapi",
-+]
-+
-+[[package]]
-+name = "winapi-x86_64-pc-windows-gnu"
-+version = "0.4.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-+
-+[[package]]
-+name = "windows-sys"
-+version = "0.42.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
-+dependencies = [
-+ "windows_aarch64_gnullvm 0.42.2",
-+ "windows_aarch64_msvc 0.42.2",
-+ "windows_i686_gnu 0.42.2",
-+ "windows_i686_msvc 0.42.2",
-+ "windows_x86_64_gnu 0.42.2",
-+ "windows_x86_64_gnullvm 0.42.2",
-+ "windows_x86_64_msvc 0.42.2",
-+]
-+
-+[[package]]
-+name = "windows-sys"
-+version = "0.45.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
-+dependencies = [
-+ "windows-targets 0.42.2",
-+]
-+
-+[[package]]
-+name = "windows-sys"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-+dependencies = [
-+ "windows-targets 0.48.1",
-+]
-+
-+[[package]]
-+name = "windows-targets"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-+dependencies = [
-+ "windows_aarch64_gnullvm 0.42.2",
-+ "windows_aarch64_msvc 0.42.2",
-+ "windows_i686_gnu 0.42.2",
-+ "windows_i686_msvc 0.42.2",
-+ "windows_x86_64_gnu 0.42.2",
-+ "windows_x86_64_gnullvm 0.42.2",
-+ "windows_x86_64_msvc 0.42.2",
-+]
-+
-+[[package]]
-+name = "windows-targets"
-+version = "0.48.1"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
-+dependencies = [
-+ "windows_aarch64_gnullvm 0.48.0",
-+ "windows_aarch64_msvc 0.48.0",
-+ "windows_i686_gnu 0.48.0",
-+ "windows_i686_msvc 0.48.0",
-+ "windows_x86_64_gnu 0.48.0",
-+ "windows_x86_64_gnullvm 0.48.0",
-+ "windows_x86_64_msvc 0.48.0",
-+]
-+
-+[[package]]
-+name = "windows_aarch64_gnullvm"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
-+
-+[[package]]
-+name = "windows_aarch64_gnullvm"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
-+
-+[[package]]
-+name = "windows_aarch64_msvc"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-+
-+[[package]]
-+name = "windows_aarch64_msvc"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
-+
-+[[package]]
-+name = "windows_i686_gnu"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-+
-+[[package]]
-+name = "windows_i686_gnu"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
-+
-+[[package]]
-+name = "windows_i686_msvc"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-+
-+[[package]]
-+name = "windows_i686_msvc"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
-+
-+[[package]]
-+name = "windows_x86_64_gnu"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-+
-+[[package]]
-+name = "windows_x86_64_gnu"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
-+
-+[[package]]
-+name = "windows_x86_64_gnullvm"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-+
-+[[package]]
-+name = "windows_x86_64_gnullvm"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
-+
-+[[package]]
-+name = "windows_x86_64_msvc"
-+version = "0.42.2"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-+
-+[[package]]
-+name = "windows_x86_64_msvc"
-+version = "0.48.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
-+
-+[[package]]
-+name = "winnow"
-+version = "0.5.7"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "19f495880723d0999eb3500a9064d8dbcf836460b24c17df80ea7b5794053aac"
-+dependencies = [
-+ "memchr",
-+]
-+
-+[[package]]
-+name = "zeroize"
-+version = "1.6.0"
-+source = "registry+https://github.com/rust-lang/crates.io-index"
-+checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
---
-2.34.1
-
diff --git a/poky/meta/recipes-devtools/rust/files/repro-issue-fix-with-v175.patch b/poky/meta/recipes-devtools/rust/files/repro-issue-fix-with-v175.patch
index 6840baf..fe0507c 100644
--- a/poky/meta/recipes-devtools/rust/files/repro-issue-fix-with-v175.patch
+++ b/poky/meta/recipes-devtools/rust/files/repro-issue-fix-with-v175.patch
@@ -1,23 +1,36 @@
 rust: reproducibility issue fix with v1.75
 
-With 1.75 rust release, the '.rustc' section of shared object libs are embedded with absolute path names which is casuing reproducibiluty issues.
+With 1.75 rust release, the '.rustc' section of shared object libs are embedded with absolute path names which is casuing reproducibility issues.
 This change will fix the path name format back to '/rust/$hash' as in earlier versions.
 
 Below are the links for detailed bug description & discusssion with upstream rust.
 https://github.com/rust-lang/rust/issues/120825#issuecomment-1964307219
 https://github.com/rust-lang/rust/issues/120825#issuecomment-1964652656
 
-Upstream-Status: Inappropriate [patches need rework]
+Upstream-Status: Backport [https://github.com/rust-lang/rust/pull/121959/commits/a9a979839bbdfec48c75d618ab0dce8a953589b8]
 Signed-off-by: Sundeep KOKKONDA <sundeep.kokkonda@windriver.com>
 ---
---- a/compiler/rustc_session/src/session.rs	2023-12-21 08:55:28.000000000 -0800
-+++ b/compiler/rustc_session/src/session.rs	2024-02-26 07:29:15.527577022 -0800
-@@ -1269,7 +1269,7 @@
-                 | CrateType::Rlib
-                 | CrateType::Staticlib
-                 | CrateType::Cdylib => continue,
+--- a/compiler/rustc_session/src/session.rs     2023-12-21 08:55:28.000000000 -0800
++++ b/compiler/rustc_session/src/session.rs     2024-02-26 07:29:15.527577022 -0800
+@@ -1260,19 +1260,6 @@
+     }
+
+     pub fn should_prefer_remapped_for_codegen(&self) -> bool {
+-        // bail out, if any of the requested crate types aren't:
+-        // "compiled executables or libraries"
+-        for crate_type in &self.opts.crate_types {
+-            match crate_type {
+-                CrateType::Executable
+-                | CrateType::Dylib
+-                | CrateType::Rlib
+-                | CrateType::Staticlib
+-                | CrateType::Cdylib => continue,
 -                CrateType::ProcMacro => return false,
-+                CrateType::ProcMacro => return true,
-             }
-         }
- 
+-            }
+-        }
+-
+         let has_split_debuginfo = match self.split_debuginfo() {
+             SplitDebuginfo::Off => false,
+             SplitDebuginfo::Packed => true,
+
+
diff --git a/poky/meta/recipes-devtools/tcltk/tcl/run-ptest b/poky/meta/recipes-devtools/tcltk/tcl/run-ptest
index 87e025f..a403a74 100644
--- a/poky/meta/recipes-devtools/tcltk/tcl/run-ptest
+++ b/poky/meta/recipes-devtools/tcltk/tcl/run-ptest
@@ -3,19 +3,27 @@
 # clock.test needs a timezone to be set
 export TZ="Europe/London"
 export TCL_LIBRARY=library
+export ERROR_ON_FAILURES=1
 
 # Some tests are overly strict with timings and fail on loaded systems.
-# See bugs #14825 #14882 #15081 #15321.
-SKIPPED_TESTS='async-* cmdMZ-6.6 event-* exit-1.* socket-* socket_inet-*'
+SKIP=""
+# 15321
+SKIP="$SKIP async-\* event-\*"
+# 14882
+SKIP="$SKIP cmdMZ-6.6"
+# 15081
+SKIP="$SKIP exit-1.\*"
+# 15407 15421
+SKIP="$SKIP \*io-46.1"
+# 14825
+SKIP="$SKIP socket-\* socket_inet-\*"
 
-for i in `ls tests/*.test | awk -F/ '{print $2}'`; do
-    ./tcltest tests/all.tcl -file $i -skip "$SKIPPED_TESTS" >$i.log 2>&1
-    grep -q -F -e "Files with failing tests:" -e "Test files exiting with errors:" $i.log
+for i in tests/*.test; do
+    i=$(basename $i)
+    ./tcltest tests/all.tcl -file $i -skip "$SKIP"
     if [ $? -eq 0 ]; then
-        echo "FAIL: $i"
-        cat $i.log
-    else
         echo "PASS: $i"
+    else
+        echo "FAIL: $i"
     fi
-    rm -f $i.log
 done
diff --git a/poky/meta/recipes-devtools/tcltk/tcl_8.6.13.bb b/poky/meta/recipes-devtools/tcltk/tcl_8.6.13.bb
index bb75353..06bf900 100644
--- a/poky/meta/recipes-devtools/tcltk/tcl_8.6.13.bb
+++ b/poky/meta/recipes-devtools/tcltk/tcl_8.6.13.bb
@@ -88,7 +88,7 @@
 
 do_install_ptest:append:libc-musl () {
 	# Assumes locales other than provided by musl-locales
-	sed -i -e "s|SKIPPED_TESTS='|SKIPPED_TESTS='unixInit-3* |" ${D}${PTEST_PATH}/run-ptest
+	sed -i '/SKIP="$SKIP socket.*$/a # unixInit-3* is suppressed due to hardcoded locale assumptions\nSKIP="$SKIP unixInit-3\\\*"' ${D}${PTEST_PATH}/run-ptest
 }
 
 # Fix some paths that might be used by Tcl extensions
diff --git a/poky/meta/recipes-devtools/vala/vala.inc b/poky/meta/recipes-devtools/vala/vala.inc
deleted file mode 100644
index 0177e86..0000000
--- a/poky/meta/recipes-devtools/vala/vala.inc
+++ /dev/null
@@ -1,71 +0,0 @@
-SUMMARY = "C#-like programming language for easing GObject programming"
-HOMEPAGE = "http://vala-project.org"
-DESCRIPTION = "Vala is a C#-like language dedicated to ease GObject programming. \
-Vala compiles to plain C and has no runtime environment nor penalities whatsoever."
-SECTION = "devel"
-DEPENDS = "bison-native flex-native glib-2.0 gobject-introspection"
-
-# Appending libxslt-native to dependencies has an effect
-# of rebuilding the manual, which is very slow. Let's do this
-# only when api-documentation distro feature is enabled.
-DEPENDS:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'libxslt-native', '', d)}"
-
-# vala-native contains a native version of vapigen, which we use instead of the target one
-DEPENDS:append:class-target = " vala-native"
-BBCLASSEXTEND = "native"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
-
-SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-
-SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/${BPN}/${SHRT_VER}/${BP}.tar.xz"
-inherit autotools pkgconfig upstream-version-is-even
-
-FILES:${PN} += "${datadir}/${BPN}-${SHRT_VER}/vapi ${libdir}/${BPN}-${SHRT_VER}/"
-FILES:${PN}-doc += "${datadir}/devhelp"
-
-# .gir files from gobject-introspection are installed to ${libdir} when multilib is enabled
-GIRDIR_OPT = "${@'--girdir=${STAGING_LIBDIR}/gir-1.0' if d.getVar('MULTILIBS') else ''}"
-
-do_configure:prepend:class-target() {
-        # Write out a vapigen wrapper that will be provided by pkg-config file installed in target sysroot
-        # The wrapper will call a native vapigen
-        cat > ${B}/vapigen-wrapper << EOF
-#!/bin/sh
-vapigen-${SHRT_VER} ${GIRDIR_OPT} "\$@"
-EOF
-        chmod +x ${B}/vapigen-wrapper
-}
-
-EXTRA_OECONF += " --disable-valadoc"
-
-# Vapigen wrapper needs to be available system-wide, because it will be used
-# to build vapi files from all other packages with vala support
-do_install:append:class-target() {
-        install -d ${D}${bindir_crossscripts}/
-        install ${B}/vapigen-wrapper ${D}${bindir_crossscripts}/
-}
-
-# Put vapigen wrapper into target sysroot so that it can be used when building
-# vapi files.
-SYSROOT_DIRS += "${bindir_crossscripts}"
-
-inherit multilib_script
-MULTILIB_SCRIPTS = "${PN}:${bindir}/vala-gen-introspect-0.56"
-
-SYSROOT_PREPROCESS_FUNCS:append:class-target = " vapigen_sysroot_preprocess"
-vapigen_sysroot_preprocess() {
-        # Tweak the vapigen name in the vapigen pkgconfig file, so that it picks
-        # up our wrapper.
-        sed -i \
-           -e "s|vapigen=.*|vapigen=${bindir_crossscripts}/vapigen-wrapper|" \
-           ${SYSROOT_DESTDIR}${libdir}/pkgconfig/vapigen-${SHRT_VER}.pc
-}
-
-SSTATE_SCAN_FILES += "vapigen-wrapper"
-
-PACKAGE_PREPROCESS_FUNCS += "vala_package_preprocess"
-
-vala_package_preprocess () {
-	rm -rf ${PKGD}${bindir_crossscripts}
-}
diff --git a/poky/meta/recipes-devtools/vala/vala/0001-gtk4-Preserve-compatibility-with-4.14.patch b/poky/meta/recipes-devtools/vala/vala/0001-gtk4-Preserve-compatibility-with-4.14.patch
new file mode 100644
index 0000000..1614740
--- /dev/null
+++ b/poky/meta/recipes-devtools/vala/vala/0001-gtk4-Preserve-compatibility-with-4.14.patch
@@ -0,0 +1,39 @@
+From 17349020fb95454d06f827fd555b05248f10a370 Mon Sep 17 00:00:00 2001
+From: Rico Tzschichholz <ricotz@ubuntu.com>
+Date: Thu, 7 Mar 2024 17:56:05 +0100
+Subject: [PATCH] gtk4: Preserve compatibility with < 4.14
+
+Don't prefer new accessor methods for Calendar.day/month/year
+
+Fixes https://gitlab.gnome.org/GNOME/vala/issues/1531
+
+Upstream-Status: Backport [https://gitlab.gnome.org/GNOME/vala/-/commit/e0c4ea8c4a0bbf859b5341a7465b395892789d9e]
+
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+---
+ vapi/gtk4.vapi                 | 3 +++
+ vapi/metadata/Gtk-4.0.metadata | 5 +++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/vapi/gtk4.vapi b/vapi/gtk4.vapi
+index 49f8b2078..51ecea27d 100644
+--- a/vapi/gtk4.vapi
++++ b/vapi/gtk4.vapi
+@@ -7350,11 +7350,14 @@ namespace Gtk {
+ 		[Version (since = "4.14")]
+ 		public void set_year (int year);
+ 		public void unmark_day (uint day);
++		[NoAccessorMethod]
+ 		public int day { get; set; }
++		[NoAccessorMethod]
+ 		public int month { get; set; }
+ 		public bool show_day_names { get; set; }
+ 		public bool show_heading { get; set; }
+ 		public bool show_week_numbers { get; set; }
++		[NoAccessorMethod]
+ 		public int year { get; set; }
+ 		public signal void day_selected ();
+ 		public signal void next_month ();
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-devtools/vala/vala_0.56.15.bb b/poky/meta/recipes-devtools/vala/vala_0.56.15.bb
index dc483b1..915ddd8 100644
--- a/poky/meta/recipes-devtools/vala/vala_0.56.15.bb
+++ b/poky/meta/recipes-devtools/vala/vala_0.56.15.bb
@@ -1,3 +1,76 @@
-require ${BPN}.inc
+SUMMARY = "C#-like programming language for easing GObject programming"
+HOMEPAGE = "http://vala-project.org"
+DESCRIPTION = "Vala is a C#-like language dedicated to ease GObject programming. \
+Vala compiles to plain C and has no runtime environment nor penalities whatsoever."
+SECTION = "devel"
+DEPENDS = "bison-native flex-native glib-2.0 gobject-introspection"
 
+# Appending libxslt-native to dependencies has an effect
+# of rebuilding the manual, which is very slow. Let's do this
+# only when api-documentation distro feature is enabled.
+DEPENDS:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'libxslt-native', '', d)}"
+
+# vala-native contains a native version of vapigen, which we use instead of the target one
+DEPENDS:append:class-target = " vala-native"
+BBCLASSEXTEND = "native"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
+
+SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+
+SRC_URI = " \
+	http://ftp.gnome.org/pub/GNOME/sources/${BPN}/${SHRT_VER}/${BP}.tar.xz \
+	file://0001-gtk4-Preserve-compatibility-with-4.14.patch \
+"
 SRC_URI[sha256sum] = "535b6452ed310fd5fb5c7dd6794b6213dac3b48e645e5bff3173741ec2cb3f2b"
+
+inherit autotools pkgconfig upstream-version-is-even
+
+FILES:${PN} += "${datadir}/${BPN}-${SHRT_VER}/vapi ${libdir}/${BPN}-${SHRT_VER}/"
+FILES:${PN}-doc += "${datadir}/devhelp"
+
+# .gir files from gobject-introspection are installed to ${libdir} when multilib is enabled
+GIRDIR_OPT = "${@'--girdir=${STAGING_LIBDIR}/gir-1.0' if d.getVar('MULTILIBS') else ''}"
+
+do_configure:prepend:class-target() {
+        # Write out a vapigen wrapper that will be provided by pkg-config file installed in target sysroot
+        # The wrapper will call a native vapigen
+        cat > ${B}/vapigen-wrapper << EOF
+#!/bin/sh
+vapigen-${SHRT_VER} ${GIRDIR_OPT} "\$@"
+EOF
+        chmod +x ${B}/vapigen-wrapper
+}
+
+EXTRA_OECONF += " --disable-valadoc"
+
+# Vapigen wrapper needs to be available system-wide, because it will be used
+# to build vapi files from all other packages with vala support
+do_install:append:class-target() {
+        install -d ${D}${bindir_crossscripts}/
+        install ${B}/vapigen-wrapper ${D}${bindir_crossscripts}/
+}
+
+# Put vapigen wrapper into target sysroot so that it can be used when building
+# vapi files.
+SYSROOT_DIRS += "${bindir_crossscripts}"
+
+inherit multilib_script
+MULTILIB_SCRIPTS = "${PN}:${bindir}/vala-gen-introspect-0.56"
+
+SYSROOT_PREPROCESS_FUNCS:append:class-target = " vapigen_sysroot_preprocess"
+vapigen_sysroot_preprocess() {
+        # Tweak the vapigen name in the vapigen pkgconfig file, so that it picks
+        # up our wrapper.
+        sed -i \
+           -e "s|vapigen=.*|vapigen=${bindir_crossscripts}/vapigen-wrapper|" \
+           ${SYSROOT_DESTDIR}${libdir}/pkgconfig/vapigen-${SHRT_VER}.pc
+}
+
+SSTATE_SCAN_FILES += "vapigen-wrapper"
+
+PACKAGE_PREPROCESS_FUNCS += "vala_package_preprocess"
+
+vala_package_preprocess () {
+	rm -rf ${PKGD}${bindir_crossscripts}
+}
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0001-valgrind-monitor.py-regular-expressions-should-use-r.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0001-valgrind-monitor.py-regular-expressions-should-use-r.patch
new file mode 100644
index 0000000..80a8e3a
--- /dev/null
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0001-valgrind-monitor.py-regular-expressions-should-use-r.patch
@@ -0,0 +1,64 @@
+From 027b649fdb831868e71be01cafdacc49a5f419ab Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mark@klomp.org>
+Date: Fri, 17 Nov 2023 14:01:21 +0100
+Subject: [PATCH 1/4] valgrind-monitor.py regular expressions should use raw
+ strings
+
+With python 3.12 gdb will produce the following SyntaxWarning when
+loading valgrind-monitor-def.py:
+
+  /usr/share/gdb/auto-load/valgrind-monitor-def.py:214:
+  SyntaxWarning: invalid escape sequence '\['
+    if re.fullmatch("^0x[0123456789ABCDEFabcdef]+\[[^\[\]]+\]$", arg_str):
+
+In a future python version this will become an SyntaxError.
+
+Use a raw strings for the regular expression.
+
+https://bugs.kde.org/show_bug.cgi?id=476708
+(cherry picked from commit 0fbfbe05028ad18efda786a256a2738d2c231ed4)
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=valgrind.git;a=commit;h=027b649fdb831868e71be01cafdacc49a5f419ab]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ NEWS                                          | 13 +++++++++++++
+ coregrind/m_gdbserver/valgrind-monitor-def.py |  2 +-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/NEWS b/NEWS
+index f11da4be8..ee5b4ff11 100644
+--- a/NEWS
++++ b/NEWS
+@@ -1,3 +1,16 @@
++Branch 3.22
++~~~~~~~~~~~
++
++* ==================== FIXED BUGS ====================
++
++The following bugs have been fixed or resolved on this branch.
++
++476708  valgrind-monitor.py regular expressions should use raw strings
++
++To see details of a given bug, visit
++  https://bugs.kde.org/show_bug.cgi?id=XXXXXX
++where XXXXXX is the bug number as listed above.
++
+ Release 3.22.0 (31 Oct 2023)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ 
+diff --git a/coregrind/m_gdbserver/valgrind-monitor-def.py b/coregrind/m_gdbserver/valgrind-monitor-def.py
+index b4e7b992d..d74b1590c 100644
+--- a/coregrind/m_gdbserver/valgrind-monitor-def.py
++++ b/coregrind/m_gdbserver/valgrind-monitor-def.py
+@@ -211,7 +211,7 @@ class Valgrind_ADDR_LEN_opt(Valgrind_Command):
+ For compatibility reason with the Valgrind gdbserver monitor command,
+ we detect and accept usages such as 0x1234ABCD[10]."""
+     def invoke(self, arg_str : str, from_tty : bool) -> None:
+-        if re.fullmatch("^0x[0123456789ABCDEFabcdef]+\[[^\[\]]+\]$", arg_str):
++        if re.fullmatch(r"^0x[0123456789ABCDEFabcdef]+\[[^\[\]]+\]$", arg_str):
+             arg_str = arg_str.replace("[", " ")
+             arg_str = arg_str.replace("]", " ")
+         eval_execute_2(self, arg_str,
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0002-Bug-476548-valgrind-3.22.0-fails-on-assertion-when-l.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0002-Bug-476548-valgrind-3.22.0-fails-on-assertion-when-l.patch
new file mode 100644
index 0000000..5759fa0
--- /dev/null
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0002-Bug-476548-valgrind-3.22.0-fails-on-assertion-when-l.patch
@@ -0,0 +1,147 @@
+From 1d00e5ce0fb069911c4b525ec38289fb5d9021b0 Mon Sep 17 00:00:00 2001
+From: Paul Floyd <pjfloyd@wanadoo.fr>
+Date: Sat, 18 Nov 2023 08:49:34 +0100
+Subject: [PATCH 2/4] Bug 476548 - valgrind 3.22.0 fails on assertion when
+ loading debuginfo file produced by mold
+
+(cherry picked from commit 9ea4ae66707a4dcc6f4328e11911652e4418c585)
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=valgrind.git;a=commit;h=1d00e5ce0fb069911c4b525ec38289fb5d9021b0]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ NEWS                               |  2 ++
+ coregrind/m_debuginfo/image.c      | 14 +++++++++
+ coregrind/m_debuginfo/priv_image.h |  4 +++
+ coregrind/m_debuginfo/readelf.c    | 49 ++++++++++++++++++++++++++++--
+ 4 files changed, 66 insertions(+), 3 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index ee5b4ff11..6cd13429a 100644
+--- a/NEWS
++++ b/NEWS
+@@ -5,6 +5,8 @@ Branch 3.22
+ 
+ The following bugs have been fixed or resolved on this branch.
+ 
++476548  valgrind 3.22.0 fails on assertion when loading debuginfo
++        file produced by mold
+ 476708  valgrind-monitor.py regular expressions should use raw strings
+ 
+ To see details of a given bug, visit
+diff --git a/coregrind/m_debuginfo/image.c b/coregrind/m_debuginfo/image.c
+index 02e509071..445f95555 100644
+--- a/coregrind/m_debuginfo/image.c
++++ b/coregrind/m_debuginfo/image.c
+@@ -1221,6 +1221,20 @@ Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2)
+    }
+ }
+ 
++Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n)
++{
++   ensure_valid(img, off1, 1, "ML_(img_strcmp_c)");
++   while (n) {
++      UChar c1 = get(img, off1);
++      UChar c2 = *(const UChar*)str2;
++      if (c1 < c2) return -1;
++      if (c1 > c2) return 1;
++      if (c1 == 0) return 0;
++      off1++; str2++; --n;
++   }
++   return 0;
++}
++
+ UChar ML_(img_get_UChar)(DiImage* img, DiOffT offset)
+ {
+    ensure_valid(img, offset, 1, "ML_(img_get_UChar)");
+diff --git a/coregrind/m_debuginfo/priv_image.h b/coregrind/m_debuginfo/priv_image.h
+index a49846f14..c91e49f01 100644
+--- a/coregrind/m_debuginfo/priv_image.h
++++ b/coregrind/m_debuginfo/priv_image.h
+@@ -115,6 +115,10 @@ Int ML_(img_strcmp)(DiImage* img, DiOffT off1, DiOffT off2);
+    cast to HChar before comparison. */
+ Int ML_(img_strcmp_c)(DiImage* img, DiOffT off1, const HChar* str2);
+ 
++/* Do strncmp of a C string in the image vs a normal one.  Chars are
++   cast to HChar before comparison. */
++Int ML_(img_strcmp_n)(DiImage* img, DiOffT off1, const HChar* str2, Word n);
++
+ /* Do strlen of a C string in the image. */
+ SizeT ML_(img_strlen)(DiImage* img, DiOffT off);
+ 
+diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c
+index fb64ed976..46f8c8343 100644
+--- a/coregrind/m_debuginfo/readelf.c
++++ b/coregrind/m_debuginfo/readelf.c
+@@ -2501,8 +2501,7 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di )
+             di->rodata_avma += inrw1->bias;
+             di->rodata_bias = inrw1->bias;
+             di->rodata_debug_bias = inrw1->bias;
+-         }
+-         else {
++         } else {
+             BAD(".rodata");  /* should not happen? */
+          }
+          di->rodata_present = True;
+@@ -2977,6 +2976,46 @@ Bool ML_(read_elf_object) ( struct _DebugInfo* di )
+    return retval;
+ }
+ 
++static void find_rodata(Word i, Word shnum, DiImage* dimg, struct _DebugInfo* di, DiOffT shdr_dioff,
++                        UWord shdr_dent_szB, DiOffT shdr_strtab_dioff, PtrdiffT rw_dbias)
++{
++   ElfXX_Shdr a_shdr;
++   ElfXX_Shdr a_extra_shdr;
++   ML_(img_get)(&a_shdr, dimg,
++                INDEX_BIS(shdr_dioff, i, shdr_dent_szB),
++                sizeof(a_shdr));
++   if (di->rodata_present &&
++       0 == ML_(img_strcmp_c)(dimg, shdr_strtab_dioff
++                                    + a_shdr.sh_name, ".rodata")) {
++      Word sh_size = a_shdr.sh_size;
++      Word j;
++      Word next_addr = a_shdr.sh_addr + a_shdr.sh_size;
++      for (j = i  + 1; j < shnum; ++j) {
++         ML_(img_get)(&a_extra_shdr, dimg,
++                      INDEX_BIS(shdr_dioff, j, shdr_dent_szB),
++                      sizeof(a_shdr));
++         if (0 == ML_(img_strcmp_n)(dimg, shdr_strtab_dioff
++                                             + a_extra_shdr.sh_name, ".rodata", 7)) {
++            if (a_extra_shdr.sh_addr ==
++                VG_ROUNDUP(next_addr, a_extra_shdr.sh_addralign)) {
++               sh_size = VG_ROUNDUP(sh_size, a_extra_shdr.sh_addralign) + a_extra_shdr.sh_size;
++            }
++            next_addr = a_extra_shdr.sh_addr + a_extra_shdr.sh_size;
++         } else {
++            break;
++         }
++      }
++      vg_assert(di->rodata_size == sh_size);
++      vg_assert(di->rodata_avma +  a_shdr.sh_addr + rw_dbias);
++      di->rodata_debug_svma = a_shdr.sh_addr;
++      di->rodata_debug_bias = di->rodata_bias +
++                             di->rodata_svma - di->rodata_debug_svma;
++      TRACE_SYMTAB("acquiring .rodata  debug svma = %#lx .. %#lx\n",
++                   di->rodata_debug_svma,
++                   di->rodata_debug_svma + di->rodata_size - 1);
++      TRACE_SYMTAB("acquiring .rodata debug bias = %#lx\n", (UWord)di->rodata_debug_bias);
++   }
++}
+ Bool ML_(read_elf_debug) ( struct _DebugInfo* di )
+ {
+    Word     i, j;
+@@ -3391,7 +3430,11 @@ Bool ML_(read_elf_debug) ( struct _DebugInfo* di )
+             FIND(text,   rx)
+             FIND(data,   rw)
+             FIND(sdata,  rw)
+-            FIND(rodata, rw)
++            // https://bugs.kde.org/show_bug.cgi?id=476548
++            // special handling for rodata as adjacent
++            // rodata sections may have been merged in ML_(read_elf_object)
++            //FIND(rodata, rw)
++            find_rodata(i, ehdr_dimg.e_shnum, dimg, di, shdr_dioff, shdr_dent_szB, shdr_strtab_dioff, rw_dbias);
+             FIND(bss,    rw)
+             FIND(sbss,   rw)
+ 
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0003-Add-fchmodat2-syscall-on-linux.patch b/poky/meta/recipes-devtools/valgrind/valgrind/0003-Add-fchmodat2-syscall-on-linux.patch
new file mode 100644
index 0000000..2a09ca5
--- /dev/null
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0003-Add-fchmodat2-syscall-on-linux.patch
@@ -0,0 +1,221 @@
+From a43e62dddcf51ec6578a90c5988a41e856b44b05 Mon Sep 17 00:00:00 2001
+From: Mark Wielaard <mark@klomp.org>
+Date: Sat, 18 Nov 2023 21:17:02 +0100
+Subject: [PATCH 3/4] Add fchmodat2 syscall on linux
+
+fchmodat2 is a new syscall on linux 6.6. It is a variant of fchmodat
+that takes an extra flags argument.
+
+https://bugs.kde.org/show_bug.cgi?id=477198
+
+(cherry picked from commit 372d09fd9a8d76847c81092ebff71c80fd6c145d)
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=valgrind.git;a=commit;h=a43e62dddcf51ec6578a90c5988a41e856b44b05]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ NEWS                                         |  1 +
+ coregrind/m_syswrap/priv_syswrap-linux.h     |  3 +++
+ coregrind/m_syswrap/syswrap-amd64-linux.c    |  2 ++
+ coregrind/m_syswrap/syswrap-arm-linux.c      |  2 ++
+ coregrind/m_syswrap/syswrap-arm64-linux.c    |  2 ++
+ coregrind/m_syswrap/syswrap-linux.c          | 11 +++++++++++
+ coregrind/m_syswrap/syswrap-mips32-linux.c   |  2 ++
+ coregrind/m_syswrap/syswrap-mips64-linux.c   |  1 +
+ coregrind/m_syswrap/syswrap-nanomips-linux.c |  1 +
+ coregrind/m_syswrap/syswrap-ppc32-linux.c    |  2 ++
+ coregrind/m_syswrap/syswrap-ppc64-linux.c    |  2 ++
+ coregrind/m_syswrap/syswrap-s390x-linux.c    |  2 ++
+ coregrind/m_syswrap/syswrap-x86-linux.c      |  2 ++
+ include/vki/vki-scnums-shared-linux.h        |  2 ++
+ 14 files changed, 35 insertions(+)
+
+diff --git a/NEWS b/NEWS
+index 6cd13429a..da0f8c1aa 100644
+--- a/NEWS
++++ b/NEWS
+@@ -8,6 +8,7 @@ The following bugs have been fixed or resolved on this branch.
+ 476548  valgrind 3.22.0 fails on assertion when loading debuginfo
+         file produced by mold
+ 476708  valgrind-monitor.py regular expressions should use raw strings
++477198  Add fchmodat2 syscall on linux
+ 
+ To see details of a given bug, visit
+   https://bugs.kde.org/show_bug.cgi?id=XXXXXX
+diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h
+index 7c9decf5a..798c456c9 100644
+--- a/coregrind/m_syswrap/priv_syswrap-linux.h
++++ b/coregrind/m_syswrap/priv_syswrap-linux.h
+@@ -331,6 +331,9 @@ DECL_TEMPLATE(linux, sys_openat2);
+ // Linux-specific (new in Linux 5.14)
+ DECL_TEMPLATE(linux, sys_memfd_secret);
+ 
++// Since Linux 6.6
++DECL_TEMPLATE(linux, sys_fchmodat2);
++
+ /* ---------------------------------------------------------------------
+    Wrappers for sockets and ipc-ery.  These are split into standalone
+    procedures because x86-linux hides them inside multiplexors
+diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c
+index 008600798..fe17d118b 100644
+--- a/coregrind/m_syswrap/syswrap-amd64-linux.c
++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c
+@@ -886,6 +886,8 @@ static SyscallTableEntry syscall_table[] = {
+    LINXY(__NR_epoll_pwait2,      sys_epoll_pwait2),      // 441
+ 
+    LINXY(__NR_memfd_secret,      sys_memfd_secret),      // 447
++
++   LINX_(__NR_fchmodat2,         sys_fchmodat2),         // 452
+ };
+ 
+ SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
+diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c
+index 9a7a1e0d2..811931d3b 100644
+--- a/coregrind/m_syswrap/syswrap-arm-linux.c
++++ b/coregrind/m_syswrap/syswrap-arm-linux.c
+@@ -1059,6 +1059,8 @@ static SyscallTableEntry syscall_main_table[] = {
+    LINX_(__NR_faccessat2,    sys_faccessat2),           // 439
+ 
+    LINXY(__NR_epoll_pwait2,      sys_epoll_pwait2),      // 441
++
++   LINX_(__NR_fchmodat2,         sys_fchmodat2),         // 452
+ };
+ 
+ 
+diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c
+index 6af7bab83..3307bc2ca 100644
+--- a/coregrind/m_syswrap/syswrap-arm64-linux.c
++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c
+@@ -840,6 +840,8 @@ static SyscallTableEntry syscall_main_table[] = {
+    LINXY(__NR_epoll_pwait2,      sys_epoll_pwait2),      // 441
+ 
+    LINXY(__NR_memfd_secret,      sys_memfd_secret),      // 447
++
++   LINX_(__NR_fchmodat2,         sys_fchmodat2),         // 452
+ };
+ 
+ 
+diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
+index d571fc327..efa47f2e6 100644
+--- a/coregrind/m_syswrap/syswrap-linux.c
++++ b/coregrind/m_syswrap/syswrap-linux.c
+@@ -6059,6 +6059,17 @@ PRE(sys_fchmodat)
+    PRE_MEM_RASCIIZ( "fchmodat(path)", ARG2 );
+ }
+ 
++PRE(sys_fchmodat2)
++{
++   PRINT("sys_fchmodat2 ( %ld, %#" FMT_REGWORD "x(%s), %" FMT_REGWORD "u, %"
++	  FMT_REGWORD "u )",
++         SARG1, ARG2, (HChar*)(Addr)ARG2, ARG3, ARG4);
++   PRE_REG_READ4(long, "fchmodat2",
++                 int, dfd, const char *, path, vki_mode_t, mode,
++                 unsigned int, flags);
++   PRE_MEM_RASCIIZ( "fchmodat2(pathname)", ARG2 );
++}
++
+ PRE(sys_faccessat)
+ {
+    PRINT("sys_faccessat ( %ld, %#" FMT_REGWORD "x(%s), %ld )",
+diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c
+index 6268a00dd..74a1f6eac 100644
+--- a/coregrind/m_syswrap/syswrap-mips32-linux.c
++++ b/coregrind/m_syswrap/syswrap-mips32-linux.c
+@@ -1143,6 +1143,8 @@ static SyscallTableEntry syscall_main_table[] = {
+    LINX_ (__NR_faccessat2,             sys_faccessat2),              // 439
+ 
+    LINXY(__NR_epoll_pwait2,      sys_epoll_pwait2),      // 441
++
++   LINX_(__NR_fchmodat2,               sys_fchmodat2),               // 452
+ };
+ 
+ SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno)
+diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c
+index 6cdf25893..4e8508b7a 100644
+--- a/coregrind/m_syswrap/syswrap-mips64-linux.c
++++ b/coregrind/m_syswrap/syswrap-mips64-linux.c
+@@ -820,6 +820,7 @@ static SyscallTableEntry syscall_main_table[] = {
+    LINXY (__NR_close_range, sys_close_range),
+    LINX_ (__NR_faccessat2, sys_faccessat2),
+    LINXY(__NR_epoll_pwait2, sys_epoll_pwait2),
++   LINX_ (__NR_fchmodat2, sys_fchmodat2),
+ };
+ 
+ SyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno )
+diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c
+index d724cde74..7859900c1 100644
+--- a/coregrind/m_syswrap/syswrap-nanomips-linux.c
++++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c
+@@ -829,6 +829,7 @@ static SyscallTableEntry syscall_main_table[] = {
+    LINXY (__NR_close_range,            sys_close_range),
+    LINX_ (__NR_faccessat2,             sys_faccessat2),
+    LINXY (__NR_epoll_pwait2,           sys_epoll_pwait2),
++   LINX_ (__NR_fchmodat2,              sys_fchmodat2),
+ };
+ 
+ SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno)
+diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c
+index c0cfef235..1e19116ee 100644
+--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c
++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c
+@@ -1063,6 +1063,8 @@ static SyscallTableEntry syscall_table[] = {
+    LINX_(__NR_faccessat2,        sys_faccessat2),       // 439
+ 
+    LINXY (__NR_epoll_pwait2,     sys_epoll_pwait2),      // 441
++
++   LINX_ (__NR_fchmodat2,        sys_fchmodat2),         // 452
+ };
+ 
+ SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
+diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+index f5976f30c..1097212a4 100644
+--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
+@@ -1032,6 +1032,8 @@ static SyscallTableEntry syscall_table[] = {
+    LINX_(__NR_faccessat2,        sys_faccessat2),       // 439
+ 
+    LINXY (__NR_epoll_pwait2,     sys_epoll_pwait2),      // 441
++
++   LINX_ (__NR_fchmodat2,        sys_fchmodat2),         // 452
+ };
+ 
+ SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
+diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
+index afba154e7..3588672c7 100644
+--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
+@@ -873,6 +873,8 @@ static SyscallTableEntry syscall_table[] = {
+    LINX_(__NR_faccessat2,  sys_faccessat2),                           // 439
+ 
+    LINXY(__NR_epoll_pwait2, sys_epoll_pwait2),                        // 441
++
++   LINX_ (__NR_fchmodat2, sys_fchmodat2),                             // 452
+ };
+ 
+ SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
+diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c
+index da4fd8fa2..58badc6b0 100644
+--- a/coregrind/m_syswrap/syswrap-x86-linux.c
++++ b/coregrind/m_syswrap/syswrap-x86-linux.c
+@@ -1658,6 +1658,8 @@ static SyscallTableEntry syscall_table[] = {
+    LINXY(__NR_epoll_pwait2,      sys_epoll_pwait2),     // 441
+ 
+    LINXY(__NR_memfd_secret,      sys_memfd_secret),      // 447
++
++   LINX_(__NR_fchmodat2,         sys_fchmodat2),         // 452
+ };
+ 
+ SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
+diff --git a/include/vki/vki-scnums-shared-linux.h b/include/vki/vki-scnums-shared-linux.h
+index 542382b53..a4cd87149 100644
+--- a/include/vki/vki-scnums-shared-linux.h
++++ b/include/vki/vki-scnums-shared-linux.h
+@@ -50,4 +50,6 @@
+ 
+ #define __NR_memfd_secret		447
+ 
++#define __NR_fchmodat2		452
++
+ #endif
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind/0004-Bug-478624-Valgrind-incompatibility-with-binutils-2..patch b/poky/meta/recipes-devtools/valgrind/valgrind/0004-Bug-478624-Valgrind-incompatibility-with-binutils-2..patch
new file mode 100644
index 0000000..4e91855
--- /dev/null
+++ b/poky/meta/recipes-devtools/valgrind/valgrind/0004-Bug-478624-Valgrind-incompatibility-with-binutils-2..patch
@@ -0,0 +1,137 @@
+From 41ff9aa49f6c54c66d0e6b37f265fd9cb0176057 Mon Sep 17 00:00:00 2001
+From: Paul Floyd <pjfloyd@wanadoo.fr>
+Date: Sun, 17 Dec 2023 14:18:51 +0100
+Subject: [PATCH 4/4] Bug 478624 - Valgrind incompatibility with binutils-2.42
+ on x86 with new nop patterns (unhandled instruction bytes: 0x2E 0x8D 0xB4
+ 0x26)
+
+It was a bit of a struggle to get the testcase to build
+with both clang and gcc (oddly enough gcc was more difficult) so
+I just resorted to using .byte arrays.
+
+(cherry picked from commit d35005cef8ad8207542738812705ceabf137d7e0)
+
+Upstream-Status: Backport [https://sourceware.org/git/?p=valgrind.git;a=commit;h=41ff9aa49f6c54c66d0e6b37f265fd9cb0176057]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ .gitignore                                 |  1 +
+ NEWS                                       |  2 ++
+ VEX/priv/guest_x86_toIR.c                  | 22 +++++++++++++-
+ none/tests/x86/Makefile.am                 |  2 ++
+ none/tests/x86/gnu_binutils_nop.c          | 34 ++++++++++++++++++++++
+ none/tests/x86/gnu_binutils_nop.stderr.exp |  0
+ none/tests/x86/gnu_binutils_nop.vgtest     |  2 ++
+ 7 files changed, 62 insertions(+), 1 deletion(-)
+ create mode 100644 none/tests/x86/gnu_binutils_nop.c
+ create mode 100644 none/tests/x86/gnu_binutils_nop.stderr.exp
+ create mode 100644 none/tests/x86/gnu_binutils_nop.vgtest
+
+--- a/NEWS
++++ b/NEWS
+@@ -9,6 +9,8 @@ The following bugs have been fixed or re
+         file produced by mold
+ 476708  valgrind-monitor.py regular expressions should use raw strings
+ 477198  Add fchmodat2 syscall on linux
++478624  Valgrind incompatibility with binutils-2.42 on x86 with new nop patterns
++        (unhandled instruction bytes: 0x2E 0x8D 0xB4 0x26)
+ 
+ To see details of a given bug, visit
+   https://bugs.kde.org/show_bug.cgi?id=XXXXXX
+--- a/VEX/priv/guest_x86_toIR.c
++++ b/VEX/priv/guest_x86_toIR.c
+@@ -8198,7 +8198,7 @@ DisResult disInstr_X86_WRK (
+          delta += 5;
+          goto decode_success;
+       }
+-      /* Don't barf on recent binutils padding,
++      /* Don't barf on recent (2010) binutils padding,
+          all variants of which are: nopw %cs:0x0(%eax,%eax,1)
+          66 2e 0f 1f 84 00 00 00 00 00
+          66 66 2e 0f 1f 84 00 00 00 00 00
+@@ -8222,6 +8222,26 @@ DisResult disInstr_X86_WRK (
+             goto decode_success;
+          }
+       }
++
++      /* bug478624 GNU binutils uses a leal of esi into itself with
++         a zero offset and CS prefix as an 8 byte no-op (Dec 2023).
++         Since the CS prefix is hardly ever used we don't do much
++         to decode it, just a few cases for conditional branches.
++         So add handling here with other pseudo-no-ops.
++       */
++      if (code[0] == 0x2E && code[1] == 0x8D) {
++         if (code[2] == 0x74 && code[3] == 0x26 && code[4] == 0x00) {
++            DIP("leal %%cs:0(%%esi,%%eiz,1),%%esi\n");
++            delta += 5;
++            goto decode_success;
++         }
++         if (code[2] == 0xB4 && code[3] == 0x26 && code[4] == 0x00
++             && code[5] == 0x00 && code[6] == 0x00 && code[7] == 0x00) {
++            DIP("leal %%cs:0(%%esi,%%eiz,1),%%esi\n");
++            delta += 8;
++            goto decode_success;
++         }
++      }
+ 
+       // Intel CET requires the following opcodes to be treated as NOPs
+       // with any prefix and ModRM, SIB and disp combination:
+--- a/none/tests/x86/Makefile.am
++++ b/none/tests/x86/Makefile.am
+@@ -52,6 +52,7 @@ EXTRA_DIST = \
+ 	fxtract.stdout.exp fxtract.stderr.exp fxtract.vgtest \
+ 	fxtract.stdout.exp-older-glibc \
+ 	getseg.stdout.exp getseg.stderr.exp getseg.vgtest \
++	gnu_binutils_nop.stderr.exp gnu_binutils_nop.vgtest \
+ 	incdec_alt.stdout.exp incdec_alt.stderr.exp incdec_alt.vgtest \
+ 	int.stderr.exp int.stdout.exp int.disabled \
+ 	$(addsuffix .stderr.exp,$(INSN_TESTS)) \
+@@ -100,6 +101,7 @@ check_PROGRAMS = \
+ 	fpu_lazy_eflags \
+ 	fxtract \
+ 	getseg \
++	gnu_binutils_nop \
+ 	incdec_alt \
+ 	$(INSN_TESTS) \
+ 	int \
+--- /dev/null
++++ b/none/tests/x86/gnu_binutils_nop.c
+@@ -0,0 +1,34 @@
++int main(void)
++{
++    // GNU binutils uses various opcodes as alternatives for nop
++    // the idea is that it is faster to execute one large opcode
++    // with no side-effects than multiple repetitions of the
++    // single byte 'nop'. This gives more choice when code
++    // needs to be padded.
++   
++   // the following is based on
++   // https://sourceware.org/cgit/binutils-gdb/tree/gas/config/tc-i386.c#n1256
++
++    // one byte
++    __asm__ __volatile__("nop");
++    // two bytes
++    __asm__ __volatile__("xchg %ax,%ax");
++    // three bytes
++    //__asm__ __volatile__("leal 0(%esi),%esi");
++    __asm__ __volatile__(".byte 0x8d,0x76,0x00");
++    // four bytes
++    //__asm__ __volatile__("leal 0(%esi,%eiz),%esi");
++    __asm__ __volatile__(".byte 0x8d,0x74,0x26,0x00");
++    // five bytes
++    //__asm__ __volatile__("leal %cs:0(%esi,%eiz),%esi");
++    __asm__ __volatile__(".byte 0x2e,0x8d,0x74,0x26,0x00");
++    // six bytes
++    //__asm__ __volatile__("leal 0L(%esi),%esi");
++    __asm__ __volatile__(".byte 0x8d,0xb6,0x00,0x00,0x00,0x00");
++    // seven bytes
++    //__asm__ __volatile__("leal 0L(%esi,%eiz),%esi");
++    __asm__ __volatile__(".byte 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00");
++    // eight bytes
++    //__asm__ __volatile__("leal %cs:0L(%esi,%eiz),%esi");
++    __asm__ __volatile__(".byte 0x2e,0x8d,0xb4,0x26,0x00,0x00,0x00,0x00");
++}
+--- /dev/null
++++ b/none/tests/x86/gnu_binutils_nop.vgtest
+@@ -0,0 +1,2 @@
++prog: gnu_binutils_nop
++vgopts: -q
diff --git a/poky/meta/recipes-devtools/valgrind/valgrind_3.22.0.bb b/poky/meta/recipes-devtools/valgrind/valgrind_3.22.0.bb
index 74ac7ec..563d99f 100644
--- a/poky/meta/recipes-devtools/valgrind/valgrind_3.22.0.bb
+++ b/poky/meta/recipes-devtools/valgrind/valgrind_3.22.0.bb
@@ -33,6 +33,10 @@
            file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
            file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
            file://0001-docs-Disable-manual-validation.patch \
+           file://0001-valgrind-monitor.py-regular-expressions-should-use-r.patch \
+           file://0002-Bug-476548-valgrind-3.22.0-fails-on-assertion-when-l.patch \
+           file://0003-Add-fchmodat2-syscall-on-linux.patch \
+           file://0004-Bug-478624-Valgrind-incompatibility-with-binutils-2..patch \
            "
 SRC_URI[sha256sum] = "c811db5add2c5f729944caf47c4e7a65dcaabb9461e472b578765dd7bf6d2d4c"
 UPSTREAM_CHECK_REGEX = "valgrind-(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-extended/bash/bash.inc b/poky/meta/recipes-extended/bash/bash.inc
index 2c3e605..e541161 100644
--- a/poky/meta/recipes-extended/bash/bash.inc
+++ b/poky/meta/recipes-extended/bash/bash.inc
@@ -74,7 +74,8 @@
 		mv ${D}${bindir}/bash ${D}${base_bindir}
 	fi
 }
-do_install:append:class-target () {
+
+fix_absolute_paths () {
 	# Clean buildhost references in bashbug
 	sed -i -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \
 		-e "s,-I${WORKDIR}/\S* ,,g" \
@@ -93,6 +94,14 @@
 		${D}${libdir}/bash/Makefile.inc
 }
 
+do_install:append:class-target () {
+	fix_absolute_paths
+}
+
+do_install:append:class-nativesdk () {
+	fix_absolute_paths
+}
+
 do_install_ptest () {
 	make INSTALL_TEST_DIR=${D}${PTEST_PATH}/tests install-test
 	cp ${B}/Makefile ${D}${PTEST_PATH}
@@ -102,6 +111,7 @@
 	install -D ${WORKDIR}/run-bash-ptests ${D}${PTEST_PATH}/run-bash-ptests
         sed -i -e 's/^Makefile/_Makefile/' -e "s,--sysroot=${STAGING_DIR_TARGET},,g" \
 	    -e 's|${DEBUG_PREFIX_MAP}||g' \
+	    -e 's|${BUILD_LDFLAGS}||g' \
 	    -e "s,${S},,g" -e "s,${B},,g" -e "s,${STAGING_DIR_NATIVE},,g" \
 	    -e 's:${HOSTTOOLS_DIR}/::g' \
 	    -e 's:${UNINATIVE_LOADER}:${base_bindir}/false:g' \
diff --git a/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.4.bb b/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.4.bb
index 16c7a60..aa526e9 100644
--- a/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.4.bb
+++ b/poky/meta/recipes-extended/libtirpc/libtirpc_1.3.4.bb
@@ -20,13 +20,11 @@
 
 inherit autotools pkgconfig
 
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[gssapi] = "--enable-gssapi,--disable-gssapi,krb5"
-
 PACKAGECONFIG ??= "\
 	${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} \
 "
 PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6"
+PACKAGECONFIG[gssapi] = "--enable-gssapi,--disable-gssapi,krb5"
 
 do_install:append() {
 	test -e ${D}${sysconfdir}/netconfig && chown root:root ${D}${sysconfdir}/netconfig
diff --git a/poky/meta/recipes-extended/ltp/ltp/0001-scenario_groups-default-remove-connectors.patch b/poky/meta/recipes-extended/ltp/ltp/0001-scenario_groups-default-remove-connectors.patch
new file mode 100644
index 0000000..4a50d1a
--- /dev/null
+++ b/poky/meta/recipes-extended/ltp/ltp/0001-scenario_groups-default-remove-connectors.patch
@@ -0,0 +1,34 @@
+From 14c710cae38aa96bd8d681e891b6a1d691f99988 Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Thu, 14 Mar 2024 09:47:10 +0800
+Subject: [PATCH] scenario_groups/default: remove connectors
+
+runtest/connectors was removed in 9b642d89c, thus update scenario_groups/default.
+
+Fixes: 9b642d89c ("runtest: Merge runtest/connectors to kernel_misc")
+Closes: https://github.com/linux-test-project/ltp/pull/1144
+
+Upstream-Status: Backport from
+[https://github.com/linux-test-project/ltp/commit/14c710ca]
+
+Reviewed-by: Petr Vorel <pvorel@suse.cz>
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ scenario_groups/default | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/scenario_groups/default b/scenario_groups/default
+index f17b2061a..ec77d8fb8 100644
+--- a/scenario_groups/default
++++ b/scenario_groups/default
+@@ -16,7 +16,6 @@ controllers
+ filecaps
+ cap_bounds
+ fcntl-locktests
+-connectors
+ power_management_tests
+ hugetlb
+ commands
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-extended/ltp/ltp_20240129.bb b/poky/meta/recipes-extended/ltp/ltp_20240129.bb
index acd857f..3e89695 100644
--- a/poky/meta/recipes-extended/ltp/ltp_20240129.bb
+++ b/poky/meta/recipes-extended/ltp/ltp_20240129.bb
@@ -28,6 +28,7 @@
 
 SRC_URI = "git://github.com/linux-test-project/ltp.git;branch=master;protocol=https \
            file://0001-Remove-OOM-tests-from-runtest-mm.patch \
+           file://0001-scenario_groups-default-remove-connectors.patch \
            "
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-extended/man-pages/man-pages/0001-GNUmakefile-use-env-from-PATH.patch b/poky/meta/recipes-extended/man-pages/man-pages/0001-GNUmakefile-use-env-from-PATH.patch
new file mode 100644
index 0000000..a644d24
--- /dev/null
+++ b/poky/meta/recipes-extended/man-pages/man-pages/0001-GNUmakefile-use-env-from-PATH.patch
@@ -0,0 +1,31 @@
+From fbf0544138af02be4d6dd3085e7ecf98ad060bb4 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Wed, 13 Mar 2024 17:30:02 +0100
+Subject: [PATCH] GNUmakefile: use env from PATH
+
+This allows using env from coreutils-native (rather than host env),
+which resolves the problem of missing -S option on distributions
+with much older coreutils such as Ubuntu 18.04.
+
+Once all autobuilder distros are newer than that, this patch
+can be dropped, together with corutils-native dependency.
+
+Upstream-Status: Inappropriate [made for obsolete host distros]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ GNUmakefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/GNUmakefile b/GNUmakefile
+index 1234194..65ba327 100644
+--- a/GNUmakefile
++++ b/GNUmakefile
+@@ -21,7 +21,7 @@
+ ########################################################################
+ 
+ 
+-SHELL := /usr/bin/env
++SHELL := env
+ .SHELLFLAGS := -S bash -Eeuo pipefail -c
+ 
+ 
diff --git a/poky/meta/recipes-extended/man-pages/man-pages_6.06.bb b/poky/meta/recipes-extended/man-pages/man-pages_6.06.bb
index fa2e6b2..0f091bb 100644
--- a/poky/meta/recipes-extended/man-pages/man-pages_6.06.bb
+++ b/poky/meta/recipes-extended/man-pages/man-pages_6.06.bb
@@ -19,12 +19,16 @@
                     "
 SRC_URI = "${KERNELORG_MIRROR}/linux/docs/${BPN}/${BP}.tar.gz \
            file://0001-man.ml-do-not-use-dev-stdin.patch \
+           file://0001-GNUmakefile-use-env-from-PATH.patch \
            "
 
 SRC_URI[sha256sum] = "006906e7be81a71c2d347809597bcb91485fa7fa488acdaa79e681ddfa894568"
 
 inherit manpages
 
+# can be dropped when ubuntu 18.04 is not in use anymore
+DEPENDS += "coreutils-native"
+
 MAN_PKG = "${PN}"
 
 PACKAGECONFIG ??= ""
diff --git a/poky/meta/recipes-extended/pam/libpam/0001-pam_namespace-include-stdint-h.patch b/poky/meta/recipes-extended/pam/libpam/0001-pam_namespace-include-stdint-h.patch
new file mode 100644
index 0000000..124e5f1
--- /dev/null
+++ b/poky/meta/recipes-extended/pam/libpam/0001-pam_namespace-include-stdint-h.patch
@@ -0,0 +1,42 @@
+From cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13 Mon Sep 17 00:00:00 2001
+From: Jacob Heider <jacob@pkgx.dev>
+Date: Wed, 17 Jan 2024 11:49:26 -0500
+Subject: [PATCH] pam_namespace: include stdint.h
+
+pam_namespace.c makes use of SIZE_MAX but doesn't include stdint.h,
+resulting in the following build failures on 1.6.0:
+
+  pam_namespace.c: In function 'process_line':
+  pam_namespace.c:649:41: error: 'SIZE_MAX' undeclared (first use in this function)
+    649 |         if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) {
+        |                                         ^~~~~~~~
+  pam_namespace.c:41:1: note: 'SIZE_MAX' is defined in header '<stdint.h>'; did you forget to '#include <stdint.h>'?
+     40 | #include "argv_parse.h"
+    +++ |+#include <stdint.h>
+     41 |
+  pam_namespace.c:649:41: note: each undeclared identifier is reported only once for each function it appears in
+    649 |         if (count > UINT_MAX || count > SIZE_MAX / sizeof(uid_t)) {
+        |                                         ^~~~~~~~
+
+Fixes: v1.6.0~100 ("pam_namespace: validate amount of uids in config")
+Resolves: https://github.com/linux-pam/linux-pam/issues/733
+
+Upstream-Status: Backport [https://github.com/linux-pam/linux-pam/commit/cc9d40b7cdbd3e15ccaa324a0dda1680ef9dea13]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ modules/pam_namespace/pam_namespace.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c
+index f72d67189..b16731c22 100644
+--- a/modules/pam_namespace/pam_namespace.c
++++ b/modules/pam_namespace/pam_namespace.c
+@@ -34,6 +34,8 @@
+ 
+ #define _ATFILE_SOURCE
+ 
++#include "config.h"
++#include <stdint.h>
+ #include "pam_cc_compat.h"
+ #include "pam_inline.h"
+ #include "pam_namespace.h"
diff --git a/poky/meta/recipes-extended/pam/libpam_1.5.3.bb b/poky/meta/recipes-extended/pam/libpam_1.5.3.bb
index 4dd9890..2a53bb4 100644
--- a/poky/meta/recipes-extended/pam/libpam_1.5.3.bb
+++ b/poky/meta/recipes-extended/pam/libpam_1.5.3.bb
@@ -24,6 +24,7 @@
            file://0001-examples-Replace-use-of-termio.h-with-termios.h.patch \
            file://run-ptest \
            file://pam-volatiles.conf \
+           file://0001-pam_namespace-include-stdint-h.patch \
            "
 
 SRC_URI[sha256sum] = "7ac4b50feee004a9fa88f1dfd2d2fa738a82896763050cd773b3c54b0a818283"
diff --git a/poky/meta/recipes-extended/shadow/files/0001-lib-copydir-copy_entry-use-temporary-stat-buffer.patch b/poky/meta/recipes-extended/shadow/files/0001-lib-copydir-copy_entry-use-temporary-stat-buffer.patch
new file mode 100644
index 0000000..d278a4c
--- /dev/null
+++ b/poky/meta/recipes-extended/shadow/files/0001-lib-copydir-copy_entry-use-temporary-stat-buffer.patch
@@ -0,0 +1,39 @@
+From af4b8cb780587aa736692a3baa76b60474f19c5d Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+Date: Mon, 18 Mar 2024 12:14:21 +0100
+Subject: [PATCH] lib/copydir:copy_entry(): use temporary stat buffer
+
+There are no guarantees that fstatat() does not clobber the stat
+buffer on errors.
+
+Use a temporary buffer so that the following code sees correct
+attributes of the source entry.
+
+Upstream-Status: Submitted [https://github.com/shadow-maint/shadow/pull/974]
+
+Signed-off-by: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
+---
+ lib/copydir.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: shadow-4.14.2/lib/copydir.c
+===================================================================
+--- shadow-4.14.2.orig/lib/copydir.c
++++ shadow-4.14.2/lib/copydir.c
+@@ -415,6 +415,7 @@ static int copy_entry (const struct path
+ {
+ 	int err = 0;
+ 	struct stat sb;
++	struct stat tmp_sb;
+ 	struct link_name *lp;
+ 	struct timespec mt[2];
+ 
+@@ -436,7 +437,7 @@ static int copy_entry (const struct path
+ 		 * If the destination already exists do nothing.
+ 		 * This is after the copy_dir above to still iterate into subdirectories.
+ 		 */
+-		if (fstatat(dst->dirfd, dst->name, &sb, AT_SYMLINK_NOFOLLOW) != -1) {
++		if (fstatat(dst->dirfd, dst->name, &tmp_sb, AT_SYMLINK_NOFOLLOW) != -1) {
+ 			return 0;
+ 		}
+ 
diff --git a/poky/meta/recipes-extended/shadow/shadow.inc b/poky/meta/recipes-extended/shadow/shadow.inc
index 16b99a0..40e6ab0 100644
--- a/poky/meta/recipes-extended/shadow/shadow.inc
+++ b/poky/meta/recipes-extended/shadow/shadow.inc
@@ -12,6 +12,7 @@
 
 GITHUB_BASE_URI = "https://github.com/shadow-maint/shadow/releases"
 SRC_URI = "${GITHUB_BASE_URI}/download/${PV}/${BP}.tar.gz \
+           file://0001-lib-copydir-copy_entry-use-temporary-stat-buffer.patch \
            ${@bb.utils.contains('PACKAGECONFIG', 'pam', '${PAM_SRC_URI}', '', d)} \
            file://useradd \
            "
@@ -159,7 +160,8 @@
         binaries=$(find ${D}${base_bindir}/ ${D}${base_sbindir}/ ${D}${bindir}/ ${D}${sbindir}/ -executable -type f)
         chrpath -k -r ${STAGING_DIR_NATIVE}/lib-shadow-deps $binaries
         mkdir -p ${D}${STAGING_DIR_NATIVE}/lib-shadow-deps/
-        install ${STAGING_LIBDIR_NATIVE}/libattr.so.* ${STAGING_LIBDIR_NATIVE}/libbsd.so.* ${STAGING_LIBDIR_NATIVE}/libmd.so.* ${D}${STAGING_DIR_NATIVE}/lib-shadow-deps/
+        libattr=${@bb.utils.contains('DISTRO_FEATURES', 'xattr', "${STAGING_LIBDIR_NATIVE}/libattr.so.*", '', d)}
+        install $libattr ${STAGING_LIBDIR_NATIVE}/libbsd.so.* ${STAGING_LIBDIR_NATIVE}/libmd.so.* ${D}${STAGING_DIR_NATIVE}/lib-shadow-deps/
         install ${D}${libdir}/*.so.* ${D}${STAGING_DIR_NATIVE}/lib-shadow-deps/
 }
 
diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_45.3.bb b/poky/meta/recipes-gnome/epiphany/epiphany_45.3.bb
deleted file mode 100644
index eec52e3..0000000
--- a/poky/meta/recipes-gnome/epiphany/epiphany_45.3.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "WebKit based web browser for GNOME"
-DESCRIPTION = "Epiphany is an open source web browser for the Linux desktop environment. \
-It provides a simple and easy-to-use internet browsing experience."
-HOMEPAGE = "https://wiki.gnome.org/Apps/Web"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/epiphany"
-LICENSE = "GPL-3.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-
-DEPENDS = " \
-          webkitgtk \
-          gcr \
-          gsettings-desktop-schemas \
-          nettle \
-          json-glib \
-          libadwaita \
-          libarchive \
-          libdazzle \
-          libhandy \
-          libportal \
-          libsoup \
-          glib-2.0-native \
-          coreutils-native \
-          desktop-file-utils-native \
-          "
-
-inherit gnomebase gsettings features_check gettext mime-xdg gtk-icon-cache
-REQUIRED_DISTRO_FEATURES = "x11 opengl"
-
-SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@oe.utils.trim_version("${PV}", 1)}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \
-           file://0002-help-meson.build-disable-the-use-of-yelp.patch \
-           file://migrator.patch \
-           file://distributor.patch \
-           "
-SRC_URI[archive.sha256sum] = "6c302e9bdd66290cb0e26f62843cd4c435a4955abdbb4f151f07dc80495d6730"
-
-# Developer mode enables debugging
-PACKAGECONFIG[developer-mode] = "-Ddeveloper_mode=true,-Ddeveloper_mode=false"
-
-FILES:${PN} += "${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers ${datadir}/metainfo"
-RDEPENDS:${PN} = "iso-codes adwaita-icon-theme gsettings-desktop-schemas"
-
-# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
-COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_46.0.bb b/poky/meta/recipes-gnome/epiphany/epiphany_46.0.bb
new file mode 100644
index 0000000..9052fe1
--- /dev/null
+++ b/poky/meta/recipes-gnome/epiphany/epiphany_46.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "WebKit based web browser for GNOME"
+DESCRIPTION = "Epiphany is an open source web browser for the Linux desktop environment. \
+It provides a simple and easy-to-use internet browsing experience."
+HOMEPAGE = "https://wiki.gnome.org/Apps/Web"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/epiphany"
+LICENSE = "GPL-3.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = " \
+          webkitgtk \
+          gcr \
+          gsettings-desktop-schemas \
+          nettle \
+          json-glib \
+          libadwaita \
+          libarchive \
+          libdazzle \
+          libhandy \
+          libportal \
+          libsoup \
+          glib-2.0-native \
+          coreutils-native \
+          desktop-file-utils-native \
+          "
+
+inherit gnomebase gsettings features_check gettext mime-xdg gtk-icon-cache
+REQUIRED_DISTRO_FEATURES = "x11 opengl"
+
+SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@oe.utils.trim_version("${PV}", 1)}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \
+           file://0002-help-meson.build-disable-the-use-of-yelp.patch \
+           file://migrator.patch \
+           file://distributor.patch \
+           "
+SRC_URI[archive.sha256sum] = "f4348f2cf51c07c0c106d130172d4d23f2cd4068771e1de007b758ca2ade5660"
+
+# Developer mode enables debugging
+PACKAGECONFIG[developer-mode] = "-Ddeveloper_mode=true,-Ddeveloper_mode=false"
+
+FILES:${PN} += "${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers ${datadir}/metainfo"
+RDEPENDS:${PN} = "iso-codes adwaita-icon-theme gsettings-desktop-schemas"
+
+# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
+COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
diff --git a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_45.0.bb b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_45.0.bb
deleted file mode 100644
index 657f9d6..0000000
--- a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_45.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "GNOME desktop-wide GSettings schemas"
-DESCRIPTION = "GSettings desktop-wide schemas contains a collection of \
-GSettings schemas for settings shared by various components of a desktop."
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas"
-BUGTRACKER = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas/issues"
-
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = "glib-2.0"
-
-
-inherit gnomebase gsettings gobject-introspection gettext
-
-SRC_URI[archive.sha256sum] = "365c8d04daf79b38c8b3dc9626349a024f9e4befdd31fede74b42f7a9fbe0ae2"
diff --git a/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_46.0.bb b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_46.0.bb
new file mode 100644
index 0000000..8260c3d
--- /dev/null
+++ b/poky/meta/recipes-gnome/gsettings-desktop-schemas/gsettings-desktop-schemas_46.0.bb
@@ -0,0 +1,15 @@
+SUMMARY = "GNOME desktop-wide GSettings schemas"
+DESCRIPTION = "GSettings desktop-wide schemas contains a collection of \
+GSettings schemas for settings shared by various components of a desktop."
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas"
+BUGTRACKER = "https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas/issues"
+
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "glib-2.0"
+
+
+inherit gnomebase gsettings gobject-introspection gettext
+
+SRC_URI[archive.sha256sum] = "493a46a1161b6388d57aa72f632a79ce96c42d5ffbd1d0b00f496ec5876f8575"
diff --git a/poky/meta/recipes-gnome/gtk+/gtk+3.inc b/poky/meta/recipes-gnome/gtk+/gtk+3.inc
index 4a04c06..e1603b4 100644
--- a/poky/meta/recipes-gnome/gtk+/gtk+3.inc
+++ b/poky/meta/recipes-gnome/gtk+/gtk+3.inc
@@ -33,7 +33,10 @@
 EXTRA_OEMESON = "-Dxinerama=no -Dtests=false"
 EXTRA_OEMESON:append:class-native = " -Ddemos=false -Dexamples=false"
 
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl wayland x11', d)}"
+PACKAGECONFIG ??= " \
+	${@bb.utils.filter('DISTRO_FEATURES', 'opengl x11', d)} \
+	${@bb.utils.contains('DISTRO_FEATURES', 'opengl wayland', 'wayland', '', d)} \
+"
 PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
 PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
 
diff --git a/poky/meta/recipes-gnome/gtk+/gtk4_4.12.5.bb b/poky/meta/recipes-gnome/gtk+/gtk4_4.12.5.bb
deleted file mode 100644
index a418ef8..0000000
--- a/poky/meta/recipes-gnome/gtk+/gtk4_4.12.5.bb
+++ /dev/null
@@ -1,131 +0,0 @@
-SUMMARY = "Multi-platform toolkit for creating GUIs"
-DESCRIPTION = "GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
-set of widgets, GTK is suitable for projects ranging from small one-off projects to complete application suites."
-HOMEPAGE = "http://www.gtk.org"
-BUGTRACKER = "https://bugzilla.gnome.org/"
-SECTION = "libs"
-
-DEPENDS = " \
-    atk \
-    cairo \
-    fribidi \
-    gdk-pixbuf \
-    gdk-pixbuf-native \
-    gi-docgen \
-    glib-2.0 \
-    graphene \
-    harfbuzz \
-    jpeg \
-    libepoxy \
-    libpng \
-    librsvg \
-    libxkbcommon \
-    pango \
-    tiff \
-"
-
-LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = " \
-    file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
-    file://gtk/gtk.h;endline=25;md5=61900d77e8d5bc67cf15ad93de9a3490 \
-    file://gdk/gdk.h;endline=25;md5=a0fb26c1f6b94e66d148279e192c333f \
-    file://tests/testgtk.c;endline=25;md5=49d06770681b8322466b52ed19d29fb2 \
-"
-
-MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
-
-UPSTREAM_CHECK_REGEX = "gtk-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar.xz"
-
-SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk/${MAJ_VER}/gtk-${PV}.tar.xz"
-SRC_URI[sha256sum] = "28b356d590ee68ef626e2ef9820b2dd21441484a9a042a5a3f0c40e9dfc4f4f8"
-
-S = "${WORKDIR}/gtk-${PV}"
-
-CVE_PRODUCT = "gnome:gtk"
-
-inherit meson gettext pkgconfig gi-docgen update-alternatives gsettings features_check gobject-introspection
-
-# TBD: nativesdk
-# gobject-introspection.bbclass pins introspection off for nativesk. As long as
-# we do not remove this wisdom or hack gtk4, it is not possible to build
-# nativesdk-gtk4
-BBCLASSEXTEND = "native"
-
-GSETTINGS_PACKAGE:class-native = ""
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "opengl"
-GTKDOC_MESON_OPTION = "documentation"
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-
-EXTRA_OEMESON = " -Dbuild-tests=false -Dbuild-testsuite=false -Dbuild-demos=false"
-
-PACKAGECONFIG ??= "gstreamer ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11 vulkan', d)}"
-PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
-
-PACKAGECONFIG[x11] = "-Dx11-backend=true,-Dx11-backend=false,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes xinerama"
-PACKAGECONFIG[wayland] = "-Dwayland-backend=true,-Dwayland-backend=false,wayland wayland-protocols virtual/egl virtual/libgles2 wayland-native"
-PACKAGECONFIG[cloudproviders] = "-Dcloudproviders=enabled,-Dcloudproviders=disabled,libcloudproviders"
-PACKAGECONFIG[cups] = "-Dprint-cups=enabled,-Dprint-cups=disabled,cups,cups gtk4-printbackend-cups"
-PACKAGECONFIG[colord] = "-Dcolord=enabled,-Dcolord=disabled,colord"
-PACKAGECONFIG[iso-codes] = ",,iso-codes,iso-codes"
-PACKAGECONFIG[ffmpeg] = "-Dmedia-ffmpeg=enabled,-Dmedia-ffmpeg=disabled,ffmpeg"
-# gtk4 wants gstreamer-player-1.0 -> gstreamer1.0-plugins-bad
-PACKAGECONFIG[gstreamer] = "-Dmedia-gstreamer=enabled,-Dmedia-gstreamer=disabled,gstreamer1.0-plugins-bad"
-PACKAGECONFIG[tracker] = "-Dtracker=enabled,-Dtracker=disabled,tracker,tracker-miners"
-PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled, vulkan-loader vulkan-headers shaderc-native"
-
-LIBV = "4.0.0"
-
-FILES:${PN}:append = " \
-    ${datadir}/glib-2.0/schemas/ \
-    ${datadir}/gtk-4.0/emoji/ \
-    ${datadir}/metainfo/ \
-    ${datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.* \
-    ${libdir}/gtk-4.0/${LIBV}/media \
-    ${bindir}/gtk4-update-icon-cache \
-    ${bindir}/gtk4-launch \
-"
-
-FILES:${PN}-dev += " \
-    ${datadir}/gtk-4.0/gtk4builder.rng \
-    ${datadir}/gtk-4.0/include \
-    ${datadir}/gtk-4.0/valgrind \
-    ${datadir}/gettext/its \
-    ${bindir}/gtk4-builder-tool \
-    ${bindir}/gtk4-encode-symbolic-svg \
-    ${bindir}/gtk4-query-settings \
-"
-
-GTKBASE_RRECOMMENDS ?= " \
-    liberation-fonts \
-    gdk-pixbuf-loader-png \
-    gdk-pixbuf-loader-jpeg \
-    gdk-pixbuf-loader-gif \
-    gdk-pixbuf-loader-xpm \
-    shared-mime-info \
-    adwaita-icon-theme-symbolic \
-"
-
-GTKBASE_RRECOMMENDS:class-native ?= ""
-
-GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
-
-RRECOMMENDS:${PN} = "${GTKBASE_RRECOMMENDS}"
-RRECOMMENDS:${PN}:libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
-RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}"
-
-PACKAGES_DYNAMIC += "^gtk4-printbackend-.*"
-python populate_packages:prepend () {
-    import os.path
-
-    gtk_libdir = d.expand('${libdir}/gtk-4.0/${LIBV}')
-    printmodules_root = os.path.join(gtk_libdir, 'printbackends');
-
-    do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk4-printbackend-%s', 'GTK printbackend module for %s')
-
-    if (d.getVar('DEBIAN_NAMES')):
-        d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-4.0')
-}
diff --git a/poky/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb b/poky/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
new file mode 100644
index 0000000..ce73376
--- /dev/null
+++ b/poky/meta/recipes-gnome/gtk+/gtk4_4.14.1.bb
@@ -0,0 +1,130 @@
+SUMMARY = "Multi-platform toolkit for creating GUIs"
+DESCRIPTION = "GTK is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \
+set of widgets, GTK is suitable for projects ranging from small one-off projects to complete application suites."
+HOMEPAGE = "http://www.gtk.org"
+BUGTRACKER = "https://bugzilla.gnome.org/"
+SECTION = "libs"
+
+DEPENDS = " \
+    atk \
+    cairo \
+    fribidi \
+    gdk-pixbuf \
+    gdk-pixbuf-native \
+    gi-docgen \
+    glib-2.0 \
+    graphene \
+    harfbuzz \
+    jpeg \
+    libepoxy \
+    libpng \
+    librsvg \
+    libxkbcommon \
+    pango \
+    tiff \
+"
+
+LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=5f30f0716dfdd0d91eb439ebec522ec2 \
+    file://gtk/gtk.h;endline=25;md5=61900d77e8d5bc67cf15ad93de9a3490 \
+    file://gdk/gdk.h;endline=25;md5=a0fb26c1f6b94e66d148279e192c333f \
+    file://tests/testgtk.c;endline=25;md5=49d06770681b8322466b52ed19d29fb2 \
+"
+
+MAJ_VER = "${@oe.utils.trim_version("${PV}", 2)}"
+
+UPSTREAM_CHECK_REGEX = "gtk-(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)\.tar.xz"
+
+SRC_URI = "http://ftp.gnome.org/pub/gnome/sources/gtk/${MAJ_VER}/gtk-${PV}.tar.xz"
+SRC_URI[sha256sum] = "fcefb3f132f8cc4711a9efa5b353c9ae9bb5eeff0246fa74dbc2f2f839b9e308"
+
+S = "${WORKDIR}/gtk-${PV}"
+
+CVE_PRODUCT = "gnome:gtk"
+
+inherit meson gettext pkgconfig gi-docgen update-alternatives gsettings features_check gobject-introspection
+
+# TBD: nativesdk
+# gobject-introspection.bbclass pins introspection off for nativesk. As long as
+# we do not remove this wisdom or hack gtk4, it is not possible to build
+# nativesdk-gtk4
+BBCLASSEXTEND = "native"
+
+GSETTINGS_PACKAGE:class-native = ""
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "opengl"
+GTKDOC_MESON_OPTION = "documentation"
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+
+EXTRA_OEMESON = " -Dbuild-tests=false -Dbuild-testsuite=false -Dbuild-demos=false"
+
+PACKAGECONFIG ??= "gstreamer ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11 vulkan', d)}"
+PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+
+PACKAGECONFIG[x11] = "-Dx11-backend=true,-Dx11-backend=false,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes xinerama"
+PACKAGECONFIG[wayland] = "-Dwayland-backend=true,-Dwayland-backend=false,wayland wayland-protocols virtual/egl virtual/libgles2 wayland-native"
+PACKAGECONFIG[cloudproviders] = "-Dcloudproviders=enabled,-Dcloudproviders=disabled,libcloudproviders"
+PACKAGECONFIG[cups] = "-Dprint-cups=enabled,-Dprint-cups=disabled,cups,cups gtk4-printbackend-cups"
+PACKAGECONFIG[colord] = "-Dcolord=enabled,-Dcolord=disabled,colord"
+PACKAGECONFIG[iso-codes] = ",,iso-codes,iso-codes"
+# gtk4 wants gstreamer-player-1.0 -> gstreamer1.0-plugins-bad
+PACKAGECONFIG[gstreamer] = "-Dmedia-gstreamer=enabled,-Dmedia-gstreamer=disabled,gstreamer1.0-plugins-bad"
+PACKAGECONFIG[tracker] = "-Dtracker=enabled,-Dtracker=disabled,tracker,tracker-miners"
+PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled, vulkan-loader vulkan-headers shaderc-native"
+
+LIBV = "4.0.0"
+
+FILES:${PN}:append = " \
+    ${datadir}/glib-2.0/schemas/ \
+    ${datadir}/gtk-4.0/emoji/ \
+    ${datadir}/metainfo/ \
+    ${datadir}/icons/hicolor/*/apps/org.gtk.PrintEditor4*.* \
+    ${libdir}/gtk-4.0/${LIBV}/media \
+    ${bindir}/gtk4-update-icon-cache \
+    ${bindir}/gtk4-launch \
+"
+
+FILES:${PN}-dev += " \
+    ${datadir}/gtk-4.0/gtk4builder.rng \
+    ${datadir}/gtk-4.0/include \
+    ${datadir}/gtk-4.0/valgrind \
+    ${datadir}/gettext/its \
+    ${bindir}/gtk4-builder-tool \
+    ${bindir}/gtk4-encode-symbolic-svg \
+    ${bindir}/gtk4-query-settings \
+"
+
+GTKBASE_RRECOMMENDS ?= " \
+    liberation-fonts \
+    gdk-pixbuf-loader-png \
+    gdk-pixbuf-loader-jpeg \
+    gdk-pixbuf-loader-gif \
+    gdk-pixbuf-loader-xpm \
+    shared-mime-info \
+    adwaita-icon-theme-symbolic \
+"
+
+GTKBASE_RRECOMMENDS:class-native ?= ""
+
+GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1"
+
+RRECOMMENDS:${PN} = "${GTKBASE_RRECOMMENDS}"
+RRECOMMENDS:${PN}:libc-glibc = "${GTKGLIBC_RRECOMMENDS}"
+RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}"
+
+PACKAGES_DYNAMIC += "^gtk4-printbackend-.*"
+python populate_packages:prepend () {
+    import os.path
+
+    gtk_libdir = d.expand('${libdir}/gtk-4.0/${LIBV}')
+    printmodules_root = os.path.join(gtk_libdir, 'printbackends');
+
+    do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk4-printbackend-%s', 'GTK printbackend module for %s')
+
+    if (d.getVar('DEBIAN_NAMES')):
+        d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-4.0')
+}
diff --git a/poky/meta/recipes-gnome/libadwaita/libadwaita_1.4.3.bb b/poky/meta/recipes-gnome/libadwaita/libadwaita_1.4.3.bb
deleted file mode 100644
index e3f849a..0000000
--- a/poky/meta/recipes-gnome/libadwaita/libadwaita_1.4.3.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Building blocks for modern GNOME applications"
-HOMEPAGE = "https://gitlab.gnome.org/GNOME/libadwaita"
-LICENSE="LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-
-DEPENDS = " \
-    gtk4 \
-    appstream \
-"
-
-inherit gnomebase gobject-introspection gi-docgen vala features_check
-
-SRC_URI[archive.sha256sum] = "ae9622222b0eb18e23675655ad2ba01741db4d8655a796f4cf077b093e2f5841"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-GIR_MESON_ENABLE_FLAG = 'enabled'
-GIR_MESON_DISABLE_FLAG = 'disabled'
-GTKDOC_MESON_OPTION = 'gtk_doc'
-
-PACKAGECONFIG[examples] = "-Dexamples=true,-Dexamples=false"
-
-FILES:${PN} += "${datadir}/metainfo"
-
-EXTRA_OEMESON += "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dvapi=true', '-Dvapi=false', d)}"
diff --git a/poky/meta/recipes-gnome/libadwaita/libadwaita_1.5.0.bb b/poky/meta/recipes-gnome/libadwaita/libadwaita_1.5.0.bb
new file mode 100644
index 0000000..b0b1e45
--- /dev/null
+++ b/poky/meta/recipes-gnome/libadwaita/libadwaita_1.5.0.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Building blocks for modern GNOME applications"
+HOMEPAGE = "https://gitlab.gnome.org/GNOME/libadwaita"
+LICENSE="LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+
+DEPENDS = " \
+    gtk4 \
+    appstream \
+"
+
+inherit gnomebase gobject-introspection gi-docgen vala features_check
+
+SRC_URI[archive.sha256sum] = "fd92287df9bb95c963654fb6e70d3e082e2bcb37b147e0e3c905567167993783"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_OPTION = 'gtk_doc'
+
+PACKAGECONFIG[examples] = "-Dexamples=true,-Dexamples=false"
+
+FILES:${PN} += "${datadir}/metainfo"
+
+EXTRA_OEMESON += "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dvapi=true', '-Dvapi=false', d)}"
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch b/poky/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch
new file mode 100644
index 0000000..f6d95c8
--- /dev/null
+++ b/poky/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch
@@ -0,0 +1,56 @@
+From fe4600de549549fbb3033fc1b37904ba6b3fe2af Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@t-online.de>
+Date: Fri, 8 Mar 2024 15:53:11 +0100
+Subject: [PATCH] Revert "meson: do not pull in clc for clover"
+
+This reverts commit 815a6647eb1383e9dc704ffcc266d85f3b13338a.
+Upstream-Status: Inappropriate [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27783/diffs?commit_id=a976f2c9f0c07f9e06cc9affd9124b45bc60c2bd]
+
+Once the merge request above was added, it will only be possible to provide opencl spir-v with gallium-rusticl=true. This is not yet supported in the mesa recipe.
+For now reverting this commit allows to still use clover with opencl-spirv, which would otherwise be broken starting from mesa 24.0.2.
+
+After it was merged, this patch needs to be removed and rusticl support will be required
+
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+---
+ meson.build              | 3 ++-
+ src/compiler/meson.build | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 25e92ea5f95..3956e19c08f 100644
+--- a/meson.build
++++ b/meson.build
+@@ -818,6 +818,7 @@ if _opencl != 'disabled'
+     error('The Clover OpenCL state tracker requires rtti')
+   endif
+ 
++  with_clc = true
+   with_gallium_opencl = true
+   with_opencl_icd = _opencl == 'icd'
+ else
+@@ -842,7 +843,7 @@ if with_gallium_rusticl
+ endif
+ 
+ dep_clc = null_dep
+-if with_gallium_opencl or with_clc
++if with_clc
+   dep_clc = dependency('libclc')
+ endif
+ 
+diff --git a/src/compiler/meson.build b/src/compiler/meson.build
+index 8d73544c6d8..1dae56d1b2b 100644
+--- a/src/compiler/meson.build
++++ b/src/compiler/meson.build
+@@ -79,7 +79,7 @@ subdir('nir')
+ 
+ subdir('spirv')
+ 
+-if with_clc
++if with_opencl_spirv
+   subdir('clc')
+ endif
+ if with_gallium
+-- 
+2.44.0
+
diff --git a/poky/meta/recipes-graphics/mesa/files/0001-gallium-Fix-build-with-llvm-17.patch b/poky/meta/recipes-graphics/mesa/files/0001-gallium-Fix-build-with-llvm-17.patch
deleted file mode 100644
index ceb0153..0000000
--- a/poky/meta/recipes-graphics/mesa/files/0001-gallium-Fix-build-with-llvm-17.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 3e1e5c475b52651657c906e6b03ee13567cccdd7 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 23 Jun 2023 01:20:38 -0700
-Subject: [PATCH] gallium: Fix build with llvm 17
-
-These headers are not available for C files in llvm 17+
-and they seem to be not needed to compile after all with llvm 17
-so add conditions to exclude them for llvm >= 17
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23827]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/gallium/auxiliary/gallivm/lp_bld_init.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
-index cd2108f..b1a4d03 100644
---- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
-+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
-@@ -46,15 +46,19 @@
- #if GALLIVM_USE_NEW_PASS == 1
- #include <llvm-c/Transforms/PassBuilder.h>
- #elif GALLIVM_HAVE_CORO == 1
-+#if LLVM_VERSION_MAJOR < 17
- #include <llvm-c/Transforms/Scalar.h>
--#if LLVM_VERSION_MAJOR >= 7
-+#endif
-+#if LLVM_VERSION_MAJOR >= 7 && LLVM_VERSION_MAJOR < 17
- #include <llvm-c/Transforms/Utils.h>
- #endif
- #if LLVM_VERSION_MAJOR <= 8 && (DETECT_ARCH_AARCH64 || DETECT_ARCH_ARM || DETECT_ARCH_S390 || DETECT_ARCH_MIPS64)
- #include <llvm-c/Transforms/IPO.h>
- #endif
-+#if LLVM_VERSION_MAJOR < 17
- #include <llvm-c/Transforms/Coroutines.h>
- #endif
-+#endif
- 
- unsigned gallivm_perf = 0;
- 
diff --git a/poky/meta/recipes-graphics/mesa/mesa.inc b/poky/meta/recipes-graphics/mesa/mesa.inc
index 12d7a18..6e96190 100644
--- a/poky/meta/recipes-graphics/mesa/mesa.inc
+++ b/poky/meta/recipes-graphics/mesa/mesa.inc
@@ -17,9 +17,9 @@
 SRC_URI = "https://mesa.freedesktop.org/archive/mesa-${PV}.tar.xz \
            file://0001-meson.build-check-for-all-linux-host_os-combinations.patch \
            file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
-           file://0001-gallium-Fix-build-with-llvm-17.patch \
            file://0001-drisw-fix-build-without-dri3.patch \
            file://0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch \
+           file://0001-Revert-meson-do-not-pull-in-clc-for-clover.patch \
 "
 
 SRC_URI[sha256sum] = "94e28a8edad06d8ed2b83eb53f253b9eb5aa62c3080f939702e1b3039b56c9e8"
@@ -113,6 +113,7 @@
 VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
 VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}"
 VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',swrast', '', d)}"
+VULKAN_DRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}"
 PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers"
 
 # mesa development and testing tools support, per driver
@@ -122,6 +123,7 @@
 TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
 TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}"
 TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
+TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination', '', d)}"
 
 # dependencies for tools.
 TOOLS_DEPS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ' ncurses libxml2 ', '', d)}"
@@ -189,6 +191,8 @@
 PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial"
 PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau"
 
+PACKAGECONFIG[imagination] = "-Dimagination-srv=true,-Dimagination-srv=false"
+
 PACKAGECONFIG[lima] = ""
 GALLIUMDRIVERS:append ="${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}"
 
@@ -327,7 +331,7 @@
 PACKAGES_DYNAMIC:class-native = "^mesa-driver-.*-native"
 
 FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d"
-FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${datadir}/vulkan"
+FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan"
 FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
 FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d"
 FILES:libgbm = "${libdir}/libgbm.so.*"
diff --git a/poky/meta/recipes-graphics/piglit/piglit/0001-utils-Include-libgen.h-on-musl-linux-systems.patch b/poky/meta/recipes-graphics/piglit/piglit/0001-utils-Include-libgen.h-on-musl-linux-systems.patch
index e180664..2875dd5 100644
--- a/poky/meta/recipes-graphics/piglit/piglit/0001-utils-Include-libgen.h-on-musl-linux-systems.patch
+++ b/poky/meta/recipes-graphics/piglit/piglit/0001-utils-Include-libgen.h-on-musl-linux-systems.patch
@@ -1,28 +1,83 @@
-From 608cdeddc8e8a679b195927c4d34dc8d93142a91 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 13 Feb 2024 08:53:37 -0800
-Subject: [PATCH] utils: Include libgen.h on musl/linux systems
+From 6c852e6ac292008137a6f3a8aa908090bb5b4b11 Mon Sep 17 00:00:00 2001
+From: Erik Faye-Lund <erik.faye-lund@collabora.com>
+Date: Tue, 19 Mar 2024 16:34:02 +0100
+Subject: [PATCH] properly check for libgen.h
 
-musl does not provide GNU basename like string.h on glibc based systems
-does, it does provide the POSIX compliant basename function therefore
-allow to include libgen.h on non-glibc based linux systems
+Some users are reporting that basename is not available when building on
+Linux with musl libc. And since the POSIX spec[1] says that basename is
+defined in libgen.h, we should include that when available.
 
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/877]
+So let's properly detect the header, and include it if it exists. This
+should hopefully make things a bit more robust.
+
+Since we're also including this from the CL program-tester, let's
+rearrange the includes a bit so we know that config.h has been included.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/888]
+Reviewed-by: David Heidelberg <david.heidelberg@collabora.com>
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 ---
- tests/util/piglit-util.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ CMakeLists.txt                    | 1 +
+ tests/cl/program/program-tester.c | 5 ++++-
+ tests/util/config.h.in            | 1 +
+ tests/util/piglit-util.h          | 4 ++--
+ 4 files changed, 8 insertions(+), 3 deletions(-)
 
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index dd2bf67125..5563fe0e20 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -492,6 +492,7 @@ check_include_file(unistd.h    HAVE_UNISTD_H)
+ check_include_file(fcntl.h     HAVE_FCNTL_H)
+ check_include_file(linux/sync_file.h HAVE_LINUX_SYNC_FILE_H)
+ check_include_file(endian.h    HAVE_ENDIAN_H)
++check_include_file(libgen.h    HAVE_LIBGEN_H)
+ 
+ if(DEFINED PIGLIT_INSTALL_VERSION)
+ 	set(PIGLIT_INSTALL_VERSION_SUFFIX
+diff --git a/tests/cl/program/program-tester.c b/tests/cl/program/program-tester.c
+index 97fe64906d..e47fb5aacc 100644
+--- a/tests/cl/program/program-tester.c
++++ b/tests/cl/program/program-tester.c
+@@ -31,10 +31,13 @@
+ #include <inttypes.h>
+ #include <math.h>
+ #include <regex.h>
+-#include <libgen.h>
+ 
+ #include "piglit-framework-cl-program.h"
+ 
++#ifdef HAVE_LIBGEN_H
++#include <libgen.h>
++#endif
++
+ /* Regexes */
+ 
+ /*
+diff --git a/tests/util/config.h.in b/tests/util/config.h.in
+index 8ed5af1709..437eb91418 100644
+--- a/tests/util/config.h.in
++++ b/tests/util/config.h.in
+@@ -16,3 +16,4 @@
+ #cmakedefine HAVE_SYS_RESOURCE_H 1
+ #cmakedefine HAVE_UNISTD_H 1
+ #cmakedefine HAVE_ENDIAN_H 1
++#cmakedefine HAVE_LIBGEN_H 1
 diff --git a/tests/util/piglit-util.h b/tests/util/piglit-util.h
-index 4d3606c70..fdfd903b3 100644
+index 4d3606c708..de999980b6 100644
 --- a/tests/util/piglit-util.h
 +++ b/tests/util/piglit-util.h
-@@ -52,7 +52,7 @@ extern "C" {
+@@ -52,8 +52,8 @@ extern "C" {
  #include <math.h>
  #include <float.h>
  
 -#if defined(__APPLE__) || defined(__MINGW32__)
-+#if defined(__APPLE__) || defined(__MINGW32__) || (defined(__linux__) && !defined(__GLIBC__))
- #  include "libgen.h" // for basename
+-#  include "libgen.h" // for basename
++#ifdef HAVE_LIBGEN_H
++#  include <libgen.h> // for basename
  #elif defined(_MSC_VER)
  
+ static inline char *
+-- 
+GitLab
+
diff --git a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.33.bb b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.33.bb
index c8875cc..074ea36 100644
--- a/poky/meta/recipes-graphics/wayland/wayland-protocols_1.33.bb
+++ b/poky/meta/recipes-graphics/wayland/wayland-protocols_1.33.bb
@@ -12,7 +12,7 @@
 SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/${PV}/downloads/wayland-protocols-${PV}.tar.xz"
 SRC_URI[sha256sum] = "94f0c50b090d6e61a03f62048467b19abbe851be4e11ae7b36f65f8b98c3963a"
 
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tags"
 
 inherit meson pkgconfig allarch
 
diff --git a/poky/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb b/poky/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb
index 657f67f..878c7a2 100644
--- a/poky/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb
+++ b/poky/meta/recipes-graphics/wayland/wayland-utils_1.2.0.bb
@@ -12,7 +12,7 @@
 SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/releases/${PV}/downloads/${BPN}-${PV}.tar.xz"
 SRC_URI[sha256sum] = "d9278c22554586881802540751bcc42569262bf80cd9ac9b0fd12ff4bd09a9e4"
 
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-utils/-/tags"
 
 inherit meson pkgconfig
 
diff --git a/poky/meta/recipes-graphics/wayland/wayland_1.22.0.bb b/poky/meta/recipes-graphics/wayland/wayland_1.22.0.bb
index 17e4a0c..6aa7606 100644
--- a/poky/meta/recipes-graphics/wayland/wayland_1.22.0.bb
+++ b/poky/meta/recipes-graphics/wayland/wayland_1.22.0.bb
@@ -19,7 +19,7 @@
            "
 SRC_URI[sha256sum] = "1540af1ea698a471c2d8e9d288332c7e0fd360c8f1d12936ebb7e7cbc2425842"
 
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland/-/tags"
 UPSTREAM_CHECK_REGEX = "wayland-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
 
 inherit meson pkgconfig ptest
diff --git a/poky/meta/recipes-graphics/wayland/weston_13.0.0.bb b/poky/meta/recipes-graphics/wayland/weston_13.0.0.bb
index c74f471..b728bd0 100644
--- a/poky/meta/recipes-graphics/wayland/weston_13.0.0.bb
+++ b/poky/meta/recipes-graphics/wayland/weston_13.0.0.bb
@@ -16,7 +16,7 @@
 
 SRC_URI[sha256sum] = "52ff1d4aa2394a2e416c85a338b627ce97fa71d43eb762fd4aaf145d36fc795a"
 
-UPSTREAM_CHECK_URI = "https://wayland.freedesktop.org/releases.html"
+UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/weston/-/tags"
 UPSTREAM_CHECK_REGEX = "weston-(?P<pver>\d+\.\d+\.(?!9\d+)\d+)"
 
 inherit meson pkgconfig useradd
diff --git a/poky/meta/recipes-graphics/xorg-lib/pixman_0.42.2.bb b/poky/meta/recipes-graphics/xorg-lib/pixman_0.42.2.bb
index 8a93f8c..23ae0cb 100644
--- a/poky/meta/recipes-graphics/xorg-lib/pixman_0.42.2.bb
+++ b/poky/meta/recipes-graphics/xorg-lib/pixman_0.42.2.bb
@@ -40,6 +40,8 @@
 EXTRA_OEMESON:append:armv7a = "${@bb.utils.contains("TUNE_FEATURES","neon",""," -Dneon=disabled",d)}"
 EXTRA_OEMESON:append:armv7ve = "${@bb.utils.contains("TUNE_FEATURES","neon",""," -Dneon=disabled",d)}"
 
+EXTRA_OEMESON:append:class-native = " -Dopenmp=disabled"
+
 BBCLASSEXTEND = "native nativesdk"
 
 CVE_STATUS[CVE-2023-37769] = "not-applicable-config: stress-test is an uninstalled test"
diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20240220.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20240220.bb
deleted file mode 100644
index 1fd44f4..0000000
--- a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20240220.bb
+++ /dev/null
@@ -1,1579 +0,0 @@
-SUMMARY = "Firmware files for use with Linux kernel"
-HOMEPAGE = "https://www.kernel.org/"
-DESCRIPTION = "Linux firmware is a package distributed alongside the Linux kernel \
-that contains firmware binary blobs necessary for partial or full functionality \
-of certain hardware devices."
-SECTION = "kernel"
-
-LICENSE = "\
-    Firmware-Abilis \
-    & Firmware-adsp_sst \
-    & Firmware-agere \
-    & Firmware-amdgpu \
-    & Firmware-amd-ucode \
-    & Firmware-amlogic_vdec \
-    & Firmware-amphion_vpu \
-    & Firmware-atheros_firmware \
-    & Firmware-atmel \
-    & Firmware-broadcom_bcm43xx \
-    & Firmware-ca0132 \
-    & Firmware-cavium \
-    & Firmware-chelsio_firmware \
-    & Firmware-cirrus \
-    & Firmware-cnm \
-    & Firmware-cw1200 \
-    & Firmware-cypress \
-    & Firmware-dib0700 \
-    & Firmware-e100 \
-    & Firmware-ene_firmware \
-    & Firmware-fw_sst_0f28 \
-    & Firmware-go7007 \
-    & Firmware-GPLv2 \
-    & Firmware-hfi1_firmware \
-    & Firmware-i915 \
-    & Firmware-ibt_firmware \
-    & Firmware-ice \
-    & Firmware-ice_enhanced \
-    & Firmware-it913x \
-    & Firmware-iwlwifi_firmware \
-    & Firmware-IntcSST2 \
-    & Firmware-kaweth \
-    & Firmware-linaro \
-    & Firmware-Lontium \
-    & Firmware-Marvell \
-    & Firmware-mediatek \
-    & Firmware-microchip \
-    & Firmware-moxa \
-    & Firmware-myri10ge_firmware \
-    & Firmware-netronome \
-    & Firmware-nvidia \
-    & Firmware-nxp \
-    & Firmware-nxp_mc_firmware \
-    & Firmware-OLPC \
-    & Firmware-ath9k-htc \
-    & Firmware-phanfw \
-    & Firmware-powervr \
-    & Firmware-qat \
-    & Firmware-qcom \
-    & Firmware-qcom-yamato \
-    & Firmware-qla1280 \
-    & Firmware-qla2xxx \
-    & Firmware-qualcommAthos_ar3k \
-    & Firmware-qualcommAthos_ath10k \
-    & Firmware-r8a779x_usb3 \
-    & Firmware-radeon \
-    & Firmware-ralink_a_mediatek_company_firmware \
-    & Firmware-ralink-firmware \
-    & Firmware-rockchip \
-    & Firmware-rtlwifi_firmware \
-    & Firmware-imx-sdma_firmware \
-    & Firmware-siano \
-    & Firmware-ti-connectivity \
-    & Firmware-ti-keystone \
-    & Firmware-ueagle-atm4-firmware \
-    & Firmware-via_vt6656 \
-    & Firmware-wl1251 \
-    & Firmware-xc4000 \
-    & Firmware-xc5000 \
-    & Firmware-xc5000c \
-    & WHENCE \
-"
-
-LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
-                    file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
-                    file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
-                    file://LICENSE.amdgpu;md5=a2589a05ea5b6bd2b7f4f623c7e7a649 \
-                    file://LICENSE.amd-ucode;md5=6ca90c57f7b248de1e25c7f68ffc4698 \
-                    file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
-                    file://LICENSE.amphion_vpu;md5=2bcdc00527b2d0542bd92b52aaec2b60 \
-                    file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \
-                    file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \
-                    file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \
-                    file://LICENCE.ca0132;md5=209b33e66ee5be0461f13d31da392198 \
-                    file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \
-                    file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \
-                    file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \
-                    file://LICENSE.cirrus;md5=662ea2c1a8888f7d79ed7f27c27472e1 \
-                    file://LICENCE.cnm;md5=93b67e6bac7f8fec22b96b8ad0a1a9d0 \
-                    file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \
-                    file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \
-                    file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \
-                    file://LICENCE.e100;md5=ec0f84136766df159a3ae6d02acdf5a8 \
-                    file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \
-                    file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \
-                    file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \
-                    file://GPL-2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \
-                    file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \
-                    file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \
-                    file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \
-                    file://LICENSE.ice_enhanced;md5=f305cfc31b64f95f774f9edd9df0224d \
-                    file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
-                    file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \
-                    file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \
-                    file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \
-                    file://LICENCE.linaro;md5=936d91e71cf9cd30e733db4bf11661cc \
-                    file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \
-                    file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \
-                    file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \
-                    file://LICENCE.microchip;md5=db753b00305675dfbf120e3f24a47277 \
-                    file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \
-                    file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \
-                    file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \
-                    file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \
-                    file://LICENCE.NXP;md5=58bb8ba632cd729b9ba6183bc6aed36f \
-                    file://LICENSE.nxp;md5=cca321ca1524d6a1e4fed87486cd82dc \
-                    file://LICENSE.nxp_mc_firmware;md5=9dc97e4b279b3858cae8879ae2fe5dd7 \
-                    file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \
-                    file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \
-                    file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \
-                    file://LICENSE.powervr;md5=83045ed2a2cda15b4eaff682c98c9533 \
-                    file://LICENCE.qat_firmware;md5=72de83dfd9b87be7685ed099a39fbea4 \
-                    file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \
-                    file://LICENSE.qcom_yamato;md5=d0de0eeccaf1843a850bf7a6777eec5c \
-                    file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \
-                    file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \
-                    file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \
-                    file://LICENSE.QualcommAtheros_ath10k;md5=cb42b686ee5f5cb890275e4321db60a8 \
-                    file://LICENCE.r8a779x_usb3;md5=4c1671656153025d7076105a5da7e498 \
-                    file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \
-                    file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \
-                    file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \
-                    file://LICENCE.rockchip;md5=5fd70190c5ed39734baceada8ecced26 \
-                    file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
-                    file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \
-                    file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \
-                    file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \
-                    file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \
-                    file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \
-                    file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \
-                    file://LICENCE.wl1251;md5=ad3f81922bb9e197014bb187289d3b5b \
-                    file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
-                    file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
-                    file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
-                    file://WHENCE;md5=${WHENCE_CHKSUM} \
-                    "
-# WHENCE checksum is defined separately to ease overriding it if
-# class-devupstream is selected.
-WHENCE_CHKSUM  = "a344e6c28970fc7daafa81c10247aeb6"
-
-# These are not common licenses, set NO_GENERIC_LICENSE for them
-# so that the license files will be copied from fetched source
-NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis"
-NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst"
-NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere"
-NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu"
-NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode"
-NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec"
-NO_GENERIC_LICENSE[Firmware-amphion_vpu] = "LICENSE.amphion_vpu"
-NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware"
-NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel"
-NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx"
-NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132"
-NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence"
-NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium"
-NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware"
-NO_GENERIC_LICENSE[Firmware-cirrus] = "LICENSE.cirrus"
-NO_GENERIC_LICENSE[Firmware-cnm] = "LICENCE.cnm"
-NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200"
-NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress"
-NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700"
-NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100"
-NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware"
-NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28"
-NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007"
-NO_GENERIC_LICENSE[Firmware-GPLv2] = "GPL-2"
-NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware"
-NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915"
-NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware"
-NO_GENERIC_LICENSE[Firmware-ice] = "LICENSE.ice"
-NO_GENERIC_LICENSE[Firmware-ice_enhanced] = "LICENSE.ice_enhanced"
-NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2"
-NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x"
-NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware"
-NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth"
-NO_GENERIC_LICENSE[Firmware-linaro] = "LICENCE.linaro"
-NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium"
-NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell"
-NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek"
-NO_GENERIC_LICENSE[Firmware-microchip] = "LICENCE.microchip"
-NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa"
-NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware"
-NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome"
-NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia"
-NO_GENERIC_LICENSE[Firmware-nxp] = "LICENSE.nxp"
-NO_GENERIC_LICENSE[Firmware-nxp_mc_firmware] = "LICENSE.nxp_mc_firmware"
-NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC"
-NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware"
-NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw"
-NO_GENERIC_LICENSE[Firmware-powervr] = "LICENSE.powervr"
-NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware"
-NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom"
-NO_GENERIC_LICENSE[Firmware-qcom-yamato] = "LICENSE.qcom_yamato"
-NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280"
-NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx"
-NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k"
-NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath10k] = "LICENSE.QualcommAtheros_ath10k"
-NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3"
-NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon"
-NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware"
-NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt"
-NO_GENERIC_LICENSE[Firmware-rockchip] = "LICENCE.rockchip"
-NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt"
-NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano"
-NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware"
-NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity"
-NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone"
-NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware"
-NO_GENERIC_LICENSE[Firmware-via_vt6656] = "LICENCE.via_vt6656"
-NO_GENERIC_LICENSE[Firmware-wl1251] = "LICENCE.wl1251"
-NO_GENERIC_LICENSE[Firmware-xc4000] = "LICENCE.xc4000"
-NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000"
-NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c"
-NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
-
-PE = "1"
-
-SRC_URI = "\
-  ${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz \
-"
-
-BBCLASSEXTEND = "devupstream:target"
-SRC_URI:class-devupstream = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git;protocol=https;branch=main"
-# Pin this to the 20220509 release, override this in local.conf
-SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae"
-
-SRC_URI[sha256sum] = "bf0f239dc0801e9d6bf5d5fb3e2f549575632cf4688f4348184199cb02c2bcd7"
-
-inherit allarch
-
-CLEANBROKEN = "1"
-
-do_compile() {
-	:
-}
-
-do_install() {
-        # install-nodedup avoids rdfind dependency
-        oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' install-nodedup
-        cp GPL-2 LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/
-}
-
-
-PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \
-             ${PN}-cw1200-license ${PN}-cw1200 \
-             ${PN}-ralink-license ${PN}-ralink \
-             ${PN}-mt76x-license ${PN}-mt7601u ${PN}-mt7650 ${PN}-mt76x2 \
-             ${PN}-radeon-license ${PN}-radeon \
-             ${PN}-amdgpu-license ${PN}-amdgpu \
-             ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \
-             ${PN}-mediatek-license ${PN}-mediatek \
-             ${PN}-microchip-license ${PN}-microchip \
-             ${PN}-moxa-license ${PN}-moxa \
-             ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \
-             ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \
-             ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \
-             ${PN}-ti-keystone-license ${PN}-ti-keystone \
-             ${PN}-vt6656-license ${PN}-vt6656 \
-             ${PN}-rs9113 ${PN}-rs9116 \
-             ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \
-             ${PN}-rtl8761 \
-             ${PN}-rtl8168 \
-             ${PN}-rtl8822 \
-             ${PN}-rtl-nic \
-             ${PN}-cypress-license \
-             ${PN}-broadcom-license \
-             ${PN}-bcm-0bb4-0306 \
-             ${PN}-bcm43143 \
-             ${PN}-bcm43236b \
-             ${PN}-bcm43241b0 \
-             ${PN}-bcm43241b4 \
-             ${PN}-bcm43241b5 \
-             ${PN}-bcm43242a \
-             ${PN}-bcm4329 \
-             ${PN}-bcm4329-fullmac \
-             ${PN}-bcm4330 \
-             ${PN}-bcm4334 \
-             ${PN}-bcm43340 \
-             ${PN}-bcm4335 \
-             ${PN}-bcm43362 \
-             ${PN}-bcm4339 \
-             ${PN}-bcm43430 \
-             ${PN}-bcm43430a0 \
-             ${PN}-bcm43455 \
-             ${PN}-bcm4350 \
-             ${PN}-bcm4350c2 \
-             ${PN}-bcm4354 \
-             ${PN}-bcm4356 \
-             ${PN}-bcm4356-pcie \
-             ${PN}-bcm43569 \
-             ${PN}-bcm43570 \
-             ${PN}-bcm4358 \
-             ${PN}-bcm43602 \
-             ${PN}-bcm4366b \
-             ${PN}-bcm4366c \
-             ${PN}-bcm4371 \
-             ${PN}-bcm4373 \
-             ${PN}-bcm43xx \
-             ${PN}-bcm43xx-hdr \
-             ${PN}-cirrus-license ${PN}-cirrus \
-             ${PN}-cnm-license ${PN}-cnm \
-             ${PN}-atheros-license ${PN}-ar5523 ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \
-             ${PN}-gplv2-license ${PN}-carl9170 \
-             ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-ath11k ${PN}-qca \
-             \
-             ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \
-             \
-             ${PN}-iwlwifi-license ${PN}-iwlwifi \
-             ${PN}-iwlwifi-135-6 \
-             ${PN}-iwlwifi-3160-7 ${PN}-iwlwifi-3160-8 ${PN}-iwlwifi-3160-9 \
-             ${PN}-iwlwifi-3160-10 ${PN}-iwlwifi-3160-12 ${PN}-iwlwifi-3160-13 \
-             ${PN}-iwlwifi-3160-16 ${PN}-iwlwifi-3160-17 \
-             ${PN}-iwlwifi-6000-4 ${PN}-iwlwifi-6000g2a-5 ${PN}-iwlwifi-6000g2a-6 \
-             ${PN}-iwlwifi-6000g2b-5 ${PN}-iwlwifi-6000g2b-6 \
-             ${PN}-iwlwifi-6050-4 ${PN}-iwlwifi-6050-5 \
-             ${PN}-iwlwifi-7260 \
-             ${PN}-iwlwifi-7265 \
-             ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \
-             ${PN}-iwlwifi-9000 \
-             ${PN}-iwlwifi-misc \
-             ${PN}-ibt-license ${PN}-ibt \
-             ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \
-             ${PN}-ibt-17 \
-             ${PN}-ibt-20 \
-             ${PN}-ibt-misc \
-             ${PN}-i915-license ${PN}-i915 \
-             ${PN}-ice-license ${PN}-ice \
-             ${PN}-ice-enhanced-license ${PN}-ice-enhanced \
-             ${PN}-adsp-sst-license ${PN}-adsp-sst \
-             ${PN}-bnx2 \
-             ${PN}-bnx2x \
-             ${PN}-liquidio \
-             ${PN}-mellanox \
-             ${PN}-nvidia-license \
-             ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \
-             ${PN}-nvidia-gpu \
-             ${PN}-nxp-license \
-             ${PN}-nxp8987-sdio \
-             ${PN}-nxp8997-common \
-             ${PN}-nxp8997-pcie \
-             ${PN}-nxp8997-sdio \
-             ${PN}-nxp9098-common \
-             ${PN}-nxp9098-pcie \
-             ${PN}-nxp9098-sdio \
-             ${PN}-nxpiw416-sdio \
-             ${PN}-nxpiw612-sdio \
-             ${PN}-nxp-mc-license ${PN}-nxp-mc \
-             ${PN}-netronome-license ${PN}-netronome \
-             ${PN}-olpc-license ${PN}-olpc \
-             ${PN}-phanfw-license ${PN}-phanfw \
-             ${PN}-powervr-license ${PN}-powervr \
-             ${PN}-prestera \
-             ${PN}-qat ${PN}-qat-license \
-             ${PN}-qed \
-             ${PN}-qcom-license ${PN}-qcom-yamato-license \
-             ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 ${PN}-qcom-venus-6.0 \
-             ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \
-             ${PN}-qcom-adreno-a2xx ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a4xx ${PN}-qcom-adreno-a530 \
-             ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 ${PN}-qcom-adreno-a702 \
-             ${PN}-qcom-apq8016-modem ${PN}-qcom-apq8016-wifi \
-             ${PN}-qcom-apq8096-adreno ${PN}-qcom-apq8096-audio ${PN}-qcom-apq8096-modem \
-             ${PN}-qcom-qcm2290-adreno ${PN}-qcom-qcm2290-audio ${PN}-qcom-qcm2290-modem ${PN}-qcom-qcm2290-wifi  \
-             ${PN}-qcom-qrb4210-adreno ${PN}-qcom-qrb4210-audio ${PN}-qcom-qrb4210-compute \
-             ${PN}-qcom-qrb4210-modem ${PN}-qcom-qrb4210-wifi  \
-             ${PN}-qcom-sc8280xp-lenovo-x13s-compat \
-             ${PN}-qcom-sc8280xp-lenovo-x13s-audio \
-             ${PN}-qcom-sc8280xp-lenovo-x13s-adreno \
-             ${PN}-qcom-sc8280xp-lenovo-x13s-compute \
-             ${PN}-qcom-sc8280xp-lenovo-x13s-sensors \
-             ${PN}-qcom-sdm845-adreno ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \
-             ${PN}-qcom-sdm845-thundercomm-db845c-sensors \
-             ${PN}-qcom-sm8250-adreno ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \
-             ${PN}-qcom-sm8250-thundercomm-rb5-sensors \
-             ${PN}-qla2xxx ${PN}-qla2xxx-license \
-             ${PN}-rockchip-license ${PN}-rockchip-dptx \
-             ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \
-             ${PN}-lt9611uxc ${PN}-lontium-license \
-             ${PN}-whence-license \
-             ${PN}-wl1251-license ${PN}-wl1251 \
-             ${PN}-xc4000-license ${PN}-xc4000 \
-             ${PN}-xc5000-license ${PN}-xc5000 \
-             ${PN}-xc5000c-license ${PN}-xc5000c \
-             ${PN}-license \
-             "
-
-# For Amphion VPU
-LICENSE:${PN}-amphion-vpu = "Firmware-amphion_vpu"
-LICENSE:${PN}-amphion-vpu-license = "Firmware-amphion_vpu"
-
-FILES:${PN}-amphion-vpu = "${nonarch_base_libdir}/firmware/amphion/*"
-FILES:${PN}-amphion-vpu-license = " \
-  ${nonarch_base_libdir}/firmware/LICENSE.amphion_vpu \
-"
-RDEPENDS:${PN}-amphion-vpu += "${PN}-amphion-vpu-license"
-
-# For cw1200
-LICENSE:${PN}-cw1200 = "Firmware-cw1200"
-LICENSE:${PN}-cw1200-license = "Firmware-cw1200"
-
-FILES:${PN}-cw1200 = "${nonarch_base_libdir}/firmware/wsm_22.bin"
-FILES:${PN}-cw1200-license = "${nonarch_base_libdir}/firmware/LICENCE.cw1200"
-
-RDEPENDS:${PN}-cw1200 += "${PN}-cw1200-license"
-
-# For atheros
-LICENSE:${PN}-ar5523 = "Firmware-atheros_firmware"
-LICENSE:${PN}-ar9170 = "Firmware-atheros_firmware"
-LICENSE:${PN}-ath3k = "Firmware-atheros_firmware"
-LICENSE:${PN}-ath6k = "Firmware-atheros_firmware"
-LICENSE:${PN}-ath9k = "Firmware-atheros_firmware"
-LICENSE:${PN}-atheros-license = "Firmware-atheros_firmware"
-
-FILES:${PN}-atheros-license = "${nonarch_base_libdir}/firmware/LICENCE.atheros_firmware"
-FILES:${PN}-ar5523 = " \
-  ${nonarch_base_libdir}/firmware/ar5523.bin \
-"
-FILES:${PN}-ar9170 = " \
-  ${nonarch_base_libdir}/firmware/ar9170*.fw \
-"
-FILES:${PN}-ath3k = " \
-  ${nonarch_base_libdir}/firmware/ath3k*fw \
-"
-FILES:${PN}-ath6k = " \
-  ${nonarch_base_libdir}/firmware/ath6k \
-"
-FILES:${PN}-ath9k = " \
-  ${nonarch_base_libdir}/firmware/ar9271.fw \
-  ${nonarch_base_libdir}/firmware/ar7010*.fw \
-  ${nonarch_base_libdir}/firmware/htc_9271.fw \
-  ${nonarch_base_libdir}/firmware/htc_7010.fw \
-  ${nonarch_base_libdir}/firmware/ath9k_htc/htc_7010-1.4.0.fw \
-  ${nonarch_base_libdir}/firmware/ath9k_htc/htc_9271-1.4.0.fw \
-"
-
-RDEPENDS:${PN}-ar5523 += "${PN}-atheros-license"
-RDEPENDS:${PN}-ar9170 += "${PN}-atheros-license"
-RDEPENDS:${PN}-ath6k += "${PN}-atheros-license"
-RDEPENDS:${PN}-ath9k += "${PN}-atheros-license"
-
-# For carl9170
-LICENSE:${PN}-carl9170 = "Firmware-GPLv2"
-LICENSE:${PN}-gplv2-license = "Firmware-GPLv2"
-
-FILES:${PN}-gplv2-license = "${nonarch_base_libdir}/firmware/GPL-2"
-FILES:${PN}-carl9170 = " \
-  ${nonarch_base_libdir}/firmware/carl9170*.fw \
-"
-
-RDEPENDS:${PN}-carl9170 += "${PN}-gplv2-license"
-
-# For QualCommAthos
-LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k & Firmware-atheros_firmware"
-LICENSE:${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k"
-LICENSE:${PN}-ath10k = "Firmware-qualcommAthos_ath10k"
-LICENSE:${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k"
-LICENSE:${PN}-qca = "Firmware-qualcommAthos_ath10k"
-
-FILES:${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k"
-FILES:${PN}-ar3k = " \
-  ${nonarch_base_libdir}/firmware/ar3k \
-"
-
-FILES:${PN}-ath10k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ath10k"
-FILES:${PN}-ath10k = " \
-  ${nonarch_base_libdir}/firmware/ath10k \
-"
-
-FILES:${PN}-ath11k = " \
-  ${nonarch_base_libdir}/firmware/ath11k \
-"
-
-FILES:${PN}-qca = " \
-  ${nonarch_base_libdir}/firmware/qca \
-"
-
-RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license"
-RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license"
-RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license"
-RDEPENDS:${PN}-qca += "${PN}-ath10k-license"
-
-# For ralink
-LICENSE:${PN}-ralink = "Firmware-ralink-firmware"
-LICENSE:${PN}-ralink-license = "Firmware-ralink-firmware"
-
-FILES:${PN}-ralink-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink-firmware.txt"
-FILES:${PN}-ralink = " \
-  ${nonarch_base_libdir}/firmware/rt*.bin \
-"
-
-RDEPENDS:${PN}-ralink += "${PN}-ralink-license"
-
-# For mediatek MT7601U
-LICENSE:${PN}-mt76x-license = "Firmware-ralink_a_mediatek_company_firmware"
-FILES:${PN}-mt76x-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware"
-
-LICENSE:${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware"
-
-FILES:${PN}-mt7601u = " \
-  ${nonarch_base_libdir}/firmware/mediatek/mt7601u.bin \
-  ${nonarch_base_libdir}/firmware/mt7601u.bin \
-"
-RDEPENDS:${PN}-mt7601u += "${PN}-mt76x-license"
-
-# For MediaTek Bluetooth USB driver 7650
-LICENSE:${PN}-mt7650 = "Firmware-ralink_a_mediatek_company_firmware"
-
-FILES:${PN}-mt7650 = " \
-  ${nonarch_base_libdir}/firmware/mediatek/mt7650.bin \
-  ${nonarch_base_libdir}/firmware/mt7650.bin \
-"
-RDEPENDS:${PN}-mt7650 += "${PN}-mt76x-license"
-
-# For MediaTek MT76x2 Wireless MACs
-LICENSE:${PN}-mt76x2 = "Firmware-ralink_a_mediatek_company_firmware"
-
-FILES:${PN}-mt76x2 = " \
-  ${nonarch_base_libdir}/firmware/mediatek/mt7662.bin \
-  ${nonarch_base_libdir}/firmware/mt7662.bin \
-  ${nonarch_base_libdir}/firmware/mediatek/mt7662_rom_patch.bin \
-  ${nonarch_base_libdir}/firmware/mt7662_rom_patch.bin \
-"
-RDEPENDS:${PN}-mt76x2 += "${PN}-mt76x-license"
-
-# For MediaTek
-LICENSE:${PN}-mediatek = "Firmware-mediatek"
-LICENSE:${PN}-mediatek-license = "Firmware-mediatek"
-
-FILES:${PN}-mediatek = " \
-  ${nonarch_base_libdir}/firmware/mediatek/* \
-  ${nonarch_base_libdir}/firmware/vpu_d.bin \
-  ${nonarch_base_libdir}/firmware/vpu_p.bin \
-"
-FILES:${PN}-mediatek-license = " \
-  ${nonarch_base_libdir}/firmware/LICENCE.mediatek \
-"
-RDEPENDS:${PN}-mediatek += "${PN}-mediatek-license"
-
-# For Microchip
-LICENSE:${PN}-microchip = "Firmware-microchip"
-LICENSE:${PN}-microchip-license = "Firmware-microchip"
-
-FILES:${PN}-microchip = "${nonarch_base_libdir}/firmware/microchip/*"
-FILES:${PN}-microchip-license = " \
-  ${nonarch_base_libdir}/firmware/LICENCE.microchip \
-"
-RDEPENDS:${PN}-microchip += "${PN}-microchip-license"
-
-# For MOXA
-LICENSE:${PN}-moxa = "Firmware-moxa"
-LICENSE:${PN}-moxa-license = "Firmware-moxa"
-
-FILES:${PN}-moxa = "${nonarch_base_libdir}/firmware/moxa"
-FILES:${PN}-moxa-license = "${nonarch_base_libdir}/firmware/LICENCE.moxa"
-
-RDEPENDS:${PN}-moxa += "${PN}-moxa-license"
-
-# For radeon
-
-LICENSE:${PN}-radeon = "Firmware-radeon"
-LICENSE:${PN}-radeon-license = "Firmware-radeon"
-
-FILES:${PN}-radeon-license = "${nonarch_base_libdir}/firmware/LICENSE.radeon"
-FILES:${PN}-radeon = " \
-  ${nonarch_base_libdir}/firmware/radeon \
-"
-
-RDEPENDS:${PN}-radeon += "${PN}-radeon-license"
-
-# For amdgpu
-LICENSE:${PN}-amdgpu = "Firmware-amdgpu"
-LICENSE:${PN}-amdgpu-license = "Firmware-amdgpu"
-
-FILES:${PN}-amdgpu-license = "${nonarch_base_libdir}/firmware/LICENSE.amdgpu"
-FILES:${PN}-amdgpu = " \
-  ${nonarch_base_libdir}/firmware/amdgpu \
-"
-
-RDEPENDS:${PN}-amdgpu += "${PN}-amdgpu-license"
-
-# For lontium
-LICENSE:${PN}-lt9611uxc = "Firmware-Lontium"
-
-FILES:${PN}-lontium-license = "${nonarch_base_libdir}/firmware/LICENSE.Lontium"
-FILES:${PN}-lt9611uxc = "${nonarch_base_libdir}/firmware/lt9611uxc_fw.bin"
-
-# For marvell
-LICENSE:${PN}-pcie8897 = "Firmware-Marvell"
-LICENSE:${PN}-pcie8997 = "Firmware-Marvell"
-LICENSE:${PN}-sd8686 = "Firmware-Marvell"
-LICENSE:${PN}-sd8688 = "Firmware-Marvell"
-LICENSE:${PN}-sd8787 = "Firmware-Marvell"
-LICENSE:${PN}-sd8797 = "Firmware-Marvell"
-LICENSE:${PN}-sd8801 = "Firmware-Marvell"
-LICENSE:${PN}-sd8887 = "Firmware-Marvell"
-LICENSE:${PN}-sd8897 = "Firmware-Marvell"
-LICENSE:${PN}-sd8997 = "Firmware-Marvell"
-LICENSE:${PN}-usb8997 = "Firmware-Marvell"
-LICENSE:${PN}-marvell-license = "Firmware-Marvell"
-
-FILES:${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell"
-FILES:${PN}-pcie8897 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/pcie8897_uapsta.bin \
-"
-FILES:${PN}-pcie8997 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/pcie8997_wlan_v4.bin \
-  ${nonarch_base_libdir}/firmware/mrvl/pcieuart8997_combo_v4.bin \
-  ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin \
-"
-FILES:${PN}-sd8686 = " \
-  ${nonarch_base_libdir}/firmware/libertas/sd8686_v9* \
-  ${nonarch_base_libdir}/firmware/sd8686* \
-"
-FILES:${PN}-sd8688 = " \
-  ${nonarch_base_libdir}/firmware/libertas/sd8688* \
-  ${nonarch_base_libdir}/firmware/mrvl/sd8688* \
-"
-FILES:${PN}-sd8787 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/sd8787_uapsta.bin \
-"
-FILES:${PN}-sd8797 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/sd8797_uapsta.bin \
-"
-FILES:${PN}-sd8801 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/sd8801_uapsta.bin \
-"
-FILES:${PN}-sd8887 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/sd8887_uapsta.bin \
-"
-FILES:${PN}-sd8897 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/sd8897_uapsta.bin \
-"
-do_install:append() {
-    # The kernel 5.6.x driver still uses the old name, provide a symlink for
-    # older kernels
-    ln -fs sdsd8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin
-}
-FILES:${PN}-sd8997 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin \
-  ${nonarch_base_libdir}/firmware/mrvl/sdsd8997_combo_v4.bin \
-"
-FILES:${PN}-usb8997 = " \
-  ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin \
-"
-
-RDEPENDS:${PN}-sd8686 += "${PN}-marvell-license"
-RDEPENDS:${PN}-sd8688 += "${PN}-marvell-license"
-RDEPENDS:${PN}-sd8787 += "${PN}-marvell-license"
-RDEPENDS:${PN}-sd8797 += "${PN}-marvell-license"
-RDEPENDS:${PN}-sd8801 += "${PN}-marvell-license"
-RDEPENDS:${PN}-sd8887 += "${PN}-marvell-license"
-RDEPENDS:${PN}-sd8897 += "${PN}-marvell-license"
-RDEPENDS:${PN}-sd8997 += "${PN}-marvell-license"
-RDEPENDS:${PN}-usb8997 += "${PN}-marvell-license"
-
-# For netronome
-LICENSE:${PN}-netronome = "Firmware-netronome"
-
-FILES:${PN}-netronome-license = " \
-  ${nonarch_base_libdir}/firmware/LICENCE.Netronome \
-"
-FILES:${PN}-netronome = " \
-  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0081*.nffw \
-  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0096*.nffw \
-  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0097*.nffw \
-  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0099*.nffw \
-  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0011_2x40.nffw \
-  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0012_2x40.nffw \
-  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0078-0011_1x100.nffw \
-  ${nonarch_base_libdir}/firmware/netronome/bpf \
-  ${nonarch_base_libdir}/firmware/netronome/flower \
-  ${nonarch_base_libdir}/firmware/netronome/nic \
-  ${nonarch_base_libdir}/firmware/netronome/nic-sriov \
-"
-
-RDEPENDS:${PN}-netronome += "${PN}-netronome-license"
-
-# For NXP
-LICENSE:${PN}-nxp8987-sdio = "Firmware-nxp"
-LICENSE:${PN}-nxp8997-common = "Firmware-nxp"
-LICENSE:${PN}-nxp8997-pcie = "Firmware-nxp"
-LICENSE:${PN}-nxp8997-sdio = "Firmware-nxp"
-LICENSE:${PN}-nxp9098-common = "Firmware-nxp"
-LICENSE:${PN}-nxp9098-pcie = "Firmware-nxp"
-LICENSE:${PN}-nxp9098-sdio = "Firmware-nxp"
-LICENSE:${PN}-nxpiw416-sdio = "Firmware-nxp"
-LICENSE:${PN}-nxpiw612-sdio = "Firmware-nxp"
-LICENSE:${PN}-nxp-license = "Firmware-nxp"
-
-FILES:${PN}-nxp8987-sdio = "${nonarch_base_libdir}/firmware/nxp/*8987*"
-FILES:${PN}-nxp8997-common = " \
-    ${nonarch_base_libdir}/firmware/nxp/uartuart8997_bt_v4.bin \
-    ${nonarch_base_libdir}/firmware/nxp/helper_uart_3000000.bin \
-"
-ALLOW_EMPTY:${PN}-nxp8997-pcie = "1"
-ALLOW_EMPTY:${PN}-nxp8997-sdio = "1"
-FILES:${PN}-nxp9098-common = "${nonarch_base_libdir}/firmware/nxp/uartuart9098_bt_v1.bin"
-ALLOW_EMPTY:${PN}-nxp9098-pcie = "1"
-ALLOW_EMPTY:${PN}-nxp9098-sdio = "1"
-FILES:${PN}-nxpiw416-sdio = "${nonarch_base_libdir}/firmware/nxp/*iw416*"
-FILES:${PN}-nxpiw612-sdio = "${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se"
-FILES:${PN}-nxp-license = "${nonarch_base_libdir}/firmware/LICENSE.nxp"
-
-RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-license"
-RDEPENDS:${PN}-nxp8997-common += "${PN}-nxp-license"
-RDEPENDS:${PN}-nxp8997-pcie += "${PN}-nxp8997-common"
-RDEPENDS:${PN}-nxp8997-sdio += "${PN}-nxp8997-common"
-RDEPENDS:${PN}-nxp9098-common += "${PN}-nxp-license"
-RDEPENDS:${PN}-nxp9098-pcie += "${PN}-nxp9098-common"
-RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common"
-RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-license"
-RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-license"
-
-# For nxp-mc
-LICENSE:${PN}-nxp-mc = "Firmware-nxp_mc_firmware"
-LICENSE:${PN}-nxp-mc-license = "Firmware-nxp_mc_firmware"
-
-FILES:${PN}-nxp-mc= "${nonarch_base_libdir}/firmware/dpaa2/mc/*"
-FILES:${PN}-nxp-mc-license = " \
-  ${nonarch_base_libdir}/firmware/LICENSE.nxp_mc_firmware \
-"
-RDEPENDS:${PN}-nxp-mc += "${PN}-nxp-mc-license"
-
-# For Nvidia
-LICENSE:${PN}-nvidia-gpu = "Firmware-nvidia"
-LICENSE:${PN}-nvidia-tegra = "Firmware-nvidia"
-LICENSE:${PN}-nvidia-tegra-k1 = "Firmware-nvidia"
-LICENSE:${PN}-nvidia-license = "Firmware-nvidia"
-
-FILES:${PN}-nvidia-gpu = "${nonarch_base_libdir}/firmware/nvidia"
-FILES:${PN}-nvidia-tegra = " \
-  ${nonarch_base_libdir}/firmware/nvidia/tegra* \
-  ${nonarch_base_libdir}/firmware/nvidia/gm20b \
-  ${nonarch_base_libdir}/firmware/nvidia/gp10b \
-"
-FILES:${PN}-nvidia-tegra-k1 = " \
-  ${nonarch_base_libdir}/firmware/nvidia/tegra124 \
-  ${nonarch_base_libdir}/firmware/nvidia/gk20a \
-"
-FILES:${PN}-nvidia-license = "${nonarch_base_libdir}/firmware/LICENCE.nvidia"
-
-RDEPENDS:${PN}-nvidia-gpu += "${PN}-nvidia-license"
-RDEPENDS:${PN}-nvidia-tegra += "${PN}-nvidia-license"
-RDEPENDS:${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license"
-
-# For OLPC
-LICENSE:${PN}-olpc = "Firmware-OLPC"
-LICENSE:${PN}-olpc-license = "Firmware-OLPC"
-
-FILES:${PN}-olpc = " \
-  ${nonarch_base_libdir}/firmware/libertas/lbtf_sdio.bin	\
-  ${nonarch_base_libdir}/firmware/lbtf_usb.bin			\
-  ${nonarch_base_libdir}/firmware/libertas/usb8388_olpc.bin	\
-"
-FILES:${PN}-olpc-license = "${nonarch_base_libdir}/firmware/LICENCE.OLPC"
-
-RDEPENDS:${PN}-olpc += "${PN}-olpc-license"
-
-# For phanfw
-LICENSE:${PN}-phanfw = "Firmware-phanfw"
-LICENSE:${PN}-phanfw-license = "Firmware-phanfw"
-
-FILES:${PN}-phanfw = "${nonarch_base_libdir}/firmware/phanfw.bin"
-FILES:${PN}-phanfw-license = "${nonarch_base_libdir}/firmware/LICENCE.phanfw"
-
-RDEPENDS:${PN}-phanfw += "${PN}-phanfw-license"
-
-# For PowerVR
-LICENSE:${PN}-powervr = "Firmware-powervr"
-LICENSE:${PN}-powervr-license = "Firmware-powervr"
-
-FILES:${PN}-powervr = "${nonarch_base_libdir}/firmware/powervr"
-FILES:${PN}-powervr-license = "${nonarch_base_libdir}/firmware/LICENSE.powervr"
-
-RDEPENDS:${PN}-powervr += "${PN}-powervr-license"
-
-# For qla2xxx
-LICENSE:${PN}-qla2xxx = "Firmware-qla2xxx"
-LICENSE:${PN}-qla2xxx-license = "Firmware-qla2xxx"
-
-FILES:${PN}-qla2xxx = "${nonarch_base_libdir}/firmware/ql2*"
-FILES:${PN}-qla2xxx-license = "${nonarch_base_libdir}/firmware/LICENCE.qla2xxx"
-
-RDEPENDS:${PN}-qla2xxx += "${PN}-qla2xxx-license"
-
-# For RSI RS911x WiFi
-LICENSE:${PN}-rs9113 = "WHENCE"
-LICENSE:${PN}-rs9116 = "WHENCE"
-
-FILES:${PN}-rs9113 = " ${nonarch_base_libdir}/firmware/rsi/rs9113*.rps "
-FILES:${PN}-rs9116 = " ${nonarch_base_libdir}/firmware/rsi/rs9116*.rps "
-
-RDEPENDS:${PN}-rs9113 += "${PN}-whence-license"
-RDEPENDS:${PN}-rs9116 += "${PN}-whence-license"
-
-# For rtl
-LICENSE:${PN}-rtl8188 = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl8192cu = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl8192ce = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl8192su = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl8723 = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl8761 = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl8822 = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware"
-LICENSE:${PN}-rtl-nic = "WHENCE"
-LICENSE:${PN}-rtl8168 = "WHENCE"
-
-FILES:${PN}-rtl-license = " \
-  ${nonarch_base_libdir}/firmware/LICENCE.rtlwifi_firmware.txt \
-"
-FILES:${PN}-rtl8188 = " \
-  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8188*.bin \
-"
-FILES:${PN}-rtl8192cu = " \
-  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cufw*.bin \
-"
-FILES:${PN}-rtl8192ce = " \
-  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cfw*.bin \
-"
-FILES:${PN}-rtl8192su = " \
-  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8712u.bin \
-"
-FILES:${PN}-rtl8723 = " \
-  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8723*.bin \
-"
-FILES:${PN}-rtl8821 = " \
-  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \
-  ${nonarch_base_libdir}/firmware/rtw88/rtw8821*.bin \
-"
-FILES:${PN}-rtl8761 = " \
-  ${nonarch_base_libdir}/firmware/rtl_bt/rtl8761*.bin \
-"
-FILES:${PN}-rtl8168 = " \
-  ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \
-"
-FILES:${PN}-rtl8822 = " \
-  ${nonarch_base_libdir}/firmware/rtl_bt/rtl8822*.bin \
-  ${nonarch_base_libdir}/firmware/rtw88/rtw8822*.bin \
-  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8822*.bin \
-"
-FILES:${PN}-rtl-nic = " \
-  ${nonarch_base_libdir}/firmware/rtl_nic/*.fw \
-"
-
-RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8192cu += "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8192su = "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8723 += "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8761 += "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8822 += "${PN}-rtl-license"
-RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license"
-RDEPENDS:${PN}-rtl-nic += "${PN}-whence-license"
-
-# For TI wl1251
-LICENSE:${PN}-wl1251 = "Firmware-wl1251"
-LICENSE:${PN}-wl1251-license = "Firmware-wl1251"
-
-FILES:${PN}-wl1251 = " \
-  ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-fw.bin         \
-  ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-nvs.bin        \
-"
-FILES:${PN}-wl1251-license = "${nonarch_base_libdir}/firmware/LICENCE.wl1251"
-
-RDEPENDS:${PN}-wl1251 += "${PN}-wl1251-license"
-
-# For ti-connectivity
-LICENSE:${PN}-wlcommon = "Firmware-ti-connectivity"
-LICENSE:${PN}-wl12xx = "Firmware-ti-connectivity"
-LICENSE:${PN}-wl18xx = "Firmware-ti-connectivity"
-LICENSE:${PN}-ti-connectivity-license = "Firmware-ti-connectivity"
-
-FILES:${PN}-ti-connectivity-license = "${nonarch_base_libdir}/firmware/LICENCE.ti-connectivity"
-# wl18xx optionally needs wl1271-nvs.bin (which itself is a symlink to
-# wl127x-nvs.bin) - see linux/drivers/net/wireless/ti/wlcore/sdio.c
-# and drivers/net/wireless/ti/wlcore/spi.c.
-# While they're optional and actually only used to override the MAC
-# address on wl18xx, driver loading will delay (by udev timout - 60s)
-# if not there. So let's make it available always. Because it's a
-# symlink, both need to go to wlcommon.
-FILES:${PN}-wlcommon = " \
-  ${nonarch_base_libdir}/firmware/ti-connectivity/TI* \
-  ${nonarch_base_libdir}/firmware/ti-connectivity/wl127x-nvs.bin \
-  ${nonarch_base_libdir}/firmware/ti-connectivity/wl1271-nvs.bin \
-"
-FILES:${PN}-wl12xx = " \
-  ${nonarch_base_libdir}/firmware/ti-connectivity/wl12* \
-"
-FILES:${PN}-wl18xx = " \
-  ${nonarch_base_libdir}/firmware/ti-connectivity/wl18* \
-"
-
-RDEPENDS:${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
-RDEPENDS:${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
-
-# For ti-keystone
-LICENSE:${PN}-ti-keystone = "Firmware-ti-keystone"
-LICENSE:${PN}-ti-keystone-license = "Firmware-ti-keystone"
-
-FILES:${PN}-ti-keystone = "${nonarch_base_libdir}/firmware/ti-keystone/*"
-FILES:${PN}-ti-keystone-license = " \
-  ${nonarch_base_libdir}/firmware/LICENCE.ti-keystone \
-"
-RDEPENDS:${PN}-ti-keystone += "${PN}-ti-keystone-license"
-
-# For vt6656
-LICENSE:${PN}-vt6656 = "Firmware-via_vt6656"
-LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656"
-
-FILES:${PN}-vt6656-license = "${nonarch_base_libdir}/firmware/LICENCE.via_vt6656"
-FILES:${PN}-vt6656 = " \
-  ${nonarch_base_libdir}/firmware/vntwusb.fw \
-"
-
-RDEPENDS:${PN}-vt6656 = "${PN}-vt6656-license"
-
-# For xc4000
-LICENSE:${PN}-xc4000 = "Firmware-xc4000"
-LICENSE:${PN}-xc4000-license = "Firmware-xc4000"
-
-FILES:${PN}-xc4000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc4000-1.4.1.fw"
-FILES:${PN}-xc4000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc4000"
-
-RDEPENDS:${PN}-xc4000 += "${PN}-xc4000-license"
-
-# For xc5000
-LICENSE:${PN}-xc5000 = "Firmware-xc5000"
-LICENSE:${PN}-xc5000-license = "Firmware-xc5000"
-
-FILES:${PN}-xc5000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc5000-1.6.114.fw"
-FILES:${PN}-xc5000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000"
-
-RDEPENDS:${PN}-xc5000 += "${PN}-xc5000-license"
-
-# For xc5000c
-LICENSE:${PN}-xc5000c = "Firmware-xc5000c"
-LICENSE:${PN}-xc5000c-license = "Firmware-xc5000c"
-
-FILES:${PN}-xc5000c = " \
-  ${nonarch_base_libdir}/firmware/dvb-fe-xc5000c-4.1.30.7.fw \
-"
-FILES:${PN}-xc5000c-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000c"
-
-RDEPENDS:${PN}-xc5000c += "${PN}-xc5000c-license"
-
-# For broadcom
-
-# for i in `grep brcm WHENCE  | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "             \${PN}-$pkg \\"; done  | sort -u
-
-LICENSE:${PN}-broadcom-license = "Firmware-broadcom_bcm43xx"
-FILES:${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx"
-
-# for i in `grep brcm WHENCE  | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo "$i - $pkg"; echo -e "FILES:\${PN}-$pkg = \"\${nonarch_base_libdir}/firmware/brcm/$i\""; done | grep ^FILES
-
-FILES:${PN}-bcm43xx = "${nonarch_base_libdir}/firmware/brcm/bcm43xx-0.fw"
-FILES:${PN}-bcm43xx-hdr = "${nonarch_base_libdir}/firmware/brcm/bcm43xx_hdr-0.fw"
-FILES:${PN}-bcm4329-fullmac = "${nonarch_base_libdir}/firmware/brcm/bcm4329-fullmac-4.bin"
-FILES:${PN}-bcm43236b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43236b.bin"
-FILES:${PN}-bcm4329 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4329-sdio.bin"
-FILES:${PN}-bcm4330 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.*"
-FILES:${PN}-bcm4334 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin"
-FILES:${PN}-bcm4335 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4335-sdio.bin"
-FILES:${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac4339-sdio.bin \
-"
-FILES:${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin"
-FILES:${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin"
-FILES:${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin"
-FILES:${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin"
-FILES:${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin \
-  ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin \
-"
-FILES:${PN}-bcm43430a0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0-sdio.*"
-FILES:${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.* \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio.* \
-"
-FILES:${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin"
-FILES:${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin"
-FILES:${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.* \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.* \
-"
-FILES:${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin"
-FILES:${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac43570-pcie.bin \
-"
-FILES:${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin"
-FILES:${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin \
-  ${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.ap.bin \
-"
-FILES:${PN}-bcm4366b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366b-pcie.bin"
-FILES:${PN}-bcm4366c = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366c-pcie.bin"
-FILES:${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin"
-
-# for i in `grep brcm WHENCE  | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE:\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done
-# Currently 1st one and last 6 have cypress LICENSE
-
-LICENSE:${PN}-bcm43xx = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43xx += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43xx-hdr = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43xx-hdr += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4329-fullmac = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4329-fullmac += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43236b = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43236b += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4329 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4329 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4330 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4330 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4334 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4334 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4335 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4335 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4339 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4339 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43241b0 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43241b0 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43241b4 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43241b4 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43241b5 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43241b5 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43242a = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43242a += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43143 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43143 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43430a0 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43455 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43455 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4350c2 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4350c2 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4350 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4350 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4356 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4356 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43569 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43569 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43570 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43570 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4358 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4358 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm43602 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm43602 += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4366b = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4366b += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4366c = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4366c += "${PN}-broadcom-license"
-LICENSE:${PN}-bcm4371 = "Firmware-broadcom_bcm43xx"
-RDEPENDS:${PN}-bcm4371 += "${PN}-broadcom-license"
-
-# For broadcom cypress
-
-LICENSE:${PN}-cypress-license = "Firmware-cypress"
-FILES:${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress"
-
-FILES:${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd"
-FILES:${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.* \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac43340-sdio.*"
-FILES:${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.* \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac43362-sdio.*"
-FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.* \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.*"
-FILES:${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac4354-sdio.bin \
-"
-FILES:${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.* \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-pcie.* \
-"
-FILES:${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \
-  ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.bin \
-  ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.clm_blob \
-  ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.clm_blob \
-"
-
-LICENSE:${PN}-bcm-0bb4-0306 = "Firmware-cypress"
-RDEPENDS:${PN}-bcm-0bb4-0306 += "${PN}-cypress-license"
-LICENSE:${PN}-bcm43340 = "Firmware-cypress"
-RDEPENDS:${PN}-bcm43340 += "${PN}-cypress-license"
-LICENSE:${PN}-bcm43362 = "Firmware-cypress"
-RDEPENDS:${PN}-bcm43362 += "${PN}-cypress-license"
-LICENSE:${PN}-bcm43430 = "Firmware-cypress"
-RDEPENDS:${PN}-bcm43430 += "${PN}-cypress-license"
-LICENSE:${PN}-bcm4354 = "Firmware-cypress"
-RDEPENDS:${PN}-bcm4354 += "${PN}-cypress-license"
-LICENSE:${PN}-bcm4356-pcie = "Firmware-cypress"
-RDEPENDS:${PN}-bcm4356-pcie += "${PN}-cypress-license"
-LICENSE:${PN}-bcm4373 = "Firmware-cypress"
-RDEPENDS:${PN}-bcm4373 += "${PN}-cypress-license"
-
-# For Broadcom bnx2
-#
-# which is a separate case to the other Broadcom firmwares since its
-# license is contained in the shared WHENCE file.
-
-LICENSE:${PN}-bnx2 = "WHENCE"
-LICENSE:${PN}-whence-license = "WHENCE"
-
-FILES:${PN}-bnx2 = " \
-    ${nonarch_base_libdir}/firmware/bnx2/bnx2-mips*.fw \
-    ${nonarch_base_libdir}/firmware/bnx2/bnx2-rv2p*.fw \
-"
-FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE"
-
-RDEPENDS:${PN}-bnx2 += "${PN}-whence-license"
-RPROVIDES:${PN}-bnx2 = "${PN}-bnx2-mips"
-
-LICENSE:${PN}-bnx2x = "WHENCE"
-
-FILES:${PN}-bnx2x = "${nonarch_base_libdir}/firmware/bnx2x/bnx2x*.fw"
-
-RDEPENDS:${PN}-bnx2x += "${PN}-whence-license"
-
-# For cirrus
-LICENSE:${PN}-cirrus = "Firmware-cirrus"
-LICENSE:${PN}-cirrus-license = "Firmware-cirrus"
-
-FILES:${PN}-cirrus = "${nonarch_base_libdir}/firmware/cirrus/*"
-FILES:${PN}-cirrus-license = "${nonarch_base_libdir}/firmware/LICENSE.cirrus"
-
-RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license"
-
-# For cnm
-LICENSE:${PN}-cnm = "Firmware-cnm"
-LICENSE:${PN}-cnm-license = "Firmware-cnm"
-
-FILES:${PN}-cnm = "${nonarch_base_libdir}/firmware/cnm/wave521c_k3_codec_fw.bin"
-FILES:${PN}-cnm-license = "${nonarch_base_libdir}/firmware/LICENCE.cnm"
-
-RDEPENDS:${PN}-cnm += "${PN}-cnm-license"
-
-# For imx-sdma
-LICENSE:${PN}-imx-sdma-imx6q       = "Firmware-imx-sdma_firmware"
-LICENSE:${PN}-imx-sdma-imx7d       = "Firmware-imx-sdma_firmware"
-LICENSE:${PN}-imx-sdma-license       = "Firmware-imx-sdma_firmware"
-
-FILES:${PN}-imx-sdma-imx6q = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin"
-
-RPROVIDES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
-RREPLACES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
-RCONFLICTS:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
-
-FILES:${PN}-imx-sdma-imx7d = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin"
-
-FILES:${PN}-imx-sdma-license = "${nonarch_base_libdir}/firmware/LICENSE.sdma_firmware"
-
-RDEPENDS:${PN}-imx-sdma-imx6q += "${PN}-imx-sdma-license"
-RDEPENDS:${PN}-imx-sdma-imx7d += "${PN}-imx-sdma-license"
-
-# For iwlwifi
-LICENSE:${PN}-iwlwifi           = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-135-6     = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-7    = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-8    = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-9    = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-10   = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-12   = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-13   = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-16   = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-3160-17   = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-6000-4    = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-6000g2a-6 = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-6000g2b-5 = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-6000g2b-6 = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-6050-4    = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-6050-5    = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-7260      = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-7265      = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-7265d     = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-8000c     = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-8265      = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-9000      = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-misc      = "Firmware-iwlwifi_firmware"
-LICENSE:${PN}-iwlwifi-license   = "Firmware-iwlwifi_firmware"
-
-
-FILES:${PN}-iwlwifi-license = "${nonarch_base_libdir}/firmware/LICENCE.iwlwifi_firmware"
-FILES:${PN}-iwlwifi-135-6 = "${nonarch_base_libdir}/firmware/iwlwifi-135-6.ucode"
-FILES:${PN}-iwlwifi-3160-7 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-7.ucode"
-FILES:${PN}-iwlwifi-3160-8 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-8.ucode"
-FILES:${PN}-iwlwifi-3160-9 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-9.ucode"
-FILES:${PN}-iwlwifi-3160-10 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-10.ucode"
-FILES:${PN}-iwlwifi-3160-12 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-12.ucode"
-FILES:${PN}-iwlwifi-3160-13 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-13.ucode"
-FILES:${PN}-iwlwifi-3160-16 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-16.ucode"
-FILES:${PN}-iwlwifi-3160-17 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-17.ucode"
-FILES:${PN}-iwlwifi-6000-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6000-4.ucode"
-FILES:${PN}-iwlwifi-6000g2a-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-5.ucode"
-FILES:${PN}-iwlwifi-6000g2a-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-6.ucode"
-FILES:${PN}-iwlwifi-6000g2b-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-5.ucode"
-FILES:${PN}-iwlwifi-6000g2b-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-6.ucode"
-FILES:${PN}-iwlwifi-6050-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-4.ucode"
-FILES:${PN}-iwlwifi-6050-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-5.ucode"
-FILES:${PN}-iwlwifi-7260   = "${nonarch_base_libdir}/firmware/iwlwifi-7260-*.ucode"
-FILES:${PN}-iwlwifi-7265   = "${nonarch_base_libdir}/firmware/iwlwifi-7265-*.ucode"
-FILES:${PN}-iwlwifi-7265d   = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.ucode"
-FILES:${PN}-iwlwifi-8000c   = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode"
-FILES:${PN}-iwlwifi-8265   = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode"
-FILES:${PN}-iwlwifi-9000   = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode"
-FILES:${PN}-iwlwifi-misc   = " \
-    ${nonarch_base_libdir}/firmware/iwlwifi-*.ucode \
-    ${nonarch_base_libdir}/firmware/iwlwifi-*.pnvm \
-"
-
-RDEPENDS:${PN}-iwlwifi-135-6     = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-7    = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-8    = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-9    = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-10   = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-12   = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-13   = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-16   = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-3160-17   = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-6000-4    = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-6000g2a-6 = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-6000g2b-5 = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-6000g2b-6 = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-6050-4    = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-6050-5    = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-7260      = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-7265      = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-7265d     = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-8000c     = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-8265      = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-9000      = "${PN}-iwlwifi-license"
-RDEPENDS:${PN}-iwlwifi-misc      = "${PN}-iwlwifi-license"
-
-# -iwlwifi-misc is a "catch all" package that includes all the iwlwifi
-# firmwares that are not already included in other -iwlwifi- packages.
-# -iwlwifi is a virtual package that depends upon all iwlwifi packages.
-# These are distinct in order to allow the -misc firmwares to be installed
-# without pulling in every other iwlwifi package.
-ALLOW_EMPTY:${PN}-iwlwifi = "1"
-ALLOW_EMPTY:${PN}-iwlwifi-misc = "1"
-
-# Handle package updating for the newly merged iwlwifi groupings
-RPROVIDES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
-RREPLACES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
-RCONFLICTS:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
-
-RPROVIDES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
-RREPLACES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
-RCONFLICTS:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
-
-# For ibt
-LICENSE:${PN}-ibt-license = "Firmware-ibt_firmware"
-LICENSE:${PN}-ibt-hw-37-7 = "Firmware-ibt_firmware"
-LICENSE:${PN}-ibt-hw-37-8 = "Firmware-ibt_firmware"
-LICENSE:${PN}-ibt-11-5    = "Firmware-ibt_firmware"
-LICENSE:${PN}-ibt-12-16   = "Firmware-ibt_firmware"
-LICENSE:${PN}-ibt-17 = "Firmware-ibt_firmware"
-LICENSE:${PN}-ibt-20 = "Firmware-ibt_firmware"
-LICENSE:${PN}-ibt-misc    = "Firmware-ibt_firmware"
-
-FILES:${PN}-ibt-license = "${nonarch_base_libdir}/firmware/LICENCE.ibt_firmware"
-FILES:${PN}-ibt-hw-37-7 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.7*.bseq"
-FILES:${PN}-ibt-hw-37-8 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.8*.bseq"
-FILES:${PN}-ibt-11-5    = "${nonarch_base_libdir}/firmware/intel/ibt-11-5.sfi ${nonarch_base_libdir}/firmware/intel/ibt-11-5.ddc"
-FILES:${PN}-ibt-12-16   = "${nonarch_base_libdir}/firmware/intel/ibt-12-16.sfi ${nonarch_base_libdir}/firmware/intel/ibt-12-16.ddc"
-FILES:${PN}-ibt-17 = "${nonarch_base_libdir}/firmware/intel/ibt-17-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-17-*.ddc"
-FILES:${PN}-ibt-20 = "${nonarch_base_libdir}/firmware/intel/ibt-20-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-20-*.ddc"
-FILES:${PN}-ibt-misc    = "${nonarch_base_libdir}/firmware/intel/ibt-*"
-
-RDEPENDS:${PN}-ibt-hw-37-7 = "${PN}-ibt-license"
-RDEPENDS:${PN}-ibt-hw-37.8 = "${PN}-ibt-license"
-RDEPENDS:${PN}-ibt-11-5    = "${PN}-ibt-license"
-RDEPENDS:${PN}-ibt-12-16   = "${PN}-ibt-license"
-RDEPENDS:${PN}-ibt-17 = "${PN}-ibt-license"
-RDEPENDS:${PN}-ibt-20 = "${PN}-ibt-license"
-RDEPENDS:${PN}-ibt-misc    = "${PN}-ibt-license"
-
-ALLOW_EMPTY:${PN}-ibt= "1"
-ALLOW_EMPTY:${PN}-ibt-misc = "1"
-
-LICENSE:${PN}-i915       = "Firmware-i915"
-LICENSE:${PN}-i915-license = "Firmware-i915"
-FILES:${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915"
-FILES:${PN}-i915         = "${nonarch_base_libdir}/firmware/i915"
-RDEPENDS:${PN}-i915      = "${PN}-i915-license"
-
-# For ice-enhanced
-LICENSE:${PN}-ice-enhanced         = "Firmware-ice_enhanced"
-LICENSE:${PN}-ice-enhanced-license = "Firmware-ice_enhanced"
-
-FILES:${PN}-ice-enhanced           = " \
-  ${nonarch_base_libdir}/firmware/intel/ice/ddp-comms/* \
-  ${nonarch_base_libdir}/firmware/intel/ice/ddp-wireless_edge/* \
-"
-FILES:${PN}-ice-enhanced-license   = " \
-  ${nonarch_base_libdir}/firmware/LICENSE.ice_enhanced \
-"
-RDEPENDS:${PN}-ice-enhanced        = "${PN}-ice-enhanced-license"
-
-LICENSE:${PN}-ice       = "Firmware-ice"
-LICENSE:${PN}-ice-license = "Firmware-ice"
-FILES:${PN}-ice-license = "${nonarch_base_libdir}/firmware/LICENSE.ice"
-FILES:${PN}-ice         = " \
-  ${nonarch_base_libdir}/firmware/intel/ice/ddp/* \
-  ${nonarch_base_libdir}/firmware/intel/ice/ddp-lag/* \
-"
-RDEPENDS:${PN}-ice      = "${PN}-ice-license"
-
-FILES:${PN}-adsp-sst-license      = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst"
-LICENSE:${PN}-adsp-sst            = "Firmware-adsp_sst"
-LICENSE:${PN}-adsp-sst-license    = "Firmware-adsp_sst"
-FILES:${PN}-adsp-sst              = "${nonarch_base_libdir}/firmware/intel/dsp_fw*"
-RDEPENDS:${PN}-adsp-sst           = "${PN}-adsp-sst-license"
-
-# For QAT
-LICENSE:${PN}-qat         = "Firmware-qat"
-LICENSE:${PN}-qat-license = "Firmware-qat"
-FILES:${PN}-qat-license   = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmware"
-FILES:${PN}-qat           = "${nonarch_base_libdir}/firmware/qat*.bin"
-RDEPENDS:${PN}-qat        = "${PN}-qat-license"
-
-LICENSE:${PN}-qed         = "WHENCE"
-FILES:${PN}-qed           = "${nonarch_base_libdir}/firmware/qed/*"
-
-# For QCOM VPU/GPU and SDM845
-LICENSE:${PN}-qcom-license = "Firmware-qcom"
-LICENSE:${PN}-qcom-yamato-license = "Firmware-qcom-yamato"
-LICENSE:${PN}-qcom-venus-1.8 = "Firmware-qcom"
-LICENSE:${PN}-qcom-venus-4.2 = "Firmware-qcom"
-LICENSE:${PN}-qcom-venus-5.2 = "Firmware-qcom"
-LICENSE:${PN}-qcom-venus-5.4 = "Firmware-qcom"
-LICENSE:${PN}-qcom-venus-6.0 = "Firmware-qcom"
-LICENSE:${PN}-qcom-vpu-1.0 = "Firmware-qcom"
-LICENSE:${PN}-qcom-vpu-2.0 = "Firmware-qcom"
-LICENSE:${PN}-qcom-adreno-a2xx = "Firmware-qcom Firmware-qcom-yamato"
-LICENSE:${PN}-qcom-adreno-a3xx = "Firmware-qcom"
-LICENSE:${PN}-qcom-adreno-a4xx = "Firmware-qcom"
-LICENSE:${PN}-qcom-adreno-a530 = "Firmware-qcom"
-LICENSE:${PN}-qcom-adreno-a630 = "Firmware-qcom"
-LICENSE:${PN}-qcom-adreno-a650 = "Firmware-qcom"
-LICENSE:${PN}-qcom-adreno-a660 = "Firmware-qcom"
-LICENSE:${PN}-qcom-adreno-a702 = "Firmware-qcom"
-LICENSE:${PN}-qcom-apq8016-modem = "Firmware-qcom"
-LICENSE:${PN}-qcom-apq8016-wifi = "Firmware-qcom"
-LICENSE:${PN}-qcom-apq8096-audio = "Firmware-qcom"
-LICENSE:${PN}-qcom-apq8096-adreno = "Firmware-qcom"
-LICENSE:${PN}-qcom-apq8096-modem = "Firmware-qcom"
-LICENSE:${PN}-qcom-qcm2290-adreno = "Firmware-qcom"
-LICENSE:${PN}-qcom-qcm2290-audio = "Firmware-qcom"
-LICENSE:${PN}-qcom-qcm2290-modem = "Firmware-qcom"
-LICENSE:${PN}-qcom-qcm2290-wifi = "Firmware-qcom"
-LICENSE:${PN}-qcom-qrb4210-adreno = "Firmware-qcom"
-LICENSE:${PN}-qcom-qrb4210-audio = "Firmware-qcom"
-LICENSE:${PN}-qcom-qrb4210-compute  = "Firmware-qcom"
-LICENSE:${PN}-qcom-qrb4210-modem = "Firmware-qcom"
-LICENSE:${PN}-qcom-qrb4210-wifi = "Firmware-qcom"
-LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "Firmware-qcom & Firmware-linaro"
-LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "Firmware-qcom"
-LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "Firmware-qcom"
-LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "Firmware-qcom"
-LICENSE:${PN}-qcom-sdm845-audio = "Firmware-qcom"
-LICENSE:${PN}-qcom-sdm845-adreno = "Firmware-qcom"
-LICENSE:${PN}-qcom-sdm845-compute = "Firmware-qcom"
-LICENSE:${PN}-qcom-sdm845-modem = "Firmware-qcom"
-LICENSE:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "Firmware-qcom"
-LICENSE:${PN}-qcom-sm8250-audio = "Firmware-qcom"
-LICENSE:${PN}-qcom-sm8250-adreno = "Firmware-qcom"
-LICENSE:${PN}-qcom-sm8250-compute = "Firmware-qcom"
-LICENSE:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "Firmware-qcom"
-
-FILES:${PN}-qcom-license   = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt"
-FILES:${PN}-qcom-yamato-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom_yamato"
-FILES:${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*"
-FILES:${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*"
-FILES:${PN}-qcom-venus-5.2 = "${nonarch_base_libdir}/firmware/qcom/venus-5.2/*"
-FILES:${PN}-qcom-venus-5.4 = "${nonarch_base_libdir}/firmware/qcom/venus-5.4/*"
-FILES:${PN}-qcom-venus-6.0 = "${nonarch_base_libdir}/firmware/qcom/venus-6.0/*"
-FILES:${PN}-qcom-vpu-1.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-1.0/*"
-FILES:${PN}-qcom-vpu-2.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-2.0/*"
-FILES:${PN}-qcom-adreno-a2xx = "${nonarch_base_libdir}/firmware/qcom/leia_*.fw ${nonarch_base_libdir}/firmware/qcom/yamato_*.fw"
-FILES:${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a3*_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw"
-FILES:${PN}-qcom-adreno-a4xx = "${nonarch_base_libdir}/firmware/qcom/a4*_*.fw"
-FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.fw*"
-FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.*"
-FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.*"
-FILES:${PN}-qcom-adreno-a660 = "${nonarch_base_libdir}/firmware/qcom/a660*.*"
-FILES:${PN}-qcom-adreno-a702 = "${nonarch_base_libdir}/firmware/qcom/a702*.*"
-FILES:${PN}-qcom-apq8016-modem = "${nonarch_base_libdir}/firmware/qcom/apq8016/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/modem.mbn"
-FILES:${PN}-qcom-apq8016-wifi = "${nonarch_base_libdir}/firmware/qcom/apq8016/wcnss.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/WCNSS*"
-FILES:${PN}-qcom-apq8096-adreno = "${nonarch_base_libdir}/firmware/qcom/apq8096/a530_zap.mbn ${nonarch_base_libdir}/firmware/qcom/a530_zap.mdt"
-FILES:${PN}-qcom-apq8096-audio = "${nonarch_base_libdir}/firmware/qcom/apq8096/adsp*.*"
-FILES:${PN}-qcom-apq8096-modem = "${nonarch_base_libdir}/firmware/qcom/apq8096/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8096/modem*.* ${nonarch_base_libdir}/firmware/qcom/apq8096/wlanmdsp.mbn"
-FILES:${PN}-qcom-qcm2290-adreno = "${nonarch_base_libdir}/firmware/qcom/qcm2290/a702_zap.mbn"
-FILES:${PN}-qcom-qcm2290-audio = "${nonarch_base_libdir}/firmware/qcom/qcm2290/adsp*.*"
-FILES:${PN}-qcom-qcm2290-modem = "${nonarch_base_libdir}/firmware/qcom/qcm2290/modem*.*"
-FILES:${PN}-qcom-qcm2290-wifi = "${nonarch_base_libdir}/firmware/qcom/qcm2290/wlanmdsp.mbn"
-FILES:${PN}-qcom-qrb4210-adreno = "${nonarch_base_libdir}/firmware/qcom/qrb4210/a610_zap.mbn"
-FILES:${PN}-qcom-qrb4210-audio = "${nonarch_base_libdir}/firmware/qcom/qrb4210/adsp*.*"
-FILES:${PN}-qcom-qrb4210-compute = "${nonarch_base_libdir}/firmware/qcom/qrb4210/cdsp*.*"
-FILES:${PN}-qcom-qrb4210-modem = "${nonarch_base_libdir}/firmware/qcom/qrb4210/modem*.*"
-FILES:${PN}-qcom-qrb4210-wifi = "${nonarch_base_libdir}/firmware/qcom/qrb4210/wlanmdsp.mbn"
-FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compat = "${nonarch_base_libdir}/firmware/qcom/LENOVO/21BX"
-FILES:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*adsp*.* ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/battmgr.jsn ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/audioreach-tplg.bin ${nonarch_base_libdir}/firmware/qcom/sc8280xp/SC8280XP-LENOVO-X13S-tplg.bin"
-FILES:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn"
-FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*cdsp*.*"
-FILES:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*slpi*.*"
-FILES:${PN}-qcom-sdm845-adreno = "${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*"
-FILES:${PN}-qcom-sdm845-audio = "${nonarch_base_libdir}/firmware/qcom/sdm845/adsp*.*"
-FILES:${PN}-qcom-sdm845-compute = "${nonarch_base_libdir}/firmware/qcom/sdm845/cdsp*.*"
-FILES:${PN}-qcom-sdm845-modem = "${nonarch_base_libdir}/firmware/qcom/sdm845/mba.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/modem*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/wlanmdsp.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/notice.txt_wlanmdsp"
-FILES:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${nonarch_base_libdir}/firmware/qcom/sdm845/Thundercomm/db845c/slpi*.*"
-FILES:${PN}-qcom-sm8250-adreno = "${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*"
-FILES:${PN}-qcom-sm8250-audio = "${nonarch_base_libdir}/firmware/qcom/sm8250/adsp*.*"
-FILES:${PN}-qcom-sm8250-compute = "${nonarch_base_libdir}/firmware/qcom/sm8250/cdsp*.*"
-FILES:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${nonarch_base_libdir}/firmware/qcom/sm8250/Thundercomm/RB5/slpi*.*"
-
-RDEPENDS:${PN}-qcom-venus-1.8 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-venus-4.2 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-venus-5.2 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-venus-5.4 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-venus-6.0 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-vpu-1.0 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-vpu-2.0 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a2xx = "${PN}-qcom-license ${PN}-qcom-yamato-license"
-RDEPENDS:${PN}-qcom-adreno-a3xx = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a4xx = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a530 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a630 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a650 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a660 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-adreno-a702 = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-apq8016-modem = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-apq8016-wifi = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-apq8096-adreno = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-apq8096-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-apq8096-modem = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qcm2290-adreno = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qcm2290-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qcm2290-modem = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qcm2290-wifi = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qrb4210-adreno = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qrb4210-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qrb4210-compute = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qrb4210-modem = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-qrb4210-wifi = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sdm845-adreno = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sdm845-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sdm845-compute = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sdm845-modem = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sm8250-adreno = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sm8250-audio = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sm8250-compute = "${PN}-qcom-license"
-RDEPENDS:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${PN}-qcom-license"
-
-RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
-RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
-RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
-RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
-
-FILES:${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio"
-
-FILES:${PN}-mellanox = "${nonarch_base_libdir}/firmware/mellanox"
-
-LICENSE:${PN}-prestera = "Firmware-Marvell"
-FILES:${PN}-prestera = "${nonarch_base_libdir}/firmware/mrvl/prestera"
-RDEPENDS:${PN}-prestera = "${PN}-marvell-license"
-
-# For Rockchip
-LICENSE:${PN}-rockchip-dptx = "Firmware-rockchip"
-FILES:${PN}-rockchip-license = "${nonarch_base_libdir}/firmware/LICENCE.rockchip"
-FILES:${PN}-rockchip-dptx = "${nonarch_base_libdir}/firmware/rockchip/dptx.bin"
-RDEPENDS:${PN}-rockchip-dptx = "${PN}-rockchip-license"
-
-# For Amlogic VDEC
-LICENSE:${PN}-amlogic-vdec = "Firmware-amlogic_vdec"
-FILES:${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic_vdec"
-FILES:${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*"
-RDEPENDS:${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license"
-
-# For other firmwares
-# Maybe split out to separate packages when needed.
-LICENSE:${PN} = "\
-    Firmware-Abilis \
-    & Firmware-agere \
-    & Firmware-amdgpu \
-    & Firmware-amd-ucode \
-    & Firmware-amlogic_vdec \
-    & Firmware-atmel \
-    & Firmware-ca0132 \
-    & Firmware-cavium \
-    & Firmware-chelsio_firmware \
-    & Firmware-cirrus \
-    & Firmware-cnm \
-    & Firmware-cw1200 \
-    & Firmware-dib0700 \
-    & Firmware-e100 \
-    & Firmware-ene_firmware \
-    & Firmware-fw_sst_0f28 \
-    & Firmware-go7007 \
-    & Firmware-hfi1_firmware \
-    & Firmware-ibt_firmware \
-    & Firmware-it913x \
-    & Firmware-IntcSST2 \
-    & Firmware-kaweth \
-    & Firmware-moxa \
-    & Firmware-myri10ge_firmware \
-    & Firmware-nvidia \
-    & Firmware-nxp \
-    & Firmware-OLPC \
-    & Firmware-ath9k-htc \
-    & Firmware-phanfw \
-    & Firmware-qat \
-    & Firmware-qcom \
-    & Firmware-qla1280 \
-    & Firmware-qla2xxx \
-    & Firmware-r8a779x_usb3 \
-    & Firmware-radeon \
-    & Firmware-ralink_a_mediatek_company_firmware \
-    & Firmware-ralink-firmware \
-    & Firmware-imx-sdma_firmware \
-    & Firmware-siano \
-    & Firmware-ti-connectivity \
-    & Firmware-ti-keystone \
-    & Firmware-ueagle-atm4-firmware \
-    & Firmware-wl1251 \
-    & Firmware-xc4000 \
-    & Firmware-xc5000 \
-    & Firmware-xc5000c \
-    & WHENCE \
-"
-
-FILES:${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*"
-FILES:${PN} += "${nonarch_base_libdir}/firmware/*"
-RDEPENDS:${PN} += "${PN}-license"
-RDEPENDS:${PN} += "${PN}-whence-license"
-
-# Make linux-firmware depend on all of the split-out packages.
-# Make linux-firmware-iwlwifi depend on all of the split-out iwlwifi packages.
-# Make linux-firmware-ibt depend on all of the split-out ibt packages.
-python populate_packages:prepend () {
-    firmware_pkgs = oe.utils.packages_filter_out_system(d)
-    d.appendVar('RRECOMMENDS:linux-firmware', ' ' + ' '.join(firmware_pkgs))
-
-    iwlwifi_pkgs = filter(lambda x: x.find('-iwlwifi-') != -1, firmware_pkgs)
-    d.appendVar('RRECOMMENDS:linux-firmware-iwlwifi', ' ' + ' '.join(iwlwifi_pkgs))
-
-    ibt_pkgs = filter(lambda x: x.find('-ibt-') != -1, firmware_pkgs)
-    d.appendVar('RRECOMMENDS:linux-firmware-ibt', ' ' + ' '.join(ibt_pkgs))
-}
-
-# Firmware files are generally not ran on the CPU, so they can be
-# allarch despite being architecture specific
-INSANE_SKIP = "arch"
-
-# Don't warn about already stripped files
-INSANE_SKIP:${PN} = "already-stripped"
-
-# No need to put firmware into the sysroot
-SYSROOT_DIRS_IGNORE += "${nonarch_base_libdir}/firmware"
diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb
new file mode 100644
index 0000000..ff79bb9
--- /dev/null
+++ b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20240312.bb
@@ -0,0 +1,1583 @@
+SUMMARY = "Firmware files for use with Linux kernel"
+HOMEPAGE = "https://www.kernel.org/"
+DESCRIPTION = "Linux firmware is a package distributed alongside the Linux kernel \
+that contains firmware binary blobs necessary for partial or full functionality \
+of certain hardware devices."
+SECTION = "kernel"
+
+LICENSE = "\
+    Firmware-Abilis \
+    & Firmware-adsp_sst \
+    & Firmware-agere \
+    & Firmware-amdgpu \
+    & Firmware-amd-ucode \
+    & Firmware-amlogic_vdec \
+    & Firmware-amphion_vpu \
+    & Firmware-atheros_firmware \
+    & Firmware-atmel \
+    & Firmware-broadcom_bcm43xx \
+    & Firmware-ca0132 \
+    & Firmware-cavium \
+    & Firmware-chelsio_firmware \
+    & Firmware-cirrus \
+    & Firmware-cnm \
+    & Firmware-cw1200 \
+    & Firmware-cypress \
+    & Firmware-dib0700 \
+    & Firmware-e100 \
+    & Firmware-ene_firmware \
+    & Firmware-fw_sst_0f28 \
+    & Firmware-go7007 \
+    & Firmware-hfi1_firmware \
+    & Firmware-i915 \
+    & Firmware-ibt_firmware \
+    & Firmware-ice \
+    & Firmware-ice_enhanced \
+    & Firmware-it913x \
+    & Firmware-iwlwifi_firmware \
+    & Firmware-IntcSST2 \
+    & Firmware-kaweth \
+    & Firmware-linaro \
+    & Firmware-Lontium \
+    & Firmware-Marvell \
+    & Firmware-mediatek \
+    & Firmware-microchip \
+    & Firmware-moxa \
+    & Firmware-myri10ge_firmware \
+    & Firmware-netronome \
+    & Firmware-nvidia \
+    & Firmware-nxp \
+    & Firmware-nxp_mc_firmware \
+    & Firmware-OLPC \
+    & Firmware-ath9k-htc \
+    & Firmware-phanfw \
+    & Firmware-powervr \
+    & Firmware-qat \
+    & Firmware-qcom \
+    & Firmware-qcom-yamato \
+    & Firmware-qla1280 \
+    & Firmware-qla2xxx \
+    & Firmware-qualcommAthos_ar3k \
+    & Firmware-qualcommAthos_ath10k \
+    & Firmware-r8a779x_usb3 \
+    & Firmware-radeon \
+    & Firmware-ralink_a_mediatek_company_firmware \
+    & Firmware-ralink-firmware \
+    & Firmware-rockchip \
+    & Firmware-rtlwifi_firmware \
+    & Firmware-imx-sdma_firmware \
+    & Firmware-siano \
+    & Firmware-ti-connectivity \
+    & Firmware-ti-keystone \
+    & Firmware-ueagle-atm4-firmware \
+    & Firmware-via_vt6656 \
+    & Firmware-wl1251 \
+    & Firmware-xc4000 \
+    & Firmware-xc5000 \
+    & Firmware-xc5000c \
+    & WHENCE \
+    & GPL-2.0-or-later \
+"
+
+LIC_FILES_CHKSUM = "file://LICENCE.Abilis;md5=b5ee3f410780e56711ad48eadc22b8bc \
+                    file://LICENCE.adsp_sst;md5=615c45b91a5a4a9fe046d6ab9a2df728 \
+                    file://LICENCE.agere;md5=af0133de6b4a9b2522defd5f188afd31 \
+                    file://LICENSE.amdgpu;md5=a2589a05ea5b6bd2b7f4f623c7e7a649 \
+                    file://LICENSE.amd-ucode;md5=6ca90c57f7b248de1e25c7f68ffc4698 \
+                    file://LICENSE.amlogic_vdec;md5=dc44f59bf64a81643e500ad3f39a468a \
+                    file://LICENSE.amphion_vpu;md5=2bcdc00527b2d0542bd92b52aaec2b60 \
+                    file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13 \
+                    file://LICENSE.atmel;md5=aa74ac0c60595dee4d4e239107ea77a3 \
+                    file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \
+                    file://LICENCE.ca0132;md5=209b33e66ee5be0461f13d31da392198 \
+                    file://LICENCE.cadence;md5=009f46816f6956cfb75ede13d3e1cee0 \
+                    file://LICENCE.cavium;md5=c37aaffb1ebe5939b2580d073a95daea \
+                    file://LICENCE.chelsio_firmware;md5=819aa8c3fa453f1b258ed8d168a9d903 \
+                    file://LICENSE.cirrus;md5=662ea2c1a8888f7d79ed7f27c27472e1 \
+                    file://LICENCE.cnm;md5=93b67e6bac7f8fec22b96b8ad0a1a9d0 \
+                    file://LICENCE.cw1200;md5=f0f770864e7a8444a5c5aa9d12a3a7ed \
+                    file://LICENCE.cypress;md5=48cd9436c763bf873961f9ed7b5c147b \
+                    file://LICENSE.dib0700;md5=f7411825c8a555a1a3e5eab9ca773431 \
+                    file://LICENCE.e100;md5=ec0f84136766df159a3ae6d02acdf5a8 \
+                    file://LICENCE.ene_firmware;md5=ed67f0f62f8f798130c296720b7d3921 \
+                    file://LICENCE.fw_sst_0f28;md5=6353931c988ad52818ae733ac61cd293 \
+                    file://LICENCE.go7007;md5=c0bb9f6aaaba55b0529ee9b30aa66beb \
+                    file://LICENSE.hfi1_firmware;md5=5e7b6e586ce7339d12689e49931ad444 \
+                    file://LICENSE.i915;md5=2b0b2e0d20984affd4490ba2cba02570 \
+                    file://LICENCE.ibt_firmware;md5=fdbee1ddfe0fb7ab0b2fcd6b454a366b \
+                    file://LICENSE.ice;md5=742ab4850f2670792940e6d15c974b2f \
+                    file://LICENSE.ice_enhanced;md5=f305cfc31b64f95f774f9edd9df0224d \
+                    file://LICENCE.IntcSST2;md5=9e7d8bea77612d7cc7d9e9b54b623062 \
+                    file://LICENCE.it913x;md5=1fbf727bfb6a949810c4dbfa7e6ce4f8 \
+                    file://LICENCE.iwlwifi_firmware;md5=2ce6786e0fc11ac6e36b54bb9b799f1b \
+                    file://LICENCE.kaweth;md5=b1d876e562f4b3b8d391ad8395dfe03f \
+                    file://LICENCE.linaro;md5=936d91e71cf9cd30e733db4bf11661cc \
+                    file://LICENSE.Lontium;md5=4ec8dc582ff7295f39e2ca6a7b0be2b6 \
+                    file://LICENCE.Marvell;md5=28b6ed8bd04ba105af6e4dcd6e997772 \
+                    file://LICENCE.mediatek;md5=7c1976b63217d76ce47d0a11d8a79cf2 \
+                    file://LICENCE.microchip;md5=db753b00305675dfbf120e3f24a47277 \
+                    file://LICENCE.moxa;md5=1086614767d8ccf744a923289d3d4261 \
+                    file://LICENCE.myri10ge_firmware;md5=42e32fb89f6b959ca222e25ac8df8fed \
+                    file://LICENCE.Netronome;md5=4add08f2577086d44447996503cddf5f \
+                    file://LICENCE.nvidia;md5=4428a922ed3ba2ceec95f076a488ce07 \
+                    file://LICENCE.NXP;md5=58bb8ba632cd729b9ba6183bc6aed36f \
+                    file://LICENSE.nxp;md5=cca321ca1524d6a1e4fed87486cd82dc \
+                    file://LICENSE.nxp_mc_firmware;md5=9dc97e4b279b3858cae8879ae2fe5dd7 \
+                    file://LICENCE.OLPC;md5=5b917f9d8c061991be4f6f5f108719cd \
+                    file://LICENCE.open-ath9k-htc-firmware;md5=1b33c9f4d17bc4d457bdb23727046837 \
+                    file://LICENCE.phanfw;md5=954dcec0e051f9409812b561ea743bfa \
+                    file://LICENSE.powervr;md5=83045ed2a2cda15b4eaff682c98c9533 \
+                    file://LICENCE.qat_firmware;md5=72de83dfd9b87be7685ed099a39fbea4 \
+                    file://LICENSE.qcom;md5=164e3362a538eb11d3ac51e8e134294b \
+                    file://LICENSE.qcom_yamato;md5=d0de0eeccaf1843a850bf7a6777eec5c \
+                    file://LICENCE.qla1280;md5=d6895732e622d950609093223a2c4f5d \
+                    file://LICENCE.qla2xxx;md5=505855e921b75f1be4a437ad9b79dff0 \
+                    file://LICENSE.QualcommAtheros_ar3k;md5=b5fe244fb2b532311de1472a3bc06da5 \
+                    file://LICENSE.QualcommAtheros_ath10k;md5=cb42b686ee5f5cb890275e4321db60a8 \
+                    file://LICENCE.r8a779x_usb3;md5=4c1671656153025d7076105a5da7e498 \
+                    file://LICENSE.radeon;md5=68ec28bacb3613200bca44f404c69b16 \
+                    file://LICENCE.ralink_a_mediatek_company_firmware;md5=728f1a85fd53fd67fa8d7afb080bc435 \
+                    file://LICENCE.ralink-firmware.txt;md5=ab2c269277c45476fb449673911a2dfd \
+                    file://LICENCE.rockchip;md5=5fd70190c5ed39734baceada8ecced26 \
+                    file://LICENCE.rtlwifi_firmware.txt;md5=00d06cfd3eddd5a2698948ead2ad54a5 \
+                    file://LICENSE.sdma_firmware;md5=51e8c19ecc2270f4b8ea30341ad63ce9 \
+                    file://LICENCE.siano;md5=4556c1bf830067f12ca151ad953ec2a5 \
+                    file://LICENCE.ti-connectivity;md5=c5e02be633f1499c109d1652514d85ec \
+                    file://LICENCE.ti-keystone;md5=3a86335d32864b0bef996bee26cc0f2c \
+                    file://LICENCE.ueagle-atm4-firmware;md5=4ed7ea6b507ccc583b9d594417714118 \
+                    file://LICENCE.via_vt6656;md5=e4159694cba42d4377a912e78a6e850f \
+                    file://LICENCE.wl1251;md5=ad3f81922bb9e197014bb187289d3b5b \
+                    file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
+                    file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
+                    file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
+                    file://WHENCE;md5=${WHENCE_CHKSUM} \
+                    "
+# WHENCE checksum is defined separately to ease overriding it if
+# class-devupstream is selected.
+WHENCE_CHKSUM  = "514da1cd8b363373030f0c16749feb8d"
+
+# These are not common licenses, set NO_GENERIC_LICENSE for them
+# so that the license files will be copied from fetched source
+NO_GENERIC_LICENSE[Firmware-Abilis] = "LICENCE.Abilis"
+NO_GENERIC_LICENSE[Firmware-adsp_sst] = "LICENCE.adsp_sst"
+NO_GENERIC_LICENSE[Firmware-agere] = "LICENCE.agere"
+NO_GENERIC_LICENSE[Firmware-amdgpu] = "LICENSE.amdgpu"
+NO_GENERIC_LICENSE[Firmware-amd-ucode] = "LICENSE.amd-ucode"
+NO_GENERIC_LICENSE[Firmware-amlogic_vdec] = "LICENSE.amlogic_vdec"
+NO_GENERIC_LICENSE[Firmware-amphion_vpu] = "LICENSE.amphion_vpu"
+NO_GENERIC_LICENSE[Firmware-atheros_firmware] = "LICENCE.atheros_firmware"
+NO_GENERIC_LICENSE[Firmware-atmel] = "LICENSE.atmel"
+NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx] = "LICENCE.broadcom_bcm43xx"
+NO_GENERIC_LICENSE[Firmware-ca0132] = "LICENCE.ca0132"
+NO_GENERIC_LICENSE[Firmware-cadence] = "LICENCE.cadence"
+NO_GENERIC_LICENSE[Firmware-cavium] = "LICENCE.cavium"
+NO_GENERIC_LICENSE[Firmware-chelsio_firmware] = "LICENCE.chelsio_firmware"
+NO_GENERIC_LICENSE[Firmware-cirrus] = "LICENSE.cirrus"
+NO_GENERIC_LICENSE[Firmware-cnm] = "LICENCE.cnm"
+NO_GENERIC_LICENSE[Firmware-cw1200] = "LICENCE.cw1200"
+NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress"
+NO_GENERIC_LICENSE[Firmware-dib0700] = "LICENSE.dib0700"
+NO_GENERIC_LICENSE[Firmware-e100] = "LICENCE.e100"
+NO_GENERIC_LICENSE[Firmware-ene_firmware] = "LICENCE.ene_firmware"
+NO_GENERIC_LICENSE[Firmware-fw_sst_0f28] = "LICENCE.fw_sst_0f28"
+NO_GENERIC_LICENSE[Firmware-go7007] = "LICENCE.go7007"
+NO_GENERIC_LICENSE[Firmware-hfi1_firmware] = "LICENSE.hfi1_firmware"
+NO_GENERIC_LICENSE[Firmware-i915] = "LICENSE.i915"
+NO_GENERIC_LICENSE[Firmware-ibt_firmware] = "LICENCE.ibt_firmware"
+NO_GENERIC_LICENSE[Firmware-ice] = "LICENSE.ice"
+NO_GENERIC_LICENSE[Firmware-ice_enhanced] = "LICENSE.ice_enhanced"
+NO_GENERIC_LICENSE[Firmware-IntcSST2] = "LICENCE.IntcSST2"
+NO_GENERIC_LICENSE[Firmware-it913x] = "LICENCE.it913x"
+NO_GENERIC_LICENSE[Firmware-iwlwifi_firmware] = "LICENCE.iwlwifi_firmware"
+NO_GENERIC_LICENSE[Firmware-kaweth] = "LICENCE.kaweth"
+NO_GENERIC_LICENSE[Firmware-linaro] = "LICENCE.linaro"
+NO_GENERIC_LICENSE[Firmware-Lontium] = "LICENSE.Lontium"
+NO_GENERIC_LICENSE[Firmware-Marvell] = "LICENCE.Marvell"
+NO_GENERIC_LICENSE[Firmware-mediatek] = "LICENCE.mediatek"
+NO_GENERIC_LICENSE[Firmware-microchip] = "LICENCE.microchip"
+NO_GENERIC_LICENSE[Firmware-moxa] = "LICENCE.moxa"
+NO_GENERIC_LICENSE[Firmware-myri10ge_firmware] = "LICENCE.myri10ge_firmware"
+NO_GENERIC_LICENSE[Firmware-netronome] = "LICENCE.Netronome"
+NO_GENERIC_LICENSE[Firmware-nvidia] = "LICENCE.nvidia"
+NO_GENERIC_LICENSE[Firmware-nxp] = "LICENSE.nxp"
+NO_GENERIC_LICENSE[Firmware-nxp_mc_firmware] = "LICENSE.nxp_mc_firmware"
+NO_GENERIC_LICENSE[Firmware-OLPC] = "LICENCE.OLPC"
+NO_GENERIC_LICENSE[Firmware-ath9k-htc] = "LICENCE.open-ath9k-htc-firmware"
+NO_GENERIC_LICENSE[Firmware-phanfw] = "LICENCE.phanfw"
+NO_GENERIC_LICENSE[Firmware-powervr] = "LICENSE.powervr"
+NO_GENERIC_LICENSE[Firmware-qat] = "LICENCE.qat_firmware"
+NO_GENERIC_LICENSE[Firmware-qcom] = "LICENSE.qcom"
+NO_GENERIC_LICENSE[Firmware-qcom-yamato] = "LICENSE.qcom_yamato"
+NO_GENERIC_LICENSE[Firmware-qla1280] = "LICENCE.qla1280"
+NO_GENERIC_LICENSE[Firmware-qla2xxx] = "LICENCE.qla2xxx"
+NO_GENERIC_LICENSE[Firmware-qualcommAthos_ar3k] = "LICENSE.QualcommAtheros_ar3k"
+NO_GENERIC_LICENSE[Firmware-qualcommAthos_ath10k] = "LICENSE.QualcommAtheros_ath10k"
+NO_GENERIC_LICENSE[Firmware-r8a779x_usb3] = "LICENCE.r8a779x_usb3"
+NO_GENERIC_LICENSE[Firmware-radeon] = "LICENSE.radeon"
+NO_GENERIC_LICENSE[Firmware-ralink_a_mediatek_company_firmware] = "LICENCE.ralink_a_mediatek_company_firmware"
+NO_GENERIC_LICENSE[Firmware-ralink-firmware] = "LICENCE.ralink-firmware.txt"
+NO_GENERIC_LICENSE[Firmware-rockchip] = "LICENCE.rockchip"
+NO_GENERIC_LICENSE[Firmware-rtlwifi_firmware] = "LICENCE.rtlwifi_firmware.txt"
+NO_GENERIC_LICENSE[Firmware-siano] = "LICENCE.siano"
+NO_GENERIC_LICENSE[Firmware-imx-sdma_firmware] = "LICENSE.sdma_firmware"
+NO_GENERIC_LICENSE[Firmware-ti-connectivity] = "LICENCE.ti-connectivity"
+NO_GENERIC_LICENSE[Firmware-ti-keystone] = "LICENCE.ti-keystone"
+NO_GENERIC_LICENSE[Firmware-ueagle-atm4-firmware] = "LICENCE.ueagle-atm4-firmware"
+NO_GENERIC_LICENSE[Firmware-via_vt6656] = "LICENCE.via_vt6656"
+NO_GENERIC_LICENSE[Firmware-wl1251] = "LICENCE.wl1251"
+NO_GENERIC_LICENSE[Firmware-xc4000] = "LICENCE.xc4000"
+NO_GENERIC_LICENSE[Firmware-xc5000] = "LICENCE.xc5000"
+NO_GENERIC_LICENSE[Firmware-xc5000c] = "LICENCE.xc5000c"
+NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
+
+PE = "1"
+
+SRC_URI = "\
+  ${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz \
+"
+
+BBCLASSEXTEND = "devupstream:target"
+SRC_URI:class-devupstream = "git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git;protocol=https;branch=main"
+# Pin this to the 20220509 release, override this in local.conf
+SRCREV:class-devupstream ?= "b19cbdca78ab2adfd210c91be15a22568e8b8cae"
+
+SRC_URI[sha256sum] = "b2327a54ad1897c828008caf63af5ee15469ba723a5016be58f2b44f07bd4b94"
+
+inherit allarch
+
+CLEANBROKEN = "1"
+
+# Use PACKAGECONFIG_CONFARGS to set the Makefile target
+PACKAGECONFIG ??= ""
+# Enabling dedup will turn duplicate firmware files into links
+PACKAGECONFIG[deduplicate] = "install,install-nodedup,rdfind-native"
+
+do_compile() {
+	:
+}
+
+do_install() {
+        oe_runmake 'DESTDIR=${D}' 'FIRMWAREDIR=${nonarch_base_libdir}/firmware' ${PACKAGECONFIG_CONFARGS}
+        cp LICEN[CS]E.* WHENCE ${D}${nonarch_base_libdir}/firmware/
+}
+
+
+PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \
+             ${PN}-cw1200-license ${PN}-cw1200 \
+             ${PN}-ralink-license ${PN}-ralink \
+             ${PN}-mt76x-license ${PN}-mt7601u ${PN}-mt7650 ${PN}-mt76x2 \
+             ${PN}-radeon-license ${PN}-radeon \
+             ${PN}-amdgpu-license ${PN}-amdgpu \
+             ${PN}-marvell-license ${PN}-pcie8897 ${PN}-pcie8997 \
+             ${PN}-mediatek-license ${PN}-mediatek \
+             ${PN}-microchip-license ${PN}-microchip \
+             ${PN}-moxa-license ${PN}-moxa \
+             ${PN}-sd8686 ${PN}-sd8688 ${PN}-sd8787 ${PN}-sd8797 ${PN}-sd8801 \
+             ${PN}-sd8887 ${PN}-sd8897 ${PN}-sd8997 ${PN}-usb8997 \
+             ${PN}-ti-connectivity-license ${PN}-wlcommon ${PN}-wl12xx ${PN}-wl18xx \
+             ${PN}-ti-keystone-license ${PN}-ti-keystone \
+             ${PN}-vt6656-license ${PN}-vt6656 \
+             ${PN}-rs9113 ${PN}-rs9116 \
+             ${PN}-rtl-license ${PN}-rtl8188 ${PN}-rtl8192cu ${PN}-rtl8192ce ${PN}-rtl8192su ${PN}-rtl8723 ${PN}-rtl8821 \
+             ${PN}-rtl8761 \
+             ${PN}-rtl8168 \
+             ${PN}-rtl8822 \
+             ${PN}-rtl-nic \
+             ${PN}-cypress-license \
+             ${PN}-broadcom-license \
+             ${PN}-bcm-0bb4-0306 \
+             ${PN}-bcm43143 \
+             ${PN}-bcm43236b \
+             ${PN}-bcm43241b0 \
+             ${PN}-bcm43241b4 \
+             ${PN}-bcm43241b5 \
+             ${PN}-bcm43242a \
+             ${PN}-bcm4329 \
+             ${PN}-bcm4329-fullmac \
+             ${PN}-bcm4330 \
+             ${PN}-bcm4334 \
+             ${PN}-bcm43340 \
+             ${PN}-bcm4335 \
+             ${PN}-bcm43362 \
+             ${PN}-bcm4339 \
+             ${PN}-bcm43430 \
+             ${PN}-bcm43430a0 \
+             ${PN}-bcm43455 \
+             ${PN}-bcm4350 \
+             ${PN}-bcm4350c2 \
+             ${PN}-bcm4354 \
+             ${PN}-bcm4356 \
+             ${PN}-bcm4356-pcie \
+             ${PN}-bcm43569 \
+             ${PN}-bcm43570 \
+             ${PN}-bcm4358 \
+             ${PN}-bcm43602 \
+             ${PN}-bcm4366b \
+             ${PN}-bcm4366c \
+             ${PN}-bcm4371 \
+             ${PN}-bcm4373 \
+             ${PN}-bcm43xx \
+             ${PN}-bcm43xx-hdr \
+             ${PN}-cirrus-license ${PN}-cirrus \
+             ${PN}-cnm-license ${PN}-cnm \
+             ${PN}-atheros-license ${PN}-ar5523 ${PN}-ar9170 ${PN}-ath6k ${PN}-ath9k ${PN}-ath3k \
+             ${PN}-carl9170 \
+             ${PN}-ar3k-license ${PN}-ar3k ${PN}-ath10k-license ${PN}-ath10k ${PN}-ath11k ${PN}-qca \
+             \
+             ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \
+             \
+             ${PN}-iwlwifi-license ${PN}-iwlwifi \
+             ${PN}-iwlwifi-135-6 \
+             ${PN}-iwlwifi-3160-7 ${PN}-iwlwifi-3160-8 ${PN}-iwlwifi-3160-9 \
+             ${PN}-iwlwifi-3160-10 ${PN}-iwlwifi-3160-12 ${PN}-iwlwifi-3160-13 \
+             ${PN}-iwlwifi-3160-16 ${PN}-iwlwifi-3160-17 \
+             ${PN}-iwlwifi-6000-4 ${PN}-iwlwifi-6000g2a-5 ${PN}-iwlwifi-6000g2a-6 \
+             ${PN}-iwlwifi-6000g2b-5 ${PN}-iwlwifi-6000g2b-6 \
+             ${PN}-iwlwifi-6050-4 ${PN}-iwlwifi-6050-5 \
+             ${PN}-iwlwifi-7260 \
+             ${PN}-iwlwifi-7265 \
+             ${PN}-iwlwifi-7265d ${PN}-iwlwifi-8000c ${PN}-iwlwifi-8265 \
+             ${PN}-iwlwifi-9000 \
+             ${PN}-iwlwifi-9260 \
+             ${PN}-iwlwifi-misc \
+             ${PN}-ibt-license ${PN}-ibt \
+             ${PN}-ibt-11-5 ${PN}-ibt-12-16 ${PN}-ibt-hw-37-7 ${PN}-ibt-hw-37-8 \
+             ${PN}-ibt-17 \
+             ${PN}-ibt-20 \
+             ${PN}-ibt-misc \
+             ${PN}-i915-license ${PN}-i915 \
+             ${PN}-ice-license ${PN}-ice \
+             ${PN}-ice-enhanced-license ${PN}-ice-enhanced \
+             ${PN}-adsp-sst-license ${PN}-adsp-sst \
+             ${PN}-bnx2 \
+             ${PN}-bnx2x \
+             ${PN}-liquidio \
+             ${PN}-mellanox \
+             ${PN}-nvidia-license \
+             ${PN}-nvidia-tegra-k1 ${PN}-nvidia-tegra \
+             ${PN}-nvidia-gpu \
+             ${PN}-nxp-license \
+             ${PN}-nxp8987-sdio \
+             ${PN}-nxp8997-common \
+             ${PN}-nxp8997-pcie \
+             ${PN}-nxp8997-sdio \
+             ${PN}-nxp9098-common \
+             ${PN}-nxp9098-pcie \
+             ${PN}-nxp9098-sdio \
+             ${PN}-nxpiw416-sdio \
+             ${PN}-nxpiw612-sdio \
+             ${PN}-nxp-mc-license ${PN}-nxp-mc \
+             ${PN}-netronome-license ${PN}-netronome \
+             ${PN}-olpc-license ${PN}-olpc \
+             ${PN}-phanfw-license ${PN}-phanfw \
+             ${PN}-powervr-license ${PN}-powervr \
+             ${PN}-prestera \
+             ${PN}-qat ${PN}-qat-license \
+             ${PN}-qed \
+             ${PN}-qcom-license ${PN}-qcom-yamato-license \
+             ${PN}-qcom-venus-1.8 ${PN}-qcom-venus-4.2 ${PN}-qcom-venus-5.2 ${PN}-qcom-venus-5.4 ${PN}-qcom-venus-6.0 \
+             ${PN}-qcom-vpu-1.0 ${PN}-qcom-vpu-2.0 \
+             ${PN}-qcom-adreno-a2xx ${PN}-qcom-adreno-a3xx ${PN}-qcom-adreno-a4xx ${PN}-qcom-adreno-a530 \
+             ${PN}-qcom-adreno-a630 ${PN}-qcom-adreno-a650 ${PN}-qcom-adreno-a660 ${PN}-qcom-adreno-a702 \
+             ${PN}-qcom-apq8016-modem ${PN}-qcom-apq8016-wifi \
+             ${PN}-qcom-apq8096-adreno ${PN}-qcom-apq8096-audio ${PN}-qcom-apq8096-modem \
+             ${PN}-qcom-qcm2290-adreno ${PN}-qcom-qcm2290-audio ${PN}-qcom-qcm2290-modem ${PN}-qcom-qcm2290-wifi  \
+             ${PN}-qcom-qrb4210-adreno ${PN}-qcom-qrb4210-audio ${PN}-qcom-qrb4210-compute \
+             ${PN}-qcom-qrb4210-modem ${PN}-qcom-qrb4210-wifi  \
+             ${PN}-qcom-sc8280xp-lenovo-x13s-compat \
+             ${PN}-qcom-sc8280xp-lenovo-x13s-audio \
+             ${PN}-qcom-sc8280xp-lenovo-x13s-adreno \
+             ${PN}-qcom-sc8280xp-lenovo-x13s-compute \
+             ${PN}-qcom-sc8280xp-lenovo-x13s-sensors \
+             ${PN}-qcom-sdm845-adreno ${PN}-qcom-sdm845-audio ${PN}-qcom-sdm845-compute ${PN}-qcom-sdm845-modem \
+             ${PN}-qcom-sdm845-thundercomm-db845c-sensors \
+             ${PN}-qcom-sm8250-adreno ${PN}-qcom-sm8250-audio ${PN}-qcom-sm8250-compute \
+             ${PN}-qcom-sm8250-thundercomm-rb5-sensors \
+             ${PN}-qla2xxx ${PN}-qla2xxx-license \
+             ${PN}-rockchip-license ${PN}-rockchip-dptx \
+             ${PN}-amlogic-vdec-license ${PN}-amlogic-vdec \
+             ${PN}-lt9611uxc ${PN}-lontium-license \
+             ${PN}-whence-license \
+             ${PN}-wl1251-license ${PN}-wl1251 \
+             ${PN}-xc4000-license ${PN}-xc4000 \
+             ${PN}-xc5000-license ${PN}-xc5000 \
+             ${PN}-xc5000c-license ${PN}-xc5000c \
+             ${PN}-license \
+             "
+
+# For Amphion VPU
+LICENSE:${PN}-amphion-vpu = "Firmware-amphion_vpu"
+LICENSE:${PN}-amphion-vpu-license = "Firmware-amphion_vpu"
+
+FILES:${PN}-amphion-vpu = "${nonarch_base_libdir}/firmware/amphion/*"
+FILES:${PN}-amphion-vpu-license = " \
+  ${nonarch_base_libdir}/firmware/LICENSE.amphion_vpu \
+"
+RDEPENDS:${PN}-amphion-vpu += "${PN}-amphion-vpu-license"
+
+# For cw1200
+LICENSE:${PN}-cw1200 = "Firmware-cw1200"
+LICENSE:${PN}-cw1200-license = "Firmware-cw1200"
+
+FILES:${PN}-cw1200 = "${nonarch_base_libdir}/firmware/wsm_22.bin"
+FILES:${PN}-cw1200-license = "${nonarch_base_libdir}/firmware/LICENCE.cw1200"
+
+RDEPENDS:${PN}-cw1200 += "${PN}-cw1200-license"
+
+# For atheros
+LICENSE:${PN}-ar5523 = "Firmware-atheros_firmware"
+LICENSE:${PN}-ar9170 = "Firmware-atheros_firmware"
+LICENSE:${PN}-ath3k = "Firmware-atheros_firmware"
+LICENSE:${PN}-ath6k = "Firmware-atheros_firmware"
+LICENSE:${PN}-ath9k = "Firmware-atheros_firmware"
+LICENSE:${PN}-atheros-license = "Firmware-atheros_firmware"
+
+FILES:${PN}-atheros-license = "${nonarch_base_libdir}/firmware/LICENCE.atheros_firmware"
+FILES:${PN}-ar5523 = " \
+  ${nonarch_base_libdir}/firmware/ar5523.bin \
+"
+FILES:${PN}-ar9170 = " \
+  ${nonarch_base_libdir}/firmware/ar9170*.fw \
+"
+FILES:${PN}-ath3k = " \
+  ${nonarch_base_libdir}/firmware/ath3k*fw \
+"
+FILES:${PN}-ath6k = " \
+  ${nonarch_base_libdir}/firmware/ath6k \
+"
+FILES:${PN}-ath9k = " \
+  ${nonarch_base_libdir}/firmware/ar9271.fw \
+  ${nonarch_base_libdir}/firmware/ar7010*.fw \
+  ${nonarch_base_libdir}/firmware/htc_9271.fw \
+  ${nonarch_base_libdir}/firmware/htc_7010.fw \
+  ${nonarch_base_libdir}/firmware/ath9k_htc/htc_7010-1.4.0.fw \
+  ${nonarch_base_libdir}/firmware/ath9k_htc/htc_9271-1.4.0.fw \
+"
+
+RDEPENDS:${PN}-ar5523 += "${PN}-atheros-license"
+RDEPENDS:${PN}-ar9170 += "${PN}-atheros-license"
+RDEPENDS:${PN}-ath6k += "${PN}-atheros-license"
+RDEPENDS:${PN}-ath9k += "${PN}-atheros-license"
+
+# For carl9170
+
+FILES:${PN}-carl9170 = " \
+  ${nonarch_base_libdir}/firmware/carl9170*.fw \
+"
+LICENSE:${PN}-carl9170 = "GPL-2.0-or-later"
+
+# For QualCommAthos
+LICENSE:${PN}-ar3k = "Firmware-qualcommAthos_ar3k & Firmware-atheros_firmware"
+LICENSE:${PN}-ar3k-license = "Firmware-qualcommAthos_ar3k"
+LICENSE:${PN}-ath10k = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-ath10k-license = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-qca = "Firmware-qualcommAthos_ath10k"
+
+FILES:${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k"
+FILES:${PN}-ar3k = " \
+  ${nonarch_base_libdir}/firmware/ar3k \
+"
+
+FILES:${PN}-ath10k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ath10k"
+FILES:${PN}-ath10k = " \
+  ${nonarch_base_libdir}/firmware/ath10k \
+"
+
+FILES:${PN}-ath11k = " \
+  ${nonarch_base_libdir}/firmware/ath11k \
+"
+
+FILES:${PN}-qca = " \
+  ${nonarch_base_libdir}/firmware/qca \
+"
+
+RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license"
+RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license"
+RDEPENDS:${PN}-ath11k += "${PN}-ath10k-license"
+RDEPENDS:${PN}-qca += "${PN}-ath10k-license"
+
+# For ralink
+LICENSE:${PN}-ralink = "Firmware-ralink-firmware"
+LICENSE:${PN}-ralink-license = "Firmware-ralink-firmware"
+
+FILES:${PN}-ralink-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink-firmware.txt"
+FILES:${PN}-ralink = " \
+  ${nonarch_base_libdir}/firmware/rt*.bin \
+"
+
+RDEPENDS:${PN}-ralink += "${PN}-ralink-license"
+
+# For mediatek MT7601U
+LICENSE:${PN}-mt76x-license = "Firmware-ralink_a_mediatek_company_firmware"
+FILES:${PN}-mt76x-license = "${nonarch_base_libdir}/firmware/LICENCE.ralink_a_mediatek_company_firmware"
+
+LICENSE:${PN}-mt7601u = "Firmware-ralink_a_mediatek_company_firmware"
+
+FILES:${PN}-mt7601u = " \
+  ${nonarch_base_libdir}/firmware/mediatek/mt7601u.bin \
+  ${nonarch_base_libdir}/firmware/mt7601u.bin \
+"
+RDEPENDS:${PN}-mt7601u += "${PN}-mt76x-license"
+
+# For MediaTek Bluetooth USB driver 7650
+LICENSE:${PN}-mt7650 = "Firmware-ralink_a_mediatek_company_firmware"
+
+FILES:${PN}-mt7650 = " \
+  ${nonarch_base_libdir}/firmware/mediatek/mt7650.bin \
+  ${nonarch_base_libdir}/firmware/mt7650.bin \
+"
+RDEPENDS:${PN}-mt7650 += "${PN}-mt76x-license"
+
+# For MediaTek MT76x2 Wireless MACs
+LICENSE:${PN}-mt76x2 = "Firmware-ralink_a_mediatek_company_firmware"
+
+FILES:${PN}-mt76x2 = " \
+  ${nonarch_base_libdir}/firmware/mediatek/mt7662.bin \
+  ${nonarch_base_libdir}/firmware/mt7662.bin \
+  ${nonarch_base_libdir}/firmware/mediatek/mt7662_rom_patch.bin \
+  ${nonarch_base_libdir}/firmware/mt7662_rom_patch.bin \
+"
+RDEPENDS:${PN}-mt76x2 += "${PN}-mt76x-license"
+
+# For MediaTek
+LICENSE:${PN}-mediatek = "Firmware-mediatek"
+LICENSE:${PN}-mediatek-license = "Firmware-mediatek"
+
+FILES:${PN}-mediatek = " \
+  ${nonarch_base_libdir}/firmware/mediatek/* \
+  ${nonarch_base_libdir}/firmware/vpu_d.bin \
+  ${nonarch_base_libdir}/firmware/vpu_p.bin \
+"
+FILES:${PN}-mediatek-license = " \
+  ${nonarch_base_libdir}/firmware/LICENCE.mediatek \
+"
+RDEPENDS:${PN}-mediatek += "${PN}-mediatek-license"
+
+# For Microchip
+LICENSE:${PN}-microchip = "Firmware-microchip"
+LICENSE:${PN}-microchip-license = "Firmware-microchip"
+
+FILES:${PN}-microchip = "${nonarch_base_libdir}/firmware/microchip/*"
+FILES:${PN}-microchip-license = " \
+  ${nonarch_base_libdir}/firmware/LICENCE.microchip \
+"
+RDEPENDS:${PN}-microchip += "${PN}-microchip-license"
+
+# For MOXA
+LICENSE:${PN}-moxa = "Firmware-moxa"
+LICENSE:${PN}-moxa-license = "Firmware-moxa"
+
+FILES:${PN}-moxa = "${nonarch_base_libdir}/firmware/moxa"
+FILES:${PN}-moxa-license = "${nonarch_base_libdir}/firmware/LICENCE.moxa"
+
+RDEPENDS:${PN}-moxa += "${PN}-moxa-license"
+
+# For radeon
+
+LICENSE:${PN}-radeon = "Firmware-radeon"
+LICENSE:${PN}-radeon-license = "Firmware-radeon"
+
+FILES:${PN}-radeon-license = "${nonarch_base_libdir}/firmware/LICENSE.radeon"
+FILES:${PN}-radeon = " \
+  ${nonarch_base_libdir}/firmware/radeon \
+"
+
+RDEPENDS:${PN}-radeon += "${PN}-radeon-license"
+
+# For amdgpu
+LICENSE:${PN}-amdgpu = "Firmware-amdgpu"
+LICENSE:${PN}-amdgpu-license = "Firmware-amdgpu"
+
+FILES:${PN}-amdgpu-license = "${nonarch_base_libdir}/firmware/LICENSE.amdgpu"
+FILES:${PN}-amdgpu = " \
+  ${nonarch_base_libdir}/firmware/amdgpu \
+"
+
+RDEPENDS:${PN}-amdgpu += "${PN}-amdgpu-license"
+
+# For lontium
+LICENSE:${PN}-lt9611uxc = "Firmware-Lontium"
+
+FILES:${PN}-lontium-license = "${nonarch_base_libdir}/firmware/LICENSE.Lontium"
+FILES:${PN}-lt9611uxc = "${nonarch_base_libdir}/firmware/lt9611uxc_fw.bin"
+
+# For marvell
+LICENSE:${PN}-pcie8897 = "Firmware-Marvell"
+LICENSE:${PN}-pcie8997 = "Firmware-Marvell"
+LICENSE:${PN}-sd8686 = "Firmware-Marvell"
+LICENSE:${PN}-sd8688 = "Firmware-Marvell"
+LICENSE:${PN}-sd8787 = "Firmware-Marvell"
+LICENSE:${PN}-sd8797 = "Firmware-Marvell"
+LICENSE:${PN}-sd8801 = "Firmware-Marvell"
+LICENSE:${PN}-sd8887 = "Firmware-Marvell"
+LICENSE:${PN}-sd8897 = "Firmware-Marvell"
+LICENSE:${PN}-sd8997 = "Firmware-Marvell"
+LICENSE:${PN}-usb8997 = "Firmware-Marvell"
+LICENSE:${PN}-marvell-license = "Firmware-Marvell"
+
+FILES:${PN}-marvell-license = "${nonarch_base_libdir}/firmware/LICENCE.Marvell"
+FILES:${PN}-pcie8897 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/pcie8897_uapsta.bin \
+"
+FILES:${PN}-pcie8997 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/pcie8997_wlan_v4.bin \
+  ${nonarch_base_libdir}/firmware/mrvl/pcieuart8997_combo_v4.bin \
+  ${nonarch_base_libdir}/firmware/mrvl/pcieusb8997_combo_v4.bin \
+"
+FILES:${PN}-sd8686 = " \
+  ${nonarch_base_libdir}/firmware/libertas/sd8686_v9* \
+  ${nonarch_base_libdir}/firmware/sd8686* \
+"
+FILES:${PN}-sd8688 = " \
+  ${nonarch_base_libdir}/firmware/libertas/sd8688* \
+  ${nonarch_base_libdir}/firmware/mrvl/sd8688* \
+"
+FILES:${PN}-sd8787 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/sd8787_uapsta.bin \
+"
+FILES:${PN}-sd8797 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/sd8797_uapsta.bin \
+"
+FILES:${PN}-sd8801 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/sd8801_uapsta.bin \
+"
+FILES:${PN}-sd8887 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/sd8887_uapsta.bin \
+"
+FILES:${PN}-sd8897 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/sd8897_uapsta.bin \
+"
+do_install:append() {
+    # The kernel 5.6.x driver still uses the old name, provide a symlink for
+    # older kernels
+    ln -fs sdsd8997_combo_v4.bin ${D}${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin
+}
+FILES:${PN}-sd8997 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/sd8997_uapsta.bin \
+  ${nonarch_base_libdir}/firmware/mrvl/sdsd8997_combo_v4.bin \
+"
+FILES:${PN}-usb8997 = " \
+  ${nonarch_base_libdir}/firmware/mrvl/usbusb8997_combo_v4.bin \
+"
+
+RDEPENDS:${PN}-sd8686 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8688 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8787 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8797 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8801 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8887 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8897 += "${PN}-marvell-license"
+RDEPENDS:${PN}-sd8997 += "${PN}-marvell-license"
+RDEPENDS:${PN}-usb8997 += "${PN}-marvell-license"
+
+# For netronome
+LICENSE:${PN}-netronome = "Firmware-netronome"
+
+FILES:${PN}-netronome-license = " \
+  ${nonarch_base_libdir}/firmware/LICENCE.Netronome \
+"
+FILES:${PN}-netronome = " \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0081*.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0096*.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0097*.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0099*.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0011_2x40.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0058-0012_2x40.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/nic_AMDA0078-0011_1x100.nffw \
+  ${nonarch_base_libdir}/firmware/netronome/bpf \
+  ${nonarch_base_libdir}/firmware/netronome/flower \
+  ${nonarch_base_libdir}/firmware/netronome/nic \
+  ${nonarch_base_libdir}/firmware/netronome/nic-sriov \
+"
+
+RDEPENDS:${PN}-netronome += "${PN}-netronome-license"
+
+# For NXP
+LICENSE:${PN}-nxp8987-sdio = "Firmware-nxp"
+LICENSE:${PN}-nxp8997-common = "Firmware-nxp"
+LICENSE:${PN}-nxp8997-pcie = "Firmware-nxp"
+LICENSE:${PN}-nxp8997-sdio = "Firmware-nxp"
+LICENSE:${PN}-nxp9098-common = "Firmware-nxp"
+LICENSE:${PN}-nxp9098-pcie = "Firmware-nxp"
+LICENSE:${PN}-nxp9098-sdio = "Firmware-nxp"
+LICENSE:${PN}-nxpiw416-sdio = "Firmware-nxp"
+LICENSE:${PN}-nxpiw612-sdio = "Firmware-nxp"
+LICENSE:${PN}-nxp-license = "Firmware-nxp"
+
+FILES:${PN}-nxp8987-sdio = "${nonarch_base_libdir}/firmware/nxp/*8987*"
+FILES:${PN}-nxp8997-common = " \
+    ${nonarch_base_libdir}/firmware/nxp/uartuart8997_bt_v4.bin \
+    ${nonarch_base_libdir}/firmware/nxp/helper_uart_3000000.bin \
+"
+ALLOW_EMPTY:${PN}-nxp8997-pcie = "1"
+ALLOW_EMPTY:${PN}-nxp8997-sdio = "1"
+FILES:${PN}-nxp9098-common = "${nonarch_base_libdir}/firmware/nxp/uartuart9098_bt_v1.bin"
+ALLOW_EMPTY:${PN}-nxp9098-pcie = "1"
+ALLOW_EMPTY:${PN}-nxp9098-sdio = "1"
+FILES:${PN}-nxpiw416-sdio = "${nonarch_base_libdir}/firmware/nxp/*iw416*"
+FILES:${PN}-nxpiw612-sdio = "${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se"
+FILES:${PN}-nxp-license = "${nonarch_base_libdir}/firmware/LICENSE.nxp"
+
+RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-license"
+RDEPENDS:${PN}-nxp8997-common += "${PN}-nxp-license"
+RDEPENDS:${PN}-nxp8997-pcie += "${PN}-nxp8997-common"
+RDEPENDS:${PN}-nxp8997-sdio += "${PN}-nxp8997-common"
+RDEPENDS:${PN}-nxp9098-common += "${PN}-nxp-license"
+RDEPENDS:${PN}-nxp9098-pcie += "${PN}-nxp9098-common"
+RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common"
+RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-license"
+RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-license"
+
+# For nxp-mc
+LICENSE:${PN}-nxp-mc = "Firmware-nxp_mc_firmware"
+LICENSE:${PN}-nxp-mc-license = "Firmware-nxp_mc_firmware"
+
+FILES:${PN}-nxp-mc= "${nonarch_base_libdir}/firmware/dpaa2/mc/*"
+FILES:${PN}-nxp-mc-license = " \
+  ${nonarch_base_libdir}/firmware/LICENSE.nxp_mc_firmware \
+"
+RDEPENDS:${PN}-nxp-mc += "${PN}-nxp-mc-license"
+
+# For Nvidia
+LICENSE:${PN}-nvidia-gpu = "Firmware-nvidia"
+LICENSE:${PN}-nvidia-tegra = "Firmware-nvidia"
+LICENSE:${PN}-nvidia-tegra-k1 = "Firmware-nvidia"
+LICENSE:${PN}-nvidia-license = "Firmware-nvidia"
+
+FILES:${PN}-nvidia-gpu = "${nonarch_base_libdir}/firmware/nvidia"
+FILES:${PN}-nvidia-tegra = " \
+  ${nonarch_base_libdir}/firmware/nvidia/tegra* \
+  ${nonarch_base_libdir}/firmware/nvidia/gm20b \
+  ${nonarch_base_libdir}/firmware/nvidia/gp10b \
+"
+FILES:${PN}-nvidia-tegra-k1 = " \
+  ${nonarch_base_libdir}/firmware/nvidia/tegra124 \
+  ${nonarch_base_libdir}/firmware/nvidia/gk20a \
+"
+FILES:${PN}-nvidia-license = "${nonarch_base_libdir}/firmware/LICENCE.nvidia"
+
+RDEPENDS:${PN}-nvidia-gpu += "${PN}-nvidia-license"
+RDEPENDS:${PN}-nvidia-tegra += "${PN}-nvidia-license"
+RDEPENDS:${PN}-nvidia-tegra-k1 += "${PN}-nvidia-license"
+
+# For OLPC
+LICENSE:${PN}-olpc = "Firmware-OLPC"
+LICENSE:${PN}-olpc-license = "Firmware-OLPC"
+
+FILES:${PN}-olpc = " \
+  ${nonarch_base_libdir}/firmware/libertas/lbtf_sdio.bin	\
+  ${nonarch_base_libdir}/firmware/lbtf_usb.bin			\
+  ${nonarch_base_libdir}/firmware/libertas/usb8388_olpc.bin	\
+"
+FILES:${PN}-olpc-license = "${nonarch_base_libdir}/firmware/LICENCE.OLPC"
+
+RDEPENDS:${PN}-olpc += "${PN}-olpc-license"
+
+# For phanfw
+LICENSE:${PN}-phanfw = "Firmware-phanfw"
+LICENSE:${PN}-phanfw-license = "Firmware-phanfw"
+
+FILES:${PN}-phanfw = "${nonarch_base_libdir}/firmware/phanfw.bin"
+FILES:${PN}-phanfw-license = "${nonarch_base_libdir}/firmware/LICENCE.phanfw"
+
+RDEPENDS:${PN}-phanfw += "${PN}-phanfw-license"
+
+# For PowerVR
+LICENSE:${PN}-powervr = "Firmware-powervr"
+LICENSE:${PN}-powervr-license = "Firmware-powervr"
+
+FILES:${PN}-powervr = "${nonarch_base_libdir}/firmware/powervr"
+FILES:${PN}-powervr-license = "${nonarch_base_libdir}/firmware/LICENSE.powervr"
+
+RDEPENDS:${PN}-powervr += "${PN}-powervr-license"
+
+# For qla2xxx
+LICENSE:${PN}-qla2xxx = "Firmware-qla2xxx"
+LICENSE:${PN}-qla2xxx-license = "Firmware-qla2xxx"
+
+FILES:${PN}-qla2xxx = "${nonarch_base_libdir}/firmware/ql2*"
+FILES:${PN}-qla2xxx-license = "${nonarch_base_libdir}/firmware/LICENCE.qla2xxx"
+
+RDEPENDS:${PN}-qla2xxx += "${PN}-qla2xxx-license"
+
+# For RSI RS911x WiFi
+LICENSE:${PN}-rs9113 = "WHENCE"
+LICENSE:${PN}-rs9116 = "WHENCE"
+
+FILES:${PN}-rs9113 = " ${nonarch_base_libdir}/firmware/rsi/rs9113*.rps "
+FILES:${PN}-rs9116 = " ${nonarch_base_libdir}/firmware/rsi/rs9116*.rps "
+
+RDEPENDS:${PN}-rs9113 += "${PN}-whence-license"
+RDEPENDS:${PN}-rs9116 += "${PN}-whence-license"
+
+# For rtl
+LICENSE:${PN}-rtl8188 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8192cu = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8192ce = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8192su = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8723 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8761 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8821 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl8822 = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl-license = "Firmware-rtlwifi_firmware"
+LICENSE:${PN}-rtl-nic = "WHENCE"
+LICENSE:${PN}-rtl8168 = "WHENCE"
+
+FILES:${PN}-rtl-license = " \
+  ${nonarch_base_libdir}/firmware/LICENCE.rtlwifi_firmware.txt \
+"
+FILES:${PN}-rtl8188 = " \
+  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8188*.bin \
+"
+FILES:${PN}-rtl8192cu = " \
+  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cufw*.bin \
+"
+FILES:${PN}-rtl8192ce = " \
+  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8192cfw*.bin \
+"
+FILES:${PN}-rtl8192su = " \
+  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8712u.bin \
+"
+FILES:${PN}-rtl8723 = " \
+  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8723*.bin \
+"
+FILES:${PN}-rtl8821 = " \
+  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8821*.bin \
+  ${nonarch_base_libdir}/firmware/rtw88/rtw8821*.bin \
+"
+FILES:${PN}-rtl8761 = " \
+  ${nonarch_base_libdir}/firmware/rtl_bt/rtl8761*.bin \
+"
+FILES:${PN}-rtl8168 = " \
+  ${nonarch_base_libdir}/firmware/rtl_nic/rtl8168*.fw \
+"
+FILES:${PN}-rtl8822 = " \
+  ${nonarch_base_libdir}/firmware/rtl_bt/rtl8822*.bin \
+  ${nonarch_base_libdir}/firmware/rtw88/rtw8822*.bin \
+  ${nonarch_base_libdir}/firmware/rtlwifi/rtl8822*.bin \
+"
+FILES:${PN}-rtl-nic = " \
+  ${nonarch_base_libdir}/firmware/rtl_nic/*.fw \
+"
+
+RDEPENDS:${PN}-rtl8188 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8192ce += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8192cu += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8192su = "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8723 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8821 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8761 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8822 += "${PN}-rtl-license"
+RDEPENDS:${PN}-rtl8168 += "${PN}-whence-license"
+RDEPENDS:${PN}-rtl-nic += "${PN}-whence-license"
+
+# For TI wl1251
+LICENSE:${PN}-wl1251 = "Firmware-wl1251"
+LICENSE:${PN}-wl1251-license = "Firmware-wl1251"
+
+FILES:${PN}-wl1251 = " \
+  ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-fw.bin         \
+  ${nonarch_base_libdir}/firmware/ti-connectivity/wl1251-nvs.bin        \
+"
+FILES:${PN}-wl1251-license = "${nonarch_base_libdir}/firmware/LICENCE.wl1251"
+
+RDEPENDS:${PN}-wl1251 += "${PN}-wl1251-license"
+
+# For ti-connectivity
+LICENSE:${PN}-wlcommon = "Firmware-ti-connectivity"
+LICENSE:${PN}-wl12xx = "Firmware-ti-connectivity"
+LICENSE:${PN}-wl18xx = "Firmware-ti-connectivity"
+LICENSE:${PN}-ti-connectivity-license = "Firmware-ti-connectivity"
+
+FILES:${PN}-ti-connectivity-license = "${nonarch_base_libdir}/firmware/LICENCE.ti-connectivity"
+# wl18xx optionally needs wl1271-nvs.bin (which itself is a symlink to
+# wl127x-nvs.bin) - see linux/drivers/net/wireless/ti/wlcore/sdio.c
+# and drivers/net/wireless/ti/wlcore/spi.c.
+# While they're optional and actually only used to override the MAC
+# address on wl18xx, driver loading will delay (by udev timout - 60s)
+# if not there. So let's make it available always. Because it's a
+# symlink, both need to go to wlcommon.
+FILES:${PN}-wlcommon = " \
+  ${nonarch_base_libdir}/firmware/ti-connectivity/TI* \
+  ${nonarch_base_libdir}/firmware/ti-connectivity/wl127x-nvs.bin \
+  ${nonarch_base_libdir}/firmware/ti-connectivity/wl1271-nvs.bin \
+"
+FILES:${PN}-wl12xx = " \
+  ${nonarch_base_libdir}/firmware/ti-connectivity/wl12* \
+"
+FILES:${PN}-wl18xx = " \
+  ${nonarch_base_libdir}/firmware/ti-connectivity/wl18* \
+"
+
+RDEPENDS:${PN}-wl12xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
+RDEPENDS:${PN}-wl18xx = "${PN}-ti-connectivity-license ${PN}-wlcommon"
+
+# For ti-keystone
+LICENSE:${PN}-ti-keystone = "Firmware-ti-keystone"
+LICENSE:${PN}-ti-keystone-license = "Firmware-ti-keystone"
+
+FILES:${PN}-ti-keystone = "${nonarch_base_libdir}/firmware/ti-keystone/*"
+FILES:${PN}-ti-keystone-license = " \
+  ${nonarch_base_libdir}/firmware/LICENCE.ti-keystone \
+"
+RDEPENDS:${PN}-ti-keystone += "${PN}-ti-keystone-license"
+
+# For vt6656
+LICENSE:${PN}-vt6656 = "Firmware-via_vt6656"
+LICENSE:${PN}-vt6656-license = "Firmware-via_vt6656"
+
+FILES:${PN}-vt6656-license = "${nonarch_base_libdir}/firmware/LICENCE.via_vt6656"
+FILES:${PN}-vt6656 = " \
+  ${nonarch_base_libdir}/firmware/vntwusb.fw \
+"
+
+RDEPENDS:${PN}-vt6656 = "${PN}-vt6656-license"
+
+# For xc4000
+LICENSE:${PN}-xc4000 = "Firmware-xc4000"
+LICENSE:${PN}-xc4000-license = "Firmware-xc4000"
+
+FILES:${PN}-xc4000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc4000-1.4.1.fw"
+FILES:${PN}-xc4000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc4000"
+
+RDEPENDS:${PN}-xc4000 += "${PN}-xc4000-license"
+
+# For xc5000
+LICENSE:${PN}-xc5000 = "Firmware-xc5000"
+LICENSE:${PN}-xc5000-license = "Firmware-xc5000"
+
+FILES:${PN}-xc5000 = "${nonarch_base_libdir}/firmware/dvb-fe-xc5000-1.6.114.fw"
+FILES:${PN}-xc5000-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000"
+
+RDEPENDS:${PN}-xc5000 += "${PN}-xc5000-license"
+
+# For xc5000c
+LICENSE:${PN}-xc5000c = "Firmware-xc5000c"
+LICENSE:${PN}-xc5000c-license = "Firmware-xc5000c"
+
+FILES:${PN}-xc5000c = " \
+  ${nonarch_base_libdir}/firmware/dvb-fe-xc5000c-4.1.30.7.fw \
+"
+FILES:${PN}-xc5000c-license = "${nonarch_base_libdir}/firmware/LICENCE.xc5000c"
+
+RDEPENDS:${PN}-xc5000c += "${PN}-xc5000c-license"
+
+# For broadcom
+
+# for i in `grep brcm WHENCE  | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "             \${PN}-$pkg \\"; done  | sort -u
+
+LICENSE:${PN}-broadcom-license = "Firmware-broadcom_bcm43xx"
+FILES:${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx"
+
+# for i in `grep brcm WHENCE  | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo "$i - $pkg"; echo -e "FILES:\${PN}-$pkg = \"\${nonarch_base_libdir}/firmware/brcm/$i\""; done | grep ^FILES
+
+FILES:${PN}-bcm43xx = "${nonarch_base_libdir}/firmware/brcm/bcm43xx-0.fw"
+FILES:${PN}-bcm43xx-hdr = "${nonarch_base_libdir}/firmware/brcm/bcm43xx_hdr-0.fw"
+FILES:${PN}-bcm4329-fullmac = "${nonarch_base_libdir}/firmware/brcm/bcm4329-fullmac-4.bin"
+FILES:${PN}-bcm43236b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43236b.bin"
+FILES:${PN}-bcm4329 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4329-sdio.bin"
+FILES:${PN}-bcm4330 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4330-sdio.*"
+FILES:${PN}-bcm4334 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4334-sdio.bin"
+FILES:${PN}-bcm4335 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4335-sdio.bin"
+FILES:${PN}-bcm4339 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4339-sdio.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4339-sdio.bin \
+"
+FILES:${PN}-bcm43241b0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b0-sdio.bin"
+FILES:${PN}-bcm43241b4 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b4-sdio.bin"
+FILES:${PN}-bcm43241b5 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43241b5-sdio.bin"
+FILES:${PN}-bcm43242a = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43242a.bin"
+FILES:${PN}-bcm43143 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43143.bin \
+  ${nonarch_base_libdir}/firmware/brcm/brcmfmac43143-sdio.bin \
+"
+FILES:${PN}-bcm43430a0 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0-sdio.*"
+FILES:${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio.* \
+"
+FILES:${PN}-bcm4350c2 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350c2-pcie.bin"
+FILES:${PN}-bcm4350 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4350-pcie.bin"
+FILES:${PN}-bcm4356 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-sdio.* \
+"
+FILES:${PN}-bcm43569 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43569.bin"
+FILES:${PN}-bcm43570 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43570-pcie.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43570-pcie.bin \
+"
+FILES:${PN}-bcm4358 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4358-pcie.bin"
+FILES:${PN}-bcm43602 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.bin \
+  ${nonarch_base_libdir}/firmware/brcm/brcmfmac43602-pcie.ap.bin \
+"
+FILES:${PN}-bcm4366b = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366b-pcie.bin"
+FILES:${PN}-bcm4366c = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4366c-pcie.bin"
+FILES:${PN}-bcm4371 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4371-pcie.bin"
+
+# for i in `grep brcm WHENCE  | grep ^File | sed 's/File: brcm.//g'`; do pkg=`echo $i | sed 's/-[sp40].*//g; s/\.bin//g; s/brcmfmac/bcm/g; s/_hdr/-hdr/g; s/BCM/bcm-0bb4-0306/g'`; echo -e "LICENSE:\${PN}-$pkg = \"Firmware-broadcom_bcm43xx\"\nRDEPENDS_\${PN}-$pkg += \"\${PN}-broadcom-license\""; done
+# Currently 1st one and last 6 have cypress LICENSE
+
+LICENSE:${PN}-bcm43xx = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43xx += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43xx-hdr = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43xx-hdr += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4329-fullmac = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4329-fullmac += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43236b = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43236b += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4329 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4329 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4330 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4330 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4334 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4334 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4335 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4335 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4339 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4339 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43241b0 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43241b0 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43241b4 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43241b4 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43241b5 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43241b5 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43242a = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43242a += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43143 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43143 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43430a0 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43430a0 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43455 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43455 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4350c2 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4350c2 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4350 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4350 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4356 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4356 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43569 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43569 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43570 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43570 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4358 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4358 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm43602 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm43602 += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4366b = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4366b += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4366c = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4366c += "${PN}-broadcom-license"
+LICENSE:${PN}-bcm4371 = "Firmware-broadcom_bcm43xx"
+RDEPENDS:${PN}-bcm4371 += "${PN}-broadcom-license"
+
+# For broadcom cypress
+
+LICENSE:${PN}-cypress-license = "Firmware-cypress"
+FILES:${PN}-cypress-license = "${nonarch_base_libdir}/firmware/LICENCE.cypress"
+
+FILES:${PN}-bcm-0bb4-0306 = "${nonarch_base_libdir}/firmware/brcm/BCM-0bb4-0306.hcd"
+FILES:${PN}-bcm43340 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43340-sdio.*"
+FILES:${PN}-bcm43362 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43362-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43362-sdio.*"
+FILES:${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac43430-sdio.*"
+FILES:${PN}-bcm4354 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4354-sdio.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4354-sdio.bin \
+"
+FILES:${PN}-bcm4356-pcie = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4356-pcie.* \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4356-pcie.* \
+"
+FILES:${PN}-bcm4373 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.bin \
+  ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373.bin \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.bin \
+  ${nonarch_base_libdir}/firmware/brcm/brcmfmac4373-sdio.clm_blob \
+  ${nonarch_base_libdir}/firmware/cypress/cyfmac4373-sdio.clm_blob \
+"
+
+LICENSE:${PN}-bcm-0bb4-0306 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm-0bb4-0306 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm43340 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm43340 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm43362 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm43362 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm43430 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm43430 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm4354 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm4354 += "${PN}-cypress-license"
+LICENSE:${PN}-bcm4356-pcie = "Firmware-cypress"
+RDEPENDS:${PN}-bcm4356-pcie += "${PN}-cypress-license"
+LICENSE:${PN}-bcm4373 = "Firmware-cypress"
+RDEPENDS:${PN}-bcm4373 += "${PN}-cypress-license"
+
+# For Broadcom bnx2
+#
+# which is a separate case to the other Broadcom firmwares since its
+# license is contained in the shared WHENCE file.
+
+LICENSE:${PN}-bnx2 = "WHENCE"
+LICENSE:${PN}-whence-license = "WHENCE"
+
+FILES:${PN}-bnx2 = " \
+    ${nonarch_base_libdir}/firmware/bnx2/bnx2-mips*.fw \
+    ${nonarch_base_libdir}/firmware/bnx2/bnx2-rv2p*.fw \
+"
+FILES:${PN}-whence-license = "${nonarch_base_libdir}/firmware/WHENCE"
+
+RDEPENDS:${PN}-bnx2 += "${PN}-whence-license"
+RPROVIDES:${PN}-bnx2 = "${PN}-bnx2-mips"
+
+LICENSE:${PN}-bnx2x = "WHENCE"
+
+FILES:${PN}-bnx2x = "${nonarch_base_libdir}/firmware/bnx2x/bnx2x*.fw"
+
+RDEPENDS:${PN}-bnx2x += "${PN}-whence-license"
+
+# For cirrus
+LICENSE:${PN}-cirrus = "Firmware-cirrus"
+LICENSE:${PN}-cirrus-license = "Firmware-cirrus"
+
+FILES:${PN}-cirrus = "${nonarch_base_libdir}/firmware/cirrus/*"
+FILES:${PN}-cirrus-license = "${nonarch_base_libdir}/firmware/LICENSE.cirrus"
+
+RDEPENDS:${PN}-cirrus += "${PN}-cirrus-license"
+
+# For cnm
+LICENSE:${PN}-cnm = "Firmware-cnm"
+LICENSE:${PN}-cnm-license = "Firmware-cnm"
+
+FILES:${PN}-cnm = "${nonarch_base_libdir}/firmware/cnm/wave521c_k3_codec_fw.bin"
+FILES:${PN}-cnm-license = "${nonarch_base_libdir}/firmware/LICENCE.cnm"
+
+RDEPENDS:${PN}-cnm += "${PN}-cnm-license"
+
+# For imx-sdma
+LICENSE:${PN}-imx-sdma-imx6q       = "Firmware-imx-sdma_firmware"
+LICENSE:${PN}-imx-sdma-imx7d       = "Firmware-imx-sdma_firmware"
+LICENSE:${PN}-imx-sdma-license       = "Firmware-imx-sdma_firmware"
+
+FILES:${PN}-imx-sdma-imx6q = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin"
+
+RPROVIDES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
+RREPLACES:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
+RCONFLICTS:${PN}-imx-sdma-imx6q = "firmware-imx-sdma-imx6q"
+
+FILES:${PN}-imx-sdma-imx7d = "${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin"
+
+FILES:${PN}-imx-sdma-license = "${nonarch_base_libdir}/firmware/LICENSE.sdma_firmware"
+
+RDEPENDS:${PN}-imx-sdma-imx6q += "${PN}-imx-sdma-license"
+RDEPENDS:${PN}-imx-sdma-imx7d += "${PN}-imx-sdma-license"
+
+# For iwlwifi
+LICENSE:${PN}-iwlwifi           = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-135-6     = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-7    = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-8    = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-9    = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-10   = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-12   = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-13   = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-16   = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-3160-17   = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000-4    = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2a-5 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2a-6 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2b-5 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6000g2b-6 = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6050-4    = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-6050-5    = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-7260      = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-7265      = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-7265d     = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-8000c     = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-8265      = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-9000      = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-9260      = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-misc      = "Firmware-iwlwifi_firmware"
+LICENSE:${PN}-iwlwifi-license   = "Firmware-iwlwifi_firmware"
+
+
+FILES:${PN}-iwlwifi-license = "${nonarch_base_libdir}/firmware/LICENCE.iwlwifi_firmware"
+FILES:${PN}-iwlwifi-135-6 = "${nonarch_base_libdir}/firmware/iwlwifi-135-6.ucode"
+FILES:${PN}-iwlwifi-3160-7 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-7.ucode"
+FILES:${PN}-iwlwifi-3160-8 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-8.ucode"
+FILES:${PN}-iwlwifi-3160-9 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-9.ucode"
+FILES:${PN}-iwlwifi-3160-10 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-10.ucode"
+FILES:${PN}-iwlwifi-3160-12 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-12.ucode"
+FILES:${PN}-iwlwifi-3160-13 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-13.ucode"
+FILES:${PN}-iwlwifi-3160-16 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-16.ucode"
+FILES:${PN}-iwlwifi-3160-17 = "${nonarch_base_libdir}/firmware/iwlwifi-3160-17.ucode"
+FILES:${PN}-iwlwifi-6000-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6000-4.ucode"
+FILES:${PN}-iwlwifi-6000g2a-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-5.ucode"
+FILES:${PN}-iwlwifi-6000g2a-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2a-6.ucode"
+FILES:${PN}-iwlwifi-6000g2b-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-5.ucode"
+FILES:${PN}-iwlwifi-6000g2b-6 = "${nonarch_base_libdir}/firmware/iwlwifi-6000g2b-6.ucode"
+FILES:${PN}-iwlwifi-6050-4 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-4.ucode"
+FILES:${PN}-iwlwifi-6050-5 = "${nonarch_base_libdir}/firmware/iwlwifi-6050-5.ucode"
+FILES:${PN}-iwlwifi-7260   = "${nonarch_base_libdir}/firmware/iwlwifi-7260-*.ucode"
+FILES:${PN}-iwlwifi-7265   = "${nonarch_base_libdir}/firmware/iwlwifi-7265-*.ucode"
+FILES:${PN}-iwlwifi-7265d   = "${nonarch_base_libdir}/firmware/iwlwifi-7265D-*.ucode"
+FILES:${PN}-iwlwifi-8000c   = "${nonarch_base_libdir}/firmware/iwlwifi-8000C-*.ucode"
+FILES:${PN}-iwlwifi-8265   = "${nonarch_base_libdir}/firmware/iwlwifi-8265-*.ucode"
+FILES:${PN}-iwlwifi-9000   = "${nonarch_base_libdir}/firmware/iwlwifi-9000-*.ucode"
+FILES:${PN}-iwlwifi-9260   = "${nonarch_base_libdir}/firmware/iwlwifi-9260-*.ucode"
+FILES:${PN}-iwlwifi-misc   = " \
+    ${nonarch_base_libdir}/firmware/iwlwifi-*.ucode \
+    ${nonarch_base_libdir}/firmware/iwlwifi-*.pnvm \
+"
+
+RDEPENDS:${PN}-iwlwifi-135-6     = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-7    = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-8    = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-9    = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-10   = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-12   = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-13   = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-16   = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-3160-17   = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000-4    = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2a-5 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2a-6 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2b-5 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6000g2b-6 = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6050-4    = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-6050-5    = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-7260      = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-7265      = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-7265d     = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-8000c     = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-8265      = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-9000      = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-9260      = "${PN}-iwlwifi-license"
+RDEPENDS:${PN}-iwlwifi-misc      = "${PN}-iwlwifi-license"
+
+# -iwlwifi-misc is a "catch all" package that includes all the iwlwifi
+# firmwares that are not already included in other -iwlwifi- packages.
+# -iwlwifi is a virtual package that depends upon all iwlwifi packages.
+# These are distinct in order to allow the -misc firmwares to be installed
+# without pulling in every other iwlwifi package.
+ALLOW_EMPTY:${PN}-iwlwifi = "1"
+ALLOW_EMPTY:${PN}-iwlwifi-misc = "1"
+
+# Handle package updating for the newly merged iwlwifi groupings
+RPROVIDES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
+RREPLACES:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
+RCONFLICTS:${PN}-iwlwifi-7265 = "${PN}-iwlwifi-7265-8 ${PN}-iwlwifi-7265-9"
+
+RPROVIDES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
+RREPLACES:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
+RCONFLICTS:${PN}-iwlwifi-7260 = "${PN}-iwlwifi-7260-7 ${PN}-iwlwifi-7260-8 ${PN}-iwlwifi-7260-9"
+
+# For ibt
+LICENSE:${PN}-ibt-license = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-hw-37-7 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-hw-37-8 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-11-5    = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-12-16   = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-17 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-20 = "Firmware-ibt_firmware"
+LICENSE:${PN}-ibt-misc    = "Firmware-ibt_firmware"
+
+FILES:${PN}-ibt-license = "${nonarch_base_libdir}/firmware/LICENCE.ibt_firmware"
+FILES:${PN}-ibt-hw-37-7 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.7*.bseq"
+FILES:${PN}-ibt-hw-37-8 = "${nonarch_base_libdir}/firmware/intel/ibt-hw-37.8*.bseq"
+FILES:${PN}-ibt-11-5    = "${nonarch_base_libdir}/firmware/intel/ibt-11-5.sfi ${nonarch_base_libdir}/firmware/intel/ibt-11-5.ddc"
+FILES:${PN}-ibt-12-16   = "${nonarch_base_libdir}/firmware/intel/ibt-12-16.sfi ${nonarch_base_libdir}/firmware/intel/ibt-12-16.ddc"
+FILES:${PN}-ibt-17 = "${nonarch_base_libdir}/firmware/intel/ibt-17-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-17-*.ddc"
+FILES:${PN}-ibt-20 = "${nonarch_base_libdir}/firmware/intel/ibt-20-*.sfi ${nonarch_base_libdir}/firmware/intel/ibt-20-*.ddc"
+FILES:${PN}-ibt-misc    = "${nonarch_base_libdir}/firmware/intel/ibt-*"
+
+RDEPENDS:${PN}-ibt-hw-37-7 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-hw-37.8 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-11-5    = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-12-16   = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-17 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-20 = "${PN}-ibt-license"
+RDEPENDS:${PN}-ibt-misc    = "${PN}-ibt-license"
+
+ALLOW_EMPTY:${PN}-ibt= "1"
+ALLOW_EMPTY:${PN}-ibt-misc = "1"
+
+LICENSE:${PN}-i915       = "Firmware-i915"
+LICENSE:${PN}-i915-license = "Firmware-i915"
+FILES:${PN}-i915-license = "${nonarch_base_libdir}/firmware/LICENSE.i915"
+FILES:${PN}-i915         = "${nonarch_base_libdir}/firmware/i915"
+RDEPENDS:${PN}-i915      = "${PN}-i915-license"
+
+# For ice-enhanced
+LICENSE:${PN}-ice-enhanced         = "Firmware-ice_enhanced"
+LICENSE:${PN}-ice-enhanced-license = "Firmware-ice_enhanced"
+
+FILES:${PN}-ice-enhanced           = " \
+  ${nonarch_base_libdir}/firmware/intel/ice/ddp-comms/* \
+  ${nonarch_base_libdir}/firmware/intel/ice/ddp-wireless_edge/* \
+"
+FILES:${PN}-ice-enhanced-license   = " \
+  ${nonarch_base_libdir}/firmware/LICENSE.ice_enhanced \
+"
+RDEPENDS:${PN}-ice-enhanced        = "${PN}-ice-enhanced-license"
+
+LICENSE:${PN}-ice       = "Firmware-ice"
+LICENSE:${PN}-ice-license = "Firmware-ice"
+FILES:${PN}-ice-license = "${nonarch_base_libdir}/firmware/LICENSE.ice"
+FILES:${PN}-ice         = " \
+  ${nonarch_base_libdir}/firmware/intel/ice/ddp/* \
+  ${nonarch_base_libdir}/firmware/intel/ice/ddp-lag/* \
+"
+RDEPENDS:${PN}-ice      = "${PN}-ice-license"
+
+FILES:${PN}-adsp-sst-license      = "${nonarch_base_libdir}/firmware/LICENCE.adsp_sst"
+LICENSE:${PN}-adsp-sst            = "Firmware-adsp_sst"
+LICENSE:${PN}-adsp-sst-license    = "Firmware-adsp_sst"
+FILES:${PN}-adsp-sst              = "${nonarch_base_libdir}/firmware/intel/dsp_fw*"
+RDEPENDS:${PN}-adsp-sst           = "${PN}-adsp-sst-license"
+
+# For QAT
+LICENSE:${PN}-qat         = "Firmware-qat"
+LICENSE:${PN}-qat-license = "Firmware-qat"
+FILES:${PN}-qat-license   = "${nonarch_base_libdir}/firmware/LICENCE.qat_firmware"
+FILES:${PN}-qat           = "${nonarch_base_libdir}/firmware/qat*.bin"
+RDEPENDS:${PN}-qat        = "${PN}-qat-license"
+
+LICENSE:${PN}-qed         = "WHENCE"
+FILES:${PN}-qed           = "${nonarch_base_libdir}/firmware/qed/*"
+
+# For QCOM VPU/GPU and SDM845
+LICENSE:${PN}-qcom-license = "Firmware-qcom"
+LICENSE:${PN}-qcom-yamato-license = "Firmware-qcom-yamato"
+LICENSE:${PN}-qcom-venus-1.8 = "Firmware-qcom"
+LICENSE:${PN}-qcom-venus-4.2 = "Firmware-qcom"
+LICENSE:${PN}-qcom-venus-5.2 = "Firmware-qcom"
+LICENSE:${PN}-qcom-venus-5.4 = "Firmware-qcom"
+LICENSE:${PN}-qcom-venus-6.0 = "Firmware-qcom"
+LICENSE:${PN}-qcom-vpu-1.0 = "Firmware-qcom"
+LICENSE:${PN}-qcom-vpu-2.0 = "Firmware-qcom"
+LICENSE:${PN}-qcom-adreno-a2xx = "Firmware-qcom Firmware-qcom-yamato"
+LICENSE:${PN}-qcom-adreno-a3xx = "Firmware-qcom"
+LICENSE:${PN}-qcom-adreno-a4xx = "Firmware-qcom"
+LICENSE:${PN}-qcom-adreno-a530 = "Firmware-qcom"
+LICENSE:${PN}-qcom-adreno-a630 = "Firmware-qcom"
+LICENSE:${PN}-qcom-adreno-a650 = "Firmware-qcom"
+LICENSE:${PN}-qcom-adreno-a660 = "Firmware-qcom"
+LICENSE:${PN}-qcom-adreno-a702 = "Firmware-qcom"
+LICENSE:${PN}-qcom-apq8016-modem = "Firmware-qcom"
+LICENSE:${PN}-qcom-apq8016-wifi = "Firmware-qcom"
+LICENSE:${PN}-qcom-apq8096-audio = "Firmware-qcom"
+LICENSE:${PN}-qcom-apq8096-adreno = "Firmware-qcom"
+LICENSE:${PN}-qcom-apq8096-modem = "Firmware-qcom"
+LICENSE:${PN}-qcom-qcm2290-adreno = "Firmware-qcom"
+LICENSE:${PN}-qcom-qcm2290-audio = "Firmware-qcom"
+LICENSE:${PN}-qcom-qcm2290-modem = "Firmware-qcom"
+LICENSE:${PN}-qcom-qcm2290-wifi = "Firmware-qcom"
+LICENSE:${PN}-qcom-qrb4210-adreno = "Firmware-qcom"
+LICENSE:${PN}-qcom-qrb4210-audio = "Firmware-qcom"
+LICENSE:${PN}-qcom-qrb4210-compute  = "Firmware-qcom"
+LICENSE:${PN}-qcom-qrb4210-modem = "Firmware-qcom"
+LICENSE:${PN}-qcom-qrb4210-wifi = "Firmware-qcom"
+LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "Firmware-qcom & Firmware-linaro"
+LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "Firmware-qcom"
+LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "Firmware-qcom"
+LICENSE:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "Firmware-qcom"
+LICENSE:${PN}-qcom-sdm845-audio = "Firmware-qcom"
+LICENSE:${PN}-qcom-sdm845-adreno = "Firmware-qcom"
+LICENSE:${PN}-qcom-sdm845-compute = "Firmware-qcom"
+LICENSE:${PN}-qcom-sdm845-modem = "Firmware-qcom"
+LICENSE:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "Firmware-qcom"
+LICENSE:${PN}-qcom-sm8250-audio = "Firmware-qcom"
+LICENSE:${PN}-qcom-sm8250-adreno = "Firmware-qcom"
+LICENSE:${PN}-qcom-sm8250-compute = "Firmware-qcom"
+LICENSE:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "Firmware-qcom"
+
+FILES:${PN}-qcom-license   = "${nonarch_base_libdir}/firmware/LICENSE.qcom ${nonarch_base_libdir}/firmware/qcom/NOTICE.txt"
+FILES:${PN}-qcom-yamato-license = "${nonarch_base_libdir}/firmware/LICENSE.qcom_yamato"
+FILES:${PN}-qcom-venus-1.8 = "${nonarch_base_libdir}/firmware/qcom/venus-1.8/*"
+FILES:${PN}-qcom-venus-4.2 = "${nonarch_base_libdir}/firmware/qcom/venus-4.2/*"
+FILES:${PN}-qcom-venus-5.2 = "${nonarch_base_libdir}/firmware/qcom/venus-5.2/*"
+FILES:${PN}-qcom-venus-5.4 = "${nonarch_base_libdir}/firmware/qcom/venus-5.4/*"
+FILES:${PN}-qcom-venus-6.0 = "${nonarch_base_libdir}/firmware/qcom/venus-6.0/*"
+FILES:${PN}-qcom-vpu-1.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-1.0/*"
+FILES:${PN}-qcom-vpu-2.0 = "${nonarch_base_libdir}/firmware/qcom/vpu-2.0/*"
+FILES:${PN}-qcom-adreno-a2xx = "${nonarch_base_libdir}/firmware/qcom/leia_*.fw ${nonarch_base_libdir}/firmware/qcom/yamato_*.fw"
+FILES:${PN}-qcom-adreno-a3xx = "${nonarch_base_libdir}/firmware/qcom/a3*_*.fw ${nonarch_base_libdir}/firmware/a300_*.fw"
+FILES:${PN}-qcom-adreno-a4xx = "${nonarch_base_libdir}/firmware/qcom/a4*_*.fw"
+FILES:${PN}-qcom-adreno-a530 = "${nonarch_base_libdir}/firmware/qcom/a530*.fw*"
+FILES:${PN}-qcom-adreno-a630 = "${nonarch_base_libdir}/firmware/qcom/a630*.*"
+FILES:${PN}-qcom-adreno-a650 = "${nonarch_base_libdir}/firmware/qcom/a650*.*"
+FILES:${PN}-qcom-adreno-a660 = "${nonarch_base_libdir}/firmware/qcom/a660*.*"
+FILES:${PN}-qcom-adreno-a702 = "${nonarch_base_libdir}/firmware/qcom/a702*.*"
+FILES:${PN}-qcom-apq8016-modem = "${nonarch_base_libdir}/firmware/qcom/apq8016/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/modem.mbn"
+FILES:${PN}-qcom-apq8016-wifi = "${nonarch_base_libdir}/firmware/qcom/apq8016/wcnss.mbn ${nonarch_base_libdir}/firmware/qcom/apq8016/WCNSS*"
+FILES:${PN}-qcom-apq8096-adreno = "${nonarch_base_libdir}/firmware/qcom/apq8096/a530_zap.mbn ${nonarch_base_libdir}/firmware/qcom/a530_zap.mdt"
+FILES:${PN}-qcom-apq8096-audio = "${nonarch_base_libdir}/firmware/qcom/apq8096/adsp*.*"
+FILES:${PN}-qcom-apq8096-modem = "${nonarch_base_libdir}/firmware/qcom/apq8096/mba.mbn ${nonarch_base_libdir}/firmware/qcom/apq8096/modem*.* ${nonarch_base_libdir}/firmware/qcom/apq8096/wlanmdsp.mbn"
+FILES:${PN}-qcom-qcm2290-adreno = "${nonarch_base_libdir}/firmware/qcom/qcm2290/a702_zap.mbn"
+FILES:${PN}-qcom-qcm2290-audio = "${nonarch_base_libdir}/firmware/qcom/qcm2290/adsp*.*"
+FILES:${PN}-qcom-qcm2290-modem = "${nonarch_base_libdir}/firmware/qcom/qcm2290/modem*.*"
+FILES:${PN}-qcom-qcm2290-wifi = "${nonarch_base_libdir}/firmware/qcom/qcm2290/wlanmdsp.mbn"
+FILES:${PN}-qcom-qrb4210-adreno = "${nonarch_base_libdir}/firmware/qcom/qrb4210/a610_zap.mbn"
+FILES:${PN}-qcom-qrb4210-audio = "${nonarch_base_libdir}/firmware/qcom/qrb4210/adsp*.*"
+FILES:${PN}-qcom-qrb4210-compute = "${nonarch_base_libdir}/firmware/qcom/qrb4210/cdsp*.*"
+FILES:${PN}-qcom-qrb4210-modem = "${nonarch_base_libdir}/firmware/qcom/qrb4210/modem*.*"
+FILES:${PN}-qcom-qrb4210-wifi = "${nonarch_base_libdir}/firmware/qcom/qrb4210/wlanmdsp.mbn"
+FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compat = "${nonarch_base_libdir}/firmware/qcom/LENOVO/21BX"
+FILES:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*adsp*.* ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/battmgr.jsn ${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/audioreach-tplg.bin ${nonarch_base_libdir}/firmware/qcom/sc8280xp/SC8280XP-LENOVO-X13S-tplg.bin"
+FILES:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/qcdxkmsuc8280.mbn"
+FILES:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*cdsp*.*"
+FILES:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${nonarch_base_libdir}/firmware/qcom/sc8280xp/LENOVO/21BX/*slpi*.*"
+FILES:${PN}-qcom-sdm845-adreno = "${nonarch_base_libdir}/firmware/qcom/sdm845/a630*.*"
+FILES:${PN}-qcom-sdm845-audio = "${nonarch_base_libdir}/firmware/qcom/sdm845/adsp*.*"
+FILES:${PN}-qcom-sdm845-compute = "${nonarch_base_libdir}/firmware/qcom/sdm845/cdsp*.*"
+FILES:${PN}-qcom-sdm845-modem = "${nonarch_base_libdir}/firmware/qcom/sdm845/mba.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/modem*.* ${nonarch_base_libdir}/firmware/qcom/sdm845/wlanmdsp.mbn ${nonarch_base_libdir}/firmware/qcom/sdm845/notice.txt_wlanmdsp"
+FILES:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${nonarch_base_libdir}/firmware/qcom/sdm845/Thundercomm/db845c/slpi*.*"
+FILES:${PN}-qcom-sm8250-adreno = "${nonarch_base_libdir}/firmware/qcom/sm8250/a650*.*"
+FILES:${PN}-qcom-sm8250-audio = "${nonarch_base_libdir}/firmware/qcom/sm8250/adsp*.*"
+FILES:${PN}-qcom-sm8250-compute = "${nonarch_base_libdir}/firmware/qcom/sm8250/cdsp*.*"
+FILES:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${nonarch_base_libdir}/firmware/qcom/sm8250/Thundercomm/RB5/slpi*.*"
+
+RDEPENDS:${PN}-qcom-venus-1.8 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-venus-4.2 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-venus-5.2 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-venus-5.4 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-venus-6.0 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-vpu-1.0 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-vpu-2.0 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a2xx = "${PN}-qcom-license ${PN}-qcom-yamato-license"
+RDEPENDS:${PN}-qcom-adreno-a3xx = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a4xx = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a530 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a630 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a650 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a660 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-adreno-a702 = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-apq8016-modem = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-apq8016-wifi = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-apq8096-adreno = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-apq8096-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-apq8096-modem = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qcm2290-adreno = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qcm2290-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qcm2290-modem = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qcm2290-wifi = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qrb4210-adreno = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qrb4210-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qrb4210-compute = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qrb4210-modem = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-qrb4210-wifi = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-adreno = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-compute = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-modem = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sdm845-thundercomm-db845c-sensors = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-adreno = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-audio = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-compute = "${PN}-qcom-license"
+RDEPENDS:${PN}-qcom-sm8250-thundercomm-rb5-sensors = "${PN}-qcom-license"
+
+RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-audio = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
+RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-adreno = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
+RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-compute = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
+RRECOMMENDS:${PN}-qcom-sc8280xp-lenovo-x13s-sensors = "${PN}-qcom-sc8280xp-lenovo-x13s-compat"
+
+LICENSE:${PN}-liquidui = "Firmware-cavium_liquidio"
+FILES:${PN}-liquidio = "${nonarch_base_libdir}/firmware/liquidio"
+
+LICENSE:${PN}-mellanox = "WHENCE"
+FILES:${PN}-mellanox = "${nonarch_base_libdir}/firmware/mellanox"
+
+LICENSE:${PN}-prestera = "Firmware-Marvell"
+FILES:${PN}-prestera = "${nonarch_base_libdir}/firmware/mrvl/prestera"
+RDEPENDS:${PN}-prestera = "${PN}-marvell-license"
+
+# For Rockchip
+LICENSE:${PN}-rockchip-dptx = "Firmware-rockchip"
+FILES:${PN}-rockchip-license = "${nonarch_base_libdir}/firmware/LICENCE.rockchip"
+FILES:${PN}-rockchip-dptx = "${nonarch_base_libdir}/firmware/rockchip/dptx.bin"
+RDEPENDS:${PN}-rockchip-dptx = "${PN}-rockchip-license"
+
+# For Amlogic VDEC
+LICENSE:${PN}-amlogic-vdec = "Firmware-amlogic_vdec"
+FILES:${PN}-amlogic-vdec-license = "${nonarch_base_libdir}/firmware/LICENSE.amlogic_vdec"
+FILES:${PN}-amlogic-vdec = "${nonarch_base_libdir}/firmware/meson/vdec/*"
+RDEPENDS:${PN}-amlogic-vdec = "${PN}-amlogic-vdec-license"
+
+# For other firmwares
+# Maybe split out to separate packages when needed.
+LICENSE:${PN} = "\
+    Firmware-Abilis \
+    & Firmware-agere \
+    & Firmware-amdgpu \
+    & Firmware-amd-ucode \
+    & Firmware-amlogic_vdec \
+    & Firmware-atmel \
+    & Firmware-ca0132 \
+    & Firmware-cavium \
+    & Firmware-chelsio_firmware \
+    & Firmware-cirrus \
+    & Firmware-cnm \
+    & Firmware-cw1200 \
+    & Firmware-dib0700 \
+    & Firmware-e100 \
+    & Firmware-ene_firmware \
+    & Firmware-fw_sst_0f28 \
+    & Firmware-go7007 \
+    & Firmware-hfi1_firmware \
+    & Firmware-ibt_firmware \
+    & Firmware-it913x \
+    & Firmware-IntcSST2 \
+    & Firmware-kaweth \
+    & Firmware-moxa \
+    & Firmware-myri10ge_firmware \
+    & Firmware-nvidia \
+    & Firmware-nxp \
+    & Firmware-OLPC \
+    & Firmware-ath9k-htc \
+    & Firmware-phanfw \
+    & Firmware-qat \
+    & Firmware-qcom \
+    & Firmware-qla1280 \
+    & Firmware-qla2xxx \
+    & Firmware-r8a779x_usb3 \
+    & Firmware-radeon \
+    & Firmware-ralink_a_mediatek_company_firmware \
+    & Firmware-ralink-firmware \
+    & Firmware-imx-sdma_firmware \
+    & Firmware-siano \
+    & Firmware-ti-connectivity \
+    & Firmware-ti-keystone \
+    & Firmware-ueagle-atm4-firmware \
+    & Firmware-wl1251 \
+    & Firmware-xc4000 \
+    & Firmware-xc5000 \
+    & Firmware-xc5000c \
+    & WHENCE \
+"
+
+FILES:${PN}-license += "${nonarch_base_libdir}/firmware/LICEN*"
+FILES:${PN} += "${nonarch_base_libdir}/firmware/*"
+RDEPENDS:${PN} += "${PN}-license"
+RDEPENDS:${PN} += "${PN}-whence-license"
+
+# Make linux-firmware depend on all of the split-out packages.
+# Make linux-firmware-iwlwifi depend on all of the split-out iwlwifi packages.
+# Make linux-firmware-ibt depend on all of the split-out ibt packages.
+python populate_packages:prepend () {
+    firmware_pkgs = oe.utils.packages_filter_out_system(d)
+    d.appendVar('RRECOMMENDS:linux-firmware', ' ' + ' '.join(firmware_pkgs))
+
+    iwlwifi_pkgs = filter(lambda x: x.find('-iwlwifi-') != -1, firmware_pkgs)
+    d.appendVar('RRECOMMENDS:linux-firmware-iwlwifi', ' ' + ' '.join(iwlwifi_pkgs))
+
+    ibt_pkgs = filter(lambda x: x.find('-ibt-') != -1, firmware_pkgs)
+    d.appendVar('RRECOMMENDS:linux-firmware-ibt', ' ' + ' '.join(ibt_pkgs))
+}
+
+# Firmware files are generally not ran on the CPU, so they can be
+# allarch despite being architecture specific
+INSANE_SKIP = "arch"
+
+# Don't warn about already stripped files
+INSANE_SKIP:${PN} = "already-stripped"
+
+# No need to put firmware into the sysroot
+SYSROOT_DIRS_IGNORE += "${nonarch_base_libdir}/firmware"
diff --git a/poky/meta/recipes-kernel/linux/cve-exclusion_6.6.inc b/poky/meta/recipes-kernel/linux/cve-exclusion_6.6.inc
index 5449b7e..bb9ba49 100644
--- a/poky/meta/recipes-kernel/linux/cve-exclusion_6.6.inc
+++ b/poky/meta/recipes-kernel/linux/cve-exclusion_6.6.inc
@@ -1,9 +1,9 @@
 
 # Auto-generated CVE metadata, DO NOT EDIT BY HAND.
-# Generated at 2024-03-03 16:30:03.739466+00:00 for version 6.6.20
+# Generated at 2024-03-28 16:40:04.102652+00:00 for version 6.6.23
 
 python check_kernel_cve_status_version() {
-    this_version = "6.6.20"
+    this_version = "6.6.23"
     kernel_version = d.getVar("LINUX_VERSION")
     if kernel_version != this_version:
         bb.warn("Kernel CVE status needs updating: generated for %s but kernel is %s" % (this_version, kernel_version))
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
index bd3e5a9..9bd2198 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-dev.bb
@@ -14,7 +14,7 @@
 # provide this .inc to set specific revisions
 include recipes-kernel/linux/linux-yocto-dev-revisions.inc
 
-KBRANCH = "v6.8/standard/base"
+KBRANCH = "v6.9/standard/base"
 KMETA = "kernel-meta"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto-dev.git;branch=${KBRANCH};name=machine;protocol=https \
@@ -28,7 +28,7 @@
 SRCREV_machine ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 SRCREV_meta ?= '${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "${AUTOREV}", "29594404d7fe73cd80eaa4ee8c43dcc53970c60e", d)}'
 
-LINUX_VERSION ?= "6.8"
+LINUX_VERSION ?= "6.9"
 LINUX_VERSION_EXTENSION ?= "-yoctodev-${LINUX_KERNEL_TYPE}"
 PV = "${LINUX_VERSION}+git"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb b/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
index e80594b..a44a084 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-rt_6.6.bb
@@ -14,13 +14,13 @@
         raise bb.parse.SkipRecipe("Set PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
 }
 
-SRCREV_machine ?= "7c5911ab2e70bf84bb38a598b2a7e094618a9620"
-SRCREV_meta ?= "8cd63077f67a0f7ff639a2ff24c82b09d71048a4"
+SRCREV_machine ?= "19813826de57a6425518c7b3daf8dd6a04d2321f"
+SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b"
 
 SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;branch=${KBRANCH};name=machine;protocol=https \
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https"
 
-LINUX_VERSION ?= "6.6.20"
+LINUX_VERSION ?= "6.6.23"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
index c2a0387..db9e252 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto-tiny_6.6.bb
@@ -8,7 +8,7 @@
 # CVE exclusions
 include recipes-kernel/linux/cve-exclusion_6.6.inc
 
-LINUX_VERSION ?= "6.6.20"
+LINUX_VERSION ?= "6.6.23"
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
 
 DEPENDS += "${@bb.utils.contains('ARCH', 'x86', 'elfutils-native', '', d)}"
@@ -17,8 +17,8 @@
 KMETA = "kernel-meta"
 KCONF_BSP_AUDIT_LEVEL = "2"
 
-SRCREV_machine ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_meta ?= "8cd63077f67a0f7ff639a2ff24c82b09d71048a4"
+SRCREV_machine ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b"
 
 PV = "${LINUX_VERSION}+git"
 
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto_6.6.bb b/poky/meta/recipes-kernel/linux/linux-yocto_6.6.bb
index 0f62dea..8fb9867 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto_6.6.bb
+++ b/poky/meta/recipes-kernel/linux/linux-yocto_6.6.bb
@@ -18,25 +18,25 @@
 KBRANCH:qemuloongarch64  ?= "v6.6/standard/base"
 KBRANCH:qemumips64 ?= "v6.6/standard/mti-malta64"
 
-SRCREV_machine:qemuarm ?= "9d30fb4668cd7087e81b40f223cdd0090863602b"
-SRCREV_machine:qemuarm64 ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_machine:qemuloongarch64 ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_machine:qemumips ?= "4b49da8bb522bdaf928855c2c102fa839625c6c1"
-SRCREV_machine:qemuppc ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_machine:qemuriscv64 ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_machine:qemuriscv32 ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_machine:qemux86 ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_machine:qemux86-64 ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_machine:qemumips64 ?= "8e7605bafdfeb842396292181d524b183a1e13d6"
-SRCREV_machine ?= "a04baee60b5a7cf4d9c0c2f4856c6d5bb9b98074"
-SRCREV_meta ?= "8cd63077f67a0f7ff639a2ff24c82b09d71048a4"
+SRCREV_machine:qemuarm ?= "ceb94a85299b59d8840ed7ed392b1d3e4c727678"
+SRCREV_machine:qemuarm64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_machine:qemuloongarch64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_machine:qemumips ?= "c79ffc89f8909f60de52005ef258db9752634eda"
+SRCREV_machine:qemuppc ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_machine:qemuriscv64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_machine:qemuriscv32 ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_machine:qemux86 ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_machine:qemux86-64 ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_machine:qemumips64 ?= "b0a73fa83073c8d7d7bc917bcbeac88d296ebe38"
+SRCREV_machine ?= "2d01bc1d4eeade12518371139dd24a21438f523c"
+SRCREV_meta ?= "f7f00b22efcfcae6489e9ec7db7002685fbc078b"
 
 # set your preferred provider of linux-yocto to 'linux-yocto-upstream', and you'll
 # get the <version>/base branch, which is pure upstream -stable, and the same
 # meta SRCREV as the linux-yocto-standard builds. Select your version using the
 # normal PREFERRED_VERSION settings.
 BBCLASSEXTEND = "devupstream:target"
-SRCREV_machine:class-devupstream ?= "9b4a8eac17f0d840729384618b4b1e876233026c"
+SRCREV_machine:class-devupstream ?= "5c7587f69194bc9fc714953ab4c7203e6e68885b"
 PN:class-devupstream = "linux-yocto-upstream"
 KBRANCH:class-devupstream = "v6.6/base"
 
@@ -44,7 +44,7 @@
            git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-6.6;destsuffix=${KMETA};protocol=https"
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
-LINUX_VERSION ?= "6.6.20"
+LINUX_VERSION ?= "6.6.23"
 
 PV = "${LINUX_VERSION}+git"
 
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch
new file mode 100644
index 0000000..9d5fd0d
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch
@@ -0,0 +1,93 @@
+From fec007d9630e010062cf5699a08460f71f46b527 Mon Sep 17 00:00:00 2001
+From: Kienan Stewart <kstewart@efficios.com>
+Date: Mon, 25 Mar 2024 08:54:42 -0400
+Subject: [PATCH 1/4] Fix: ASoC snd_doc_dapm on linux 6.9-rc1
+
+See upstream commit:
+
+    commit 7df3eb4cdb6bbfa482f51548b9fd47c2723c68ba
+    Author: Luca Ceresoli <luca.ceresoli@bootlin.com>
+    Date:   Wed Mar 6 10:30:01 2024 +0100
+
+        ASoC: trace: add event to snd_soc_dapm trace events
+
+        Add the event value to the snd_soc_dapm_start and snd_soc_dapm_done trace
+        events to make them more informative.
+
+        Trace before:
+
+                   aplay-229   [000]   250.140309: snd_soc_dapm_start:   card=vscn-2046
+                   aplay-229   [000]   250.167531: snd_soc_dapm_done:    card=vscn-2046
+                   aplay-229   [000]   251.169588: snd_soc_dapm_start:   card=vscn-2046
+                   aplay-229   [000]   251.195245: snd_soc_dapm_done:    card=vscn-2046
+
+        Trace after:
+
+                   aplay-214   [000]   693.290612: snd_soc_dapm_start:   card=vscn-2046 event=1
+                   aplay-214   [000]   693.315508: snd_soc_dapm_done:    card=vscn-2046 event=1
+                   aplay-214   [000]   694.537349: snd_soc_dapm_start:   card=vscn-2046 event=2
+                   aplay-214   [000]   694.563241: snd_soc_dapm_done:    card=vscn-2046 event=2
+
+Upstream-Status: Backport [88c4e0fe Fix: ASoC snd_doc_dapm on linux 6.9-rc1]
+
+Change-Id: If0d33544b8dd1dfb3d12ca9390892190fc0444b0
+Signed-off-by: Kienan Stewart <kstewart@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+---
+ include/instrumentation/events/asoc.h | 33 +++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/include/instrumentation/events/asoc.h b/include/instrumentation/events/asoc.h
+index 21d13a0f..5126d4c1 100644
+--- a/include/instrumentation/events/asoc.h
++++ b/include/instrumentation/events/asoc.h
+@@ -51,6 +51,38 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_card, snd_soc_bias_level_done,
+ 
+ )
+ 
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0))
++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic,
++
++	TP_PROTO(struct snd_soc_card *card, int event),
++
++	TP_ARGS(card, event),
++
++	TP_FIELDS(
++		ctf_string(name, card->name)
++		ctf_integer(int, event, event)
++	)
++)
++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_start,
++
++	asoc_snd_soc_dapm_start,
++
++	TP_PROTO(struct snd_soc_card *card, int event),
++
++	TP_ARGS(card, event)
++
++)
++
++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done,
++
++	asoc_snd_soc_dapm_done,
++
++	TP_PROTO(struct snd_soc_card *card, int event),
++
++	TP_ARGS(card, event)
++
++)
++#else
+ LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic,
+ 
+ 	TP_PROTO(struct snd_soc_card *card),
+@@ -81,6 +113,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_basic, snd_soc_dapm_done,
+ 	TP_ARGS(card)
+ 
+ )
++#endif
+ 
+ LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_widget,
+ 
+-- 
+2.39.2
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-sched_stat_runtime-changed-in-linux-6.8.0-rc1.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-sched_stat_runtime-changed-in-linux-6.8.0-rc1.patch
deleted file mode 100644
index a0d932c..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Fix-sched_stat_runtime-changed-in-linux-6.8.0-rc1.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 9e59c2f6387aeb832ae3af3095f987529722e08f Mon Sep 17 00:00:00 2001
-From: Kienan Stewart <kstewart@efficios.com>
-Date: Mon, 22 Jan 2024 11:10:37 -0500
-Subject: [PATCH 1/5] Fix: sched_stat_runtime changed in linux 6.8.0-rc1
-
-See upstream commit:
-
-    commit 5fe6ec8f6ab549b6422e41551abb51802bd48bc7
-    Author: Peter Zijlstra <peterz@infradead.org>
-    Date:   Mon Nov 6 13:41:43 2023 +0100
-
-        sched: Remove vruntime from trace_sched_stat_runtime()
-
-        Tracing the runtime delta makes sense, observer can sum over time.
-        Tracing the absolute vruntime makes less sense, inconsistent:
-        absolute-vs-delta, but also vruntime delta can be computed from
-        runtime delta.
-
-        Removing the vruntime thing also makes the two tracepoint sites
-        identical, allowing to unify the code in a later patch.
-
-Upstream-Status: Backport [Uhttps://review.lttng.org/c/lttng-modules/+/11700]
-
-Change-Id: I24ebb4e06dbb646a1af75ac62b74f3821ff197de
-Signed-off-by: Kienan Stewart <kstewart@efficios.com>
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- include/instrumentation/events/sched.h | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-diff --git a/include/instrumentation/events/sched.h b/include/instrumentation/events/sched.h
-index 066a0f8..24cf37c 100644
---- a/include/instrumentation/events/sched.h
-+++ b/include/instrumentation/events/sched.h
-@@ -646,6 +646,24 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(sched_stat_template, sched_stat_blocked,
- 	     TP_ARGS(tsk, delay))
- #endif
- 
-+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,8,0))
-+/*
-+ * Tracepoint for accounting runtime (time the task is executing
-+ * on a CPU).
-+ */
-+LTTNG_TRACEPOINT_EVENT(sched_stat_runtime,
-+
-+	TP_PROTO(struct task_struct *tsk, u64 runtime),
-+
-+	TP_ARGS(tsk, runtime),
-+
-+	TP_FIELDS(
-+		ctf_array_text(char, comm, tsk->comm, TASK_COMM_LEN)
-+		ctf_integer(pid_t, tid, tsk->pid)
-+		ctf_integer(u64, runtime, runtime)
-+	)
-+)
-+#else
- /*
-  * Tracepoint for accounting runtime (time the task is executing
-  * on a CPU).
-@@ -663,6 +681,7 @@ LTTNG_TRACEPOINT_EVENT(sched_stat_runtime,
- 		ctf_integer(u64, vruntime, vruntime)
- 	)
- )
-+#endif
- 
- #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,12,0) || \
- 	LTTNG_RT_KERNEL_RANGE(4,9,27,18, 4,10,0,0) || \
--- 
-2.39.2
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch
new file mode 100644
index 0000000..6ea10ff
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch
@@ -0,0 +1,132 @@
+From d8379ec6365a925db33cae94fb6783cdbdb6a922 Mon Sep 17 00:00:00 2001
+From: Kienan Stewart <kstewart@efficios.com>
+Date: Mon, 25 Mar 2024 09:40:29 -0400
+Subject: [PATCH 2/4] Fix: ASoC add component to set_bias_level events in linux
+ 6.9-rc1
+
+See upstream commit:
+
+    commit 6ef46a69ec32fe1cf56de67742fcd01af4bf48af
+    Author: Luca Ceresoli <luca.ceresoli@bootlin.com>
+    Date:   Wed Mar 6 10:30:00 2024 +0100
+
+        ASoC: trace: add component to set_bias_level trace events
+
+        The snd_soc_bias_level_start and snd_soc_bias_level_done trace events
+        currently look like:
+
+                   aplay-229   [000]  1250.140778: snd_soc_bias_level_start: card=vscn-2046 val=1
+                   aplay-229   [000]  1250.140784: snd_soc_bias_level_done: card=vscn-2046 val=1
+                   aplay-229   [000]  1250.140786: snd_soc_bias_level_start: card=vscn-2046 val=2
+                   aplay-229   [000]  1250.140788: snd_soc_bias_level_done: card=vscn-2046 val=2
+            kworker/u8:1-21    [000]  1250.140871: snd_soc_bias_level_start: card=vscn-2046 val=1
+            kworker/u8:0-11    [000]  1250.140951: snd_soc_bias_level_start: card=vscn-2046 val=1
+            kworker/u8:0-11    [000]  1250.140956: snd_soc_bias_level_done: card=vscn-2046 val=1
+            kworker/u8:0-11    [000]  1250.140959: snd_soc_bias_level_start: card=vscn-2046 val=2
+            kworker/u8:0-11    [000]  1250.140961: snd_soc_bias_level_done: card=vscn-2046 val=2
+            kworker/u8:1-21    [000]  1250.167219: snd_soc_bias_level_done: card=vscn-2046 val=1
+            kworker/u8:1-21    [000]  1250.167222: snd_soc_bias_level_start: card=vscn-2046 val=2
+            kworker/u8:1-21    [000]  1250.167232: snd_soc_bias_level_done: card=vscn-2046 val=2
+            kworker/u8:0-11    [000]  1250.167440: snd_soc_bias_level_start: card=vscn-2046 val=3
+            kworker/u8:0-11    [000]  1250.167444: snd_soc_bias_level_done: card=vscn-2046 val=3
+            kworker/u8:1-21    [000]  1250.167497: snd_soc_bias_level_start: card=vscn-2046 val=3
+            kworker/u8:1-21    [000]  1250.167506: snd_soc_bias_level_done: card=vscn-2046 val=3
+
+        There are clearly multiple calls, one per component, but they cannot be
+        discriminated from each other.
+
+        Change the ftrace events to also print the component name, to make it clear
+        which part of the code is involved. This requires changing the passed value
+        from a struct snd_soc_card, where the DAPM context is not kwown, to a
+        struct snd_soc_dapm_context where it is obviously known but the a card
+        pointer is also available.
+
+        With this change, the resulting trace becomes:
+
+                   aplay-247   [000]  1436.357332: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=1
+                   aplay-247   [000]  1436.357338: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=1
+                   aplay-247   [000]  1436.357340: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=2
+                   aplay-247   [000]  1436.357343: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=2
+            kworker/u8:4-215   [000]  1436.357437: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=1
+            kworker/u8:5-231   [000]  1436.357518: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=1
+            kworker/u8:5-231   [000]  1436.357523: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=1
+            kworker/u8:5-231   [000]  1436.357526: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=2
+            kworker/u8:5-231   [000]  1436.357528: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=2
+            kworker/u8:4-215   [000]  1436.383217: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=1
+            kworker/u8:4-215   [000]  1436.383221: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=2
+            kworker/u8:4-215   [000]  1436.383231: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=2
+            kworker/u8:5-231   [000]  1436.383468: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=3
+            kworker/u8:5-231   [000]  1436.383472: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=3
+            kworker/u8:4-215   [000]  1436.383503: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=3
+            kworker/u8:4-215   [000]  1436.383513: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=3
+
+Upstream-Status: Backport [303434ab Fix: ASoC add component to set_bias_level events in linux 6.9-rc1]
+
+Change-Id: I959f1680c002acdf29828b968d3975247f5433d8
+Signed-off-by: Kienan Stewart <kstewart@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+---
+ include/instrumentation/events/asoc.h | 36 +++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+Index: lttng-modules-2.13.12/include/instrumentation/events/asoc.h
+===================================================================
+--- lttng-modules-2.13.12.orig/include/instrumentation/events/asoc.h
++++ lttng-modules-2.13.12/include/instrumentation/events/asoc.h
+@@ -10,6 +10,7 @@
+ #include <lttng/kernel-version.h>
+ 
+ #define DAPM_DIRECT "(direct)"
++#define DAPM_COMPONENT_NONE "(none)"
+ 
+ #ifndef _TRACE_ASOC_DEF
+ #define _TRACE_ASOC_DEF
+@@ -119,6 +120,40 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc
+ )
+ #endif
+ 
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0))
++LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_context,
++
++	TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
++
++	TP_ARGS(dapm, val),
++
++	TP_FIELDS(
++		ctf_string(name, dapm->card->name)
++		ctf_string(component, dapm->component ? dapm->component->name : DAPM_COMPONENT_NONE)
++		ctf_integer(int, val, val)
++	)
++)
++
++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_start,
++
++	asoc_snd_soc_bias_level_start,
++
++	TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
++
++	TP_ARGS(dapm, val)
++
++)
++
++LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc_snd_soc_dapm_context, snd_soc_bias_level_done,
++
++	asoc_snd_soc_bias_level_done,
++
++	TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
++
++	TP_ARGS(dapm, val)
++
++)
++#else
+ LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_card,
+ 
+ 	TP_PROTO(struct snd_soc_card *card, int val),
+@@ -150,6 +185,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(asoc
+ 	TP_ARGS(card, val)
+ 
+ )
++#endif
+ 
+ #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0))
+ LTTNG_TRACEPOINT_EVENT_CLASS(asoc_snd_soc_dapm_basic,
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-timer_start-changed-in-linux-6.8.0-rc1.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-timer_start-changed-in-linux-6.8.0-rc1.patch
deleted file mode 100644
index 5a4294d..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-timer_start-changed-in-linux-6.8.0-rc1.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From d52ab4b9a71a4bef535dadb8e7062112ac5c0c88 Mon Sep 17 00:00:00 2001
-From: Kienan Stewart <kstewart@efficios.com>
-Date: Mon, 22 Jan 2024 11:33:39 -0500
-Subject: [PATCH 2/5] Fix: timer_start changed in linux 6.8.0-rc1
-
-See upstream commit
-
-    commit dbcdcb62b59db2cf6a24113873b90da15c6f0b19
-    Author: Anna-Maria Behnsen <anna-maria@linutronix.de>
-    Date:   Fri Dec 1 10:26:26 2023 +0100
-
-        tracing/timers: Enhance timer_start tracepoint
-
-        For starting a timer, the timer is enqueued into a bucket of the timer
-        wheel. The bucket expiry is the defacto expiry of the timer but it is not
-        equal the timer expiry because of increasing granularity when bucket is in
-        a higher level of the wheel. To be able to figure out in a trace whether a
-        timer expired in time or not, the bucket expiry time is required as well.
-
-        Add bucket expiry time to the timer_start tracepoint and thereby simplify
-        the arguments.
-
-Upstream-Status: Backport [Uhttps://review.lttng.org/c/lttng-modules/+/11700]
-
-Change-Id: I4868092765745b1efd0c48f13c0b837f2007dcb6
-Signed-off-by: Kienan Stewart <kstewart@efficios.com>
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- include/instrumentation/events/timer.h | 24 +++++++++++++-----------
- 1 file changed, 13 insertions(+), 11 deletions(-)
-
-diff --git a/include/instrumentation/events/timer.h b/include/instrumentation/events/timer.h
-index 91a2cd9..ce571f5 100644
---- a/include/instrumentation/events/timer.h
-+++ b/include/instrumentation/events/timer.h
-@@ -45,8 +45,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_init,
- 	TP_ARGS(timer)
- )
- 
--#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,2,0) || \
--	LTTNG_RHEL_KERNEL_RANGE(3,10,0,957,0,0, 3,11,0,0,0,0))
-+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,8,0))
- /**
-  * timer_start - called when the timer is started
-  * @timer:	pointer to struct timer_list
-@@ -55,39 +54,42 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_init,
-  */
- LTTNG_TRACEPOINT_EVENT(timer_start,
- 
--	TP_PROTO(struct timer_list *timer, unsigned long expires,
--		unsigned int flags),
-+	TP_PROTO(struct timer_list *timer, unsigned long bucket_expiry),
- 
--	TP_ARGS(timer, expires, flags),
-+	TP_ARGS(timer, bucket_expiry),
- 
- 	TP_FIELDS(
- 		ctf_integer_hex(void *, timer, timer)
- 		ctf_integer_hex(void *, function, timer->function)
--		ctf_integer(unsigned long, expires, expires)
-+		ctf_integer(unsigned long, expires, timer->expires)
-+		ctf_integer(unsigned long, bucket_expiry, bucket_expiry)
- 		ctf_integer(unsigned long, now, jiffies)
--		ctf_integer(unsigned int, flags, flags)
-+		ctf_integer(unsigned int, flags, timer->flags)
- 	)
- )
--#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,2,0)) */
-+#else
- /**
-  * timer_start - called when the timer is started
-  * @timer:	pointer to struct timer_list
-  * @expires:	the timers expiry time
-+ * @flags:	the timers expiry time
-  */
- LTTNG_TRACEPOINT_EVENT(timer_start,
- 
--	TP_PROTO(struct timer_list *timer, unsigned long expires),
-+	TP_PROTO(struct timer_list *timer, unsigned long expires,
-+		unsigned int flags),
- 
--	TP_ARGS(timer, expires),
-+	TP_ARGS(timer, expires, flags),
- 
- 	TP_FIELDS(
- 		ctf_integer_hex(void *, timer, timer)
- 		ctf_integer_hex(void *, function, timer->function)
- 		ctf_integer(unsigned long, expires, expires)
- 		ctf_integer(unsigned long, now, jiffies)
-+		ctf_integer(unsigned int, flags, flags)
- 	)
- )
--#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,2,0)) */
-+#endif
- 
- #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,2,0) || \
- 	LTTNG_RHEL_KERNEL_RANGE(4,18,0,193,0,0, 4,19,0,0,0,0))
--- 
-2.39.2
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch
new file mode 100644
index 0000000..66c48eb
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch
@@ -0,0 +1,81 @@
+From f4a6415f8d5fa447868d1fdc7119e0a328966379 Mon Sep 17 00:00:00 2001
+From: Kienan Stewart <kstewart@efficios.com>
+Date: Mon, 25 Mar 2024 10:30:32 -0400
+Subject: [PATCH 3/4] Fix: mm_compaction_migratepages changed in linux 6.9-rc1
+
+See upstream commit:
+
+    commit ab755bf4249b992fc2140d615ab0a686d50765b4
+    Author: Baolin Wang <baolin.wang@linux.alibaba.com>
+    Date:   Tue Feb 20 14:16:31 2024 +0800
+
+        mm: compaction: update the cc->nr_migratepages when allocating or freeing the freepages
+
+        Currently we will use 'cc->nr_freepages >= cc->nr_migratepages' comparison
+        to ensure that enough freepages are isolated in isolate_freepages(),
+        however it just decreases the cc->nr_freepages without updating
+        cc->nr_migratepages in compaction_alloc(), which will waste more CPU
+        cycles and cause too many freepages to be isolated.
+
+        So we should also update the cc->nr_migratepages when allocating or
+        freeing the freepages to avoid isolating excess freepages.  And I can see
+        fewer free pages are scanned and isolated when running thpcompact on my
+        Arm64 server:
+
+                                               k6.7         k6.7_patched
+        Ops Compaction pages isolated      120692036.00   118160797.00
+        Ops Compaction migrate scanned     131210329.00   154093268.00
+        Ops Compaction free scanned       1090587971.00  1080632536.00
+        Ops Compact scan efficiency               12.03          14.26
+
+        Moreover, I did not see an obvious latency improvements, this is likely
+        because isolating freepages is not the bottleneck in the thpcompact test
+        case.
+
+                                      k6.7                  k6.7_patched
+        Amean     fault-both-1      1089.76 (   0.00%)     1080.16 *   0.88%*
+        Amean     fault-both-3      1616.48 (   0.00%)     1636.65 *  -1.25%*
+        Amean     fault-both-5      2266.66 (   0.00%)     2219.20 *   2.09%*
+        Amean     fault-both-7      2909.84 (   0.00%)     2801.90 *   3.71%*
+        Amean     fault-both-12     4861.26 (   0.00%)     4733.25 *   2.63%*
+        Amean     fault-both-18     7351.11 (   0.00%)     6950.51 *   5.45%*
+        Amean     fault-both-24     9059.30 (   0.00%)     9159.99 *  -1.11%*
+        Amean     fault-both-30    10685.68 (   0.00%)    11399.02 *  -6.68%*
+
+Upstream-Status: Backport [175fe77c Fix: mm_compaction_migratepages changed in linux 6.9-rc1]
+
+Change-Id: I103a43fd1b549360b3fc978fd409b7c17ef3e192
+Signed-off-by: Kienan Stewart <kstewart@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+---
+ include/instrumentation/events/compaction.h | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+Index: lttng-modules-2.13.12/include/instrumentation/events/compaction.h
+===================================================================
+--- lttng-modules-2.13.12.orig/include/instrumentation/events/compaction.h
++++ lttng-modules-2.13.12/include/instrumentation/events/compaction.h
+@@ -97,7 +97,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(comp
+ 
+ #endif /* #else #if LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,0,0) */
+ 
+-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) || \
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0))
++LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
++
++	compaction_migratepages,
++
++	TP_PROTO(unsigned int nr_migratepages,
++		unsigned int nr_succeeded),
++
++	TP_ARGS(nr_migratepages, nr_succeeded),
++
++	TP_FIELDS(
++		ctf_integer(unsigned long, nr_migrated, nr_succeeded)
++		ctf_integer(unsigned long, nr_failed, nr_migratepages - nr_succeeded)
++	)
++)
++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) || \
+     LTTNG_RHEL_KERNEL_RANGE(5,14,0,163,0,0, 5,15,0,0,0,0))
+ LTTNG_TRACEPOINT_EVENT_MAP(mm_compaction_migratepages,
+ 
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-strlcopy-removed-in-linux-6.8.0-rc1.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-strlcopy-removed-in-linux-6.8.0-rc1.patch
deleted file mode 100644
index 4ad9adc..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-strlcopy-removed-in-linux-6.8.0-rc1.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 7432f583674294b676577b6505b89fc74dc5c7ab Mon Sep 17 00:00:00 2001
-From: Kienan Stewart <kstewart@efficios.com>
-Date: Mon, 22 Jan 2024 11:47:40 -0500
-Subject: [PATCH 3/5] Fix: strlcopy removed in linux 6.8.0-rc1
-
-See upstream commit:
-
-    commit d26270061ae66b915138af7cd73ca6f8b85e6b44
-    Author: Kees Cook <keescook@chromium.org>
-    Date:   Thu Jan 18 12:31:55 2024 -0800
-
-        string: Remove strlcpy()
-
-        With all the users of strlcpy() removed[1] from the kernel, remove the
-        API, self-tests, and other references. Leave mentions in Documentation
-        (about its deprecation), and in checkpatch.pl (to help migrate host-only
-        tools/ usage). Long live strscpy().
-
-Upstream-Status: Backport [Uhttps://review.lttng.org/c/lttng-modules/+/11700]
-
-Change-Id: I27cdff70a504b25340cc59150ed8e959d9629e43
-Signed-off-by: Kienan Stewart <kstewart@efficios.com>
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- src/lib/ringbuffer/ring_buffer_backend.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/lib/ringbuffer/ring_buffer_backend.c b/src/lib/ringbuffer/ring_buffer_backend.c
-index 9a339be..2181145 100644
---- a/src/lib/ringbuffer/ring_buffer_backend.c
-+++ b/src/lib/ringbuffer/ring_buffer_backend.c
-@@ -405,7 +405,11 @@ int channel_backend_init(struct channel_backend *chanb,
- 	chanb->extra_reader_sb =
- 			(config->mode == RING_BUFFER_OVERWRITE) ? 1 : 0;
- 	chanb->num_subbuf = num_subbuf;
-+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,8,0))
-+	strscpy(chanb->name, name, NAME_MAX);
-+#else
- 	strlcpy(chanb->name, name, NAME_MAX);
-+#endif
- 	memcpy(&chanb->config, config, sizeof(chanb->config));
- 
- 	if (config->alloc == RING_BUFFER_ALLOC_PER_CPU) {
--- 
-2.39.2
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-btrfs_chunk-tracepoints-changed-in-linux-6.8.0-r.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-btrfs_chunk-tracepoints-changed-in-linux-6.8.0-r.patch
deleted file mode 100644
index c9b1af3..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-btrfs_chunk-tracepoints-changed-in-linux-6.8.0-r.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From c8198382fe1cede3e16aae9978642a113a217e4c Mon Sep 17 00:00:00 2001
-From: Kienan Stewart <kstewart@efficios.com>
-Date: Mon, 22 Jan 2024 12:17:33 -0500
-Subject: [PATCH 4/5] Fix: btrfs_chunk tracepoints changed in linux 6.8.0-rc1
-
-See upstream commit:
-
-    commit 7dc66abb5a47778d7db327783a0ba172b8cff0b5
-    Author: Filipe Manana <fdmanana@suse.com>
-    Date:   Tue Nov 21 13:38:38 2023 +0000
-
-        btrfs: use a dedicated data structure for chunk maps
-
-        Currently we abuse the extent_map structure for two purposes:
-
-        1) To actually represent extents for inodes;
-        2) To represent chunk mappings.
-
-        This is odd and has several disadvantages:
-
-        1) To create a chunk map, we need to do two memory allocations: one for
-           an extent_map structure and another one for a map_lookup structure, so
-           more potential for an allocation failure and more complicated code to
-           manage and link two structures;
-
-        2) For a chunk map we actually only use 3 fields (24 bytes) of the
-           respective extent map structure: the 'start' field to have the logical
-           start address of the chunk, the 'len' field to have the chunk's size,
-           and the 'orig_block_len' field to contain the chunk's stripe size.
-
-           Besides wasting a memory, it's also odd and not intuitive at all to
-           have the stripe size in a field named 'orig_block_len'.
-
-           We are also using 'block_len' of the extent_map structure to contain
-           the chunk size, so we have 2 fields for the same value, 'len' and
-           'block_len', which is pointless;
-
-        3) When an extent map is associated to a chunk mapping, we set the bit
-           EXTENT_FLAG_FS_MAPPING on its flags and then make its member named
-           'map_lookup' point to the associated map_lookup structure. This means
-           that for an extent map associated to an inode extent, we are not using
-           this 'map_lookup' pointer, so wasting 8 bytes (on a 64 bits platform);
-
-        4) Extent maps associated to a chunk mapping are never merged or split so
-           it's pointless to use the existing extent map infrastructure.
-
-        So add a dedicated data structure named 'btrfs_chunk_map' to represent
-        chunk mappings, this is basically the existing map_lookup structure with
-        some extra fields:
-
-        1) 'start' to contain the chunk logical address;
-        2) 'chunk_len' to contain the chunk's length;
-        3) 'stripe_size' for the stripe size;
-        4) 'rb_node' for insertion into a rb tree;
-        5) 'refs' for reference counting.
-
-        This way we do a single memory allocation for chunk mappings and we don't
-        waste memory for them with unused/unnecessary fields from an extent_map.
-
-        We also save 8 bytes from the extent_map structure by removing the
-        'map_lookup' pointer, so the size of struct extent_map is reduced from
-        144 bytes down to 136 bytes, and we can now have 30 extents map per 4K
-        page instead of 28.
-
-Upstream-Status: Backport [Uhttps://review.lttng.org/c/lttng-modules/+/11700]
-
-Change-Id: Ie52b5ac83df4bc6abeb84d958c4f5d24ae0d8c75
-Signed-off-by: Kienan Stewart <kstewart@efficios.com>
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- include/instrumentation/events/btrfs.h | 37 +++++++++++++++++++++++++-
- 1 file changed, 36 insertions(+), 1 deletion(-)
-
-diff --git a/include/instrumentation/events/btrfs.h b/include/instrumentation/events/btrfs.h
-index 7c7b9b0..a2a412b 100644
---- a/include/instrumentation/events/btrfs.h
-+++ b/include/instrumentation/events/btrfs.h
-@@ -1609,7 +1609,42 @@ LTTNG_TRACEPOINT_EVENT(btrfs_delayed_ref_head,
- )
- #endif
- 
--#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0))
-+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,8,0))
-+
-+LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk,
-+
-+	TP_PROTO(const struct btrfs_fs_info *fs_info, const struct btrfs_chunk_map *map,
-+		 u64 offset, u64 size),
-+
-+	TP_ARGS(fs_info, map, offset, size),
-+
-+	TP_FIELDS(
-+		ctf_integer(int, num_stripes, map->num_stripes)
-+		ctf_integer(u64, type, map->type)
-+		ctf_integer(int, sub_stripes, map->sub_stripes)
-+		ctf_integer(u64, offset, offset)
-+		ctf_integer(u64, size, size)
-+		ctf_integer(u64, root_objectid, fs_info->chunk_root->root_key.objectid)
-+	)
-+)
-+
-+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk,  btrfs_chunk_alloc,
-+
-+	TP_PROTO(const struct btrfs_fs_info *fs_info, const struct btrfs_chunk_map *map,
-+		 u64 offset, u64 size),
-+
-+	TP_ARGS(fs_info, map, offset, size)
-+)
-+
-+LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__chunk,  btrfs_chunk_free,
-+
-+	TP_PROTO(const struct btrfs_fs_info *fs_info, const struct btrfs_chunk_map *map,
-+		 u64 offset, u64 size),
-+
-+	TP_ARGS(fs_info, map, offset, size)
-+)
-+
-+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0))
- 
- LTTNG_TRACEPOINT_EVENT_CLASS(btrfs__chunk,
- 
--- 
-2.39.2
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch
new file mode 100644
index 0000000..59ef4f9
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch
@@ -0,0 +1,57 @@
+From 217bc2e4685050dddce9bdd2557b64f6b8c16622 Mon Sep 17 00:00:00 2001
+From: Kienan Stewart <kstewart@efficios.com>
+Date: Mon, 25 Mar 2024 10:53:46 -0400
+Subject: [PATCH 4/4] Fix: dev_base_lock removed in linux 6.9-rc1
+
+See upstream commit:
+
+    commit 1b3ef46cb7f2618cc0b507393220a69810f6da12
+    Author: Eric Dumazet <edumazet@google.com>
+    Date:   Tue Feb 13 06:32:45 2024 +0000
+
+        net: remove dev_base_lock
+
+        dev_base_lock is not needed anymore, all remaining users also hold RTNL.
+
+Upstream-Status: Backport [52eb2ee9 Fix: dev_base_lock removed in linux 6.9-rc1]
+
+Change-Id: I6b07e6eed07fd398302ca14d23162ed24d74df15
+Signed-off-by: Kienan Stewart <kstewart@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+---
+ src/lttng-statedump-impl.c | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+Index: lttng-modules-2.13.12/src/lttng-statedump-impl.c
+===================================================================
+--- lttng-modules-2.13.12.orig/src/lttng-statedump-impl.c
++++ lttng-modules-2.13.12/src/lttng-statedump-impl.c
+@@ -392,6 +392,20 @@ void lttng_enumerate_device(struct lttng
+ 	}
+ }
+ 
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0))
++static
++int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session)
++{
++	struct net_device *dev;
++
++	rtnl_lock();
++	for_each_netdev(&init_net, dev)
++		lttng_enumerate_device(session, dev);
++	rtnl_unlock();
++
++	return 0;
++}
++#else
+ static
+ int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session)
+ {
+@@ -404,6 +418,7 @@ int lttng_enumerate_network_ip_interface
+ 
+ 	return 0;
+ }
++#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,9,0)) */
+ #else /* CONFIG_INET */
+ static inline
+ int lttng_enumerate_network_ip_interface(struct lttng_kernel_session *session)
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-btrfs_get_extent-flags-and-compress_type-changed.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-btrfs_get_extent-flags-and-compress_type-changed.patch
deleted file mode 100644
index 65c33da..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-btrfs_get_extent-flags-and-compress_type-changed.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 86db094386b43bb5c6b47552f9a4826ca8ba917d Mon Sep 17 00:00:00 2001
-From: Kienan Stewart <kstewart@efficios.com>
-Date: Mon, 22 Jan 2024 13:13:36 -0500
-Subject: [PATCH 5/5] Fix: btrfs_get_extent flags and compress_type changed in
- linux 6.8.0-rc1
-
-See upstream commit:
-
-    commit f86f7a75e2fb5fd7d31d00eab8a392f97ba42ce9
-    Author: Filipe Manana <fdmanana@suse.com>
-    Date:   Mon Dec 4 16:20:33 2023 +0000
-
-        btrfs: use the flags of an extent map to identify the compression type
-
-        Currently, in struct extent_map, we use an unsigned int (32 bits) to
-        identify the compression type of an extent and an unsigned long (64 bits
-        on a 64 bits platform, 32 bits otherwise) for flags. We are only using
-        6 different flags, so an unsigned long is excessive and we can use flags
-        to identify the compression type instead of using a dedicated 32 bits
-        field.
-
-        We can easily have tens or hundreds of thousands (or more) of extent maps
-        on busy and large filesystems, specially with compression enabled or many
-        or large files with tons of small extents. So it's convenient to have the
-        extent_map structure as small as possible in order to use less memory.
-
-        So remove the compression type field from struct extent_map, use flags
-        to identify the compression type and shorten the flags field from an
-        unsigned long to a u32. This saves 8 bytes (on 64 bits platforms) and
-        reduces the size of the structure from 136 bytes down to 128 bytes, using
-        now only two cache lines, and increases the number of extent maps we can
-        have per 4K page from 30 to 32. By using a u32 for the flags instead of
-        an unsigned long, we no longer use test_bit(), set_bit() and clear_bit(),
-        but that level of atomicity is not needed as most flags are never cleared
-        once set (before adding an extent map to the tree), and the ones that can
-        be cleared or set after an extent map is added to the tree, are always
-        performed while holding the write lock on the extent map tree, while the
-        reader holds a lock on the tree or tests for a flag that never changes
-        once the extent map is in the tree (such as compression flags).
-
-Upstream-Status: Backport [Uhttps://review.lttng.org/c/lttng-modules/+/11700]
-
-Change-Id: I95402d43f064c016b423b48652e4968d3db9b8a9
-Signed-off-by: Kienan Stewart <kstewart@efficios.com>
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- include/instrumentation/events/btrfs.h | 25 ++++++++++++++++++++++++-
- 1 file changed, 24 insertions(+), 1 deletion(-)
-
-diff --git a/include/instrumentation/events/btrfs.h b/include/instrumentation/events/btrfs.h
-index a2a412b..ffb1b64 100644
---- a/include/instrumentation/events/btrfs.h
-+++ b/include/instrumentation/events/btrfs.h
-@@ -177,7 +177,30 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(btrfs__inode, btrfs_inode_evict,
- )
- #endif
- 
--#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0))
-+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,8,0))
-+
-+LTTNG_TRACEPOINT_EVENT(btrfs_get_extent,
-+
-+	TP_PROTO(const struct btrfs_root *root, const struct btrfs_inode *inode,
-+		const struct extent_map *map),
-+
-+	TP_ARGS(root, inode, map),
-+
-+	TP_FIELDS(
-+		ctf_integer(u64, root_objectid, root->root_key.objectid)
-+		ctf_integer(u64, ino, btrfs_ino(inode))
-+		ctf_integer(u64, start, map->start)
-+		ctf_integer(u64, len, map->len)
-+		ctf_integer(u64, orig_start, map->orig_start)
-+		ctf_integer(u64, block_start, map->block_start)
-+		ctf_integer(u64, block_len, map->block_len)
-+		ctf_integer(unsigned int, flags, map->flags)
-+		ctf_integer(int, refs, refcount_read(&map->refs))
-+		ctf_integer(unsigned int, compress_type, extent_map_compression(map))
-+	)
-+)
-+
-+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0))
- 
- LTTNG_TRACEPOINT_EVENT(btrfs_get_extent,
- 
--- 
-2.39.2
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.11.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.11.bb
deleted file mode 100644
index b6bae73..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.11.bb
+++ /dev/null
@@ -1,46 +0,0 @@
-SECTION = "devel"
-SUMMARY = "Linux Trace Toolkit KERNEL MODULE"
-DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules"
-HOMEPAGE = "https://lttng.org/"
-LICENSE = "LGPL-2.1-only & GPL-2.0-only & MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4"
-
-inherit module
-
-include lttng-platforms.inc
-
-SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
-           file://0001-Fix-sched_stat_runtime-changed-in-linux-6.8.0-rc1.patch \
-           file://0002-Fix-timer_start-changed-in-linux-6.8.0-rc1.patch \
-           file://0003-Fix-strlcopy-removed-in-linux-6.8.0-rc1.patch \
-           file://0004-Fix-btrfs_chunk-tracepoints-changed-in-linux-6.8.0-r.patch \
-           file://0005-Fix-btrfs_get_extent-flags-and-compress_type-changed.patch \
-        "
-
-# Use :append here so that the patch is applied also when using devupstream
-SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
-
-SRC_URI[sha256sum] = "297211d6fda459c85793c1f498c90fad2939cda7939d503f3ec5eaaf5fbec3c7"
-
-export INSTALL_MOD_DIR="kernel/lttng-modules"
-
-EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'"
-
-MODULES_MODULE_SYMVERS_LOCATION = "src"
-
-do_install:append() {
-	# Delete empty directories to avoid QA failures if no modules were built
-	if [ -d ${D}/${nonarch_base_libdir} ]; then
-		find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \;
-	fi
-}
-
-python do_package:prepend() {
-    if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')):
-        bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN'))
-}
-
-BBCLASSEXTEND = "devupstream:target"
-SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13;protocol=https"
-SRCREV:class-devupstream = "7584cfc04914cb0842a986e9808686858b9c8630"
-SRCREV_FORMAT ?= "lttng_git"
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb
new file mode 100644
index 0000000..95d5e2d
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.12.bb
@@ -0,0 +1,45 @@
+SECTION = "devel"
+SUMMARY = "Linux Trace Toolkit KERNEL MODULE"
+DESCRIPTION = "The lttng-modules 2.0 package contains the kernel tracer modules"
+HOMEPAGE = "https://lttng.org/"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0464cff101a009c403cd2ed65d01d4c4"
+
+inherit module
+
+include lttng-platforms.inc
+
+SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://0001-Fix-ASoC-snd_doc_dapm-on-linux-6.9-rc1.patch \
+           file://0002-Fix-ASoC-add-component-to-set_bias_level-events-in-l.patch \
+           file://0003-Fix-mm_compaction_migratepages-changed-in-linux-6.9-.patch \
+           file://0004-Fix-dev_base_lock-removed-in-linux-6.9-rc1.patch \
+        "
+
+# Use :append here so that the patch is applied also when using devupstream
+SRC_URI:append = " file://0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch"
+
+SRC_URI[sha256sum] = "d85fcb66c7bd31003ab8735e8c77700e5e4f417b4c22fe1f20112cf435abad79"
+
+export INSTALL_MOD_DIR="kernel/lttng-modules"
+
+EXTRA_OEMAKE += "KERNELDIR='${STAGING_KERNEL_DIR}'"
+
+MODULES_MODULE_SYMVERS_LOCATION = "src"
+
+do_install:append() {
+	# Delete empty directories to avoid QA failures if no modules were built
+	if [ -d ${D}/${nonarch_base_libdir} ]; then
+		find ${D}/${nonarch_base_libdir} -depth -type d -empty -exec rmdir {} \;
+	fi
+}
+
+python do_package:prepend() {
+    if not os.path.exists(os.path.join(d.getVar('D'), d.getVar('nonarch_base_libdir')[1:], 'modules')):
+        bb.warn("%s: no modules were created; this may be due to CONFIG_TRACEPOINTS not being enabled in your kernel." % d.getVar('PN'))
+}
+
+BBCLASSEXTEND = "devupstream:target"
+SRC_URI:class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.13;protocol=https"
+SRCREV:class-devupstream = "7584cfc04914cb0842a986e9808686858b9c8630"
+SRCREV_FORMAT ?= "lttng_git"
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch
new file mode 100644
index 0000000..3286dfb
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch
@@ -0,0 +1,56 @@
+From 6b45c5f80d20e7bbf3d98c1fa17d2cf8716af3bb Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Mon, 25 Mar 2024 18:20:14 +0800
+Subject: [PATCH] Fix: rotation-destroy-flush: fix session daemon abort if no
+ kernel module present
+
+Testing rotation-destroy-flush when no lttng kernel modules present, it would
+be failed with error message:
+
+  Error: Unable to load required module lttng-ring-buffer-client-discard
+  not ok 1 - Start session daemon
+  Failed test 'Start session daemon'
+  not ok 2 - Create session rotation_destroy_flush in -o /tmp/tmp.test_rot ...
+  ...
+
+This because test script that sets the LTTNG_ABORT_ON_ERROR environment
+variable. It's this environment variable that causes the sessiond to handle the
+kernel module loading failure as an abort rather than a warning.
+
+Using "check_skip_kernel_test" to detect whether the kernel module fails to
+load is expected or not. If the failure is expected, the script won't set that
+environment variable any more.
+
+Fixes: 3a174400
+("tests:add check_skip_kernel_test to check root user and lttng kernel modules")
+
+Upstream-Status: Submitted [https://review.lttng.org/c/lttng-tools/+/12155]
+
+Change-Id: I371e9ba717613e2940186f710cf3cccd35baed6c
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ .../ust/rotation-destroy-flush/test_rotation_destroy_flush  | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush
+index 669bcbc43..64161768f 100755
+--- a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush
++++ b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush
+@@ -23,11 +23,11 @@ SIZE_LIMIT=$PAGE_SIZE
+ NR_ITER=10
+ NUM_TESTS=$((15*$NR_ITER))
+ 
+-# Ensure the daemons invoke abort on error.
+-export LTTNG_ABORT_ON_ERROR=1
+-
+ source $TESTDIR/utils/utils.sh
+ 
++# Ensure the daemons invoke abort on error.
++check_skip_kernel_test || export LTTNG_ABORT_ON_ERROR=1
++
+ # MUST set TESTDIR before calling those functions
+ function run_app()
+ {
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch
new file mode 100644
index 0000000..2671a19
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch
@@ -0,0 +1,1246 @@
+From cf558f802b259a33605fe0ede4d74ae2ff6be699 Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Mon, 12 Feb 2024 09:23:54 -0500
+Subject: [PATCH] tests: add check_skip_kernel_test to check root user and
+ lttng kernel modules
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The current tests will run both userspace and kernel testing. Some of
+use cases only use lttng for one kind of tracing on an embedded
+device (e.g. userspace), so in this scenario, the kernel modules might
+not install to target rootfs, the test cases would be fail and exit.
+
+Add LTTNG_TOOLS_DISABLE_KERNEL_TESTS to skip the lttng kernel features
+test, this flag can be set via "make":
+
+  make check LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1
+
+When this flag was set, all kernel related testcases would be marked as
+SKIP in result.
+
+Since the the LTTNG_TOOLS_DISABLE_KERNEL_TESTS was checked in function
+check_skip_kernel_test, lots of testcases also need to check root
+permission, so merging the root permission checking into
+check_skip_kernel_test.
+
+Upstream-Status: Backport from
+[https://git.lttng.org/?p=lttng-tools.git;a=commit;h=3a1744008331a0604479d3d7461f77056fad3a64]
+
+Change-Id: I49a1f642a9869c21a69e0186c296fd917bd7b525
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
+Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
+---
+ tests/destructive/metadata-regeneration       |  8 +----
+ tests/perf/test_perf_raw.in                   |  8 +----
+ tests/regression/kernel/test_all_events       |  8 +----
+ tests/regression/kernel/test_callstack        |  8 +----
+ tests/regression/kernel/test_channel          |  8 +----
+ tests/regression/kernel/test_clock_override   |  8 +----
+ tests/regression/kernel/test_event_basic      |  8 +----
+ tests/regression/kernel/test_kernel_function  |  8 +----
+ tests/regression/kernel/test_lttng_logger     |  8 +----
+ tests/regression/kernel/test_ns_contexts      |  8 +----
+ .../regression/kernel/test_ns_contexts_change |  9 +----
+ .../kernel/test_rotation_destroy_flush        |  8 +----
+ .../regression/kernel/test_select_poll_epoll  |  8 +----
+ tests/regression/kernel/test_syscall          |  8 +----
+ tests/regression/kernel/test_userspace_probe  |  8 +----
+ tests/regression/tools/clear/test_kernel      |  8 +----
+ .../tools/filtering/test_invalid_filter       |  8 +----
+ .../tools/filtering/test_unsupported_op       |  8 +----
+ .../tools/filtering/test_valid_filter         |  8 +----
+ tests/regression/tools/health/test_health.sh  | 10 ++----
+ tests/regression/tools/health/test_thread_ok  |  9 +----
+ tests/regression/tools/live/test_kernel       | 10 +++---
+ tests/regression/tools/live/test_lttng_kernel |  8 +----
+ tests/regression/tools/metadata/test_kernel   |  8 +----
+ .../test_notification_kernel_buffer_usage     | 36 +++++++++----------
+ .../test_notification_kernel_capture          | 23 ++++++------
+ .../test_notification_kernel_error            | 23 ++++++------
+ .../test_notification_kernel_instrumentation  | 23 ++++++------
+ .../test_notification_kernel_syscall          | 19 +++++-----
+ .../test_notification_kernel_userspace_probe  | 20 +++++------
+ .../notification/test_notification_multi_app  | 14 +++-----
+ ...test_notification_notifier_discarded_count |  9 +++--
+ .../tools/regen-metadata/test_kernel          |  8 +----
+ .../tools/regen-statedump/test_kernel         |  8 +----
+ tests/regression/tools/rotation/test_kernel   |  8 +----
+ tests/regression/tools/snapshots/test_kernel  |  8 +----
+ .../tools/snapshots/test_kernel_streaming     |  8 +----
+ .../streaming/test_high_throughput_limits     |  8 +----
+ tests/regression/tools/streaming/test_kernel  |  8 +----
+ .../tools/tracker/test_event_tracker          |  8 +----
+ .../tools/trigger/test_add_trigger_cli        | 12 ++-----
+ .../tools/trigger/test_list_triggers_cli      | 26 +++++---------
+ .../tools/wildcard/test_event_wildcard        |  8 +----
+ .../test_relayd_working_directory             |  4 +--
+ .../ust/namespaces/test_ns_contexts_change    |  7 +---
+ tests/regression/ust/test_event_perf          |  8 +----
+ tests/utils/utils.sh                          | 35 ++++++++++++++++++
+ 47 files changed, 166 insertions(+), 363 deletions(-)
+
+diff --git a/tests/destructive/metadata-regeneration b/tests/destructive/metadata-regeneration
+index b81e7af32..36b130d17 100755
+--- a/tests/destructive/metadata-regeneration
++++ b/tests/destructive/metadata-regeneration
+@@ -185,19 +185,13 @@ function test_ust_streaming ()
+ 	rm -f ${file_sync_before_last}
+ }
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+ if ! destructive_tests_enabled ; then
+ 	echo 'You need to set the LTTNG_ENABLE_DESTRUCTIVE_TESTS to "will-break-my-system" as argument to run this test'
+ 	echo 'Moreover, please make sure that ntp is not running while executing this test'
+ 	exit 0
+ fi
+ 
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test $NUM_TESTS "Skipping all tests." ||
+ {
+ 	start_lttng_relayd "-o $TRACE_PATH"
+ 	start_lttng_sessiond
+diff --git a/tests/perf/test_perf_raw.in b/tests/perf/test_perf_raw.in
+index f293ccd71..d35529a87 100644
+--- a/tests/perf/test_perf_raw.in
++++ b/tests/perf/test_perf_raw.in
+@@ -137,12 +137,6 @@ function test_kernel_raw()
+ 	rm -rf $TRACE_PATH
+ }
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+ # MUST set TESTDIR before calling those functions
+ plan_tests $NUM_TESTS
+ 
+@@ -154,7 +148,7 @@ have_libpfm
+ 
+ test_ust_raw
+ 
+-skip $isroot "Root access is needed for kernel testing, skipping." 9 ||
++check_skip_kernel_test 9 ||
+ {
+ 	modprobe lttng-test
+ 	test_kernel_raw
+diff --git a/tests/regression/kernel/test_all_events b/tests/regression/kernel/test_all_events
+index 2e20888df..044f9b65f 100755
+--- a/tests/regression/kernel/test_all_events
++++ b/tests/regression/kernel/test_all_events
+@@ -43,13 +43,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	start_lttng_sessiond
+diff --git a/tests/regression/kernel/test_callstack b/tests/regression/kernel/test_callstack
+index a4477fd7c..d8d6b5e0f 100755
+--- a/tests/regression/kernel/test_callstack
++++ b/tests/regression/kernel/test_callstack
+@@ -134,13 +134,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	start_lttng_sessiond
+diff --git a/tests/regression/kernel/test_channel b/tests/regression/kernel/test_channel
+index 9cc74c4e8..4c377bd2a 100755
+--- a/tests/regression/kernel/test_channel
++++ b/tests/regression/kernel/test_channel
+@@ -47,13 +47,7 @@ function test_channel_buffer_too_large()
+ plan_tests $NUM_TESTS
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	start_lttng_sessiond
+ 
+diff --git a/tests/regression/kernel/test_clock_override b/tests/regression/kernel/test_clock_override
+index 72892898b..48a3f926a 100755
+--- a/tests/regression/kernel/test_clock_override
++++ b/tests/regression/kernel/test_clock_override
+@@ -172,13 +172,7 @@ TESTS=(
+ TEST_COUNT=${#TESTS[@]}
+ i=0
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	trap signal_cleanup SIGTERM SIGINT
+diff --git a/tests/regression/kernel/test_event_basic b/tests/regression/kernel/test_event_basic
+index ac9ec0549..387e2f733 100755
+--- a/tests/regression/kernel/test_event_basic
++++ b/tests/regression/kernel/test_event_basic
+@@ -73,13 +73,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test $NUM_TESTS "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	start_lttng_sessiond
+diff --git a/tests/regression/kernel/test_kernel_function b/tests/regression/kernel/test_kernel_function
+index b1d5491fc..ea16cdeef 100755
+--- a/tests/regression/kernel/test_kernel_function
++++ b/tests/regression/kernel/test_kernel_function
+@@ -43,13 +43,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	start_lttng_sessiond_notap
+ 	validate_lttng_modules_present
+diff --git a/tests/regression/kernel/test_lttng_logger b/tests/regression/kernel/test_lttng_logger
+index b8f7ded82..00eaae823 100755
+--- a/tests/regression/kernel/test_lttng_logger
++++ b/tests/regression/kernel/test_lttng_logger
+@@ -110,13 +110,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	start_lttng_sessiond
+diff --git a/tests/regression/kernel/test_ns_contexts b/tests/regression/kernel/test_ns_contexts
+index 0c8718d78..59e2568f6 100755
+--- a/tests/regression/kernel/test_ns_contexts
++++ b/tests/regression/kernel/test_ns_contexts
+@@ -108,13 +108,7 @@ plan_tests $NUM_TESTS
+ print_test_banner "$TEST_DESC"
+ 
+ 
+-isroot=0
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0
+-
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0
+ 
+ system_has_ns=0
+ if [ -d "/proc/$$/ns" ]; then
+diff --git a/tests/regression/kernel/test_ns_contexts_change b/tests/regression/kernel/test_ns_contexts_change
+index 42a61276b..3f5e4eeab 100755
+--- a/tests/regression/kernel/test_ns_contexts_change
++++ b/tests/regression/kernel/test_ns_contexts_change
+@@ -162,14 +162,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-
+-isroot=0
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0
+-
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0
+ 
+ system_has_ns=0
+ if [ -d "/proc/$$/ns" ]; then
+diff --git a/tests/regression/kernel/test_rotation_destroy_flush b/tests/regression/kernel/test_rotation_destroy_flush
+index cb773d7df..0af514b49 100755
+--- a/tests/regression/kernel/test_rotation_destroy_flush
++++ b/tests/regression/kernel/test_rotation_destroy_flush
+@@ -120,13 +120,7 @@ TESTS=(
+ TEST_COUNT=${#TESTS[@]}
+ i=0
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	trap signal_cleanup SIGTERM SIGINT
+diff --git a/tests/regression/kernel/test_select_poll_epoll b/tests/regression/kernel/test_select_poll_epoll
+index d8245a0e7..20f0ef0ae 100755
+--- a/tests/regression/kernel/test_select_poll_epoll
++++ b/tests/regression/kernel/test_select_poll_epoll
+@@ -374,13 +374,7 @@ if test $? != 0; then
+ 	exit 0
+ fi
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 
+diff --git a/tests/regression/kernel/test_syscall b/tests/regression/kernel/test_syscall
+index 401a18a8d..219d94703 100755
+--- a/tests/regression/kernel/test_syscall
++++ b/tests/regression/kernel/test_syscall
+@@ -664,13 +664,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	start_lttng_sessiond
+diff --git a/tests/regression/kernel/test_userspace_probe b/tests/regression/kernel/test_userspace_probe
+index 1091ee65e..5d984d666 100755
+--- a/tests/regression/kernel/test_userspace_probe
++++ b/tests/regression/kernel/test_userspace_probe
+@@ -815,13 +815,7 @@ fi
+ plan_tests $NUM_TESTS
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	start_lttng_sessiond
+diff --git a/tests/regression/tools/clear/test_kernel b/tests/regression/tools/clear/test_kernel
+index 06fb1c368..48250a742 100755
+--- a/tests/regression/tools/clear/test_kernel
++++ b/tests/regression/tools/clear/test_kernel
+@@ -536,12 +536,6 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+ streaming_tests=(test_kernel_streaming
+ 	test_kernel_streaming_rotate_clear
+ 	test_kernel_streaming_clear_rotate
+@@ -563,7 +557,7 @@ snapshot_tests=(test_kernel_streaming_snapshot
+ 	test_kernel_local_snapshot
+ )
+ 
+-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping kernel streaming tests." ||
+ {
+ 	trap signal_cleanup SIGTERM SIGINT
+ 
+diff --git a/tests/regression/tools/filtering/test_invalid_filter b/tests/regression/tools/filtering/test_invalid_filter
+index 7d9e524d9..8435e5546 100755
+--- a/tests/regression/tools/filtering/test_invalid_filter
++++ b/tests/regression/tools/filtering/test_invalid_filter
+@@ -168,13 +168,7 @@ done
+ 
+ test_bytecode_limit -u
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel invalid filter tests." $NUM_KERNEL_TESTS ||
++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel invalid filter tests." ||
+ {
+ 	diag "Test kernel filters"
+ 	i=0
+diff --git a/tests/regression/tools/filtering/test_unsupported_op b/tests/regression/tools/filtering/test_unsupported_op
+index 299247a3c..91eb86d21 100755
+--- a/tests/regression/tools/filtering/test_unsupported_op
++++ b/tests/regression/tools/filtering/test_unsupported_op
+@@ -103,13 +103,7 @@ while [ "$i" -lt "$OP_COUNT" ]; do
+ 	let "i++"
+ done
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel unsupported filter operations tests." $NUM_KERNEL_TESTS ||
++check_skip_kernel_test $NUM_KERNEL_TESTS "Skipping kernel unsupported filter operations tests." ||
+ {
+ 	diag "Test kernel unsupported filter operations"
+ 
+diff --git a/tests/regression/tools/filtering/test_valid_filter b/tests/regression/tools/filtering/test_valid_filter
+index e76ffa25f..1ba7c79bb 100755
+--- a/tests/regression/tools/filtering/test_valid_filter
++++ b/tests/regression/tools/filtering/test_valid_filter
+@@ -1452,13 +1452,7 @@ KERNEL_FILTERS=(
+ 
+ IFS=$OLDIFS
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel valid filter tests." $NUM_KERNEL_TESTS ||
++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel valid filter tests." ||
+ {
+ 	diag "Test kernel valid filters"
+ 
+diff --git a/tests/regression/tools/health/test_health.sh b/tests/regression/tools/health/test_health.sh
+index b3d6419d2..68716e6b9 100644
+--- a/tests/regression/tools/health/test_health.sh
++++ b/tests/regression/tools/health/test_health.sh
+@@ -82,7 +82,7 @@ function test_health
+ 		diag "With UST consumer daemons"
+ 		enable_ust_lttng_event_ok $SESSION_NAME $UST_EVENT_NAME $CHANNEL_NAME
+ 
+-		skip $isroot "Root access is needed. Skipping kernel consumer health check test." "1" ||
++		check_skip_kernel_test "1" "Skipping kernel consumer health check test." ||
+ 		{
+ 			diag "With kernel consumer daemon"
+ 			lttng_enable_kernel_event $SESSION_NAME $KERNEL_EVENT_NAME $CHANNEL_NAME
+@@ -113,7 +113,7 @@ function test_health
+ 
+ 
+ 	if [ ${test_needs_root} -eq 1 ]; then
+-		skip ${isroot} "Root access needed for test \"${test_thread_name}\"." "1" ||
++		check_skip_kernel_test "1" "Skipping \"${test_thread_name}\"." ||
+ 		{
+ 			report_errors "${test_thread_error_string}" "${test_relayd}"
+ 		}
+@@ -276,12 +276,6 @@ STDERR_PATH=$(mktemp --tmpdir tmp.test_health_stderr_path.XXXXXX)
+ TRACE_PATH=$(mktemp --tmpdir -d tmp.test_health_trace_path.XXXXXX)
+ HEALTH_PATH=$(mktemp --tmpdir -d tmp.test_health_trace_path.XXXXXX)
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+ THREAD_COUNT=${#THREAD[@]}
+ i=0
+ while [ "$i" -lt "$THREAD_COUNT" ]; do
+diff --git a/tests/regression/tools/health/test_thread_ok b/tests/regression/tools/health/test_thread_ok
+index e84adb611..e5e23543f 100755
+--- a/tests/regression/tools/health/test_thread_ok
++++ b/tests/regression/tools/health/test_thread_ok
+@@ -67,7 +67,7 @@ function test_thread_ok
+ 	$CURDIR/$HEALTH_CHECK_BIN > ${STDOUT_PATH} 2> ${STDERR_PATH}
+ 	report_errors
+ 
+-	skip $isroot "Root access is needed. Skipping kernel consumer health check test." "5" ||
++	check_skip_kernel_test "5" "Skipping kernel consumer health check test." ||
+ 	{
+ 		diag "With kernel consumer daemon"
+ 		create_lttng_session_no_output $SESSION_NAME
+@@ -115,13 +115,6 @@ STDERR_PATH=$(mktemp --tmpdir tmp.test_thread_ok_stderr_path.XXXXXX)
+ TRACE_PATH=$(mktemp --tmpdir -d tmp.test_thread_ok_trace_path.XXXXXX)
+ HEALTH_PATH=$(mktemp --tmpdir -d tmp.test_thread_ok_trace_path.XXXXXX)
+ 
+-# The manage kernel thread is only spawned if we are root
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+ test_thread_ok
+ 
+ rm -rf ${HEALTH_PATH}
+diff --git a/tests/regression/tools/live/test_kernel b/tests/regression/tools/live/test_kernel
+index b622b5214..fdaa09f0d 100755
+--- a/tests/regression/tools/live/test_kernel
++++ b/tests/regression/tools/live/test_kernel
+@@ -39,13 +39,11 @@ function clean_live_tracing()
+ 	rm -rf $TRACE_PATH
+ }
+ 
+-# Need root access for kernel tracing.
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	plan_skip_all "Root access is needed. Skipping all tests."
++check_skip_kernel_test &&
++{
++	plan_skip_all "Skipping all tests."
+ 	exit 0
+-fi
++}
+ 
+ modprobe lttng-test
+ 
+diff --git a/tests/regression/tools/live/test_lttng_kernel b/tests/regression/tools/live/test_lttng_kernel
+index a23d9373a..1b933648f 100755
+--- a/tests/regression/tools/live/test_lttng_kernel
++++ b/tests/regression/tools/live/test_lttng_kernel
+@@ -45,13 +45,7 @@ function clean_live_tracing()
+ }
+ 
+ # Need root access for kernel tracing.
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	modprobe lttng-test
+ 
+diff --git a/tests/regression/tools/metadata/test_kernel b/tests/regression/tools/metadata/test_kernel
+index 57cace6ea..26e95d93a 100755
+--- a/tests/regression/tools/metadata/test_kernel
++++ b/tests/regression/tools/metadata/test_kernel
+@@ -91,13 +91,7 @@ plan_tests $NUM_TESTS
+ print_test_banner "$TEST_DESC"
+ 
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel metadata tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping kernel metadata tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	modprobe lttng-test
+diff --git a/tests/regression/tools/notification/test_notification_kernel_buffer_usage b/tests/regression/tools/notification/test_notification_kernel_buffer_usage
+index 76e69a77e..8fdaabb3e 100755
+--- a/tests/regression/tools/notification/test_notification_kernel_buffer_usage
++++ b/tests/regression/tools/notification/test_notification_kernel_buffer_usage
+@@ -60,29 +60,27 @@ function test_buffer_usage_notification
+ 	wait $APP_PID 2> /dev/null
+ }
+ 
+-if [ "$(id -u)" == "0" ]; then
+-
+-	validate_lttng_modules_present
+-
++check_skip_kernel_test &&
++{
++	plan_skip_all "Skipping all tests."
++	rm -rf "$TEST_TMPDIR"
++	exit 0
++}
+ 
+-	modprobe lttng-test
++validate_lttng_modules_present
+ 
+-	# Used on sessiond launch.
+-	LTTNG_SESSIOND_ENV_VARS="LTTNG_TESTPOINT_ENABLE=1 \
+-		CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} \
+-		LD_PRELOAD=${TESTPOINT}"
+-	start_lttng_sessiond_notap
++modprobe lttng-test
+ 
+-	test_buffer_usage_notification
++# Used on sessiond launch.
++LTTNG_SESSIOND_ENV_VARS="LTTNG_TESTPOINT_ENABLE=1 \
++	CONSUMER_PAUSE_PIPE_PATH=${TESTPOINT_PIPE_PATH} \
++	LD_PRELOAD=${TESTPOINT}"
++start_lttng_sessiond_notap
+ 
+-	stop_lttng_sessiond_notap
+-	rmmod lttng-test
++test_buffer_usage_notification
+ 
+-	rm -rf "${consumerd_pipe[@]}" 2> /dev/null
+-else
+-	# Kernel tests are skipped.
+-	plan_tests $NUM_TESTS
+-	skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS
+-fi
++stop_lttng_sessiond_notap
++rmmod lttng-test
+ 
++rm -rf "${consumerd_pipe[@]}" 2> /dev/null
+ rm -rf "$TEST_TMPDIR"
+diff --git a/tests/regression/tools/notification/test_notification_kernel_capture b/tests/regression/tools/notification/test_notification_kernel_capture
+index 88f123d3d..0f8a2bc6f 100755
+--- a/tests/regression/tools/notification/test_notification_kernel_capture
++++ b/tests/regression/tools/notification/test_notification_kernel_capture
+@@ -31,22 +31,21 @@ function test_basic_error_path
+ }
+ 
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	validate_lttng_modules_present
++check_skip_kernel_test &&
++{
++	plan_skip_all "Skipping all tests."
++	exit 0
++}
+ 
+-	modprobe lttng-test
++validate_lttng_modules_present
+ 
+-	start_lttng_sessiond_notap
++modprobe lttng-test
+ 
+-	test_basic_error_path
++start_lttng_sessiond_notap
+ 
+-	stop_lttng_sessiond_notap
+-	rmmod lttng-test
++test_basic_error_path
+ 
+-else
+-	# Kernel tests are skipped.
+-	plan_tests $NUM_TESTS
+-	skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS
+-fi
++stop_lttng_sessiond_notap
++rmmod lttng-test
+ 
+ rm -f "$TESTAPP_STATE_PATH"
+diff --git a/tests/regression/tools/notification/test_notification_kernel_error b/tests/regression/tools/notification/test_notification_kernel_error
+index 80fe6e5b5..b757ec2b4 100755
+--- a/tests/regression/tools/notification/test_notification_kernel_error
++++ b/tests/regression/tools/notification/test_notification_kernel_error
+@@ -30,23 +30,22 @@ function test_basic_error_path
+ 	wait $APP_PID 2> /dev/null
+ }
+ 
++check_skip_kernel_test &&
++{
++	plan_skip_all "Skipping all tests."
++	exit 0
++}
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	validate_lttng_modules_present
++validate_lttng_modules_present
+ 
+-	modprobe lttng-test
++modprobe lttng-test
+ 
+-	start_lttng_sessiond_notap
++start_lttng_sessiond_notap
+ 
+-	test_basic_error_path
++test_basic_error_path
+ 
+-	stop_lttng_sessiond_notap
+-	rmmod lttng-test
++stop_lttng_sessiond_notap
++rmmod lttng-test
+ 
+-else
+-	# Kernel tests are skipped.
+-	plan_tests $NUM_TESTS
+-	skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS
+-fi
+ 
+ rm -f "$TESTAPP_STATE_PATH"
+diff --git a/tests/regression/tools/notification/test_notification_kernel_instrumentation b/tests/regression/tools/notification/test_notification_kernel_instrumentation
+index 90545a541..705f7703d 100755
+--- a/tests/regression/tools/notification/test_notification_kernel_instrumentation
++++ b/tests/regression/tools/notification/test_notification_kernel_instrumentation
+@@ -28,22 +28,21 @@ function test_kernel_instrumentation_notification
+ 	wait $APP_PID 2> /dev/null
+ }
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	validate_lttng_modules_present
++check_skip_kernel_test &&
++{
++	plan_skip_all "Skipping all tests."
++	exit 0
++}
+ 
+-	modprobe lttng-test
++validate_lttng_modules_present
+ 
+-	start_lttng_sessiond_notap
++modprobe lttng-test
+ 
+-	test_kernel_instrumentation_notification
++start_lttng_sessiond_notap
+ 
+-	stop_lttng_sessiond_notap
+-	rmmod lttng-test
++test_kernel_instrumentation_notification
+ 
+-else
+-	# Kernel tests are skipped.
+-	plan_tests $NUM_TESTS
+-	skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS
+-fi
++stop_lttng_sessiond_notap
++rmmod lttng-test
+ 
+ rm -f "$TESTAPP_STATE_PATH"
+diff --git a/tests/regression/tools/notification/test_notification_kernel_syscall b/tests/regression/tools/notification/test_notification_kernel_syscall
+index d273cb55d..7fa235388 100755
+--- a/tests/regression/tools/notification/test_notification_kernel_syscall
++++ b/tests/regression/tools/notification/test_notification_kernel_syscall
+@@ -31,19 +31,18 @@ function test_kernel_syscall_notification
+ 	wait $APP_PID 2> /dev/null
+ }
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	validate_lttng_modules_present
++check_skip_kernel_test &&
++{
++	plan_skip_all "Skipping all tests."
++	exit 0
++}
+ 
+-	start_lttng_sessiond_notap
++validate_lttng_modules_present
+ 
+-	test_kernel_syscall_notification
++start_lttng_sessiond_notap
+ 
+-	stop_lttng_sessiond_notap
++test_kernel_syscall_notification
+ 
+-else
+-	# Kernel tests are skipped.
+-	plan_tests $NUM_TESTS
+-	skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS
+-fi
++stop_lttng_sessiond_notap
+ 
+ rm -f "$TESTAPP_STATE_PATH"
+diff --git a/tests/regression/tools/notification/test_notification_kernel_userspace_probe b/tests/regression/tools/notification/test_notification_kernel_userspace_probe
+index 8ef8d708d..abddd9be7 100755
+--- a/tests/regression/tools/notification/test_notification_kernel_userspace_probe
++++ b/tests/regression/tools/notification/test_notification_kernel_userspace_probe
+@@ -29,18 +29,18 @@ function test_kernel_userspace_probe_notification
+ 	wait $APP_PID 2> /dev/null
+ }
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	validate_lttng_modules_present
++check_skip_kernel_test &&
++{
++	plan_skip_all "Skipping all tests."
++	exit 0
++}
++
++validate_lttng_modules_present
+ 
+-	start_lttng_sessiond_notap
++start_lttng_sessiond_notap
+ 
+-	test_kernel_userspace_probe_notification
++test_kernel_userspace_probe_notification
+ 
+-	stop_lttng_sessiond_notap
+-else
+-	# Kernel tests are skipped.
+-	plan_tests $NUM_TESTS
+-	skip 0 "Root access is needed. Skipping all kernel notification tests." $NUM_TESTS
+-fi
++stop_lttng_sessiond_notap
+ 
+ rm -f "$TESTAPP_STATE_PATH"
+diff --git a/tests/regression/tools/notification/test_notification_multi_app b/tests/regression/tools/notification/test_notification_multi_app
+index d8b639225..61891b56f 100755
+--- a/tests/regression/tools/notification/test_notification_multi_app
++++ b/tests/regression/tools/notification/test_notification_multi_app
+@@ -411,22 +411,18 @@ function test_on_register_evaluation ()
+ 	rm -rf "$output_dir"
+ }
+ 
+-
+ TESTS=(
+ 	test_multi_app_ust
+ 	test_on_register_evaluation_ust
+ )
+ 
+-if [ "$(id -u)" == "0" ]; then
++check_skip_kernel_test "$NUM_TEST_KERNEL" "Skipping kernel multi-app notification tests." || {
+ 	validate_lttng_modules_present
+ 	TESTS+=(
+-	test_multi_app_kernel
+-	test_on_register_evaluation_kernel
+-)
+-else
+-        skip 0 "Root access is needed. Skipping all kernel multi-app notification tests." $NUM_TEST_KERNEL
+-fi
+-
++		test_multi_app_kernel
++		test_on_register_evaluation_kernel
++	)
++}
+ 
+ for fct_test in ${TESTS[@]};
+ do
+diff --git a/tests/regression/tools/notification/test_notification_notifier_discarded_count b/tests/regression/tools/notification/test_notification_notifier_discarded_count
+index c9235393e..a6c31a728 100755
+--- a/tests/regression/tools/notification/test_notification_notifier_discarded_count
++++ b/tests/regression/tools/notification/test_notification_notifier_discarded_count
+@@ -391,7 +391,8 @@ function test_ust_notifier_discarded_regardless_trigger_owner
+ test_ust_notifier_discarded_count
+ test_ust_notifier_discarded_count_max_bucket
+ 
+-if [ "$(id -u)" == "0" ]; then
++check_skip_kernel_test "$KERNEL_NUM_TESTS" "Skipping kernel notification tests." ||
++{
+ 
+ 	validate_lttng_modules_present
+ 
+@@ -413,9 +414,7 @@ if [ "$(id -u)" == "0" ]; then
+ 	modprobe --remove lttng-test
+ 
+ 	rm -rf "${sessiond_pipe[@]}" 2> /dev/null
+-else
+-	# Kernel tests are skipped.
+-	skip 0 "Root access is needed. Skipping all kernel notification tests." $KERNEL_NUM_TESTS
+-fi
++
++}
+ 
+ rm -rf "$TEST_TMPDIR"
+diff --git a/tests/regression/tools/regen-metadata/test_kernel b/tests/regression/tools/regen-metadata/test_kernel
+index 49eea32a7..555a4e2ce 100755
+--- a/tests/regression/tools/regen-metadata/test_kernel
++++ b/tests/regression/tools/regen-metadata/test_kernel
+@@ -99,13 +99,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 
+diff --git a/tests/regression/tools/regen-statedump/test_kernel b/tests/regression/tools/regen-statedump/test_kernel
+index 8a261355d..bbbac3942 100755
+--- a/tests/regression/tools/regen-statedump/test_kernel
++++ b/tests/regression/tools/regen-statedump/test_kernel
+@@ -39,13 +39,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 	start_lttng_sessiond
+diff --git a/tests/regression/tools/rotation/test_kernel b/tests/regression/tools/rotation/test_kernel
+index f5f1f5553..efe3fd359 100755
+--- a/tests/regression/tools/rotation/test_kernel
++++ b/tests/regression/tools/rotation/test_kernel
+@@ -82,13 +82,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 
+diff --git a/tests/regression/tools/snapshots/test_kernel b/tests/regression/tools/snapshots/test_kernel
+index abb243563..d91876867 100755
+--- a/tests/regression/tools/snapshots/test_kernel
++++ b/tests/regression/tools/snapshots/test_kernel
+@@ -217,13 +217,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel snapshot tests" $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 
+ 	validate_lttng_modules_present
+diff --git a/tests/regression/tools/snapshots/test_kernel_streaming b/tests/regression/tools/snapshots/test_kernel_streaming
+index 0c92dc710..dd965afee 100755
+--- a/tests/regression/tools/snapshots/test_kernel_streaming
++++ b/tests/regression/tools/snapshots/test_kernel_streaming
+@@ -145,13 +145,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel streaming tests" $NUM_TESTS ||
++check_skip_kernel_test $NUM_TESTS "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 
+diff --git a/tests/regression/tools/streaming/test_high_throughput_limits b/tests/regression/tools/streaming/test_high_throughput_limits
+index 2b9e3ad39..c55d51098 100755
+--- a/tests/regression/tools/streaming/test_high_throughput_limits
++++ b/tests/regression/tools/streaming/test_high_throughput_limits
+@@ -170,13 +170,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed to set bandwith limits. Skipping all tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 
+ 	# Catch sigint and try to cleanup limits
+diff --git a/tests/regression/tools/streaming/test_kernel b/tests/regression/tools/streaming/test_kernel
+index 33334229f..113eea7bf 100755
+--- a/tests/regression/tools/streaming/test_kernel
++++ b/tests/regression/tools/streaming/test_kernel
+@@ -47,13 +47,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel streaming tests." $NUM_TESTS ||
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
+ {
+ 	validate_lttng_modules_present
+ 
+diff --git a/tests/regression/tools/tracker/test_event_tracker b/tests/regression/tools/tracker/test_event_tracker
+index cc0f698d2..de0c79d36 100755
+--- a/tests/regression/tools/tracker/test_event_tracker
++++ b/tests/regression/tools/tracker/test_event_tracker
+@@ -466,13 +466,7 @@ test_event_track_untrack ust 0 "${EVENT_NAME}" "--pid --all"	# backward compat
+ test_event_tracker ust 1 "${EVENT_NAME}" "--pid --all"	# backward compat
+ test_event_pid_tracker ust 1 "${EVENT_NAME}"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel tracker tests." $NUM_KERNEL_TESTS ||
++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel tracker tests." ||
+ {
+ 	diag "Test kernel tracker"
+ 
+diff --git a/tests/regression/tools/trigger/test_add_trigger_cli b/tests/regression/tools/trigger/test_add_trigger_cli
+index 98ecf6272..d1763aa2e 100755
+--- a/tests/regression/tools/trigger/test_add_trigger_cli
++++ b/tests/regression/tools/trigger/test_add_trigger_cli
+@@ -34,12 +34,6 @@ tmp_stdout=$(mktemp --tmpdir -t test_parse_cli_trigger_stdout.XXXXXX)
+ tmp_stderr=$(mktemp --tmpdir -t test_parse_cli_trigger_stderr.XXXXXX)
+ uprobe_elf_binary="${TESTDIR}/utils/testapp/userspace-probe-elf-binary/.libs/userspace-probe-elf-binary"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	ist_root=1
+-else
+-	ist_root=0
+-fi
+-
+ function test_success ()
+ {
+ 	local test_name="$1"
+@@ -223,7 +217,7 @@ test_success "--exclude-name two" "trigger5" \
+ 	--condition event-rule-matches --type=user --name='jean-*' --exclude-name jean-chretien -x jean-charest \
+ 	--action notify
+ 
+-skip $ist_root "non-root user: skipping kprobe tests" 18 || {
++check_skip_kernel_test 18 "Skipping kprobe tests." || {
+ 	i=0
+ 
+ 	for type in kprobe kernel:kprobe; do
+@@ -262,7 +256,7 @@ skip $ist_root "non-root user: skipping kprobe tests" 18 || {
+ 	done
+ }
+ 
+-skip $ist_root "non-root user: skipping uprobe tests" 6 || {
++check_skip_kernel_test 6 "Skipping uprobe tests." || {
+ 	test_success "--condition event-rule-matches uprobe" "uprobe-trigger-0" \
+ 		--name="uprobe-trigger-0" \
+ 		--condition event-rule-matches --type=kernel:uprobe --location=${uprobe_elf_binary}:test_function --event-name=ma-probe \
+@@ -274,7 +268,7 @@ skip $ist_root "non-root user: skipping uprobe tests" 6 || {
+ 		--action notify
+ }
+ 
+-skip $ist_root "non-root user: skipping syscall tests" 30 || {
++check_skip_kernel_test 30 "Skipping syscall tests." || {
+ 	test_success "--condition event-rule-matches one syscall" "syscall-trigger-0" \
+ 		--name="syscall-trigger-0" \
+ 		--condition event-rule-matches --type=syscall --name=open \
+diff --git a/tests/regression/tools/trigger/test_list_triggers_cli b/tests/regression/tools/trigger/test_list_triggers_cli
+index a04018013..02c3de3e9 100755
+--- a/tests/regression/tools/trigger/test_list_triggers_cli
++++ b/tests/regression/tools/trigger/test_list_triggers_cli
+@@ -36,22 +36,12 @@ uprobe_sdt_binary=$(realpath "${TESTDIR}/utils/testapp/userspace-probe-sdt-binar
+ register_some_triggers_bin=$(realpath "${CURDIR}/utils/register-some-triggers")
+ 
+ uid=$(id --user)
+-gid=$(id --group)
+ 
+-if [ "$uid" == "0" ]; then
+-	ist_root=1
+-	ls "$uprobe_sdt_binary" >/dev/null 2>&1
+-	if test $? == 0; then
+-		hast_sdt_binary=1
+-	else
+-		hast_sdt_binary=0
+-	fi
+-else
+-	ist_root=0
+-	hast_sdt_binary=0
++sdt_binary_present=0
++if [ -f "$uprobe_sdt_binary" ]; then
++	sdt_binary_present=1
+ fi
+ 
+-
+ test_top_level_options ()
+ {
+ 	diag "Listing top level options"
+@@ -2695,10 +2685,12 @@ start_lttng_sessiond_notap
+ 
+ test_top_level_options
+ test_event_rule_matches_tracepoint
+-skip $ist_root "non-root user: skipping kprobe tests" 13 || test_event_rule_matches_probe
+-skip $ist_root "non-root user: skipping uprobe tests" 9 || test_event_rule_matches_userspace_probe_elf
+-skip $(($ist_root && $hast_sdt_binary)) "skipping userspace probe SDT tests" 9 || test_event_rule_matches_userspace_probe_sdt
+-skip $ist_root "non-root user: skipping syscall tests" 17 || test_event_rule_matches_syscall
++check_skip_kernel_test 48 "Skipping kprobe, uprobe, SDT and syscall tests." || {
++	test_event_rule_matches_probe
++	test_event_rule_matches_userspace_probe_elf
++	skip $sdt_binary_present "No SDT binary. Skipping userspace probe SDT tests" 9 || test_event_rule_matches_userspace_probe_sdt
++	test_event_rule_matches_syscall
++}
+ test_session_consumed_size_condition
+ test_buffer_usage_conditions
+ test_session_rotation_conditions
+diff --git a/tests/regression/tools/wildcard/test_event_wildcard b/tests/regression/tools/wildcard/test_event_wildcard
+index f69baffc4..14d9bb88a 100755
+--- a/tests/regression/tools/wildcard/test_event_wildcard
++++ b/tests/regression/tools/wildcard/test_event_wildcard
+@@ -124,13 +124,7 @@ test_event_wildcard ust 1 'tp*tptest'
+ test_event_wildcard ust 1 'tp**tptest'
+ test_event_wildcard ust 1 'tp*test'
+ 
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-else
+-	isroot=0
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all kernel wildcard tests." $NUM_KERNEL_TESTS ||
++check_skip_kernel_test "$NUM_KERNEL_TESTS" "Skipping kernel wildcard tests." ||
+ {
+ 	diag "Test kernel wildcards"
+ 
+diff --git a/tests/regression/tools/working-directory/test_relayd_working_directory b/tests/regression/tools/working-directory/test_relayd_working_directory
+index c7e784cca..6bd1e504a 100755
+--- a/tests/regression/tools/working-directory/test_relayd_working_directory
++++ b/tests/regression/tools/working-directory/test_relayd_working_directory
+@@ -145,9 +145,9 @@ function test_relayd_debug_permission()
+ 	diag "Test lttng-relayd change working directory on non writable directory"
+ 
+ 	if [ "$(id -u)" == "0" ]; then
+-	    is_user=0
++		is_user=0
+ 	else
+-	    is_user=1
++		is_user=1
+ 	fi
+ 
+ 	skip $is_user "Skipping permission debug output test; operation can't fail as root" 6 ||
+diff --git a/tests/regression/ust/namespaces/test_ns_contexts_change b/tests/regression/ust/namespaces/test_ns_contexts_change
+index 8a4b62ce3..622241f7b 100755
+--- a/tests/regression/ust/namespaces/test_ns_contexts_change
++++ b/tests/regression/ust/namespaces/test_ns_contexts_change
+@@ -101,12 +101,7 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-isroot=0
+-if [ "$(id -u)" == "0" ]; then
+-	isroot=1
+-fi
+-
+-skip $isroot "Root access is needed. Skipping all tests." "$NUM_TESTS" && exit 0
++check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." && exit 0
+ 
+ system_has_ns=0
+ if [ -d "/proc/$$/ns" ]; then
+diff --git a/tests/regression/ust/test_event_perf b/tests/regression/ust/test_event_perf
+index 33aab2981..178959a19 100755
+--- a/tests/regression/ust/test_event_perf
++++ b/tests/regression/ust/test_event_perf
+@@ -119,17 +119,11 @@ plan_tests $NUM_TESTS
+ 
+ print_test_banner "$TEST_DESC"
+ 
+-if [ "$(id -u)" == "0" ]; then
+-        isroot=1
+-else
+-        isroot=0
+-fi
+-
+ start_lttng_sessiond
+ 
+ test_parsing_raw
+ 
+-skip $isroot "Root access is needed. Skipping UST perf tests." 8 ||
++check_skip_kernel_test 8 "Skipping UST perf tests." ||
+ {
+ 	test_event_basic
+ }
+diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh
+index faa87e783..da0e0569d 100644
+--- a/tests/utils/utils.sh
++++ b/tests/utils/utils.sh
+@@ -318,6 +318,41 @@ function conf_proc_count()
+ 	echo
+ }
+ 
++# Usage:
++# check_skip_kernel_test [NB_TESTS] [SKIP_MESSAGE]
++# Return 0 if LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set or the current user is not a root user
++# If NB_TESTS is set, call skip() to skip number of tests.
++# If NB_TESTS is empty, just output a reason with diag.
++# An optional message can be added.
++
++function check_skip_kernel_test ()
++{
++	local num_tests="$1"
++	local skip_message="$2"
++
++	# Check for skip test kernel flag
++	if [ "$LTTNG_TOOLS_DISABLE_KERNEL_TESTS" == "1" ]; then
++		if ! test -z "$num_tests"; then
++			skip 0 "LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set.${skip_message+ }${skip_message}" "$num_tests"
++		else
++			diag "LTTNG_TOOLS_DISABLE_KERNEL_TESTS was set.${skip_message+ }${skip_message}"
++		fi
++		return 0
++	fi
++
++	# Check if we are running as root
++	if [ "$(id -u)" != "0" ]; then
++		if ! test -z "$num_tests"; then
++			skip 0 "Root access is needed for kernel testing.${skip_message+ }${skip_message}" "$num_tests"
++		else
++			diag "Root access is needed for kernel testing.${skip_message+ }${skip_message}"
++		fi
++		return 0
++	fi
++
++	return 1
++}
++
+ # Check if base lttng-modules are present.
+ # Bail out on failure
+ function validate_lttng_modules_present ()
+-- 
+2.25.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest b/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
index bf99322..39d93e2 100755
--- a/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools/run-ptest
@@ -1,8 +1,33 @@
 #!/bin/sh
 # Without --ignore-exit, the tap harness causes any FAILs within a
 # test plan to raise ERRORs; this is just noise.
+
+#Detecting whether current system has lttng kernel modules
+LTTNG_KMOD_PATH=/lib/modules/$(uname -r)/kernel/lttng-modules/lttng-tracer.ko
+function validate_lttng_modules_present()
+{
+	# Check for loadable modules.
+	if [ -f "$LTTNG_KMOD_PATH" ]; then
+		return 0
+	fi
+
+	# Check for builtin modules.
+	ls /proc/lttng > /dev/null 2>&1
+	if [ $? -eq 0 ]; then
+		return 0
+	fi
+
+	return 1
+}
+
 export LD_LIBRARY_PATH=FIXMEPTESTPATH/tests/utils/testapp/userspace-probe-elf-binary/.libs
 makeargs="LOG_DRIVER_FLAGS=--ignore-exit top_srcdir=FIXMEPTESTPATH top_builddir=FIXMEPTESTPATH"
+
+#If current system doesn't have lttng kernel modules, disable lttng kernel related tests.
+validate_lttng_modules_present || {
+	makeargs="$makeargs LTTNG_TOOLS_DISABLE_KERNEL_TESTS=1"
+}
+
 make -k -t all >error.log 2>&1
 # Can specify a test e.g.:
 # -C tests/regression/ check TESTS='kernel/test_callstack'
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.11.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.11.bb
index 44415fb..f6abd9e 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.11.bb
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools_2.13.11.bb
@@ -37,6 +37,8 @@
            file://lttng-sessiond.service \
            file://disable-tests.patch \
            file://0001-compat-Define-off64_t-as-off_t-on-linux.patch \
+           file://0001-tests-add-check_skip_kernel_test-to-check-root-user-.patch \
+           file://0001-Fix-rotation-destroy-flush-fix-session-daemon-abort-.patch \
            "
 
 SRC_URI[sha256sum] = "ac5baeef9fa690936b1ca01ecd1742da762c2c08511ff1b4e923938d94d0f979"
diff --git a/poky/meta/recipes-kernel/perf/perf.bb b/poky/meta/recipes-kernel/perf/perf.bb
index 4f26813..6c4ee4a 100644
--- a/poky/meta/recipes-kernel/perf/perf.bb
+++ b/poky/meta/recipes-kernel/perf/perf.bb
@@ -230,14 +230,18 @@
     if [ -e "${S}/tools/perf/Makefile.perf" ]; then
         sed -i -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \
             ${S}/tools/perf/Makefile.perf
+        # Variant with linux-yocto-specific patch
         sed -i -e "s,prefix='\$(DESTDIR_SQ)/usr'$,prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(PYTHON_SITEPACKAGES_DIR)' --root='\$(DESTDIR)',g" \
             ${S}/tools/perf/Makefile.perf
+        # Variant for mainline Linux
+        sed -i -e "s,root='/\$(DESTDIR_SQ)',prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(PYTHON_SITEPACKAGES_DIR)' --root='/\$(DESTDIR_SQ)',g" \
+            ${S}/tools/perf/Makefile.perf
         # backport https://github.com/torvalds/linux/commit/e4ffd066ff440a57097e9140fa9e16ceef905de8
         sed -i -e 's,\($(Q)$(SHELL) .$(arch_errno_tbl).\) $(CC) $(arch_errno_hdr_dir),\1 $(firstword $(CC)) $(arch_errno_hdr_dir),g' \
             ${S}/tools/perf/Makefile.perf
     fi
     sed -i -e "s,--root='/\$(DESTDIR_SQ)',--prefix='\$(DESTDIR_SQ)/usr' --install-lib='\$(DESTDIR)\$(PYTHON_SITEPACKAGES_DIR)',g" \
-        ${S}/tools/perf/Makefile*
+        ${S}/tools/perf/Makefile
 
     if [ -e "${S}/tools/build/Makefile.build" ]; then
         sed -i -e 's,\ .config-detected, $(OUTPUT)/config-detected,g' \
@@ -382,7 +386,7 @@
 RDEPENDS:${PN}-archive =+ "bash"
 RDEPENDS:${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}"
 RDEPENDS:${PN}-perl =+ "bash perl perl-modules"
-RDEPENDS:${PN}-tests =+ "python3 bash"
+RDEPENDS:${PN}-tests =+ "python3 bash perl"
 
 RSUGGESTS:${PN} += "${PN}-archive ${PN}-tests \
                     ${@bb.utils.contains('PACKAGECONFIG', 'perl', '${PN}-perl', '', d)} \
diff --git a/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.22.10.bb
deleted file mode 100644
index 363d126..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.22.10.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "Gstreamer validation tool"
-DESCRIPTION = "A Tool to test GStreamer components"
-HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html"
-SECTION = "multimedia"
-
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://validate/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
-
-#S = "${WORKDIR}/gst-devtools-${PV}"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${PV}.tar.xz \
-           file://0001-connect-has-a-different-signature-on-musl.patch \
-           "
-
-SRC_URI[sha256sum] = "0e1ec0d0b8f2d3d314a397399cd01dfc50c02ac088176996f934758119075ea9"
-
-DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base"
-RRECOMMENDS:${PN} = "git"
-
-FILES:${PN} += "${datadir}/gstreamer-1.0/* ${libdir}/gst-validate-launcher/* ${libdir}/gstreamer-1.0/*"
-
-inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection
-
-# TODO: put this in a gettext.bbclass patch
-def gettext_oemeson(d):
-    if d.getVar('USE_NLS') == 'no':
-        return '-Dnls=disabled'
-    # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
-    if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
-        return '-Dnls=disabled'
-    return '-Dnls=enabled'
-
-# Build GstValidateVideo
-PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Ddebug_viewer=disabled \
-    -Dtests=disabled \
-    -Dvalidate=enabled \
-    ${@gettext_oemeson(d)} \
-"
-
-do_install:append () {
-     for fn in ${bindir}/gst-validate-launcher \
-         ${libdir}/gst-validate-launcher/python/launcher/config.py; do
-             sed -i -e 's,${B},/usr/src/debug/${PN},g' -e 's,${S},/usr/src/debug/${PN},g' ${D}$fn
-     done
-}
-
-GIR_MESON_ENABLE_FLAG = "enabled"
-GIR_MESON_DISABLE_FLAG = "disabled"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.22.11.bb
new file mode 100644
index 0000000..2be4061
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gst-devtools_1.22.11.bb
@@ -0,0 +1,52 @@
+SUMMARY = "Gstreamer validation tool"
+DESCRIPTION = "A Tool to test GStreamer components"
+HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html"
+SECTION = "multimedia"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://validate/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
+
+#S = "${WORKDIR}/gst-devtools-${PV}"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${PV}.tar.xz \
+           file://0001-connect-has-a-different-signature-on-musl.patch \
+           "
+
+SRC_URI[sha256sum] = "07766425ecb5bf857ab5ad3962321c55cd89f9386b720843f9df71c0a455eb9b"
+
+DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base"
+RRECOMMENDS:${PN} = "git"
+
+FILES:${PN} += "${datadir}/gstreamer-1.0/* ${libdir}/gst-validate-launcher/* ${libdir}/gstreamer-1.0/*"
+
+inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection
+
+# TODO: put this in a gettext.bbclass patch
+def gettext_oemeson(d):
+    if d.getVar('USE_NLS') == 'no':
+        return '-Dnls=disabled'
+    # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
+    if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
+        return '-Dnls=disabled'
+    return '-Dnls=enabled'
+
+# Build GstValidateVideo
+PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo"
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Ddebug_viewer=disabled \
+    -Dtests=disabled \
+    -Dvalidate=enabled \
+    ${@gettext_oemeson(d)} \
+"
+
+do_install:append () {
+     for fn in ${bindir}/gst-validate-launcher \
+         ${libdir}/gst-validate-launcher/python/launcher/config.py; do
+             sed -i -e 's,${B},/usr/src/debug/${PN},g' -e 's,${S},/usr/src/debug/${PN},g' ${D}$fn
+     done
+}
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.22.10.bb
deleted file mode 100644
index 818dbf4..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.22.10.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "Libav-based GStreamer 1.x plugin"
-DESCRIPTION = "Contains a GStreamer plugin for using the encoders, decoders, \
-muxers, and demuxers provided by FFmpeg."
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-SECTION = "multimedia"
-
-# ffmpeg has comercial license flags so add it as we need ffmpeg as a dependency
-LICENSE_FLAGS = "commercial"
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \
-                    file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
-                    "
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz"
-SRC_URI[sha256sum] = "d6dda7aa38a44173278de675ccd92acff0abf473f7bc02e7d1cdd4ce0f3b7642"
-
-S = "${WORKDIR}/gst-libav-${PV}"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg"
-
-inherit meson pkgconfig upstream-version-is-even
-
-EXTRA_OEMESON += " \
-    -Dtests=disabled \
-"
-
-FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.22.11.bb
new file mode 100644
index 0000000..f3287ef
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.22.11.bb
@@ -0,0 +1,28 @@
+SUMMARY = "Libav-based GStreamer 1.x plugin"
+DESCRIPTION = "Contains a GStreamer plugin for using the encoders, decoders, \
+muxers, and demuxers provided by FFmpeg."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+SECTION = "multimedia"
+
+# ffmpeg has comercial license flags so add it as we need ffmpeg as a dependency
+LICENSE_FLAGS = "commercial"
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \
+                    file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \
+                    "
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz"
+SRC_URI[sha256sum] = "6b13dcc9332ef27a7c1e7005c0196883874f91622f8aa6e52f218b05b15d2bf5"
+
+S = "${WORKDIR}/gst-libav-${PV}"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg"
+
+inherit meson pkgconfig upstream-version-is-even
+
+EXTRA_OEMESON += " \
+    -Dtests=disabled \
+"
+
+FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.22.10.bb
deleted file mode 100644
index 4cb8393..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.22.10.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-SUMMARY = "OpenMAX IL plugins for GStreamer"
-DESCRIPTION = "Wraps available OpenMAX IL components and makes them available as standard GStreamer elements."
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-SECTION = "multimedia"
-
-LICENSE = "LGPL-2.1-or-later"
-LICENSE_FLAGS = "commercial"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
-                    file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "ce0126f6de908df4fa7b12136d47d6840dd9f7131ae997e55a817d96a2728a41"
-
-S = "${WORKDIR}/gst-omx-${PV}"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/libomxil"
-
-inherit meson pkgconfig upstream-version-is-even
-
-GSTREAMER_1_0_OMX_TARGET ?= "bellagio"
-GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0"
-
-EXTRA_OEMESON += "-Dtarget=${GSTREAMER_1_0_OMX_TARGET}"
-
-python __anonymous () {
-    omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET")
-    if omx_target in ['generic', 'bellagio']:
-        # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,#
-        # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros);
-        # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this
-        d.appendVar("CFLAGS", " -I${S}/omx/openmax")
-    elif omx_target == "rpi":
-        # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific
-        d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH"))
-}
-
-set_omx_core_name() {
-	sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf"
-}
-do_install[postfuncs] += " set_omx_core_name "
-
-FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
-
-VIRTUAL-RUNTIME_libomxil ?= "libomxil"
-RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_libomxil}"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.22.11.bb
new file mode 100644
index 0000000..97348fb
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.22.11.bb
@@ -0,0 +1,47 @@
+SUMMARY = "OpenMAX IL plugins for GStreamer"
+DESCRIPTION = "Wraps available OpenMAX IL components and makes them available as standard GStreamer elements."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+SECTION = "multimedia"
+
+LICENSE = "LGPL-2.1-or-later"
+LICENSE_FLAGS = "commercial"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \
+                    file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "18dfdf5f6b773d67e62a315c6cf6247da320b83603a5819493f53c69ed2eeef6"
+
+S = "${WORKDIR}/gst-omx-${PV}"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/libomxil"
+
+inherit meson pkgconfig upstream-version-is-even
+
+GSTREAMER_1_0_OMX_TARGET ?= "bellagio"
+GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0"
+
+EXTRA_OEMESON += "-Dtarget=${GSTREAMER_1_0_OMX_TARGET}"
+
+python __anonymous () {
+    omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET")
+    if omx_target in ['generic', 'bellagio']:
+        # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,#
+        # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros);
+        # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this
+        d.appendVar("CFLAGS", " -I${S}/omx/openmax")
+    elif omx_target == "rpi":
+        # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific
+        d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH"))
+}
+
+set_omx_core_name() {
+	sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf"
+}
+do_install[postfuncs] += " set_omx_core_name "
+
+FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a"
+
+VIRTUAL-RUNTIME_libomxil ?= "libomxil"
+RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_libomxil}"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.10.bb
deleted file mode 100644
index 70b9850..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.10.bb
+++ /dev/null
@@ -1,165 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-require gstreamer1.0-plugins-license.inc
-
-SUMMARY = "'Bad' GStreamer plugins and helper libraries "
-HOMEPAGE = "https://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \
-           file://0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch \
-           file://0002-avoid-including-sys-poll.h-directly.patch \
-           file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \
-           "
-SRC_URI[sha256sum] = "dabcd60c762165bb043eba753d599212514c94684e4db9a2e25484cb6508ebbf"
-
-S = "${WORKDIR}/gst-plugins-bad-${PV}"
-
-LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS += "gstreamer1.0-plugins-base"
-
-inherit gobject-introspection
-
-PACKAGECONFIG ??= " \
-    ${GSTREAMER_ORC} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan x11', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \
-    bz2 closedcaption curl dash dtls hls openssl sbc smoothstreaming \
-    sndfile ttml uvch264 webp \
-    ${@bb.utils.contains('TUNE_FEATURES', 'mx32', '', 'rsvg', d)} \
-"
-
-PACKAGECONFIG[aom]             = "-Daom=enabled,-Daom=disabled,aom"
-PACKAGECONFIG[assrender]       = "-Dassrender=enabled,-Dassrender=disabled,libass"
-PACKAGECONFIG[avtp]            = "-Davtp=enabled,-Davtp=disabled,libavtp"
-PACKAGECONFIG[bluez]           = "-Dbluez=enabled,-Dbluez=disabled,bluez5"
-PACKAGECONFIG[bz2]             = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
-PACKAGECONFIG[closedcaption]   = "-Dclosedcaption=enabled,-Dclosedcaption=disabled,pango cairo"
-PACKAGECONFIG[curl]            = "-Dcurl=enabled,-Dcurl=disabled,curl"
-PACKAGECONFIG[dash]            = "-Ddash=enabled,-Ddash=disabled,libxml2"
-PACKAGECONFIG[dc1394]          = "-Ddc1394=enabled,-Ddc1394=disabled,libdc1394"
-PACKAGECONFIG[directfb]        = "-Ddirectfb=enabled,-Ddirectfb=disabled,directfb"
-PACKAGECONFIG[dtls]            = "-Ddtls=enabled,-Ddtls=disabled,openssl"
-PACKAGECONFIG[faac]            = "-Dfaac=enabled,-Dfaac=disabled,faac"
-PACKAGECONFIG[faad]            = "-Dfaad=enabled,-Dfaad=disabled,faad2"
-PACKAGECONFIG[fluidsynth]      = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth"
-PACKAGECONFIG[hls]             = "-Dhls=enabled,-Dhls=disabled,"
-# Pick atleast one crypto backend below when enabling hls
-PACKAGECONFIG[nettle]          = "-Dhls-crypto=nettle,,nettle"
-PACKAGECONFIG[openssl]         = "-Dhls-crypto=openssl,,openssl"
-PACKAGECONFIG[gcrypt]          = "-Dhls-crypto=libgcrypt,,libgcrypt"
-# the gl packageconfig enables OpenGL elements that haven't been ported
-# to -base yet. They depend on the gstgl library in -base, so we do
-# not add GL dependencies here, since these are taken care of in -base.
-PACKAGECONFIG[gl]              = "-Dgl=enabled,-Dgl=disabled,"
-PACKAGECONFIG[kms]             = "-Dkms=enabled,-Dkms=disabled,libdrm"
-PACKAGECONFIG[libde265]        = "-Dlibde265=enabled,-Dlibde265=disabled,libde265"
-PACKAGECONFIG[libssh2]         = "-Dcurl-ssh2=enabled,-Dcurl-ssh2=disabled,libssh2"
-PACKAGECONFIG[lcms2]           = "-Dcolormanagement=enabled,-Dcolormanagement=disabled,lcms"
-PACKAGECONFIG[modplug]         = "-Dmodplug=enabled,-Dmodplug=disabled,libmodplug"
-PACKAGECONFIG[msdk]            = "-Dmsdk=enabled -Dmfx_api=oneVPL,-Dmsdk=disabled,onevpl-intel-gpu"
-PACKAGECONFIG[neon]            = "-Dneon=enabled,-Dneon=disabled,neon"
-PACKAGECONFIG[openal]          = "-Dopenal=enabled,-Dopenal=disabled,openal-soft"
-PACKAGECONFIG[opencv]          = "-Dopencv=enabled,-Dopencv=disabled,opencv"
-PACKAGECONFIG[openh264]        = "-Dopenh264=enabled,-Dopenh264=disabled,openh264"
-PACKAGECONFIG[openjpeg]        = "-Dopenjpeg=enabled,-Dopenjpeg=disabled,openjpeg"
-PACKAGECONFIG[openmpt]         = "-Dopenmpt=enabled,-Dopenmpt=disabled,libopenmpt"
-# the opus encoder/decoder elements are now in the -base package,
-# but the opus parser remains in -bad
-PACKAGECONFIG[opusparse]       = "-Dopus=enabled,-Dopus=disabled,libopus"
-PACKAGECONFIG[resindvd]        = "-Dresindvd=enabled,-Dresindvd=disabled,libdvdread libdvdnav"
-PACKAGECONFIG[rsvg]            = "-Drsvg=enabled,-Drsvg=disabled,librsvg"
-PACKAGECONFIG[rtmp]            = "-Drtmp=enabled,-Drtmp=disabled,rtmpdump"
-PACKAGECONFIG[sbc]             = "-Dsbc=enabled,-Dsbc=disabled,sbc"
-PACKAGECONFIG[sctp]            = "-Dsctp=enabled,-Dsctp=disabled"
-PACKAGECONFIG[smoothstreaming] = "-Dsmoothstreaming=enabled,-Dsmoothstreaming=disabled,libxml2"
-PACKAGECONFIG[sndfile]         = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
-PACKAGECONFIG[srt]             = "-Dsrt=enabled,-Dsrt=disabled,srt"
-PACKAGECONFIG[srtp]            = "-Dsrtp=enabled,-Dsrtp=disabled,libsrtp"
-PACKAGECONFIG[tinyalsa]        = "-Dtinyalsa=enabled,-Dtinyalsa=disabled,tinyalsa"
-PACKAGECONFIG[ttml]            = "-Dttml=enabled,-Dttml=disabled,libxml2 pango cairo"
-PACKAGECONFIG[uvch264]         = "-Duvch264=enabled,-Duvch264=disabled,libusb1 libgudev"
-# this enables support for stateless V4L2 mem2mem codecs, which is a newer form of
-# V4L2 codec; the V4L2 code in -base supports the older stateful V4L2 mem2mem codecs
-PACKAGECONFIG[v4l2codecs]      = "-Dv4l2codecs=enabled,-Dv4l2codecs=disabled,libgudev"
-PACKAGECONFIG[va]              = "-Dva=enabled,-Dva=disabled,libva"
-PACKAGECONFIG[voaacenc]        = "-Dvoaacenc=enabled,-Dvoaacenc=disabled,vo-aacenc"
-PACKAGECONFIG[voamrwbenc]      = "-Dvoamrwbenc=enabled,-Dvoamrwbenc=disabled,vo-amrwbenc"
-PACKAGECONFIG[vulkan]          = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-loader shaderc-native"
-PACKAGECONFIG[wayland]         = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols libdrm"
-PACKAGECONFIG[webp]            = "-Dwebp=enabled,-Dwebp=disabled,libwebp"
-PACKAGECONFIG[webrtc]          = "-Dwebrtc=enabled,-Dwebrtc=disabled,libnice"
-PACKAGECONFIG[webrtcdsp]       = "-Dwebrtcdsp=enabled,-Dwebrtcdsp=disabled,webrtc-audio-processing"
-PACKAGECONFIG[zbar]            = "-Dzbar=enabled,-Dzbar=disabled,zbar"
-PACKAGECONFIG[x11]             = "-Dx11=enabled,-Dx11=disabled,libxcb libxkbcommon"
-PACKAGECONFIG[x265]            = "-Dx265=enabled,-Dx265=disabled,x265"
-
-GSTREAMER_GPL = "${@bb.utils.filter('PACKAGECONFIG', 'faad resindvd x265', d)}"
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Daes=enabled \
-    -Dcodecalpha=enabled \
-    -Ddecklink=enabled \
-    -Ddvb=enabled \
-    -Dfbdev=enabled \
-    -Dipcpipeline=enabled \
-    -Dshm=enabled \
-    -Dtranscode=enabled \
-    -Dandroidmedia=disabled \
-    -Dapplemedia=disabled \
-    -Dasio=disabled \
-    -Dbs2b=disabled \
-    -Dchromaprint=disabled \
-    -Dd3dvideosink=disabled \
-    -Dd3d11=disabled \
-    -Ddirectsound=disabled \
-    -Ddts=disabled \
-    -Dfdkaac=disabled \
-    -Dflite=disabled \
-    -Dgme=disabled \
-    -Dgs=disabled \
-    -Dgsm=disabled \
-    -Diqa=disabled \
-    -Dkate=disabled \
-    -Dladspa=disabled \
-    -Dldac=disabled \
-    -Dlv2=disabled \
-    -Dmagicleap=disabled \
-    -Dmediafoundation=disabled \
-    -Dmicrodns=disabled \
-    -Dmpeg2enc=disabled \
-    -Dmplex=disabled \
-    -Dmusepack=disabled \
-    -Dnvcodec=disabled \
-    -Dopenexr=disabled \
-    -Dopenni2=disabled \
-    -Dopenaptx=disabled \
-    -Dopensles=disabled \
-    -Donnx=disabled \
-    -Dqroverlay=disabled \
-    -Dsoundtouch=disabled \
-    -Dspandsp=disabled \
-    -Dsvthevcenc=disabled \
-    -Dteletext=disabled \
-    -Dwasapi=disabled \
-    -Dwasapi2=disabled \
-    -Dwildmidi=disabled \
-    -Dwinks=disabled \
-    -Dwinscreencap=disabled \
-    -Dwpe=disabled \
-    -Dzxing=disabled \
-"
-
-export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}"
-
-ARM_INSTRUCTION_SET:armv4 = "arm"
-ARM_INSTRUCTION_SET:armv5 = "arm"
-
-FILES:${PN}-freeverb += "${datadir}/gstreamer-1.0/presets/GstFreeverb.prs"
-FILES:${PN}-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*"
-FILES:${PN}-transcode += "${datadir}/gstreamer-1.0/encoding-profiles"
-FILES:${PN}-voamrwbenc += "${datadir}/gstreamer-1.0/presets/GstVoAmrwbEnc.prs"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.11.bb
new file mode 100644
index 0000000..523ee7a
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.22.11.bb
@@ -0,0 +1,165 @@
+require gstreamer1.0-plugins-common.inc
+require gstreamer1.0-plugins-license.inc
+
+SUMMARY = "'Bad' GStreamer plugins and helper libraries "
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \
+           file://0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch \
+           file://0002-avoid-including-sys-poll.h-directly.patch \
+           file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \
+           "
+SRC_URI[sha256sum] = "808d3b33fc4c71aeb2561c364a87c2e8a3e2343319a83244c8391be4b09499c8"
+
+S = "${WORKDIR}/gst-plugins-bad-${PV}"
+
+LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS += "gstreamer1.0-plugins-base"
+
+inherit gobject-introspection
+
+PACKAGECONFIG ??= " \
+    ${GSTREAMER_ORC} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan x11', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \
+    bz2 closedcaption curl dash dtls hls openssl sbc smoothstreaming \
+    sndfile ttml uvch264 webp \
+    ${@bb.utils.contains('TUNE_FEATURES', 'mx32', '', 'rsvg', d)} \
+"
+
+PACKAGECONFIG[aom]             = "-Daom=enabled,-Daom=disabled,aom"
+PACKAGECONFIG[assrender]       = "-Dassrender=enabled,-Dassrender=disabled,libass"
+PACKAGECONFIG[avtp]            = "-Davtp=enabled,-Davtp=disabled,libavtp"
+PACKAGECONFIG[bluez]           = "-Dbluez=enabled,-Dbluez=disabled,bluez5"
+PACKAGECONFIG[bz2]             = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
+PACKAGECONFIG[closedcaption]   = "-Dclosedcaption=enabled,-Dclosedcaption=disabled,pango cairo"
+PACKAGECONFIG[curl]            = "-Dcurl=enabled,-Dcurl=disabled,curl"
+PACKAGECONFIG[dash]            = "-Ddash=enabled,-Ddash=disabled,libxml2"
+PACKAGECONFIG[dc1394]          = "-Ddc1394=enabled,-Ddc1394=disabled,libdc1394"
+PACKAGECONFIG[directfb]        = "-Ddirectfb=enabled,-Ddirectfb=disabled,directfb"
+PACKAGECONFIG[dtls]            = "-Ddtls=enabled,-Ddtls=disabled,openssl"
+PACKAGECONFIG[faac]            = "-Dfaac=enabled,-Dfaac=disabled,faac"
+PACKAGECONFIG[faad]            = "-Dfaad=enabled,-Dfaad=disabled,faad2"
+PACKAGECONFIG[fluidsynth]      = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth"
+PACKAGECONFIG[hls]             = "-Dhls=enabled,-Dhls=disabled,"
+# Pick atleast one crypto backend below when enabling hls
+PACKAGECONFIG[nettle]          = "-Dhls-crypto=nettle,,nettle"
+PACKAGECONFIG[openssl]         = "-Dhls-crypto=openssl,,openssl"
+PACKAGECONFIG[gcrypt]          = "-Dhls-crypto=libgcrypt,,libgcrypt"
+# the gl packageconfig enables OpenGL elements that haven't been ported
+# to -base yet. They depend on the gstgl library in -base, so we do
+# not add GL dependencies here, since these are taken care of in -base.
+PACKAGECONFIG[gl]              = "-Dgl=enabled,-Dgl=disabled,"
+PACKAGECONFIG[kms]             = "-Dkms=enabled,-Dkms=disabled,libdrm"
+PACKAGECONFIG[libde265]        = "-Dlibde265=enabled,-Dlibde265=disabled,libde265"
+PACKAGECONFIG[libssh2]         = "-Dcurl-ssh2=enabled,-Dcurl-ssh2=disabled,libssh2"
+PACKAGECONFIG[lcms2]           = "-Dcolormanagement=enabled,-Dcolormanagement=disabled,lcms"
+PACKAGECONFIG[modplug]         = "-Dmodplug=enabled,-Dmodplug=disabled,libmodplug"
+PACKAGECONFIG[msdk]            = "-Dmsdk=enabled -Dmfx_api=oneVPL,-Dmsdk=disabled,onevpl-intel-gpu"
+PACKAGECONFIG[neon]            = "-Dneon=enabled,-Dneon=disabled,neon"
+PACKAGECONFIG[openal]          = "-Dopenal=enabled,-Dopenal=disabled,openal-soft"
+PACKAGECONFIG[opencv]          = "-Dopencv=enabled,-Dopencv=disabled,opencv"
+PACKAGECONFIG[openh264]        = "-Dopenh264=enabled,-Dopenh264=disabled,openh264"
+PACKAGECONFIG[openjpeg]        = "-Dopenjpeg=enabled,-Dopenjpeg=disabled,openjpeg"
+PACKAGECONFIG[openmpt]         = "-Dopenmpt=enabled,-Dopenmpt=disabled,libopenmpt"
+# the opus encoder/decoder elements are now in the -base package,
+# but the opus parser remains in -bad
+PACKAGECONFIG[opusparse]       = "-Dopus=enabled,-Dopus=disabled,libopus"
+PACKAGECONFIG[resindvd]        = "-Dresindvd=enabled,-Dresindvd=disabled,libdvdread libdvdnav"
+PACKAGECONFIG[rsvg]            = "-Drsvg=enabled,-Drsvg=disabled,librsvg"
+PACKAGECONFIG[rtmp]            = "-Drtmp=enabled,-Drtmp=disabled,rtmpdump"
+PACKAGECONFIG[sbc]             = "-Dsbc=enabled,-Dsbc=disabled,sbc"
+PACKAGECONFIG[sctp]            = "-Dsctp=enabled,-Dsctp=disabled"
+PACKAGECONFIG[smoothstreaming] = "-Dsmoothstreaming=enabled,-Dsmoothstreaming=disabled,libxml2"
+PACKAGECONFIG[sndfile]         = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
+PACKAGECONFIG[srt]             = "-Dsrt=enabled,-Dsrt=disabled,srt"
+PACKAGECONFIG[srtp]            = "-Dsrtp=enabled,-Dsrtp=disabled,libsrtp"
+PACKAGECONFIG[tinyalsa]        = "-Dtinyalsa=enabled,-Dtinyalsa=disabled,tinyalsa"
+PACKAGECONFIG[ttml]            = "-Dttml=enabled,-Dttml=disabled,libxml2 pango cairo"
+PACKAGECONFIG[uvch264]         = "-Duvch264=enabled,-Duvch264=disabled,libusb1 libgudev"
+# this enables support for stateless V4L2 mem2mem codecs, which is a newer form of
+# V4L2 codec; the V4L2 code in -base supports the older stateful V4L2 mem2mem codecs
+PACKAGECONFIG[v4l2codecs]      = "-Dv4l2codecs=enabled,-Dv4l2codecs=disabled,libgudev"
+PACKAGECONFIG[va]              = "-Dva=enabled,-Dva=disabled,libva"
+PACKAGECONFIG[voaacenc]        = "-Dvoaacenc=enabled,-Dvoaacenc=disabled,vo-aacenc"
+PACKAGECONFIG[voamrwbenc]      = "-Dvoamrwbenc=enabled,-Dvoamrwbenc=disabled,vo-amrwbenc"
+PACKAGECONFIG[vulkan]          = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-loader shaderc-native"
+PACKAGECONFIG[wayland]         = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols libdrm"
+PACKAGECONFIG[webp]            = "-Dwebp=enabled,-Dwebp=disabled,libwebp"
+PACKAGECONFIG[webrtc]          = "-Dwebrtc=enabled,-Dwebrtc=disabled,libnice"
+PACKAGECONFIG[webrtcdsp]       = "-Dwebrtcdsp=enabled,-Dwebrtcdsp=disabled,webrtc-audio-processing"
+PACKAGECONFIG[zbar]            = "-Dzbar=enabled,-Dzbar=disabled,zbar"
+PACKAGECONFIG[x11]             = "-Dx11=enabled,-Dx11=disabled,libxcb libxkbcommon"
+PACKAGECONFIG[x265]            = "-Dx265=enabled,-Dx265=disabled,x265"
+
+GSTREAMER_GPL = "${@bb.utils.filter('PACKAGECONFIG', 'faad resindvd x265', d)}"
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Daes=enabled \
+    -Dcodecalpha=enabled \
+    -Ddecklink=enabled \
+    -Ddvb=enabled \
+    -Dfbdev=enabled \
+    -Dipcpipeline=enabled \
+    -Dshm=enabled \
+    -Dtranscode=enabled \
+    -Dandroidmedia=disabled \
+    -Dapplemedia=disabled \
+    -Dasio=disabled \
+    -Dbs2b=disabled \
+    -Dchromaprint=disabled \
+    -Dd3dvideosink=disabled \
+    -Dd3d11=disabled \
+    -Ddirectsound=disabled \
+    -Ddts=disabled \
+    -Dfdkaac=disabled \
+    -Dflite=disabled \
+    -Dgme=disabled \
+    -Dgs=disabled \
+    -Dgsm=disabled \
+    -Diqa=disabled \
+    -Dkate=disabled \
+    -Dladspa=disabled \
+    -Dldac=disabled \
+    -Dlv2=disabled \
+    -Dmagicleap=disabled \
+    -Dmediafoundation=disabled \
+    -Dmicrodns=disabled \
+    -Dmpeg2enc=disabled \
+    -Dmplex=disabled \
+    -Dmusepack=disabled \
+    -Dnvcodec=disabled \
+    -Dopenexr=disabled \
+    -Dopenni2=disabled \
+    -Dopenaptx=disabled \
+    -Dopensles=disabled \
+    -Donnx=disabled \
+    -Dqroverlay=disabled \
+    -Dsoundtouch=disabled \
+    -Dspandsp=disabled \
+    -Dsvthevcenc=disabled \
+    -Dteletext=disabled \
+    -Dwasapi=disabled \
+    -Dwasapi2=disabled \
+    -Dwildmidi=disabled \
+    -Dwinks=disabled \
+    -Dwinscreencap=disabled \
+    -Dwpe=disabled \
+    -Dzxing=disabled \
+"
+
+export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}"
+
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+
+FILES:${PN}-freeverb += "${datadir}/gstreamer-1.0/presets/GstFreeverb.prs"
+FILES:${PN}-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*"
+FILES:${PN}-transcode += "${datadir}/gstreamer-1.0/encoding-profiles"
+FILES:${PN}-voamrwbenc += "${datadir}/gstreamer-1.0/presets/GstVoAmrwbEnc.prs"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch
index c922aad..2adeae9 100644
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch
@@ -6,7 +6,7 @@
 some parser will pass in the original ssa text line which starts with "Dialog:"
 and there's are maybe multiple Dialog lines in one input buffer.
 
-Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747496]
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/178]
 
 Signed-off-by: Mingke Wang <mingke.wang@freescale.com>
 
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.10.bb
deleted file mode 100644
index d4b69b1..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.10.bb
+++ /dev/null
@@ -1,96 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-SUMMARY = "'Base' GStreamer plugins and helper libraries"
-HOMEPAGE = "https://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues"
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \
-           file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \
-           file://0003-viv-fb-Make-sure-config.h-is-included.patch \
-           file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \
-           "
-SRC_URI[sha256sum] = "843a3a2da28e1ee6aeea56dd2be9bffcc3b4bbcd0f974eba4abfc3aa31f0399c"
-
-S = "${WORKDIR}/gst-plugins-base-${PV}"
-
-DEPENDS += "iso-codes util-linux zlib"
-
-inherit gobject-introspection
-
-# opengl packageconfig factored out to make it easy for distros
-# and BSP layers to choose OpenGL APIs/platforms/window systems
-PACKAGECONFIG_X11 = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'opengl glx', '', d)}"
-PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl ${PACKAGECONFIG_X11}', '', d)}"
-
-PACKAGECONFIG ??= " \
-    ${GSTREAMER_ORC} \
-    ${PACKAGECONFIG_GL} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
-    jpeg ogg pango png theora vorbis \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
-"
-
-OPENGL_APIS = 'opengl gles2'
-OPENGL_PLATFORMS = 'egl glx'
-
-X11DEPENDS = "virtual/libx11 libsm libxrender libxv"
-X11ENABLEOPTS = "-Dx11=enabled -Dxvideo=enabled -Dxshm=enabled"
-X11DISABLEOPTS = "-Dx11=disabled -Dxvideo=disabled -Dxshm=disabled"
-
-PACKAGECONFIG[alsa]         = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib"
-PACKAGECONFIG[cdparanoia]   = "-Dcdparanoia=enabled,-Dcdparanoia=disabled,cdparanoia"
-PACKAGECONFIG[graphene]     = "-Dgl-graphene=enabled,-Dgl-graphene=disabled,graphene"
-PACKAGECONFIG[jpeg]         = "-Dgl-jpeg=enabled,-Dgl-jpeg=disabled,jpeg"
-PACKAGECONFIG[ogg]          = "-Dogg=enabled,-Dogg=disabled,libogg"
-PACKAGECONFIG[opus]         = "-Dopus=enabled,-Dopus=disabled,libopus"
-PACKAGECONFIG[pango]        = "-Dpango=enabled,-Dpango=disabled,pango"
-PACKAGECONFIG[png]          = "-Dgl-png=enabled,-Dgl-png=disabled,libpng"
-# This enables Qt5 QML examples in -base. The Qt5 GStreamer
-# qmlglsink and qmlglsrc plugins still exist in -good.
-PACKAGECONFIG[qt5]          = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native"
-PACKAGECONFIG[theora]       = "-Dtheora=enabled,-Dtheora=disabled,libtheora"
-PACKAGECONFIG[tremor]       = "-Dtremor=enabled,-Dtremor=disabled,tremor"
-PACKAGECONFIG[visual]       = "-Dlibvisual=enabled,-Dlibvisual=disabled,libvisual"
-PACKAGECONFIG[vorbis]       = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis"
-PACKAGECONFIG[x11]          = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
-
-# OpenGL API packageconfigs
-PACKAGECONFIG[opengl]       = ",,virtual/libgl libglu"
-PACKAGECONFIG[gles2]        = ",,virtual/libgles2"
-
-# OpenGL platform packageconfigs
-PACKAGECONFIG[egl]          = ",,virtual/egl"
-PACKAGECONFIG[glx]          = ",,virtual/libgl"
-
-# OpenGL window systems (except for X11)
-PACKAGECONFIG[gbm]          = ",,virtual/libgbm libgudev libdrm"
-PACKAGECONFIG[wayland]      = ",,wayland-native wayland wayland-protocols libdrm"
-PACKAGECONFIG[dispmanx]     = ",,virtual/libomxil"
-PACKAGECONFIG[viv-fb]       = ",,virtual/libgles2 virtual/libg2d"
-
-OPENGL_WINSYS = "${@bb.utils.filter('PACKAGECONFIG', 'x11 gbm wayland dispmanx egl viv-fb', d)}"
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    ${@get_opengl_cmdline_list('gl_api', d.getVar('OPENGL_APIS'), d)} \
-    ${@get_opengl_cmdline_list('gl_platform', d.getVar('OPENGL_PLATFORMS'), d)} \
-    ${@get_opengl_cmdline_list('gl_winsys', d.getVar('OPENGL_WINSYS'), d)} \
-"
-
-FILES:${PN}-dev += "${libdir}/gstreamer-1.0/include/gst/gl/gstglconfig.h"
-FILES:${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
-
-def get_opengl_cmdline_list(switch_name, options, d):
-    selected_options = []
-    if bb.utils.contains('DISTRO_FEATURES', 'opengl', True, False, d):
-        for option in options.split():
-            if bb.utils.contains('PACKAGECONFIG', option, True, False, d):
-                selected_options += [option]
-    if selected_options:
-        return '-D' + switch_name + '=' + ','.join(selected_options)
-    else:
-        return ''
-
-CVE_PRODUCT += "gst-plugins-base"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.11.bb
new file mode 100644
index 0000000..7aa10eb
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.22.11.bb
@@ -0,0 +1,96 @@
+require gstreamer1.0-plugins-common.inc
+
+SUMMARY = "'Base' GStreamer plugins and helper libraries"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues"
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \
+           file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \
+           file://0003-viv-fb-Make-sure-config.h-is-included.patch \
+           file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \
+           "
+SRC_URI[sha256sum] = "65eaf72296cc5edc985695a4d80affc931e64a79f4879d05615854f7a2cf5bd1"
+
+S = "${WORKDIR}/gst-plugins-base-${PV}"
+
+DEPENDS += "iso-codes util-linux zlib"
+
+inherit gobject-introspection
+
+# opengl packageconfig factored out to make it easy for distros
+# and BSP layers to choose OpenGL APIs/platforms/window systems
+PACKAGECONFIG_X11 = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'opengl glx', '', d)}"
+PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl ${PACKAGECONFIG_X11}', '', d)}"
+
+PACKAGECONFIG ??= " \
+    ${GSTREAMER_ORC} \
+    ${PACKAGECONFIG_GL} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \
+    jpeg ogg pango png theora vorbis \
+    ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \
+"
+
+OPENGL_APIS = 'opengl gles2'
+OPENGL_PLATFORMS = 'egl glx'
+
+X11DEPENDS = "virtual/libx11 libsm libxrender libxv"
+X11ENABLEOPTS = "-Dx11=enabled -Dxvideo=enabled -Dxshm=enabled"
+X11DISABLEOPTS = "-Dx11=disabled -Dxvideo=disabled -Dxshm=disabled"
+
+PACKAGECONFIG[alsa]         = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib"
+PACKAGECONFIG[cdparanoia]   = "-Dcdparanoia=enabled,-Dcdparanoia=disabled,cdparanoia"
+PACKAGECONFIG[graphene]     = "-Dgl-graphene=enabled,-Dgl-graphene=disabled,graphene"
+PACKAGECONFIG[jpeg]         = "-Dgl-jpeg=enabled,-Dgl-jpeg=disabled,jpeg"
+PACKAGECONFIG[ogg]          = "-Dogg=enabled,-Dogg=disabled,libogg"
+PACKAGECONFIG[opus]         = "-Dopus=enabled,-Dopus=disabled,libopus"
+PACKAGECONFIG[pango]        = "-Dpango=enabled,-Dpango=disabled,pango"
+PACKAGECONFIG[png]          = "-Dgl-png=enabled,-Dgl-png=disabled,libpng"
+# This enables Qt5 QML examples in -base. The Qt5 GStreamer
+# qmlglsink and qmlglsrc plugins still exist in -good.
+PACKAGECONFIG[qt5]          = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native"
+PACKAGECONFIG[theora]       = "-Dtheora=enabled,-Dtheora=disabled,libtheora"
+PACKAGECONFIG[tremor]       = "-Dtremor=enabled,-Dtremor=disabled,tremor"
+PACKAGECONFIG[visual]       = "-Dlibvisual=enabled,-Dlibvisual=disabled,libvisual"
+PACKAGECONFIG[vorbis]       = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis"
+PACKAGECONFIG[x11]          = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
+
+# OpenGL API packageconfigs
+PACKAGECONFIG[opengl]       = ",,virtual/libgl libglu"
+PACKAGECONFIG[gles2]        = ",,virtual/libgles2"
+
+# OpenGL platform packageconfigs
+PACKAGECONFIG[egl]          = ",,virtual/egl"
+PACKAGECONFIG[glx]          = ",,virtual/libgl"
+
+# OpenGL window systems (except for X11)
+PACKAGECONFIG[gbm]          = ",,virtual/libgbm libgudev libdrm"
+PACKAGECONFIG[wayland]      = ",,wayland-native wayland wayland-protocols libdrm"
+PACKAGECONFIG[dispmanx]     = ",,virtual/libomxil"
+PACKAGECONFIG[viv-fb]       = ",,virtual/libgles2 virtual/libg2d"
+
+OPENGL_WINSYS = "${@bb.utils.filter('PACKAGECONFIG', 'x11 gbm wayland dispmanx egl viv-fb', d)}"
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    ${@get_opengl_cmdline_list('gl_api', d.getVar('OPENGL_APIS'), d)} \
+    ${@get_opengl_cmdline_list('gl_platform', d.getVar('OPENGL_PLATFORMS'), d)} \
+    ${@get_opengl_cmdline_list('gl_winsys', d.getVar('OPENGL_WINSYS'), d)} \
+"
+
+FILES:${PN}-dev += "${libdir}/gstreamer-1.0/include/gst/gl/gstglconfig.h"
+FILES:${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict"
+
+def get_opengl_cmdline_list(switch_name, options, d):
+    selected_options = []
+    if bb.utils.contains('DISTRO_FEATURES', 'opengl', True, False, d):
+        for option in options.split():
+            if bb.utils.contains('PACKAGECONFIG', option, True, False, d):
+                selected_options += [option]
+    if selected_options:
+        return '-D' + switch_name + '=' + ','.join(selected_options)
+    else:
+        return ''
+
+CVE_PRODUCT += "gst-plugins-base"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.10.bb
deleted file mode 100644
index 9a76aaf..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.10.bb
+++ /dev/null
@@ -1,81 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-
-SUMMARY = "'Good' GStreamer plugins"
-HOMEPAGE = "https://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
-           file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \
-           file://0001-v4l2-Define-ioctl_req_t-for-posix-linux-case.patch"
-
-SRC_URI[sha256sum] = "f748feae922cad62f20102a84ade8f42b78e1e44a34866aa3ea766f9172e1c7f"
-
-S = "${WORKDIR}/gst-plugins-good-${PV}"
-
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-                    file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
-
-DEPENDS += "gstreamer1.0-plugins-base libcap zlib"
-RPROVIDES:${PN}-pulseaudio += "${PN}-pulse"
-RPROVIDES:${PN}-soup += "${PN}-souphttpsrc"
-RDEPENDS:${PN}-soup += "${MLPREFIX}${@bb.utils.contains('PACKAGECONFIG', 'soup2', 'libsoup-2.4', 'libsoup', d)}"
-
-PACKAGECONFIG_SOUP ?= "soup3"
-
-PACKAGECONFIG ??= " \
-    ${GSTREAMER_ORC} \
-    ${PACKAGECONFIG_SOUP} \
-    ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \
-    ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'asm', '', d)} \
-    bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 speex taglib v4l2 \
-"
-
-X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage"
-X11ENABLEOPTS = "-Dximagesrc=enabled -Dximagesrc-xshm=enabled -Dximagesrc-xfixes=enabled -Dximagesrc-xdamage=enabled"
-X11DISABLEOPTS = "-Dximagesrc=disabled -Dximagesrc-xshm=disabled -Dximagesrc-xfixes=disabled -Dximagesrc-xdamage=disabled"
-
-QT5WAYLANDDEPENDS = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "qtwayland", "", d)}"
-
-PACKAGECONFIG[asm]        = "-Dasm=enabled,-Dasm=disabled,nasm-native"
-PACKAGECONFIG[bz2]        = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
-PACKAGECONFIG[cairo]      = "-Dcairo=enabled,-Dcairo=disabled,cairo"
-PACKAGECONFIG[dv1394]     = "-Ddv1394=enabled,-Ddv1394=disabled,libiec61883 libavc1394 libraw1394"
-PACKAGECONFIG[flac]       = "-Dflac=enabled,-Dflac=disabled,flac"
-PACKAGECONFIG[gdk-pixbuf] = "-Dgdk-pixbuf=enabled,-Dgdk-pixbuf=disabled,gdk-pixbuf"
-PACKAGECONFIG[gtk]        = "-Dgtk3=enabled,-Dgtk3=disabled,gtk+3"
-PACKAGECONFIG[gudev]      = "-Dv4l2-gudev=enabled,-Dv4l2-gudev=disabled,libgudev"
-PACKAGECONFIG[jack]       = "-Djack=enabled,-Djack=disabled,jack"
-PACKAGECONFIG[jpeg]       = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
-PACKAGECONFIG[lame]       = "-Dlame=enabled,-Dlame=disabled,lame"
-PACKAGECONFIG[libpng]     = "-Dpng=enabled,-Dpng=disabled,libpng"
-PACKAGECONFIG[libv4l2]    = "-Dv4l2-libv4l2=enabled,-Dv4l2-libv4l2=disabled,v4l-utils"
-PACKAGECONFIG[mpg123]     = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123"
-PACKAGECONFIG[pulseaudio] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio"
-PACKAGECONFIG[qt5]        = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native ${QT5WAYLANDDEPENDS}"
-PACKAGECONFIG[soup2]      = "-Dsoup=enabled,,libsoup-2.4,,,soup3"
-PACKAGECONFIG[soup3]      = "-Dsoup=enabled,,libsoup,,,soup2"
-PACKAGECONFIG[speex]      = "-Dspeex=enabled,-Dspeex=disabled,speex"
-PACKAGECONFIG[rpi]        = "-Drpicamsrc=enabled,-Drpicamsrc=disabled,userland"
-PACKAGECONFIG[taglib]     = "-Dtaglib=enabled,-Dtaglib=disabled,taglib"
-PACKAGECONFIG[v4l2]       = "-Dv4l2=enabled -Dv4l2-probe=true,-Dv4l2=disabled -Dv4l2-probe=false"
-PACKAGECONFIG[vpx]        = "-Dvpx=enabled,-Dvpx=disabled,libvpx"
-PACKAGECONFIG[wavpack]    = "-Dwavpack=enabled,-Dwavpack=disabled,wavpack"
-PACKAGECONFIG[x11]        = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Daalib=disabled \
-    -Ddirectsound=disabled \
-    -Ddv=disabled \
-    -Dlibcaca=disabled \
-    -Doss=enabled \
-    -Doss4=disabled \
-    -Dosxaudio=disabled \
-    -Dosxvideo=disabled \
-    -Dshout2=disabled \
-    -Dtwolame=disabled \
-    -Dwaveform=disabled \
-"
-
-FILES:${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.11.bb
new file mode 100644
index 0000000..edd8609
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.22.11.bb
@@ -0,0 +1,81 @@
+require gstreamer1.0-plugins-common.inc
+
+SUMMARY = "'Good' GStreamer plugins"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \
+           file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \
+           file://0001-v4l2-Define-ioctl_req_t-for-posix-linux-case.patch"
+
+SRC_URI[sha256sum] = "6ddd032381827d31820540735f0004b429436b0bdac19aaeab44fa22faad52e2"
+
+S = "${WORKDIR}/gst-plugins-good-${PV}"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                    file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe"
+
+DEPENDS += "gstreamer1.0-plugins-base libcap zlib"
+RPROVIDES:${PN}-pulseaudio += "${PN}-pulse"
+RPROVIDES:${PN}-soup += "${PN}-souphttpsrc"
+RDEPENDS:${PN}-soup += "${MLPREFIX}${@bb.utils.contains('PACKAGECONFIG', 'soup2', 'libsoup-2.4', 'libsoup', d)}"
+
+PACKAGECONFIG_SOUP ?= "soup3"
+
+PACKAGECONFIG ??= " \
+    ${GSTREAMER_ORC} \
+    ${PACKAGECONFIG_SOUP} \
+    ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \
+    ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'asm', '', d)} \
+    bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 speex taglib v4l2 \
+"
+
+X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage"
+X11ENABLEOPTS = "-Dximagesrc=enabled -Dximagesrc-xshm=enabled -Dximagesrc-xfixes=enabled -Dximagesrc-xdamage=enabled"
+X11DISABLEOPTS = "-Dximagesrc=disabled -Dximagesrc-xshm=disabled -Dximagesrc-xfixes=disabled -Dximagesrc-xdamage=disabled"
+
+QT5WAYLANDDEPENDS = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "qtwayland", "", d)}"
+
+PACKAGECONFIG[asm]        = "-Dasm=enabled,-Dasm=disabled,nasm-native"
+PACKAGECONFIG[bz2]        = "-Dbz2=enabled,-Dbz2=disabled,bzip2"
+PACKAGECONFIG[cairo]      = "-Dcairo=enabled,-Dcairo=disabled,cairo"
+PACKAGECONFIG[dv1394]     = "-Ddv1394=enabled,-Ddv1394=disabled,libiec61883 libavc1394 libraw1394"
+PACKAGECONFIG[flac]       = "-Dflac=enabled,-Dflac=disabled,flac"
+PACKAGECONFIG[gdk-pixbuf] = "-Dgdk-pixbuf=enabled,-Dgdk-pixbuf=disabled,gdk-pixbuf"
+PACKAGECONFIG[gtk]        = "-Dgtk3=enabled,-Dgtk3=disabled,gtk+3"
+PACKAGECONFIG[gudev]      = "-Dv4l2-gudev=enabled,-Dv4l2-gudev=disabled,libgudev"
+PACKAGECONFIG[jack]       = "-Djack=enabled,-Djack=disabled,jack"
+PACKAGECONFIG[jpeg]       = "-Djpeg=enabled,-Djpeg=disabled,jpeg"
+PACKAGECONFIG[lame]       = "-Dlame=enabled,-Dlame=disabled,lame"
+PACKAGECONFIG[libpng]     = "-Dpng=enabled,-Dpng=disabled,libpng"
+PACKAGECONFIG[libv4l2]    = "-Dv4l2-libv4l2=enabled,-Dv4l2-libv4l2=disabled,v4l-utils"
+PACKAGECONFIG[mpg123]     = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123"
+PACKAGECONFIG[pulseaudio] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio"
+PACKAGECONFIG[qt5]        = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native ${QT5WAYLANDDEPENDS}"
+PACKAGECONFIG[soup2]      = "-Dsoup=enabled,,libsoup-2.4,,,soup3"
+PACKAGECONFIG[soup3]      = "-Dsoup=enabled,,libsoup,,,soup2"
+PACKAGECONFIG[speex]      = "-Dspeex=enabled,-Dspeex=disabled,speex"
+PACKAGECONFIG[rpi]        = "-Drpicamsrc=enabled,-Drpicamsrc=disabled,userland"
+PACKAGECONFIG[taglib]     = "-Dtaglib=enabled,-Dtaglib=disabled,taglib"
+PACKAGECONFIG[v4l2]       = "-Dv4l2=enabled -Dv4l2-probe=true,-Dv4l2=disabled -Dv4l2-probe=false"
+PACKAGECONFIG[vpx]        = "-Dvpx=enabled,-Dvpx=disabled,libvpx"
+PACKAGECONFIG[wavpack]    = "-Dwavpack=enabled,-Dwavpack=disabled,wavpack"
+PACKAGECONFIG[x11]        = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}"
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Daalib=disabled \
+    -Ddirectsound=disabled \
+    -Ddv=disabled \
+    -Dlibcaca=disabled \
+    -Doss=enabled \
+    -Doss4=disabled \
+    -Dosxaudio=disabled \
+    -Dosxvideo=disabled \
+    -Dshout2=disabled \
+    -Dtwolame=disabled \
+    -Dwaveform=disabled \
+"
+
+FILES:${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.22.10.bb
deleted file mode 100644
index 7cbbf9f..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.22.10.bb
+++ /dev/null
@@ -1,47 +0,0 @@
-require gstreamer1.0-plugins-common.inc
-require gstreamer1.0-plugins-license.inc
-
-SUMMARY = "'Ugly GStreamer plugins"
-HOMEPAGE = "https://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-                   "
-
-LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
-LICENSE_FLAGS = "commercial"
-
-SRC_URI = " \
-            https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
-            "
-
-SRC_URI[sha256sum] = "cc80a81a22c0b3b31ab7f1b8bf18dda23c72d2791b86cc6264923a68336329ea"
-
-S = "${WORKDIR}/gst-plugins-ugly-${PV}"
-
-DEPENDS += "gstreamer1.0-plugins-base"
-
-GST_PLUGIN_SET_HAS_EXAMPLES = "0"
-
-PACKAGECONFIG ??= " \
-    ${GSTREAMER_ORC} \
-    a52dec mpeg2dec \
-"
-
-PACKAGECONFIG[amrnb]    = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr"
-PACKAGECONFIG[amrwb]    = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr"
-PACKAGECONFIG[a52dec]   = "-Da52dec=enabled,-Da52dec=disabled,liba52"
-PACKAGECONFIG[cdio]     = "-Dcdio=enabled,-Dcdio=disabled,libcdio"
-PACKAGECONFIG[dvdread]  = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread"
-PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec"
-PACKAGECONFIG[x264]     = "-Dx264=enabled,-Dx264=disabled,x264"
-
-GSTREAMER_GPL = "${@bb.utils.filter('PACKAGECONFIG', 'a52dec cdio dvdread mpeg2dec x264', d)}"
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Dsidplay=disabled \
-"
-
-FILES:${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs"
-FILES:${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.22.11.bb
new file mode 100644
index 0000000..61f46fb
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.22.11.bb
@@ -0,0 +1,47 @@
+require gstreamer1.0-plugins-common.inc
+require gstreamer1.0-plugins-license.inc
+
+SUMMARY = "'Ugly GStreamer plugins"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
+                   "
+
+LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
+LICENSE_FLAGS = "commercial"
+
+SRC_URI = " \
+            https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \
+            "
+
+SRC_URI[sha256sum] = "7758b7decfd20c00cae5700822bcbbf03f98c723e33e17634db2e07ca1da60bf"
+
+S = "${WORKDIR}/gst-plugins-ugly-${PV}"
+
+DEPENDS += "gstreamer1.0-plugins-base"
+
+GST_PLUGIN_SET_HAS_EXAMPLES = "0"
+
+PACKAGECONFIG ??= " \
+    ${GSTREAMER_ORC} \
+    a52dec mpeg2dec \
+"
+
+PACKAGECONFIG[amrnb]    = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr"
+PACKAGECONFIG[amrwb]    = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr"
+PACKAGECONFIG[a52dec]   = "-Da52dec=enabled,-Da52dec=disabled,liba52"
+PACKAGECONFIG[cdio]     = "-Dcdio=enabled,-Dcdio=disabled,libcdio"
+PACKAGECONFIG[dvdread]  = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread"
+PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec"
+PACKAGECONFIG[x264]     = "-Dx264=enabled,-Dx264=disabled,x264"
+
+GSTREAMER_GPL = "${@bb.utils.filter('PACKAGECONFIG', 'a52dec cdio dvdread mpeg2dec x264', d)}"
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Dsidplay=disabled \
+"
+
+FILES:${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs"
+FILES:${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.10.bb
deleted file mode 100644
index b829a0f..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.10.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "Python bindings for GStreamer 1.0"
-DESCRIPTION = "GStreamer Python binding overrides (complementing the bindings \
-provided by python-gi) "
-HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-python/"
-SECTION = "multimedia"
-
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "99e37ea9f7163099734f9b0fce361bc67a0e7a65ffba9bc497127506a3fdedb3"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
-RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
-
-PNREAL = "gst-python"
-
-S = "${WORKDIR}/${PNREAL}-${PV}"
-
-EXTRA_OEMESON += "\
-    -Dtests=disabled \
-    -Dplugin=enabled \
-    -Dlibpython-dir=${libdir} \
-"
-
-inherit meson pkgconfig setuptools3-base upstream-version-is-even features_check
-
-FILES:${PN} += "${libdir}/gstreamer-1.0"
-
-REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.11.bb
new file mode 100644
index 0000000..0fbb03f
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.22.11.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Python bindings for GStreamer 1.0"
+DESCRIPTION = "GStreamer Python binding overrides (complementing the bindings \
+provided by python-gi) "
+HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-python/"
+SECTION = "multimedia"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+SRC_URI[sha256sum] = "f7a5450d93fd81bf46060dca7f4a048d095b6717961fec211731a11a994c99a7"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
+RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject"
+
+PNREAL = "gst-python"
+
+S = "${WORKDIR}/${PNREAL}-${PV}"
+
+EXTRA_OEMESON += "\
+    -Dtests=disabled \
+    -Dplugin=enabled \
+    -Dlibpython-dir=${libdir} \
+"
+
+inherit meson pkgconfig setuptools3-base upstream-version-is-even features_check
+
+FILES:${PN} += "${libdir}/gstreamer-1.0"
+
+REQUIRED_DISTRO_FEATURES = "gobject-introspection-data"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.10.bb
deleted file mode 100644
index 0e910e3..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.10.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "A library on top of GStreamer for building an RTSP server"
-HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/"
-SECTION = "multimedia"
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770"
-
-DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base"
-
-PNREAL = "gst-rtsp-server"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "60eb4f80b5a7ca929c21a61d50be9813a3413787959a5875de56a8ad5ca25f35"
-
-S = "${WORKDIR}/${PNREAL}-${PV}"
-
-inherit meson pkgconfig upstream-version-is-even gobject-introspection
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Dexamples=disabled \
-    -Dtests=disabled \
-"
-
-GIR_MESON_ENABLE_FLAG = "enabled"
-GIR_MESON_DISABLE_FLAG = "disabled"
-
-# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well
-require gstreamer1.0-plugins-packaging.inc
-
-CVE_PRODUCT += "gst-rtsp-server"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.11.bb
new file mode 100644
index 0000000..554ed9e
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.22.11.bb
@@ -0,0 +1,31 @@
+SUMMARY = "A library on top of GStreamer for building an RTSP server"
+HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/"
+SECTION = "multimedia"
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770"
+
+DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base"
+
+PNREAL = "gst-rtsp-server"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "ec49d474750a6ff6729c85b448abc607fb6840b21717ad7abc967e2adbf07a24"
+
+S = "${WORKDIR}/${PNREAL}-${PV}"
+
+inherit meson pkgconfig upstream-version-is-even gobject-introspection
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Dexamples=disabled \
+    -Dtests=disabled \
+"
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
+
+# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well
+require gstreamer1.0-plugins-packaging.inc
+
+CVE_PRODUCT += "gst-rtsp-server"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.22.10.bb
deleted file mode 100644
index b52b7aa..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.22.10.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "VA-API support to GStreamer"
-HOMEPAGE = "https://gstreamer.freedesktop.org/"
-DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \
-based plugins for GStreamer and helper libraries: `vaapidecode', \
-`vaapiconvert', and `vaapisink'."
-
-REALPN = "gstreamer-vaapi"
-
-LICENSE = "LGPL-2.1-or-later"
-LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
-
-SRC_URI[sha256sum] = "094ca144aca8f2c554a2517dfdc421fa37c80294c6f12b992c20cbc73aa2c0bd"
-
-S = "${WORKDIR}/${REALPN}-${PV}"
-DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
-
-inherit meson pkgconfig features_check upstream-version-is-even
-
-REQUIRED_DISTRO_FEATURES ?= "opengl"
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Dexamples=disabled \
-    -Dtests=enabled \
-"
-
-PACKAGES =+ "${PN}-tests"
-
-# OpenGL packageconfig factored out to make it easy for distros
-# and BSP layers to pick either glx, egl, or no GL. By default,
-# try detecting X11 first, and if found (with OpenGL), use GLX,
-# otherwise try to check if EGL can be used.
-PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', \
-                        bb.utils.contains('DISTRO_FEATURES',     'opengl', 'egl', \
-                                                                       '', d), d)}"
-
-PACKAGECONFIG ??= "drm encoders \
-                   ${PACKAGECONFIG_GL} \
-                   ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
-
-PACKAGECONFIG[drm] = "-Ddrm=enabled,-Ddrm=disabled,udev libdrm"
-PACKAGECONFIG[egl] = "-Degl=enabled,-Degl=disabled,virtual/egl"
-PACKAGECONFIG[encoders] = "-Dencoders=enabled,-Dencoders=disabled"
-PACKAGECONFIG[glx] = "-Dglx=enabled,-Dglx=disabled,virtual/libgl"
-PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols"
-PACKAGECONFIG[x11] = "-Dx11=enabled,-Dx11=disabled,virtual/libx11 libxrandr libxrender"
-
-FILES:${PN} += "${libdir}/gstreamer-*/*.so"
-FILES:${PN}-dbg += "${libdir}/gstreamer-*/.debug"
-FILES:${PN}-dev += "${libdir}/gstreamer-*/*.a"
-FILES:${PN}-tests = "${bindir}/*"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.22.11.bb
new file mode 100644
index 0000000..87eb848
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.22.11.bb
@@ -0,0 +1,53 @@
+SUMMARY = "VA-API support to GStreamer"
+HOMEPAGE = "https://gstreamer.freedesktop.org/"
+DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \
+based plugins for GStreamer and helper libraries: `vaapidecode', \
+`vaapiconvert', and `vaapisink'."
+
+REALPN = "gstreamer-vaapi"
+
+LICENSE = "LGPL-2.1-or-later"
+LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz"
+
+SRC_URI[sha256sum] = "6eae1360658302b9b512fa46b4d06f5b818dfce5f2f43d7d710ca8142719d8ad"
+
+S = "${WORKDIR}/${REALPN}-${PV}"
+DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad"
+
+inherit meson pkgconfig features_check upstream-version-is-even
+
+REQUIRED_DISTRO_FEATURES ?= "opengl"
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Dexamples=disabled \
+    -Dtests=enabled \
+"
+
+PACKAGES =+ "${PN}-tests"
+
+# OpenGL packageconfig factored out to make it easy for distros
+# and BSP layers to pick either glx, egl, or no GL. By default,
+# try detecting X11 first, and if found (with OpenGL), use GLX,
+# otherwise try to check if EGL can be used.
+PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', \
+                        bb.utils.contains('DISTRO_FEATURES',     'opengl', 'egl', \
+                                                                       '', d), d)}"
+
+PACKAGECONFIG ??= "drm encoders \
+                   ${PACKAGECONFIG_GL} \
+                   ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}"
+
+PACKAGECONFIG[drm] = "-Ddrm=enabled,-Ddrm=disabled,udev libdrm"
+PACKAGECONFIG[egl] = "-Degl=enabled,-Degl=disabled,virtual/egl"
+PACKAGECONFIG[encoders] = "-Dencoders=enabled,-Dencoders=disabled"
+PACKAGECONFIG[glx] = "-Dglx=enabled,-Dglx=disabled,virtual/libgl"
+PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols"
+PACKAGECONFIG[x11] = "-Dx11=enabled,-Dx11=disabled,virtual/libx11 libxrandr libxrender"
+
+FILES:${PN} += "${libdir}/gstreamer-*/*.so"
+FILES:${PN}-dbg += "${libdir}/gstreamer-*/.debug"
+FILES:${PN}-dev += "${libdir}/gstreamer-*/*.a"
+FILES:${PN}-tests = "${bindir}/*"
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest
index 0cfa955..7d03120 100755
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest
@@ -1,2 +1,16 @@
-#!/usr/bin/env sh
+#! /bin/sh
+
+# Multiply all timeouts by ten so they're more likely to work
+# on a loaded system.
+export CK_TIMEOUT_MULTIPLIER=5
+
+# Skip some tests that we know are problematic
+export GST_CHECKS_IGNORE=""
+# gstnetclientclock.c:test_functioning is very sensitive to load
+GST_CHECKS_IGNORE="$GST_CHECKS_IGNORE,test_functioning"
+
+# aggregator.c:test_infinite_seek_50_src_live is known to be flaky
+# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/410
+GST_CHECKS_IGNORE="$GST_CHECKS_IGNORE,test_infinite_seek_50_src_live"
+
 gnome-desktop-testing-runner gstreamer
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/skip-aggregator-test.patch b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/skip-aggregator-test.patch
deleted file mode 100644
index 8133751..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/skip-aggregator-test.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 9b72aa7cdbc2a81cffc6f855933afe90c81046d5 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@arm.com>
-Date: Wed, 28 Feb 2024 12:40:34 +0000
-Subject: [PATCH] Skip aggregator test
-
-This test case is known to be flaky upstream[1] and often fails on the
-autobuilder[2], so skip it until this has been resolved upstream.
-
-[1] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/410
-[2] https://bugzilla.yoctoproject.org/show_bug.cgi?id=15054
-
-Upstream-Status: Inappropriate
-Signed-off-by: Ross Burton <ross.burton@arm.com>
----
- tests/check/libs/aggregator.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/check/libs/aggregator.c b/tests/check/libs/aggregator.c
-index 1f2c5b4..27b3ac7 100644
---- a/tests/check/libs/aggregator.c
-+++ b/tests/check/libs/aggregator.c
-@@ -1475,7 +1475,9 @@ gst_aggregator_suite (void)
-   tcase_add_test (general, test_flushing_seek);
-   tcase_add_test (general, test_infinite_seek);
-   tcase_add_test (general, test_infinite_seek_50_src);
--  tcase_add_test (general, test_infinite_seek_50_src_live);
-+  // This test case is known to be flaky, remove it until resolved:
-+  // https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/410
-+  // tcase_add_test (general, test_infinite_seek_50_src_live);
-   tcase_add_test (general, test_linear_pipeline);
-   tcase_add_test (general, test_two_src_pipeline);
-   tcase_add_test (general, test_timeout_pipeline);
--- 
-2.34.1
-
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.10.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.10.bb
deleted file mode 100644
index c16f0de..0000000
--- a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.10.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-SUMMARY = "GStreamer 1.0 multimedia framework"
-DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
-It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
-HOMEPAGE = "http://gstreamer.freedesktop.org/"
-BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
-SECTION = "multimedia"
-LICENSE = "LGPL-2.1-or-later"
-
-DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native"
-
-inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection ptest-gnome
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \
-                    file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
-
-S = "${WORKDIR}/gstreamer-${PV}"
-
-SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \
-           file://run-ptest \
-           file://0001-tests-respect-the-idententaion-used-in-meson.patch \
-           file://0002-tests-add-support-for-install-the-tests.patch \
-           file://0003-tests-use-a-dictionaries-for-environment.patch \
-           file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \
-           file://skip-aggregator-test.patch \
-           "
-SRC_URI[sha256sum] = "969aaef396f252ce925132a4be2aa004e0320f5c1baf0acaaae09c544a6759f4"
-
-PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
-                   check \
-                   debug \
-                   tools"
-
-PACKAGECONFIG[debug] = "-Dgst_debug=true,-Dgst_debug=false"
-PACKAGECONFIG[tracer-hooks] = "-Dtracer_hooks=true,-Dtracer_hooks=false"
-PACKAGECONFIG[coretracers] = "-Dcoretracers=enabled,-Dcoretracers=disabled"
-PACKAGECONFIG[check] = "-Dcheck=enabled,-Dcheck=disabled"
-PACKAGECONFIG[tests] = "-Dtests=enabled -Dinstalled_tests=true,-Dtests=disabled -Dinstalled_tests=false"
-PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
-PACKAGECONFIG[dw] = "-Dlibdw=enabled,-Dlibdw=disabled,elfutils"
-PACKAGECONFIG[bash-completion] = "-Dbash-completion=enabled,-Dbash-completion=disabled,bash-completion"
-PACKAGECONFIG[tools] = "-Dtools=enabled,-Dtools=disabled"
-PACKAGECONFIG[setcap] = "-Dptp-helper-permissions=capabilities,,libcap libcap-native"
-
-# TODO: put this in a gettext.bbclass patch
-def gettext_oemeson(d):
-    if d.getVar('USE_NLS') == 'no':
-        return '-Dnls=disabled'
-    # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
-    if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
-        return '-Dnls=disabled'
-    return '-Dnls=enabled'
-
-EXTRA_OEMESON += " \
-    -Ddoc=disabled \
-    -Dexamples=disabled \
-    -Ddbghelp=disabled \
-    ${@gettext_oemeson(d)} \
-"
-
-GIR_MESON_ENABLE_FLAG = "enabled"
-GIR_MESON_DISABLE_FLAG = "disabled"
-
-PACKAGES += "${PN}-bash-completion"
-
-# Add the core element plugins to the main package
-FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
-FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include"
-FILES:${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*"
-FILES:${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb"
-
-RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-iso8859-5"
-
-CVE_PRODUCT = "gstreamer"
-
-PTEST_BUILD_HOST_FILES = ""
diff --git a/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.11.bb b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.11.bb
new file mode 100644
index 0000000..8965497
--- /dev/null
+++ b/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.22.11.bb
@@ -0,0 +1,74 @@
+SUMMARY = "GStreamer 1.0 multimedia framework"
+DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \
+It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime."
+HOMEPAGE = "http://gstreamer.freedesktop.org/"
+BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer"
+SECTION = "multimedia"
+LICENSE = "LGPL-2.1-or-later"
+
+DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native"
+
+inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection ptest-gnome
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \
+                    file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
+
+S = "${WORKDIR}/gstreamer-${PV}"
+
+SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \
+           file://run-ptest \
+           file://0001-tests-respect-the-idententaion-used-in-meson.patch \
+           file://0002-tests-add-support-for-install-the-tests.patch \
+           file://0003-tests-use-a-dictionaries-for-environment.patch \
+           file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \
+           "
+SRC_URI[sha256sum] = "3d16259e9dab8b002c57ce208a09b350d8282f5b0197306c0cdba9a0d0799744"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \
+                   check \
+                   debug \
+                   tools"
+
+PACKAGECONFIG[debug] = "-Dgst_debug=true,-Dgst_debug=false"
+PACKAGECONFIG[tracer-hooks] = "-Dtracer_hooks=true,-Dtracer_hooks=false"
+PACKAGECONFIG[coretracers] = "-Dcoretracers=enabled,-Dcoretracers=disabled"
+PACKAGECONFIG[check] = "-Dcheck=enabled,-Dcheck=disabled"
+PACKAGECONFIG[tests] = "-Dtests=enabled -Dinstalled_tests=true,-Dtests=disabled -Dinstalled_tests=false"
+PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
+PACKAGECONFIG[dw] = "-Dlibdw=enabled,-Dlibdw=disabled,elfutils"
+PACKAGECONFIG[bash-completion] = "-Dbash-completion=enabled,-Dbash-completion=disabled,bash-completion"
+PACKAGECONFIG[tools] = "-Dtools=enabled,-Dtools=disabled"
+PACKAGECONFIG[setcap] = "-Dptp-helper-permissions=capabilities,,libcap libcap-native"
+
+# TODO: put this in a gettext.bbclass patch
+def gettext_oemeson(d):
+    if d.getVar('USE_NLS') == 'no':
+        return '-Dnls=disabled'
+    # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set
+    if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'):
+        return '-Dnls=disabled'
+    return '-Dnls=enabled'
+
+EXTRA_OEMESON += " \
+    -Ddoc=disabled \
+    -Dexamples=disabled \
+    -Ddbghelp=disabled \
+    ${@gettext_oemeson(d)} \
+"
+
+GIR_MESON_ENABLE_FLAG = "enabled"
+GIR_MESON_DISABLE_FLAG = "disabled"
+
+PACKAGES += "${PN}-bash-completion"
+
+# Add the core element plugins to the main package
+FILES:${PN} += "${libdir}/gstreamer-1.0/*.so"
+FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include"
+FILES:${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*"
+FILES:${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb"
+
+RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-iso8859-5"
+
+CVE_PRODUCT = "gstreamer"
+
+PTEST_BUILD_HOST_FILES = ""
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0d3344e17d258106617b0e6d783d073b188a2548.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0d3344e17d258106617b0e6d783d073b188a2548.patch
deleted file mode 100644
index a4ef565..0000000
--- a/poky/meta/recipes-sato/webkit/webkitgtk/0d3344e17d258106617b0e6d783d073b188a2548.patch
+++ /dev/null
@@ -1,310 +0,0 @@
-From a180f6821f81c65e320be0cebac72b4dcf86342e Mon Sep 17 00:00:00 2001
-From: Adrian Perez de Castro <aperez@igalia.com>
-Date: Thu, 2 Jun 2022 11:19:06 +0300
-Subject: [PATCH] FELightningNEON.cpp fails to build, NEON fast path seems
- unused https://bugs.webkit.org/show_bug.cgi?id=241182
-
-Reviewed by NOBODY (OOPS!).
-
-Move the NEON fast path for the SVG lighting filter effects into
-FELightingSoftwareApplier, and arrange to actually use them by
-forwarding calls to applyPlatformGeneric() into applyPlatformNeon().
-
-Some changes were needed to adapt platformApplyNeon() to the current
-state of filters after r286140. This was not detected because the code
-bitrotted due to it being guarded with CPU(ARM_TRADITIONAL), which does
-not get used much these days: CPU(ARM_THUMB2) is more common. It should
-be possible to use the NEON fast paths also in Thumb mode, but that is
-left for a follow-up fix.
-
-* Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp:
-(WebCore::FELightingSoftwareApplier::platformApplyNeonWorker):
-(WebCore::FELightingSoftwareApplier::getPowerCoefficients):
-(WebCore::FELighting::platformApplyNeonWorker): Deleted.
-(WebCore::FELighting::getPowerCoefficients): Deleted.
-* Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h:
-(WebCore::FELightingSoftwareApplier::applyPlatformNeon):
-(WebCore::FELighting::platformApplyNeon): Deleted.
-* Source/WebCore/platform/graphics/filters/DistantLightSource.h:
-* Source/WebCore/platform/graphics/filters/FELighting.h:
-* Source/WebCore/platform/graphics/filters/PointLightSource.h:
-* Source/WebCore/platform/graphics/filters/SpotLightSource.h:
-* Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h:
-
-Upstream-Status: Submitted [https://github.com/WebKit/WebKit/pull/1233]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- .../cpu/arm/filters/FELightingNEON.cpp        |  4 +-
- .../graphics/cpu/arm/filters/FELightingNEON.h | 52 +++++++++----------
- .../graphics/filters/DistantLightSource.h     |  4 ++
- .../platform/graphics/filters/FELighting.h    |  7 ---
- .../graphics/filters/PointLightSource.h       |  4 ++
- .../graphics/filters/SpotLightSource.h        |  4 ++
- .../software/FELightingSoftwareApplier.h      | 16 ++++++
- 7 files changed, 56 insertions(+), 35 deletions(-)
-
-diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
-index f6ff8c20..42a97ffc 100644
---- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
-+++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.cpp
-@@ -49,7 +49,7 @@ short* feLightingConstantsForNeon()
-     return s_FELightingConstantsForNeon;
- }
- 
--void FELighting::platformApplyNeonWorker(FELightingPaintingDataForNeon* parameters)
-+void FELightingSoftwareApplier::platformApplyNeonWorker(FELightingPaintingDataForNeon* parameters)
- {
-     neonDrawLighting(parameters);
- }
-@@ -464,7 +464,7 @@ TOSTRING(neonDrawLighting) ":" NL
-     "b .lightStrengthCalculated" NL
- ); // NOLINT
- 
--int FELighting::getPowerCoefficients(float exponent)
-+int FELightingSoftwareApplier::getPowerCoefficients(float exponent)
- {
-     // Calling a powf function from the assembly code would require to save
-     // and reload a lot of NEON registers. Since the base is in range [0..1]
-diff --git a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
-index b17c603d..e4629cda 100644
---- a/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
-+++ b/Source/WebCore/platform/graphics/cpu/arm/filters/FELightingNEON.h
-@@ -24,14 +24,15 @@
-  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-  */
- 
--#ifndef FELightingNEON_h
--#define FELightingNEON_h
-+#pragma once
- 
- #if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
- 
--#include "FELighting.h"
-+#include "FELightingSoftwareApplier.h"
-+#include "ImageBuffer.h"
- #include "PointLightSource.h"
- #include "SpotLightSource.h"
-+#include <wtf/ObjectIdentifier.h>
- #include <wtf/ParallelJobs.h>
- 
- namespace WebCore {
-@@ -93,14 +94,14 @@ extern "C" {
- void neonDrawLighting(FELightingPaintingDataForNeon*);
- }
- 
--inline void FELighting::platformApplyNeon(const LightingData& data, const LightSource::PaintingData& paintingData)
-+inline void FELightingSoftwareApplier::applyPlatformNeon(const FELightingSoftwareApplier::LightingData& data, const LightSource::PaintingData& paintingData)
- {
--    alignas(16) FELightingFloatArgumentsForNeon floatArguments;
--    FELightingPaintingDataForNeon neonData = {
-+    WebCore::FELightingFloatArgumentsForNeon alignas(16) floatArguments;
-+    WebCore::FELightingPaintingDataForNeon neonData = {
-         data.pixels->data(),
-         1,
--        data.widthDecreasedByOne - 1,
--        data.heightDecreasedByOne - 1,
-+        data.width - 2,
-+        data.height - 2,
-         0,
-         0,
-         0,
-@@ -111,23 +112,23 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
-     // Set light source arguments.
-     floatArguments.constOne = 1;
- 
--    auto color = m_lightingColor.toColorTypeLossy<SRGBA<uint8_t>>().resolved();
-+    auto color = data.lightingColor.toColorTypeLossy<SRGBA<uint8_t>>().resolved();
- 
-     floatArguments.colorRed = color.red;
-     floatArguments.colorGreen = color.green;
-     floatArguments.colorBlue = color.blue;
-     floatArguments.padding4 = 0;
- 
--    if (m_lightSource->type() == LS_POINT) {
-+    if (data.lightSource->type() == LS_POINT) {
-         neonData.flags |= FLAG_POINT_LIGHT;
--        PointLightSource& pointLightSource = static_cast<PointLightSource&>(m_lightSource.get());
-+        const auto& pointLightSource = *static_cast<const PointLightSource*>(data.lightSource);
-         floatArguments.lightX = pointLightSource.position().x();
-         floatArguments.lightY = pointLightSource.position().y();
-         floatArguments.lightZ = pointLightSource.position().z();
-         floatArguments.padding2 = 0;
--    } else if (m_lightSource->type() == LS_SPOT) {
-+    } else if (data.lightSource->type() == LS_SPOT) {
-         neonData.flags |= FLAG_SPOT_LIGHT;
--        SpotLightSource& spotLightSource = static_cast<SpotLightSource&>(m_lightSource.get());
-+        const auto& spotLightSource = *static_cast<const SpotLightSource*>(data.lightSource);
-         floatArguments.lightX = spotLightSource.position().x();
-         floatArguments.lightY = spotLightSource.position().y();
-         floatArguments.lightZ = spotLightSource.position().z();
-@@ -145,7 +146,7 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
-         if (spotLightSource.specularExponent() == 1)
-             neonData.flags |= FLAG_CONE_EXPONENT_IS_1;
-     } else {
--        ASSERT(m_lightSource->type() == LS_DISTANT);
-+        ASSERT(data.lightSource->type() == LS_DISTANT);
-         floatArguments.lightX = paintingData.initialLightingData.lightVector.x();
-         floatArguments.lightY = paintingData.initialLightingData.lightVector.y();
-         floatArguments.lightZ = paintingData.initialLightingData.lightVector.z();
-@@ -155,38 +156,39 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
-     // Set lighting arguments.
-     floatArguments.surfaceScale = data.surfaceScale;
-     floatArguments.minusSurfaceScaleDividedByFour = -data.surfaceScale / 4;
--    if (m_lightingType == FELighting::DiffuseLighting)
--        floatArguments.diffuseConstant = m_diffuseConstant;
-+    if (data.filterType == FilterEffect::Type::FEDiffuseLighting)
-+        floatArguments.diffuseConstant = data.diffuseConstant;
-     else {
-         neonData.flags |= FLAG_SPECULAR_LIGHT;
--        floatArguments.diffuseConstant = m_specularConstant;
--        neonData.specularExponent = getPowerCoefficients(m_specularExponent);
--        if (m_specularExponent == 1)
-+        floatArguments.diffuseConstant = data.specularConstant;
-+        neonData.specularExponent = getPowerCoefficients(data.specularExponent);
-+        if (data.specularExponent == 1)
-             neonData.flags |= FLAG_SPECULAR_EXPONENT_IS_1;
-     }
-     if (floatArguments.diffuseConstant == 1)
-         neonData.flags |= FLAG_DIFFUSE_CONST_IS_1;
- 
--    int optimalThreadNumber = ((data.widthDecreasedByOne - 1) * (data.heightDecreasedByOne - 1)) / s_minimalRectDimension;
-+    static constexpr int minimalRectDimension = 100 * 100; // Empirical data limit for parallel jobs
-+    int optimalThreadNumber = ((data.width - 2) * (data.height - 2)) / minimalRectDimension;
-     if (optimalThreadNumber > 1) {
-         // Initialize parallel jobs
--        ParallelJobs<FELightingPaintingDataForNeon> parallelJobs(&WebCore::FELighting::platformApplyNeonWorker, optimalThreadNumber);
-+        ParallelJobs<FELightingPaintingDataForNeon> parallelJobs(&FELightingSoftwareApplier::platformApplyNeonWorker, optimalThreadNumber);
- 
-         // Fill the parameter array
-         int job = parallelJobs.numberOfJobs();
-         if (job > 1) {
-             int yStart = 1;
--            int yStep = (data.heightDecreasedByOne - 1) / job;
-+            int yStep = (data.height - 2) / job;
-             for (--job; job >= 0; --job) {
-                 FELightingPaintingDataForNeon& params = parallelJobs.parameter(job);
-                 params = neonData;
-                 params.yStart = yStart;
--                params.pixels += (yStart - 1) * (data.widthDecreasedByOne + 1) * 4;
-+                params.pixels += (yStart - 1) * data.width * 4;
-                 if (job > 0) {
-                     params.absoluteHeight = yStep;
-                     yStart += yStep;
-                 } else
--                    params.absoluteHeight = data.heightDecreasedByOne - yStart;
-+                    params.absoluteHeight = (data.height - 1) - yStart;
-             }
-             parallelJobs.execute();
-             return;
-@@ -199,5 +201,3 @@ inline void FELighting::platformApplyNeon(const LightingData& data, const LightS
- } // namespace WebCore
- 
- #endif // CPU(ARM_NEON) && COMPILER(GCC_COMPATIBLE)
--
--#endif // FELightingNEON_h
-diff --git a/Source/WebCore/platform/graphics/filters/DistantLightSource.h b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
-index 70f583b3..7d5d27e5 100644
---- a/Source/WebCore/platform/graphics/filters/DistantLightSource.h
-+++ b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
-@@ -26,6 +26,10 @@
- #include <wtf/ArgumentCoder.h>
- #include <wtf/Ref.h>
- 
-+namespace WTF {
-+class TextStream;
-+} // namespace WTF
-+
- namespace WebCore {
- 
- class DistantLightSource : public LightSource {
-diff --git a/Source/WebCore/platform/graphics/filters/FELighting.h b/Source/WebCore/platform/graphics/filters/FELighting.h
-index 179edf6d..694d712d 100644
---- a/Source/WebCore/platform/graphics/filters/FELighting.h
-+++ b/Source/WebCore/platform/graphics/filters/FELighting.h
-@@ -35,8 +35,6 @@
- 
- namespace WebCore {
- 
--struct FELightingPaintingDataForNeon;
--
- class FELighting : public FilterEffect {
- public:
-     bool operator==(const FELighting&) const;
-@@ -68,11 +66,6 @@ protected:
- 
-     std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;
- 
--#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
--    static int getPowerCoefficients(float exponent);
--    inline void platformApplyNeon(const LightingData&, const LightSource::PaintingData&);
--#endif
--
-     Color m_lightingColor;
-     float m_surfaceScale;
-     float m_diffuseConstant;
-diff --git a/Source/WebCore/platform/graphics/filters/PointLightSource.h b/Source/WebCore/platform/graphics/filters/PointLightSource.h
-index a8cfdab8..34f867bb 100644
---- a/Source/WebCore/platform/graphics/filters/PointLightSource.h
-+++ b/Source/WebCore/platform/graphics/filters/PointLightSource.h
-@@ -26,6 +26,10 @@
- #include "LightSource.h"
- #include <wtf/Ref.h>
- 
-+namespace WTF {
-+class TextStream;
-+} // namespace WTF
-+
- namespace WebCore {
- 
- class PointLightSource : public LightSource {
-diff --git a/Source/WebCore/platform/graphics/filters/SpotLightSource.h b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
-index 6404467a..5cac38f2 100644
---- a/Source/WebCore/platform/graphics/filters/SpotLightSource.h
-+++ b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
-@@ -26,6 +26,10 @@
- #include "LightSource.h"
- #include <wtf/Ref.h>
- 
-+namespace WTF {
-+class TextStream;
-+} // namespace WTF
-+
- namespace WebCore {
- 
- class SpotLightSource : public LightSource {
-diff --git a/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h b/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
-index c974d921..e2896660 100644
---- a/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
-+++ b/Source/WebCore/platform/graphics/filters/software/FELightingSoftwareApplier.h
-@@ -36,6 +36,7 @@
- namespace WebCore {
- 
- class FELighting;
-+struct FELightingPaintingDataForNeon;
- 
- class FELightingSoftwareApplier final : public FilterEffectConcreteApplier<FELighting> {
-     WTF_MAKE_FAST_ALLOCATED;
-@@ -132,8 +133,23 @@ private:
- 
-     static void applyPlatformGenericPaint(const LightingData&, const LightSource::PaintingData&, int startY, int endY);
-     static void applyPlatformGenericWorker(ApplyParameters*);
-+
-+#if CPU(ARM_NEON) && CPU(ARM_TRADITIONAL) && COMPILER(GCC_COMPATIBLE)
-+    static int getPowerCoefficients(float exponent);
-+    static void platformApplyNeonWorker(FELightingPaintingDataForNeon*);
-+    inline static void applyPlatformNeon(const LightingData&, const LightSource::PaintingData&);
-+
-+    inline static void applyPlatformGeneric(const LightingData& data, const LightSource::PaintingData& paintingData)
-+    {
-+        applyPlatformNeon(data, paintingData);
-+    }
-+#else
-     static void applyPlatformGeneric(const LightingData&, const LightSource::PaintingData&);
-+#endif
-+
-     static void applyPlatform(const LightingData&);
- };
- 
- } // namespace WebCore
-+
-+#include "FELightingNEON.h"
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/2922af379dc70b4b1a63b01d67179eb431f03ac4.patch b/poky/meta/recipes-sato/webkit/webkitgtk/2922af379dc70b4b1a63b01d67179eb431f03ac4.patch
new file mode 100644
index 0000000..3067500
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/2922af379dc70b4b1a63b01d67179eb431f03ac4.patch
@@ -0,0 +1,38 @@
+From 2922af379dc70b4b1a63b01d67179eb431f03ac4 Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro@redhat.com>
+Date: Mon, 18 Mar 2024 11:14:54 -0700
+Subject: [PATCH] REGRESSION(274077@main): failure to build on i586 (and likely
+ other 32bit arches): static assertion failed: Timer should stay small
+ https://bugs.webkit.org/show_bug.cgi?id=271108
+
+Unreviewed build fix. This changes SameSizeOfTimer to ensure it matches
+the size of Timer on 32-bit platforms.
+
+* Source/WebCore/platform/Timer.cpp:
+
+Canonical link: https://commits.webkit.org/276282@main
+
+Upstream-Status: Backport [https://github.com/WebKit/WebKit/commit/2922af379dc70b4b1a63b01d67179eb431f03ac4]
+
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+---
+ Source/WebCore/platform/Timer.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/Source/WebCore/platform/Timer.cpp b/Source/WebCore/platform/Timer.cpp
+index 4f7c0f5c39ca9..0f3734cca2474 100644
+--- a/Source/WebCore/platform/Timer.cpp
++++ b/Source/WebCore/platform/Timer.cpp
+@@ -263,7 +263,11 @@ struct SameSizeAsTimer {
+ 
+     WeakPtr<TimerAlignment> timerAlignment;
+     double times[2];
+-    void* pointers[3];
++    void* pointers[2];
++#if CPU(ADDRESS32)
++    uint8_t bitfields;
++#endif
++    void* pointer;
+ };
+ 
+ static_assert(sizeof(Timer) == sizeof(SameSizeAsTimer), "Timer should stay small");
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch b/poky/meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch
new file mode 100644
index 0000000..76bcb3d
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch
@@ -0,0 +1,67 @@
+From 1523e00a2a76e285262c8aa3721b5d99f3f2d612 Mon Sep 17 00:00:00 2001
+From: Thomas Devoogdt <thomas.devoogdt@barco.com>
+Date: Mon, 16 Jan 2023 17:03:30 +0100
+Subject: [PATCH] REGRESSION(257865@main): B3Validate.cpp: fix
+
+ !ENABLE(WEBASSEMBLY_B3JIT)
+
+https://bugs.webkit.org/show_bug.cgi?id=250681
+
+Reviewed by NOBODY (OOPS!).
+
+WasmTypeDefinition.h isn't included if not ENABLE(WEBASSEMBLY_B3JIT).
+Also, toB3Type and simdScalarType are not defined if it is included.
+
+Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
+
+Upstream-Status: Inappropriate [https://bugs.launchpad.net/ubuntu/+source/webkit2gtk/+bug/2008798]
+
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+---
+ Source/JavaScriptCore/b3/B3Validate.cpp | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/Source/JavaScriptCore/b3/B3Validate.cpp b/Source/JavaScriptCore/b3/B3Validate.cpp
+index eaaa3749..1d089783 100644
+--- a/Source/JavaScriptCore/b3/B3Validate.cpp
++++ b/Source/JavaScriptCore/b3/B3Validate.cpp
+@@ -47,6 +47,12 @@
+ #include <wtf/StringPrintStream.h>
+ #include <wtf/text/CString.h>
+ 
++#if ENABLE(WEBASSEMBLY) && ENABLE(WEBASSEMBLY_B3JIT)
++#define simdScalarTypeToB3Type(type) toB3Type(Wasm::simdScalarType(type))
++#else
++#define simdScalarTypeToB3Type(type) B3::Type()
++#endif
++
+ namespace JSC { namespace B3 {
+ 
+ namespace {
+@@ -454,7 +460,7 @@ public:
+             case VectorExtractLane:
+                 VALIDATE(!value->kind().hasExtraBits(), ("At ", *value));
+                 VALIDATE(value->numChildren() == 1, ("At ", *value));
+-                VALIDATE(value->type() == toB3Type(Wasm::simdScalarType(value->asSIMDValue()->simdLane())), ("At ", *value));
++                VALIDATE(value->type() == simdScalarTypeToB3Type(value->asSIMDValue()->simdLane()), ("At ", *value));
+                 VALIDATE(value->child(0)->type() == V128, ("At ", *value));
+                 break;
+             case VectorReplaceLane:
+@@ -462,7 +468,7 @@ public:
+                 VALIDATE(value->numChildren() == 2, ("At ", *value));
+                 VALIDATE(value->type() == V128, ("At ", *value));
+                 VALIDATE(value->child(0)->type() == V128, ("At ", *value));
+-                VALIDATE(value->child(1)->type() == toB3Type(Wasm::simdScalarType(value->asSIMDValue()->simdLane())), ("At ", *value));
++                VALIDATE(value->child(1)->type() == simdScalarTypeToB3Type(value->asSIMDValue()->simdLane()), ("At ", *value));
+                 break;
+             case VectorDupElement:
+                 VALIDATE(!value->kind().hasExtraBits(), ("At ", *value));
+@@ -484,7 +490,7 @@ public:
+                 VALIDATE(!value->kind().hasExtraBits(), ("At ", *value));
+                 VALIDATE(value->numChildren() == 1, ("At ", *value));
+                 VALIDATE(value->type() == V128, ("At ", *value));
+-                VALIDATE(value->child(0)->type() == toB3Type(Wasm::simdScalarType(value->asSIMDValue()->simdLane())), ("At ", *value));
++                VALIDATE(value->child(0)->type() == simdScalarTypeToB3Type(value->asSIMDValue()->simdLane()), ("At ", *value));
+                 break;
+ 
+             case VectorPopcnt:
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.42.5.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.42.5.bb
deleted file mode 100644
index 6790814..0000000
--- a/poky/meta/recipes-sato/webkit/webkitgtk_2.42.5.bb
+++ /dev/null
@@ -1,184 +0,0 @@
-SUMMARY = "WebKit web rendering engine for the GTK+ platform"
-HOMEPAGE = "https://www.webkitgtk.org/"
-BUGTRACKER = "https://bugs.webkit.org/"
-
-LICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
-                    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
-                    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
-                    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
-                    "
-
-SRC_URI = "https://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
-           file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
-           file://reproducibility.patch \
-           file://0d3344e17d258106617b0e6d783d073b188a2548.patch \
-           file://0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch \
-           file://no-musttail-arm.patch \
-           file://t6-not-declared.patch \
-           "
-SRC_URI[sha256sum] = "b64278c1f20b8cfdbfb5ff573c37d871aba74a1db26d9b39f74e8953fe61e749"
-
-inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-REQUIRED_DISTRO_FEATURES = "opengl"
-
-CVE_PRODUCT = "webkitgtk webkitgtk\+"
-
-DEPENDS += " \
-          ruby-native \
-          gperf-native \
-          unifdef-native \
-          cairo \
-          harfbuzz \
-          jpeg \
-          atk \
-          libwebp \
-          gtk4 \
-          libxslt \
-          libtasn1 \
-          libnotify \
-          gstreamer1.0 \
-          gstreamer1.0-plugins-base \
-          glib-2.0-native \
-          gettext-native \
-          "
-
-PACKAGECONFIG_SOUP ?= "soup3"
-PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
-                   enchant \
-                   libsecret \
-                   ${PACKAGECONFIG_SOUP} \
-                  "
-
-PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
-PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
-PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
-PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
-PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
-PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
-PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl"
-PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl"
-PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
-PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
-PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
-PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
-PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
-PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
-PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
-PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
-PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
-PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
-PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
-PACKAGECONFIG[avif] = "-DUSE_AVIF_LOG=ON,-DUSE_AVIF=OFF,libavif"
-PACKAGECONFIG[media-recorder] = "-DENABLE_MEDIA_RECORDER=ON,-DENABLE_MEDIA_RECORDER=OFF,gstreamer1.0-plugins-bad"
-PACKAGECONFIG[jpegxl] = "-DUSE_JPEGXL=ON,-DUSE_JPEGXL=OFF,libjxl"
-
-EXTRA_OECMAKE = " \
-                 -DPORT=GTK \
-                 ${@oe.utils.vartrue('GI_DATA_ENABLED', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
-                 ${@oe.utils.vartrue('GIDOCGEN_ENABLED', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
-                 ${@oe.utils.vartrue('DEBUG_BUILD', '-DWEBKIT_NO_INLINE_HINTS=ON', '-DWEBKIT_NO_INLINE_HINTS=OFFF', d)} \
-                 -DENABLE_MINIBROWSER=ON \
-                 -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
-                 -DENABLE_GAMEPAD=OFF \
-                 -DUSE_GTK4=ON \
-                 "
-
-# Unless DEBUG_BUILD is enabled, pass -g1 to massively reduce the size of the
-# debug symbols (4.3GB to 700M at time of writing)
-DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}"
-
-# Javascript JIT is not supported on ARC
-EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
-# By default 25-bit "medium" calls are used on ARC
-# which is not enough for binaries larger than 32 MiB
-CFLAGS:append:arc = " -mlong-calls"
-CXXFLAGS:append:arc = " -mlong-calls"
-
-# Needed for non-mesa graphics stacks when x11 is disabled
-CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
-
-# Javascript JIT is not supported on powerpc
-EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
-
-# ARM JIT code does not build on ARMv4/5/6 anymore
-EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
-EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
-
-# And for armv7* don't enable it for softfp, because after:
-# https://github.com/WebKit/WebKit/commit/a2ec4ef1997d6fafa6ffc607bffb54e76168a918
-# https://bugs.webkit.org/show_bug.cgi?id=242172
-# softfp armv7* fails because WEBASSEMBLY is left enabled by default and JIT gets
-# explicitly disabled causing:
-# http://errors.yoctoproject.org/Errors/Details/734587/
-# PR was sent upstream, but the end result is the same both JIT and WEBASSEMBLY disabled
-# https://github.com/WebKit/WebKit/pull/17447
-EXTRA_OECMAKE:append:armv7a = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
-EXTRA_OECMAKE:append:armv7r = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
-EXTRA_OECMAKE:append:armv7ve = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
-
-EXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF "
-EXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF "
-
-# JIT and gold linker does not work on RISCV
-EXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
-EXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF"
-
-# JIT not supported on MIPS either
-EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
-
-# JIT not supported on X32
-# An attempt was made to upstream JIT support for x32 in
-# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
-# unresolved due to limited X32 adoption.
-EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
-
-SECURITY_CFLAGS:remove:aarch64 = "-fpie"
-SECURITY_CFLAGS:append:aarch64 = " -fPIE"
-
-FILES:${PN} += "${libdir}/webkitgtk-*/injected-bundle/*.so"
-
-RRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
-
-# http://errors.yoctoproject.org/Errors/Details/20370/
-ARM_INSTRUCTION_SET:armv4 = "arm"
-ARM_INSTRUCTION_SET:armv5 = "arm"
-ARM_INSTRUCTION_SET:armv6 = "arm"
-
-# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
-# https://bugs.webkit.org/show_bug.cgi?id=159880
-# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
-# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
-ARM_INSTRUCTION_SET:armv7a = "thumb"
-ARM_INSTRUCTION_SET:armv7r = "thumb"
-ARM_INSTRUCTION_SET:armv7ve = "thumb"
-
-# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
-COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
-
-# introspection inside qemu-arm hangs forever on musl/arm builds
-# therefore disable GI_DATA
-GI_DATA_ENABLED:libc-musl:armv7a = "False"
-GI_DATA_ENABLED:libc-musl:armv7ve = "False"
-
-# Can't be built with ccache
-CCACHE_DISABLE = "1"
-
-PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
-src_package_preprocess () {
-        # Trim build paths from comments in generated sources to ensure reproducibility
-        sed -i -e "s,${WORKDIR},,g" \
-            ${B}/JavaScriptCore/DerivedSources/*.h \
-            ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
-            ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
-            ${B}/WebCore/DerivedSources/*.cpp \
-            ${B}/WebKitGTK/DerivedSources/webkit/*.cpp
-}
-
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.44.0.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.44.0.bb
new file mode 100644
index 0000000..0819f6d
--- /dev/null
+++ b/poky/meta/recipes-sato/webkit/webkitgtk_2.44.0.bb
@@ -0,0 +1,187 @@
+SUMMARY = "WebKit web rendering engine for the GTK+ platform"
+HOMEPAGE = "https://www.webkitgtk.org/"
+BUGTRACKER = "https://bugs.webkit.org/"
+
+LICENSE = "BSD-2-Clause & LGPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \
+                    file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \
+                    file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
+                    file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
+                    "
+
+SRC_URI = "https://www.webkitgtk.org/releases/${BPN}-${PV}.tar.xz \
+           file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
+           file://reproducibility.patch \
+           file://0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch \
+           file://no-musttail-arm.patch \
+           file://t6-not-declared.patch \
+           file://30e1d5e22213fdaca2a29ec3400c927d710a37a8.patch \
+           file://2922af379dc70b4b1a63b01d67179eb431f03ac4.patch \
+           "
+SRC_URI[sha256sum] = "c66530e41ba59b1edba4ee89ef20b2188e273bed0497e95084729e3cfbe30c87"
+
+inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+CVE_PRODUCT = "webkitgtk webkitgtk\+"
+
+DEPENDS += " \
+          ruby-native \
+          gperf-native \
+          unifdef-native \
+          cairo \
+          harfbuzz \
+          jpeg \
+          atk \
+          libwebp \
+          gtk4 \
+          libxslt \
+          libtasn1 \
+          libnotify \
+          gstreamer1.0 \
+          gstreamer1.0-plugins-base \
+          glib-2.0-native \
+          gettext-native \
+          "
+
+PACKAGECONFIG_SOUP ?= "soup3"
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \
+                   ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \
+                   enchant \
+                   libsecret \
+                   ${PACKAGECONFIG_SOUP} \
+                  "
+
+PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native"
+PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF"
+PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt"
+PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue"
+PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2"
+PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2"
+PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl"
+PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl"
+PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF"
+PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret"
+PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen"
+PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2"
+PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg"
+PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd"
+PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,,"
+PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms"
+PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3"
+PACKAGECONFIG[soup3] = ",,libsoup,,,soup2"
+PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
+PACKAGECONFIG[avif] = "-DUSE_AVIF_LOG=ON,-DUSE_AVIF=OFF,libavif"
+PACKAGECONFIG[media-recorder] = "-DENABLE_MEDIA_RECORDER=ON,-DENABLE_MEDIA_RECORDER=OFF,gstreamer1.0-plugins-bad"
+PACKAGECONFIG[jpegxl] = "-DUSE_JPEGXL=ON,-DUSE_JPEGXL=OFF,libjxl"
+PACKAGECONFIG[backtrace] = "-DUSE_LIBBACKTRACE=ON,-DUSE_LIBBACKTRACE=OFF,libbacktrace"
+PACKAGECONFIG[gamepad] = "-DENABLE_GAMEPAD=ON,-DENABLE_GAMEPAD=OFF,libmanette"
+
+EXTRA_OECMAKE = " \
+                 -DPORT=GTK \
+                 ${@oe.utils.vartrue('GI_DATA_ENABLED', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \
+                 ${@oe.utils.vartrue('GIDOCGEN_ENABLED', '-DENABLE_DOCUMENTATION=ON', '-DENABLE_DOCUMENTATION=OFF', d)} \
+                 ${@oe.utils.vartrue('DEBUG_BUILD', '-DWEBKIT_NO_INLINE_HINTS=ON', '-DWEBKIT_NO_INLINE_HINTS=OFFF', d)} \
+                 -DENABLE_MINIBROWSER=ON \
+                 -DENABLE_BUBBLEWRAP_SANDBOX=OFF \
+                 -DUSE_GTK4=ON \
+                 -DCMAKE_EXPORT_COMPILE_COMMANDS=OFF \
+                 "
+
+# Unless DEBUG_BUILD is enabled, pass -g1 to massively reduce the size of the
+# debug symbols (4.3GB to 700M at time of writing)
+DEBUG_FLAGS:append = "${@oe.utils.vartrue('DEBUG_BUILD', '', ' -g1', d)}"
+
+# Javascript JIT is not supported on ARC
+EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF "
+# By default 25-bit "medium" calls are used on ARC
+# which is not enough for binaries larger than 32 MiB
+CFLAGS:append:arc = " -mlong-calls"
+CXXFLAGS:append:arc = " -mlong-calls"
+
+# Needed for non-mesa graphics stacks when x11 is disabled
+CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}"
+
+# Javascript JIT is not supported on powerpc
+EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF "
+
+# ARM JIT code does not build on ARMv4/5/6 anymore
+EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF "
+EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF "
+
+# And for armv7* don't enable it for softfp, because after:
+# https://github.com/WebKit/WebKit/commit/a2ec4ef1997d6fafa6ffc607bffb54e76168a918
+# https://bugs.webkit.org/show_bug.cgi?id=242172
+# softfp armv7* fails because WEBASSEMBLY is left enabled by default and JIT gets
+# explicitly disabled causing:
+# http://errors.yoctoproject.org/Errors/Details/734587/
+# PR was sent upstream, but the end result is the same both JIT and WEBASSEMBLY disabled
+# https://github.com/WebKit/WebKit/pull/17447
+EXTRA_OECMAKE:append:armv7a = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
+EXTRA_OECMAKE:append:armv7r = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
+EXTRA_OECMAKE:append:armv7ve = " -DENABLE_JIT=${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'ON', 'OFF', d)}"
+
+EXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF "
+EXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF "
+
+# JIT and gold linker does not work on RISCV
+EXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF"
+EXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF"
+
+# JIT not supported on MIPS either
+EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON "
+
+# JIT not supported on X32
+# An attempt was made to upstream JIT support for x32 in
+# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as
+# unresolved due to limited X32 adoption.
+EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF "
+
+SECURITY_CFLAGS:remove:aarch64 = "-fpie"
+SECURITY_CFLAGS:append:aarch64 = " -fPIE"
+
+FILES:${PN} += "${libdir}/webkitgtk-*/injected-bundle/*.so"
+
+RRECOMMENDS:${PN} += "ca-certificates shared-mime-info"
+
+# http://errors.yoctoproject.org/Errors/Details/20370/
+ARM_INSTRUCTION_SET:armv4 = "arm"
+ARM_INSTRUCTION_SET:armv5 = "arm"
+ARM_INSTRUCTION_SET:armv6 = "arm"
+
+# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474
+# https://bugs.webkit.org/show_bug.cgi?id=159880
+# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime.
+# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb).
+ARM_INSTRUCTION_SET:armv7a = "thumb"
+ARM_INSTRUCTION_SET:armv7r = "thumb"
+ARM_INSTRUCTION_SET:armv7ve = "thumb"
+
+# ANGLE requires SSE support as of webkit 2.40.x on 32 bit x86
+COMPATIBLE_HOST:x86 = "${@bb.utils.contains_any('TUNE_FEATURES', 'core2 corei7', '.*', 'null', d)}"
+
+# introspection inside qemu-arm hangs forever on musl/arm builds
+# therefore disable GI_DATA
+GI_DATA_ENABLED:libc-musl:armv7a = "False"
+GI_DATA_ENABLED:libc-musl:armv7ve = "False"
+
+# Can't be built with ccache
+CCACHE_DISABLE = "1"
+
+PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess"
+src_package_preprocess () {
+        # Trim build paths from comments in generated sources to ensure reproducibility
+        sed -i -e "s,${WORKDIR},,g" \
+            ${B}/JavaScriptCore/DerivedSources/*.h \
+            ${B}/JavaScriptCore/DerivedSources/yarr/*.h \
+            ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \
+            ${B}/WebCore/DerivedSources/*.cpp \
+            ${B}/WebKitGTK/DerivedSources/webkit/*.cpp
+}
+
diff --git a/poky/meta/recipes-support/bmaptool/bmaptool_git.bb b/poky/meta/recipes-support/bmaptool/bmaptool_git.bb
index 87328af..fd53c21 100644
--- a/poky/meta/recipes-support/bmaptool/bmaptool_git.bb
+++ b/poky/meta/recipes-support/bmaptool/bmaptool_git.bb
@@ -9,16 +9,10 @@
 LICENSE = "GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
-SRC_URI = "git://github.com/yoctoproject/${BPN};branch=main;protocol=https \
-	file://0001-BmapCopy.py-fix-error-message.patch \
-	file://0002-CLI.py-fix-block-device-udev-race-condition.patch \
-	file://0003-BmapCopy.py-tweak-suggested-udev-rule.patch \
-	"
-
-SRCREV = "d84a6fd202fe246a0bc19ed2082e41bcdd75fb13"
+SRC_URI = "git://github.com/yoctoproject/${BPN};branch=main;protocol=https"
+SRCREV = "2ff5750b8a3e0b36a9993c20e2ea10a07bc62085"
 S = "${WORKDIR}/git"
-BASEVER = "3.7"
+BASEVER = "3.8.0"
 PV = "${BASEVER}+git"
 
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
@@ -28,4 +22,8 @@
 
 inherit setuptools3
 
+# For compatibility with layers before scarthgap
+RREPLACES:${PN} = "bmap-tools"
+RCONFLICTS:${PN} = "bmap-tools"
+
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/bmaptool/files/0001-BmapCopy.py-fix-error-message.patch b/poky/meta/recipes-support/bmaptool/files/0001-BmapCopy.py-fix-error-message.patch
deleted file mode 100644
index ddac322..0000000
--- a/poky/meta/recipes-support/bmaptool/files/0001-BmapCopy.py-fix-error-message.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ad0b0513a46c7d238d0fdabee0267c7084b75e84 Mon Sep 17 00:00:00 2001
-From: Trevor Woerner <twoerner@gmail.com>
-Date: Thu, 11 Jan 2024 22:04:23 -0500
-Subject: [PATCH 1/3] BmapCopy.py: fix error message
-
-The wrong variable was being used when attempting to print out an informative
-message to the user. Leading to nonsense messages such as:
-
-	bmaptool: info: failed to enable I/O optimization, expect suboptimal speed (reason: cannot switch to the 1 I/O scheduler: 1 in use. None)
-
-Upstream-Status: Submitted [https://github.com/intel/bmap-tools/pull/129]
-Signed-off-by: Trevor Woerner <twoerner@gmail.com>
----
- bmaptools/BmapCopy.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/bmaptools/BmapCopy.py b/bmaptools/BmapCopy.py
-index 9de7ef434233..b1e8e0fcbdb7 100644
---- a/bmaptools/BmapCopy.py
-+++ b/bmaptools/BmapCopy.py
-@@ -892,9 +892,9 @@ class BmapBdevCopy(BmapCopy):
-                 _log.info(
-                     "failed to enable I/O optimization, expect "
-                     "suboptimal speed (reason: cannot switch to the "
--                    f"{max_ratio_chg.temp_value} I/O scheduler: "
--                    f"{max_ratio_chg.old_value or 'unknown scheduler'} in use. "
--                    f"{max_ratio_chg.error})"
-+                    f"'{scheduler_chg.temp_value}' I/O scheduler: "
-+                    f"'{scheduler_chg.old_value or 'unknown scheduler'}' in use. "
-+                    f"{scheduler_chg.error})"
-                 )
-             if max_ratio_chg.error or scheduler_chg.error:
-                 _log.info(
--- 
-2.43.0.76.g1a87c842ece3
-
diff --git a/poky/meta/recipes-support/bmaptool/files/0002-CLI.py-fix-block-device-udev-race-condition.patch b/poky/meta/recipes-support/bmaptool/files/0002-CLI.py-fix-block-device-udev-race-condition.patch
deleted file mode 100644
index ea2749a..0000000
--- a/poky/meta/recipes-support/bmaptool/files/0002-CLI.py-fix-block-device-udev-race-condition.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 34f4321dfce28697f830639260076e60d765698b Mon Sep 17 00:00:00 2001
-From: Trevor Woerner <twoerner@gmail.com>
-Date: Fri, 12 Jan 2024 01:16:19 -0500
-Subject: [PATCH 2/3] CLI.py: fix block device udev race condition
-
-We are encouraged to add a udev rule to change a block device's
-bdi/max_ratio to '1' and queue/scheduler to 'none', which I did.
-So I was surprised when, about 50% of the time, I kept seeing:
-
-	...
-	bmaptool: info: failed to enable I/O optimization, expect suboptimal speed (reason: cannot switch to the 'none' I/O scheduler: 'bfq' in use. [Errno 13] Permission denied: '/sys/dev/block/8:160/queue/scheduler')
-	bmaptool: info: You may want to set these I/O optimizations through a udev rule like this:
-	...
-
-The strange part is that sometimes it doesn't report a problem and
-sometimes it does, even if the block device is left plugged in continuously
-between multiple bmaptool invocations.
-
-In all of my tests the bdi/max_ratio is always okay, but the
-queue/scheduler would sometimes be reported as being the default scheduler,
-not the one the udev rule was setting (none). Yet no matter how many times
-I would read the file outside of bmaptool it always would be set to the
-correct scheduler.
-
-It turns out that opening a block device in "wb+" mode, which is what
-bmaptool is doing at one point, causes the block device to act as though
-it was just inserted, giving it the default settings, then causing udev to
-trigger to switch it to the requested settings. However, if udev doesn't
-finish before bmaptool reads the scheduler value there's a chance it will
-read the pre-udev value, not the post-udev value, even though the block
-device was never physically removed and re-inserted.
-
-bmaptool was opening every file, then checking for block devices and
-if found, closing then re-opening the block devices via a special
-block-opening helper function. This patch re-organizes the code to only
-open block devices once using the special block-opening helper function
-that does not open block devices in "wb+" mode.
-
-Upstream-Status: Submitted [https://github.com/intel/bmap-tools/pull/130]
-Signed-off-by: Trevor Woerner <twoerner@gmail.com>
----
- bmaptools/CLI.py | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/bmaptools/CLI.py b/bmaptools/CLI.py
-index 82303b7bc398..0a263f05cf43 100644
---- a/bmaptools/CLI.py
-+++ b/bmaptools/CLI.py
-@@ -38,6 +38,7 @@ import tempfile
- import traceback
- import shutil
- import io
-+import pathlib
- from bmaptools import BmapCreate, BmapCopy, BmapHelpers, TransRead
- 
- VERSION = "3.7"
-@@ -440,17 +441,16 @@ def open_files(args):
-     # Try to open the destination file. If it does not exist, a new regular
-     # file will be created. If it exists and it is a regular file - it'll be
-     # truncated. If this is a block device, it'll just be opened.
-+    dest_is_blkdev = False
-     try:
--        dest_obj = open(args.dest, "wb+")
-+        if pathlib.Path(args.dest).is_block_device():
-+            dest_is_blkdev = True
-+            dest_obj = open_block_device(args.dest)
-+        else:
-+            dest_obj = open(args.dest, "wb+")
-     except IOError as err:
-         error_out("cannot open destination file '%s':\n%s", args.dest, err)
- 
--    # Check whether the destination file is a block device
--    dest_is_blkdev = stat.S_ISBLK(os.fstat(dest_obj.fileno()).st_mode)
--    if dest_is_blkdev:
--        dest_obj.close()
--        dest_obj = open_block_device(args.dest)
--
-     return (image_obj, dest_obj, bmap_obj, bmap_path, image_obj.size, dest_is_blkdev)
- 
- 
--- 
-2.43.0.76.g1a87c842ece3
-
diff --git a/poky/meta/recipes-support/bmaptool/files/0003-BmapCopy.py-tweak-suggested-udev-rule.patch b/poky/meta/recipes-support/bmaptool/files/0003-BmapCopy.py-tweak-suggested-udev-rule.patch
deleted file mode 100644
index 2794eea..0000000
--- a/poky/meta/recipes-support/bmaptool/files/0003-BmapCopy.py-tweak-suggested-udev-rule.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 2a71e0c1a675e4f30f02c03dd0325944b393c434 Mon Sep 17 00:00:00 2001
-From: Trevor Woerner <twoerner@gmail.com>
-Date: Fri, 12 Jan 2024 01:54:26 -0500
-Subject: [PATCH 3/3] BmapCopy.py: tweak suggested udev rule
-
-Both bdi/max_ratio and queue/scheduler are only valid for whole block devices,
-not individual partitions. Therefore, add a
-
-	ENV{DEVTYPE}!="partition",
-
-to the suggested udev rule so that bmaptool doesn't try to check every
-partition of the block device, just the whole device.
-
-Otherwise the following will appear in the logs:
-
-	Jan 10 01:30:31 localhost (udev-worker)[10399]: sdk1: /etc/udev/rules.d/60-bmaptool-optimizations.rules:5 Failed to write ATTR{/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.0/host14/target14:0:0/14:0:0:0/block/sdk/sdk1/bdi/min_ratio}, ignoring: No such file or directory
-	Jan 10 01:30:31 localhost (udev-worker)[10399]: sdk1: /etc/udev/rules.d/60-bmaptool-optimizations.rules:5 Failed to write ATTR{/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.0/host14/target14:0:0/14:0:0:0/block/sdk/sdk1/bdi/max_ratio}, ignoring: No such file or directory
-	Jan 10 01:30:31 localhost (udev-worker)[10399]: sdk1: /etc/udev/rules.d/60-bmaptool-optimizations.rules:5 Failed to write ATTR{/sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.0/host14/target14:0:0/14:0:0:0/block/sdk/sdk1/queue/scheduler}, ignoring: No such file or directory
-	[... and so on for every partition on your block device ...]
-
-Upstream-Status: Submitted [https://github.com/intel/bmap-tools/pull/131]
-Signed-off-by: Trevor Woerner <twoerner@gmail.com>
----
- bmaptools/BmapCopy.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/bmaptools/BmapCopy.py b/bmaptools/BmapCopy.py
-index b1e8e0fcbdb7..a4c1177246a9 100644
---- a/bmaptools/BmapCopy.py
-+++ b/bmaptools/BmapCopy.py
-@@ -906,7 +906,8 @@ class BmapBdevCopy(BmapCopy):
-                     "\n"
-                     'ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="xxxx", '
-                     'ATTRS{idProduct}=="xxxx", TAG+="uaccess"\n'
--                    'SUBSYSTEMS=="usb", ATTRS{idVendor}=="xxxx", '
-+                    'SUBSYSTEMS=="usb", ENV{DEVTYPE}!="partition", '
-+                    'ATTRS{idVendor}=="xxxx", '
-                     'ATTRS{idProduct}=="xxxx", ATTR{bdi/min_ratio}="0", '
-                     'ATTR{bdi/max_ratio}="1", ATTR{queue/scheduler}="none"\n'
-                     "\n"
--- 
-2.43.0.76.g1a87c842ece3
-
diff --git a/poky/meta/recipes-support/curl/curl/no-test-timeout.patch b/poky/meta/recipes-support/curl/curl/no-test-timeout.patch
new file mode 100644
index 0000000..b4cfe71
--- /dev/null
+++ b/poky/meta/recipes-support/curl/curl/no-test-timeout.patch
@@ -0,0 +1,18 @@
+Set the max-time timeout to 600 so the timeout is 10 minutes instead of 13 seconds.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/tests/servers.pm b/tests/servers.pm
+index d4472d509..aeab62c47 100644
+--- a/tests/servers.pm
++++ b/tests/servers.pm
+@@ -120,7 +120,7 @@ my $sshdverstr;  # for socks server, ssh daemon version string
+ my $sshderror;   # for socks server, ssh daemon version error
+ my %doesntrun;    # servers that don't work, identified by pidfile
+ my %PORT = (nolisten => 47); # port we use for a local non-listening service
+-my $server_response_maxtime=13;
++my $server_response_maxtime=600;
+ my $httptlssrv = find_httptlssrv();
+ my %run;          # running server
+ my %runcert;      # cert file currently in use by an ssl running server
diff --git a/poky/meta/recipes-support/curl/curl/run-ptest b/poky/meta/recipes-support/curl/curl/run-ptest
index 8f9c20f3..3d25f3d 100644
--- a/poky/meta/recipes-support/curl/curl/run-ptest
+++ b/poky/meta/recipes-support/curl/curl/run-ptest
@@ -1,6 +1,11 @@
 #!/bin/sh
+
 cd tests
-{ ./runtests.pl -a -n -s -j4 !flaky || echo "FAIL: curl" ; } | sed \
-     -e 's|\([^ ]* *\) \([^ ]* *\)...OK|PASS: \1 \2|' \
-     -e 's|\([^ ]* *\) \([^ ]* *\)...FAILED|FAIL: \1 \2|' \
-     -e 's/Warning: test[0-9]\+ not present in tests\/data\/Makefile.inc//'
+
+# Run all tests, don't stop on first failure
+# Don't use valgrind if it is found
+# Use automake-style output
+# Run four tests in parallel
+# Print log output on failure
+# Don't run the flaky or timing dependent tests
+./runtests.pl -a -n -am -j4 -p !flaky !timing-dependent
diff --git a/poky/meta/recipes-support/curl/curl_8.6.0.bb b/poky/meta/recipes-support/curl/curl_8.6.0.bb
index b01f454..49ba0cb 100644
--- a/poky/meta/recipes-support/curl/curl_8.6.0.bb
+++ b/poky/meta/recipes-support/curl/curl_8.6.0.bb
@@ -13,6 +13,7 @@
     https://curl.se/download/${BP}.tar.xz \
     file://run-ptest \
     file://disable-tests \
+    file://no-test-timeout.patch \
 "
 SRC_URI[sha256sum] = "3ccd55d91af9516539df80625f818c734dc6f2ecf9bada33c76765e99121db15"
 
@@ -78,7 +79,7 @@
     ${@'--without-ssl' if (bb.utils.filter('PACKAGECONFIG', 'gnutls mbedtls openssl', d) == '') else ''} \
 "
 
-do_install:append:class-target() {
+fix_absolute_paths () {
 	# cleanup buildpaths from curl-config
 	sed -i \
 	    -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \
@@ -88,6 +89,14 @@
 	    ${D}${bindir}/curl-config
 }
 
+do_install:append:class-target() {
+	fix_absolute_paths
+}
+
+do_install:append:class-nativesdk() {
+	fix_absolute_paths
+}
+
 do_compile_ptest() {
 	oe_runmake -C ${B}/tests
 }
@@ -125,6 +134,7 @@
 	perl-module-storable \
 	perl-module-time-hires \
 "
+RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-en-us"
 
 PACKAGES =+ "lib${BPN}"
 
diff --git a/poky/meta/recipes-support/gmp/gmp_6.3.0.bb b/poky/meta/recipes-support/gmp/gmp_6.3.0.bb
index 3dbcd68..fd4aec9 100644
--- a/poky/meta/recipes-support/gmp/gmp_6.3.0.bb
+++ b/poky/meta/recipes-support/gmp/gmp_6.3.0.bb
@@ -29,13 +29,21 @@
 	oe_multilib_header gmp.h
 }
 
-do_install:prepend:class-target() {
+fix_absolute_paths () {
         sed -i \
         -e "s|--sysroot=${STAGING_DIR_HOST}||g" \
         -e "s|${DEBUG_PREFIX_MAP}||g" \
          ${B}/gmp.h
 }
 
+do_install:prepend:class-target() {
+    fix_absolute_paths
+}
+
+do_install:prepend:class-nativesdk() {
+    fix_absolute_paths
+}
+
 SSTATE_SCAN_FILES += "gmp.h"
 
 # Doesn't compile in MIPS16e mode due to use of hand-written
diff --git a/poky/meta/recipes-support/gnutls/gnutls/0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch b/poky/meta/recipes-support/gnutls/gnutls/0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch
index 4bdc40d..d13bfee 100644
--- a/poky/meta/recipes-support/gnutls/gnutls/0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch
+++ b/poky/meta/recipes-support/gnutls/gnutls/0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch
@@ -1,4 +1,4 @@
-From 21a8295bac3805e4490ba2b5f136e7f4c121061b Mon Sep 17 00:00:00 2001
+From 7be8ec59a53e93c2bd453b3ba2d63d1b300ef11f Mon Sep 17 00:00:00 2001
 From: Lei Maohui <leimaohui@fujitsu.com>
 Date: Mon, 23 May 2022 10:44:43 +0900
 Subject: [PATCH] Creating .hmac file should be excuted in target environment,
@@ -6,16 +6,15 @@
 
 Upstream-Status: Inappropriate [https://gitlab.com/gnutls/gnutls/-/issues/1373]
 Signed-off-by: Lei Maohui <leimaohui@fujitsu.com>
-
 ---
  lib/Makefile.am | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/lib/Makefile.am b/lib/Makefile.am
-index 6d4e8d2..24ef108 100644
+index a50d311..193ea19 100644
 --- a/lib/Makefile.am
 +++ b/lib/Makefile.am
-@@ -206,8 +206,7 @@ hmac_file = .libs/.$(gnutls_so).hmac
+@@ -198,8 +198,7 @@ hmac_file = .libs/.$(gnutls_so).hmac
  
  all-local: $(hmac_file)
  
diff --git a/poky/meta/recipes-support/gnutls/gnutls/Add-ptest-support.patch b/poky/meta/recipes-support/gnutls/gnutls/Add-ptest-support.patch
index f87cf53..1152d37 100644
--- a/poky/meta/recipes-support/gnutls/gnutls/Add-ptest-support.patch
+++ b/poky/meta/recipes-support/gnutls/gnutls/Add-ptest-support.patch
@@ -1,11 +1,10 @@
-From 81861f7ba690956c064ebe8dce6c313951fa2a9f Mon Sep 17 00:00:00 2001
+From ff6a345235b2585c261752e47a749228672b07dc Mon Sep 17 00:00:00 2001
 From: Ravineet Singh <ravineet.a.singh@est.tech>
 Date: Tue, 10 Jan 2023 16:11:10 +0100
 Subject: [PATCH] gnutls: add ptest support
 
 Upstream-Status: Inappropriate [embedded specific]
 Signed-off-by: Ravineet Singh <ravineet.a.singh@est.tech>
-
 ---
  Makefile.am       | 3 +++
  configure.ac      | 2 ++
@@ -27,10 +26,10 @@
  
  include $(top_srcdir)/cligen/cligen.mk
 diff --git a/configure.ac b/configure.ac
-index b25ba14..860ddef 100644
+index d6e03cf..e3f15fb 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1150,6 +1150,8 @@ AC_SUBST(LIBGNUTLS_CFLAGS)
+@@ -1213,6 +1213,8 @@ AC_SUBST(LIBGNUTLS_CFLAGS)
  
  AM_CONDITIONAL(NEEDS_LIBRT, test "$gnutls_needs_librt" = "yes")
  
@@ -40,10 +39,10 @@
  
  hw_features=
 diff --git a/tests/Makefile.am b/tests/Makefile.am
-index d530ad0..71c592f 100644
+index fb9e55a..c2d226a 100644
 --- a/tests/Makefile.am
 +++ b/tests/Makefile.am
-@@ -648,6 +648,12 @@ SH_LOG_COMPILER = $(SHELL)
+@@ -658,6 +658,12 @@ SH_LOG_COMPILER = $(SHELL)
  AM_VALGRINDFLAGS = --suppressions=$(srcdir)/suppressions.valgrind
  LOG_COMPILER = $(LOG_VALGRIND)
  
diff --git a/poky/meta/recipes-support/gnutls/gnutls/arm_eabi.patch b/poky/meta/recipes-support/gnutls/gnutls/arm_eabi.patch
index fe3f031..883d012 100644
--- a/poky/meta/recipes-support/gnutls/gnutls/arm_eabi.patch
+++ b/poky/meta/recipes-support/gnutls/gnutls/arm_eabi.patch
@@ -1,4 +1,4 @@
-From 5810d97281bb30edb786de9946e5c13186eff6a2 Mon Sep 17 00:00:00 2001
+From d17ae0ef31c3c186766a338e8c40c87d1b98820e Mon Sep 17 00:00:00 2001
 From: Joe Slater <jslater@windriver.com>
 Date: Wed, 25 Jan 2017 13:52:59 -0800
 Subject: [PATCH] gnutls: account for ARM_EABI
@@ -14,7 +14,7 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/tests/seccomp.c b/tests/seccomp.c
-index 86442a5..03a5aa8 100644
+index 881f0bb..5f9204a 100644
 --- a/tests/seccomp.c
 +++ b/tests/seccomp.c
 @@ -55,7 +55,9 @@ int disable_system_calls(void)
@@ -27,6 +27,3 @@
  	ADD_SYSCALL(getpid, 0);
  	ADD_SYSCALL(gettimeofday, 0);
  #if defined(HAVE_CLOCK_GETTIME)
--- 
-2.30.2
-
diff --git a/poky/meta/recipes-support/gnutls/gnutls_3.8.3.bb b/poky/meta/recipes-support/gnutls/gnutls_3.8.3.bb
deleted file mode 100644
index 27d6753..0000000
--- a/poky/meta/recipes-support/gnutls/gnutls_3.8.3.bb
+++ /dev/null
@@ -1,100 +0,0 @@
-SUMMARY = "GNU Transport Layer Security Library"
-DESCRIPTION = "a secure communications library implementing the SSL, \
-TLS and DTLS protocols and technologies around them."
-HOMEPAGE = "https://gnutls.org/"
-BUGTRACKER = "https://savannah.gnu.org/support/?group=gnutls"
-
-LICENSE = "GPL-3.0-or-later & LGPL-2.1-or-later"
-LICENSE:${PN} = "LGPL-2.1-or-later"
-LICENSE:${PN}-xx = "LGPL-2.1-or-later"
-LICENSE:${PN}-bin = "GPL-3.0-or-later"
-LICENSE:${PN}-openssl = "GPL-3.0-or-later"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=71391c8e0c1cfe68077e7fce3b586283 \
-                    file://doc/COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
-                    file://doc/COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c"
-
-DEPENDS = "nettle gmp virtual/libiconv libunistring"
-
-SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
-
-SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz \
-           file://arm_eabi.patch \
-           file://0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch \
-           file://run-ptest \
-           file://Add-ptest-support.patch \
-           "
-
-SRC_URI[sha256sum] = "f74fc5954b27d4ec6dfbb11dea987888b5b124289a3703afcada0ee520f4173e"
-
-inherit autotools texinfo pkgconfig gettext lib_package gtk-doc ptest
-
-PACKAGECONFIG ??= "libidn libtasn1 ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)}"
-
-# You must also have CONFIG_SECCOMP enabled in the kernel for
-# seccomp to work.
-PACKAGECONFIG[seccomp] = "--with-libseccomp-prefix=${STAGING_EXECPREFIXDIR},ac_cv_libseccomp=no,libseccomp"
-PACKAGECONFIG[libidn] = "--with-idn,--without-idn,libidn2"
-PACKAGECONFIG[libtasn1] = "--without-included-libtasn1,--with-included-libtasn1,libtasn1"
-PACKAGECONFIG[p11-kit] = "--with-p11-kit,--without-p11-kit,p11-kit"
-PACKAGECONFIG[tpm] = "--with-tpm,--without-tpm,trousers"
-PACKAGECONFIG[fips] = "--enable-fips140-mode --with-libdl-prefix=${STAGING_BASELIBDIR}"
-PACKAGECONFIG[dane] = "--enable-libdane,--disable-libdane,unbound"
-# Certificate compression
-PACKAGECONFIG[brotli] = "--with-brotli,--without-brotli,brotli"
-PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
-PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
-
-EXTRA_OECONF = " \
-    --enable-doc \
-    --disable-rpath \
-    --enable-openssl-compatibility \
-    --with-libpthread-prefix=${STAGING_DIR_HOST}${prefix} \
-    --with-librt-prefix=${STAGING_DIR_HOST}${prefix} \
-    --with-default-trust-store-file=${sysconfdir}/ssl/certs/ca-certificates.crt \
-"
-
-# Otherwise the tools try and use HOSTTOOLS_DIR/bash as a shell.
-export POSIX_SHELL="${base_bindir}/sh"
-
-do_configure:prepend() {
-	for dir in . lib; do
-		rm -f ${dir}/aclocal.m4 ${dir}/m4/libtool.m4 ${dir}/m4/lt*.m4
-	done
-}
-
-do_compile_ptest() {
-    oe_runmake -C tests buildtest-TESTS
-}
-
-do_install:append:class-target() {
-        if ${@bb.utils.contains('PACKAGECONFIG', 'fips', 'true', 'false', d)}; then
-          install -d ${D}${bindir}/bin
-          install -m 0755 ${B}/lib/.libs/fipshmac ${D}/${bindir}/
-        fi
-}
-
-PACKAGES =+ "${PN}-dane ${PN}-openssl ${PN}-xx ${PN}-fips"
-
-FILES:${PN}-dev += "${bindir}/gnutls-cli-debug"
-
-FILES:${PN}-dane = "${libdir}/libgnutls-dane.so.*"
-FILES:${PN}-openssl = "${libdir}/libgnutls-openssl.so.*"
-FILES:${PN}-xx = "${libdir}/libgnutlsxx.so.*"
-FILES:${PN}-fips = "${bindir}/fipshmac"
-
-RDEPENDS:${PN}-ptest += "python3"
-
-BBCLASSEXTEND = "native nativesdk"
-
-pkg_postinst_ontarget:${PN}-fips () {
-    if test -x ${bindir}/fipshmac
-    then
-        mkdir ${sysconfdir}/gnutls
-        touch ${sysconfdir}/gnutls/config
-        ${bindir}/fipshmac ${libdir}/libgnutls.so.30.*.* > ${libdir}/.libgnutls.so.30.hmac
-        ${bindir}/fipshmac ${libdir}/libnettle.so.8.* > ${libdir}/.libnettle.so.8.hmac
-        ${bindir}/fipshmac ${libdir}/libgmp.so.10.*.* > ${libdir}/.libgmp.so.10.hmac
-        ${bindir}/fipshmac ${libdir}/libhogweed.so.6.* > ${libdir}/.libhogweed.so.6.hmac
-    fi
-}
diff --git a/poky/meta/recipes-support/gnutls/gnutls_3.8.4.bb b/poky/meta/recipes-support/gnutls/gnutls_3.8.4.bb
new file mode 100644
index 0000000..20139b4
--- /dev/null
+++ b/poky/meta/recipes-support/gnutls/gnutls_3.8.4.bb
@@ -0,0 +1,100 @@
+SUMMARY = "GNU Transport Layer Security Library"
+DESCRIPTION = "a secure communications library implementing the SSL, \
+TLS and DTLS protocols and technologies around them."
+HOMEPAGE = "https://gnutls.org/"
+BUGTRACKER = "https://savannah.gnu.org/support/?group=gnutls"
+
+LICENSE = "GPL-3.0-or-later & LGPL-2.1-or-later"
+LICENSE:${PN} = "LGPL-2.1-or-later"
+LICENSE:${PN}-xx = "LGPL-2.1-or-later"
+LICENSE:${PN}-bin = "GPL-3.0-or-later"
+LICENSE:${PN}-openssl = "GPL-3.0-or-later"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=71391c8e0c1cfe68077e7fce3b586283 \
+                    file://doc/COPYING;md5=1ebbd3e34237af26da5dc08a4e440464 \
+                    file://doc/COPYING.LESSER;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "nettle gmp virtual/libiconv libunistring"
+
+SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
+
+SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz \
+           file://arm_eabi.patch \
+           file://0001-Creating-.hmac-file-should-be-excuted-in-target-envi.patch \
+           file://run-ptest \
+           file://Add-ptest-support.patch \
+           "
+
+SRC_URI[sha256sum] = "2bea4e154794f3f00180fa2a5c51fe8b005ac7a31cd58bd44cdfa7f36ebc3a9b"
+
+inherit autotools texinfo pkgconfig gettext lib_package gtk-doc ptest
+
+PACKAGECONFIG ??= "libidn libtasn1 ${@bb.utils.filter('DISTRO_FEATURES', 'seccomp', d)}"
+
+# You must also have CONFIG_SECCOMP enabled in the kernel for
+# seccomp to work.
+PACKAGECONFIG[seccomp] = "--with-libseccomp-prefix=${STAGING_EXECPREFIXDIR},ac_cv_libseccomp=no,libseccomp"
+PACKAGECONFIG[libidn] = "--with-idn,--without-idn,libidn2"
+PACKAGECONFIG[libtasn1] = "--without-included-libtasn1,--with-included-libtasn1,libtasn1"
+PACKAGECONFIG[p11-kit] = "--with-p11-kit,--without-p11-kit,p11-kit"
+PACKAGECONFIG[tpm] = "--with-tpm,--without-tpm,trousers"
+PACKAGECONFIG[fips] = "--enable-fips140-mode --with-libdl-prefix=${STAGING_BASELIBDIR}"
+PACKAGECONFIG[dane] = "--enable-libdane,--disable-libdane,unbound"
+# Certificate compression
+PACKAGECONFIG[brotli] = "--with-brotli,--without-brotli,brotli"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
+PACKAGECONFIG[zstd] = "--with-zstd,--without-zstd,zstd"
+
+EXTRA_OECONF = " \
+    --enable-doc \
+    --disable-rpath \
+    --enable-openssl-compatibility \
+    --with-libpthread-prefix=${STAGING_DIR_HOST}${prefix} \
+    --with-librt-prefix=${STAGING_DIR_HOST}${prefix} \
+    --with-default-trust-store-file=${sysconfdir}/ssl/certs/ca-certificates.crt \
+"
+
+# Otherwise the tools try and use HOSTTOOLS_DIR/bash as a shell.
+export POSIX_SHELL="${base_bindir}/sh"
+
+do_configure:prepend() {
+	for dir in . lib; do
+		rm -f ${dir}/aclocal.m4 ${dir}/m4/libtool.m4 ${dir}/m4/lt*.m4
+	done
+}
+
+do_compile_ptest() {
+    oe_runmake -C tests buildtest-TESTS
+}
+
+do_install:append:class-target() {
+        if ${@bb.utils.contains('PACKAGECONFIG', 'fips', 'true', 'false', d)}; then
+          install -d ${D}${bindir}/bin
+          install -m 0755 ${B}/lib/.libs/fipshmac ${D}/${bindir}/
+        fi
+}
+
+PACKAGES =+ "${PN}-dane ${PN}-openssl ${PN}-xx ${PN}-fips"
+
+FILES:${PN}-dev += "${bindir}/gnutls-cli-debug"
+
+FILES:${PN}-dane = "${libdir}/libgnutls-dane.so.*"
+FILES:${PN}-openssl = "${libdir}/libgnutls-openssl.so.*"
+FILES:${PN}-xx = "${libdir}/libgnutlsxx.so.*"
+FILES:${PN}-fips = "${bindir}/fipshmac"
+
+RDEPENDS:${PN}-ptest += "python3"
+
+BBCLASSEXTEND = "native nativesdk"
+
+pkg_postinst_ontarget:${PN}-fips () {
+    if test -x ${bindir}/fipshmac
+    then
+        mkdir ${sysconfdir}/gnutls
+        touch ${sysconfdir}/gnutls/config
+        ${bindir}/fipshmac ${libdir}/libgnutls.so.30.*.* > ${libdir}/.libgnutls.so.30.hmac
+        ${bindir}/fipshmac ${libdir}/libnettle.so.8.* > ${libdir}/.libnettle.so.8.hmac
+        ${bindir}/fipshmac ${libdir}/libgmp.so.10.*.* > ${libdir}/.libgmp.so.10.hmac
+        ${bindir}/fipshmac ${libdir}/libhogweed.so.6.* > ${libdir}/.libhogweed.so.6.hmac
+    fi
+}
diff --git a/poky/meta/recipes-support/libsoup/libsoup_3.4.4.bb b/poky/meta/recipes-support/libsoup/libsoup_3.4.4.bb
index 6d382a7..6f7cac4 100644
--- a/poky/meta/recipes-support/libsoup/libsoup_3.4.4.bb
+++ b/poky/meta/recipes-support/libsoup/libsoup_3.4.4.bb
@@ -19,7 +19,7 @@
 
 S = "${WORKDIR}/libsoup-${PV}"
 
-inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gi-docgen
+inherit meson gettext pkgconfig upstream-version-is-even gobject-introspection gi-docgen vala
 
 GIR_MESON_ENABLE_FLAG = 'enabled'
 GIR_MESON_DISABLE_FLAG = 'disabled'
@@ -39,7 +39,7 @@
 }
 EXTRA_OEMESON:append:class-target = " --cross-file ${WORKDIR}/soup.cross"
 
-EXTRA_OEMESON += "-Dvapi=disabled -Dtls_check=false"
+EXTRA_OEMESON += "-Dtls_check=false"
 # Disable the test suites
 EXTRA_OEMESON += "-Dtests=false -Dautobahn=disabled -Dpkcs11_tests=disabled"
 
diff --git a/poky/scripts/lib/wic/plugins/source/bootimg-partition.py b/poky/scripts/lib/wic/plugins/source/bootimg-partition.py
index 58f6da7..1071d1a 100644
--- a/poky/scripts/lib/wic/plugins/source/bootimg-partition.py
+++ b/poky/scripts/lib/wic/plugins/source/bootimg-partition.py
@@ -32,6 +32,7 @@
     """
 
     name = 'bootimg-partition'
+    image_boot_files_var_name = 'IMAGE_BOOT_FILES'
 
     @classmethod
     def do_configure_partition(cls, part, source_params, cr, cr_workdir,
@@ -56,12 +57,12 @@
             else:
                 var = ""
 
-            boot_files = get_bitbake_var("IMAGE_BOOT_FILES" + var)
+            boot_files = get_bitbake_var(cls.image_boot_files_var_name + var)
             if boot_files is not None:
                 break
 
         if boot_files is None:
-            raise WicError('No boot files defined, IMAGE_BOOT_FILES unset for entry #%d' % part.lineno)
+            raise WicError('No boot files defined, %s unset for entry #%d' % (cls.image_boot_files_var_name, part.lineno))
 
         logger.debug('Boot files: %s', boot_files)